2

入力変数が文字ではなく数値であることを確認するために「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    

ご協力いただきありがとうございます。

4

2 に答える 2

6

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使用して前のステートメントを実行している場合は、削除したばかりです。おっと。inputevalsome/important/file

于 2013-01-04T01:17:01.040 に答える
3

これを試して:

if isinstance(radius, (int, float)):
    #do stuff
else:
    raise TypeError  #or whatever you wanna do
于 2013-01-04T01:14:17.700 に答える