1. ホーム
  2. python

[解決済み] evalは文字列またはコードオブジェクトでなければなりませんか?

2022-02-08 21:06:35

質問

以下のコードを実行すると、以下のエラーが発生します。 eval() arg 1 must be a string or code object

なぜかわかる方いらっしゃいますか?これは本から学んだコードなので、正しいと思っていたのですが。

 # 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)

解決方法は?

を使用しています。 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

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)