入力変数が文字ではなく数値であることを確認するために「if」ステートメントを作成するにはどうすればよいですか?
radius = input ('What is the radius of the circle? ')
#need if statement here following the input above in case user
#presses a wrong key
ご協力いただきありがとうございます。
入力変数が文字ではなく数値であることを確認するために「if」ステートメントを作成するにはどうすればよいですか?
radius = input ('What is the radius of the circle? ')
#need if statement here following the input above in case user
#presses a wrong key
ご協力いただきありがとうございます。
python2.xを使用していると仮定すると、これを行うためのより良い方法は、入力をとして取得することだと思いますraw_input
。次に、それが文字列であることがわかります。
r = raw_input("enter radius:") #raw_input always returns a string
上記のステートメントに相当するpython3.xは次のとおりです。
r = input("enter radius:") #input on python3.x always returns a string
さて、それからフロートを構築します(またはしようとします):
try:
radius = float(r)
except ValueError:
print "bad input"
Pythonバージョンの互換性に関するその他の注意事項
python2.xでは、これinput(...)
と同等eval(raw_input(...))
です。つまり、そこから何が返されるのかわからないということです。SyntaxError
内部でレイズを取得することもできますinput
。
python2.xでの使用に関する警告input
ちなみに、私の提案した手順により、プログラムはあらゆる種類の攻撃から安全になります。ユーザーが次のように入力した場合、1日がどれほど悪いかを考えてみてください。
__import__('os').remove('some/important/file')
プロンプトが表示されたら、数字の代わりに!python2.xで使用するか、明示的にeval
使用して前のステートメントを実行している場合は、削除したばかりです。おっと。input
eval
some/important/file
これを試して:
if isinstance(radius, (int, float)):
#do stuff
else:
raise TypeError #or whatever you wanna do