我正在学习Python。 代码:
def main():
fileName = raw_input("file name ")
infile = open(fileName, "r")
sm = 0.0
ct = 0
line = infile.readline()
while line != "":
sm = sm + eval(line)
ct = ct + 1
line = infile.readline()
print "\nAverage is ", sm/ct
main()
导致以下错误:
Traceback (most recent call last):
File "/home/sorin/avg6.py", line 13, in <module>
main()
File "/home/sorin/avg6.py", line 8, in main
sm = sm + eval(line)
File "<string>", line 1
^
SyntaxError: unexpected EOF while parsing
我不明白。请帮忙。谢谢。
答案 0 :(得分:0)
eval
函数需要传递它的字符串是一个有效的Python表达式,但是它得到一个空字符串(或者,给定while
循环的条件,可能是一个只有空格的字符串)。它没有值,因此会引发错误。
您可能需要查看数据文件以查看是否有空行(如果可以,请删除它们)。或者您可以修改代码以忽略无效字符串:
while line != "":
try:
sm = sm + eval(line)
ct = ct + 1
except SyntaxError:
pass
line = infile.readline()
如果你走这条路,你可能还想捕捉其他类型的错误。
另一种选择是明确检查可能出现的特定无效字符串(例如只是一个简单的换行符):
while line != "":
if line != "\n": # or maybe us "if line.strip()", to reject whitespace lines
sm = sm + eval(line)
ct = ct + 1
line = infile.readline()
最后一个建议是在文件对象上使用for
循环而不是while
循环,并调用readline
。这不会阻止你得到的那种错误,但它通常会产生更好看的代码,这可能更容易调试。
答案 1 :(得分:0)
您的输入文件是什么样的?如果您的输入文件有一个空行,它将解释您的错误。