-1

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

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

知道什么问题吗?

4

2 回答 2

2

我假设当您“按 <enter> 退出”时会发生这种情况,因为这将导致inputa 引发,SyntaxError因为没有要评估的表达式。

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

我真的不认为这input()是您想要使用的功能,但是如果您要使用它,特别是如果您希望在引发异常时终止循环,那么您真的需要在一个try块中调用它以便您可以捕获异常。另一方面, usingraw_input将允许您测试是否收到了空字符串,但您需要在调用eval字符串之前执行此操作,因此将测试置于while条件中将不起作用。

于 2013-05-07T03:23:45.617 回答
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
于 2013-05-07T18:47:13.580 回答