【问题标题】:Printing integers on the same line reading from a text file在从文本文件读取的同一行上打印整数
【发布时间】:2015-11-21 22:40:39
【问题描述】:

初学者需要一些帮助

我的代码如下。我试图让整数在同一行打印出来。我正在从名为“numbers.txt”的文本文件中读取它们。任何帮助将不胜感激。

def main():
    num_file = open('numbers.txt', 'r')
    for num in (num_file):
        print(num, end='')
    num_file.close()
    print('End of file')

main()

这是我当前的输出:

【问题讨论】:

  • 你应该把语言作为标签(有助于吸引合适的人的注意力)
  • @Drazisil 这不会是重复的,因为这里endprint 函数中使用,这意味着这是Python 3,其中print 是一个函数而不是语句。您引用的问题是 Python 2,其中在列表末尾添加逗号用于防止打印换行符。

标签: python-3.x printing


【解决方案1】:

当您在此处使用for num in (num_file) 逐行读取文件时,行尾字符不会被剥离,而是包含在每一行中并存储在您的变量num 中。这就是为什么即使您设置了end='',数字也会继续打印在不同的行上。

除了设置end='' 之外,您还可以使用rstrip 删除换行符。此外,for 循环中 num_file 周围的括号不是必需的。

def main():
    num_file = open('numbers.txt', 'r')

    for num in num_file:
        print(num.rstrip('\n'), end='')

    num_file.close()
    print('End of file')

main()

将找到的数字相加:

def main():
    num_file = open('numbers.txt', 'r')
    total = 0

    for num in num_file:
        print(num.rstrip('\n'), end='')
        try:
            total = total + int(num)
        except ValueError as e:
            # Catch errors if file contains a line with non number
            pass

    num_file.close()
    print('\nSum: {0}'.format(total))
    print('End of file')

main()

【讨论】:

  • 诺亚,感谢您的回复。我试过这个,但我仍然得到相同的输出。我想在打印之前我需要阅读该文件并从中建立一个范围。
  • @spbiknut 出于某种原因,我删除了end=''。您确实需要保留它,因为如果未指定 end 的默认值是 \n。把它放回你的打印功能,然后再试一次。对不起。
  • 诺亚,做到了!我现在明白了...感谢您的帮助!
  • 诺亚,还有一个问题……有没有办法将这些数字相加并打印出来?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 2020-11-30
相关资源
最近更新 更多