必须eval是字符串或代码对象吗?

Bob*_*Uni 0 python eval command-line-arguments

当我运行下面的代码时,我收到以下错误:eval()arg 1必须是字符串或代码对象

谁知道为什么?这是我从一本书中学习的代码,所以我认为它是正确的.

 # Prompt the user to enter three numbers
number1 = eval(input("Enter the first number: "))
number2 = eval(input("Enter the second number: "))
number3 = eval(input("Enter the third number: "))

 # Compute average
average = (number1 + number2 + number3) / 3

print("The average of", number1, number2, number3, "is", average)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

您正在使用在输入上运行的input()Python 2 .只需删除呼叫,或替换为.eval()eval()input()raw_input()

或者,使用Python 3来运行此代码,它明确针对该版本.如果您的书使用此语法,那么您希望使用正确的版本来运行代码示例.

最重要的是,不要input()在Python 2或eval()Python 3上使用.如果你想要整数,请int()改用.

Python 2示例:

# Prompt the user to enter three numbers
number1 = int(raw_input("Enter the first number: "))
number2 = int(raw_input("Enter the second number: "))
number3 = int(raw_input("Enter the third number: "))

# Compute average
average = (number1 + number2 + number3) / 3

print "The average of", number1, number2, number3, "is", average
Run Code Online (Sandbox Code Playgroud)

Python 3版本:

# Prompt the user to enter three numbers
number1 = int(input("Enter the first number: "))
number2 = int(input("Enter the second number: "))
number3 = int(input("Enter the third number: "))

# Compute average
average = (number1 + number2 + number3) / 3

print("The average of", number1, number2, number3, "is", average)
Run Code Online (Sandbox Code Playgroud)