回答:
のraw_input()
代わりに使用input()
:
testVar = raw_input("Ask user for something.")
input()
入力を実際にPythonコードとして評価します。絶対に使用しないことをお勧めします。 raw_input()
ユーザーが入力した逐語的な文字列を返します。
input
今はこのように動作し、raw_inputはなくなりました。
input()
便利な機能だとは思わないので、使用をお勧めしません。
この関数input
は、Pythonコードとして読み取ったデータも評価しますが、これは実際に必要なものではありません。
一般的なアプローチは、(からのsys.stdin
)ユーザー入力を他のファイルと同様に扱うことです。試す
import sys
sys.stdin.readline()
短くしたい場合は、評価を省略してraw_input
同じものを使用できますinput
。
readline
これにより、bashと同様の機能が提供されます(履歴はすぐに使用でき、オートコンプリートにはいくつかのレッグワークが必要です)
raw_input()
Python 2のinput()
関数とPython 3 の関数を使用できます。デフォルトでは、入力関数は文字列形式の入力を受け取ります。他のデータ型の場合、ユーザー入力をキャストする必要があります。
Python 2では、raw_input()
関数を使用します。これは、ユーザーが入力を入力して押すのを待っており、目的のreturn
データ型としてキャストすることにより、変数に値を格納する必要があります。型キャストを使用するときは注意してください
x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input
x = float(raw_input("Enter a float number: ")) #float input
x = eval(raw_input("Enter a float number: ")) #eval input
Python 3では、ユーザー入力値を返すinput()関数を使用します。
x = input("Enter a number: ") #String input
文字列、int、float、evalを入力すると、文字列入力として使用されます
x = int(input("Enter a number: ")) #integer input
intキャストの文字列を入力した場合 ValueError: invalid literal for int() with base 10:
x = float(input("Enter a float number: ")) #float input
フロートキャストの文字列を入力すると ValueError: could not convert string to float
x = eval(input("Enter a float number: ")) #eval input
evalキャストの文字列を入力した場合NameError: name ' ' is not defined
これらのエラーはPython 2にも適用されます。
testVar = raw_input("Ask user for something.")
修正を加えた私のワーキングコード:
import random
import math
print "Welcome to Sam's Math Test"
num1= random.randint(1, 10)
num2= random.randint(1, 10)
num3= random.randint(1, 10)
list=[num1, num2, num3]
maxNum= max(list)
minNum= min(list)
sqrtOne= math.sqrt(num1)
correct= False
while(correct == False):
guess1= input("Which number is the highest? "+ str(list) + ": ")
if maxNum == guess1:
print("Correct!")
correct = True
else:
print("Incorrect, try again")
correct= False
while(correct == False):
guess2= input("Which number is the lowest? " + str(list) +": ")
if minNum == guess2:
print("Correct!")
correct = True
else:
print("Incorrect, try again")
correct= False
while(correct == False):
guess3= raw_input("Is the square root of " + str(num1) + " greater than or equal to 2? (y/n): ")
if sqrtOne >= 2.0 and str(guess3) == "y":
print("Correct!")
correct = True
elif sqrtOne < 2.0 and str(guess3) == "n":
print("Correct!")
correct = True
else:
print("Incorrect, try again")
print("Thanks for playing!")
この問題はPythonバージョン3.4.2で解決されたようです。
testVar = input("Ask user for something.")
正常に動作します。
input
はPython 2.xと同等ですraw_input
(docs.python.org/3.0/whatsnew/3.0.html#builtinsを参照)。これは2.xに固有の問題です。
input
自動的に呼び出されますeval()