语法错误:解析时出现意外的EOF?

时间:2013-05-07 01:22:25

标签: python parsing average eof

我正在做一个简单的小平均计算器。

def avg():
    sumSoFar = 0
count = 0
numCount = 0

while numCount != "":
    numCount = eval(input("Please enter a number or press <enter> to quit: "))
    sumSoFar += numCount
    count += 1


print("The average of these numbers is: ", sumSoFar/count)

我一直收到错误:

numCount = eval(input("Please enter a number or press <enter> to quit: "))
File "<string>", line 0

Syntax Error: unexpected EOF while parsing

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我认为当您“按&lt; enter&gt;退出”时会发生这种情况,因为这会导致input提升SyntaxError,因为没有要评估的表达式。

input(prompt)相当于eval(raw_input(prompt))。因此,它eval不正确;如果输入行是(表示一个字符串)数字,则input将返回一个数字,而eval的数字为TypeError。但是,既然你说你得到SyntaxError,我得出的结论是你的输入以一个空行开头。

我真的不认为input()是你想要使用的函数,但如果你打算使用它,特别是如果你想在引发异常时终止循环,那么你确实需要在try块内调用它,以便您可以捕获异常。另一方面,使用raw_input将允许您测试是否收到空字符串,但是在对字符串调用eval之前需要执行此操作,因此将测试放在{{1条件不起作用。

答案 1 :(得分:0)

修正:

sumSoFar = 0

count = 0

numCount = input("Please enter a number or press <enter> to quit: ")

while numCount != "":

    sumSoFar += eval(numCount)

    count += 1

    numCount = input("Please enter a number or press <enter> to quit: ")



print("The average of these numbers is: ", sumSoFar/count