对于这个函数,我应该读取一个包含 12 个随机数的文件。然后我应该每行输出数字 1,最后程序应该将偶数和赔率分开,然后将它们相加并显示它们的总数。这里的问题是,即使我可以很好地打印数字,总功能最终还是搞砸了,给出了不正确的总数。
def main():
infile = open('numbers.txt','r')
line1 = infile.readline()
line2 = infile.readline()
line3 = infile.readline()
line4 = infile.readline()
line5 = infile.readline()
line6 = infile.readline()
line7 = infile.readline()
line8 = infile.readline()
line9 = infile.readline()
line10 = infile.readline()
line1 = line1.rstrip('\n')
line2 = line2.rstrip('\n')
line3 = line3.rstrip('\n')
line4 = line4.rstrip('\n')
line5 = line5.rstrip('\n')
line6 = line6.rstrip('\n')
line7 = line7.rstrip('\n')
line8 = line8.rstrip('\n')
line9 = line9.rstrip('\n')
line10 = line10.rstrip('\n')
print(line1)
print(line2)
print(line3)
print(line4)
print(line5)
print(line6)
print(line7)
print(line8)
print(line9)
print(line10)
line = infile.readline()
total = 0
evenTotal = 0
oddTotal = 0
while line != '':
total += int(line)
if int(line) % 2 == 0:
evenTotal += int(line)
else:
oddTotal += int(line)
line = infile.readline()
print("=======================================")
print('The total for the even numbers is', evenTotal)
print("=======================================")
print('The total for the odd numbers is', oddTotal)
infile.close()
main()
这是文件的内容
47
64
67
40
91
98
82
2
42
84
48
96
不知何故,我只得到两个总数的 0。
有人可以帮忙吗?
最佳答案
open
返回的文件对象维护一个指向您当前在文件中的位置的指针。每次调用 infile.readline()
时,它都会将该指针前进到下一行。
因为在测试代码的过程中,您会提前读取每一行(并打印出来),当您到达后面的计算行值的代码时,您的文件已经到达末尾并且不会神奇地回到文件的开头。
您可以重新打开文件,或者更简单地使用 infile.seek(0)
将文件指针返回到文件的开头。
关于python - 从 Python 代码中获取不正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617852/