我有两种方法可以对文本文件中的数字求和。第一个有效,第二个无效。谁能解释第二个有什么问题?
输入文本文件:
The quick brown 123
fox 456 jumped over
the 789 lazy dog.
方法#1:
total = 0
for line in open(fn):
numbers = (int(block) for block in line.split() if block.isdigit())
total += sum(numbers)
print('total: ', total)
这给出了正确答案 1368 (= 123 + 456 + 789)。
方法#2:
numbers = (int(block) for block in line.split() for line in open(fn) if block.isdigit())
total = sum(numbers)
print('total: ', total)
这会产生错误:
NameError: name 'line' is not defined
我正在玩生成器,所以问题实际上是关于为什么方法#2 中的生成器不好。我不需要关于在文本文件中添加数字的其他方法的建议。我想知道是否有没有标准 for 循环的仅生成器解决方案。谢谢你。