我正在做一个简单的小平均计算器。
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
有什么想法吗?
答案 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