所以我试图从文件numbers.txt中提取数字并将它们加在一起 . 该程序当前可以一次拉出一个数字,并在一行上打印出它们 . 我现在需要它来计算所有的值 . 文件中的数字是:9 19 15 17 5 17总数应该是82,但它只会添加两个数字17和输出34
def main():
numfile = open('numbers.txt', 'r')
for line in numfile:
line = line.rstrip('\n')
print (line, end=' ')
total = int(line)
total += total
print ("\nEnd of file")
print (total)
numfile.close()
主要()
5 回答
你有两个问题 . 第一个是正如其他答案所说 - 你正在阅读字符串 . 您需要将它们转换为数字数据类型 . 这是
int
或float
(或者如果您正在使用货币值,我建议使用decimal) .很简单,这可以这样做:
其次,每次通过
for
循环时,您都会将total
重置为0
. 因此,在循环结束时,total
将等于您读取的最后一个值 .要解决此问题,请将
total = 0
拉出循环:将字符串转换为int:
您需要将
line
转换为整数 . 目前,你可能会这样做 . 只需在int()
中包装line
,如下所示:该错误告诉您确切的问题:您正在添加
int
和str
.int
是total
,str
是line
. 文件中的所有内容都是str
类型 . 要修复错误,请执行total += int(line)
.您还需要在开始循环之前初始化
total
,否则它将保持重置为零并且只留下最终值 .总的来说,您可以按如下方式简化代码:
这会将文件迭代器映射到
int
,然后使用sum
添加它们,然后使用print
打印它 .您需要在循环之前初始化
total
,而不是在循环内部 . 你也加倍total
而不是积累它 . 试试这个:注意
total
被修改为 once before the beginning 的循环和 once inside 循环 .