必须是字符串还是代码对象?

问题描述 投票:0回答:1

当我运行下面的代码时,出现以下错误: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)
python eval command-line-arguments
1个回答
5
投票

您正在Python 2上使用input(),而已经在输入上运行eval()。只需删除eval()调用,或将input()替换为raw_input()

或者,使用Python 3运行此代码,显然针对该版本。如果您的书使用了这种语法,那么您想使用正确的版本来运行代码示例。

最重要的是,不要在Python 2上使用input()或在Python 3上使用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)

0
投票

我正在使用python 3.7.3,并且在运行脚本时也面临相同的问题。

代码示例str_status ='通过'bool_status = True

            if str_condition != '':
                bool_status = eval(str_condition)
                if not bool_status:
                    str_status = "Fail"

您能为此建议一个替代方法吗?>

© www.soinside.com 2019 - 2024. All rights reserved.