eval()适用于MacOS但不适用于Windows

时间:2013-01-27 16:37:02

标签: python python-3.x pydev eclipse-juno

我正在通过John Zelle的Python编程(For Python 3)工作,直到最近我一直在运行10.7的MacBook Pro上完成所有工作。我在两个平台上都在使用Eclipse Juno。我决定用Windows 7将我的所有项目移到我的电脑上并将它们导入Eclipse Juno。我注意到每个eval(input())的应用程序都被破坏了,但他们都在使用Macbook。对于我从书中输入的任何代码,这同样是新的。为什么这在一个平台上工作而在另一个平台上不工作?以下是适用于MacOS但不适用于Windows的代码示例:

def main():
    sum = 0.0
    count = 0
    xStr = input("Enter a number (<Enter> to quit) >> ")
    while xStr != "":
        x = eval(xStr)
        sum = sum + x
        count = count + 1
        xStr = input("Enter a number (<Enter> to quit) >> ")
    print("\nThe average of the numbers is", sum / count)

main()

这在Mac上工作正常但在Windows中吐出此错误:

Enter a number (<Enter> to quit) >> 5

Traceback (most recent call last):
  File "C:\Users\Nostromo\workspace\Chapter 11\average4.py", line 18, in <module>
    main()
  File "C:\Users\Nostromo\workspace\Chapter 11\average4.py", line 12, in main
    x = eval(xStr)
  File "<string>", line 1
    5    
    ^
SyntaxError: unexpected EOF while parsing

2 个答案:

答案 0 :(得分:2)

如果将input()更改为raw_input()怎么办?

答案 1 :(得分:1)

无论如何,

eval(input())是一种愚蠢的方式来获得你想要的东西,本书的作者不应该建议你使用它。将其更改为int(input()),您会更开心。