我尝试将txt文件中的所有数字求和,将两个可用变量放在一行中,然后返回0。怎么了?

时间:2019-03-31 12:30:15

标签: python-3.x

我使用了3行代码,效果很好。然后,我尝试将它们压缩为一行,我相信可以通过将两个变量放在一起来完成。但是由于某些原因,合同规定的代码仅返回0,而不是之前可以计算的实际总和。合同规定的代码出了什么问题?

hand = open('xxxxxx.txt')
# This is a text file that contains many numbers in random positions
import re
num = re.findall('[0-9]+', hand.read())
# I used regular expression on variable 'num' to extract all numbers from the file and put them into a list
numi = [int(i) for i in num]
# I used variable 'numi' to convert all numbers in string form to integer form
print(sum(numi))
# Successfully printed out the sum of all integers


print(sum([int(i) for i in re.findall('[0-9]+', hand.read())]))
# Here is the problem. I attempted to contract variables 'num' and 'numi' into one line of codes. But I only got 0 instead of the actual sum from it`enter code here`

2 个答案:

答案 0 :(得分:0)

如果像我在上面看到的那样执行所有代码,则正常情况下会得到0,因为您在第一次使用文件后没有重新打开文件,只需重新打开文件“ hand”或留下您要使用的最后一行,并删除其前三行。

答案 1 :(得分:0)

此代码对我来说很好-

hand = open('xxxxx.txt')
import re
print(sum([int(i) for i in re.findall('[0-9]+', hand.read())]))

在运行最后一行之前,您必须关闭文件并重新打开它。