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

Python eval必须是字符串或代码对象吗?,python,eval,command-line-arguments,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

当我运行下面的代码时,我得到以下错误: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)
您正在Python2上使用
input()
,Python2已经在输入端运行
eval()
。只需删除
eval()
调用,或将
input()
替换为
raw\u input()

或者,使用Python3运行此代码,它显然是针对该版本的。如果您的书使用这种语法,那么您希望使用正确的版本来运行代码示例

最重要的是,不要在Python2上使用
input()
,也不要在Python3上使用
eval()。如果需要整数,请使用
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
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)
您正在Python2上使用
input()
,Python2已经在输入端运行
eval()
。只需删除
eval()
调用,或将
input()
替换为
raw\u input()

或者,使用Python3运行此代码,它显然是针对该版本的。如果您的书使用这种语法,那么您希望使用正确的版本来运行代码示例

最重要的是,不要在Python2上使用
input()
,也不要在Python3上使用
eval()。如果需要整数,请使用
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
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)

嘿,我看到了这篇文章,为什么我们不应该在Python3.x中使用
eval
,为什么
print(eval(input())
不能在Python2.7中使用,但是
print(eval(raw_input())
is?@0x45:看,我看到了这篇文章,为什么我们不应该在Python3.x中使用
eval
,为什么
print(eval(input()))
在Python2.7中不工作,但
打印(eval(raw_input())
是?@0x45:请参阅和