2016-04-30 25 views
-1

私は以下の単純なコードを持っており、ユーザーの入力をチェックしています。Python if-else else else partに移動

while True: 
    num = raw_input("Enter the number :") 
    if (num >= 1 and num <= 5): 
     break 
    else: 
     print "Error! Enter again :" 

私は入力0またはそれが正しく動作5よりも大きい数字として与えるが、その後、私は51からの入力を与えることをしようとすると、プログラムがまだelse部分に行きます。私のエラーを見つけるのを助けてくれますか?

+2

おそらく「numは」実際の文字列であるという事実によります。最初に変換する必要があります。文字列と数値を比較しようとするとエラーになると思いますが、Pythonを書いて以来、しばらくしています。 – Carcigenicate

+1

'num = int(raw_input("数字を入力 "))' – Joe

+2

Fun pythonの事実: 'if 1 <= num <= 5:' –

答えて

3

numは数字ではなく文字列です。あなたはint()で最初の数にraw_inputの戻り値を変換する必要があります。

>>> n = raw_input('Type stuff: ') 
Type stuff: 123 
>>> type(n) 
<type 'str'> 
>>> n 
'123' 
>>> int(n) 
123 
>>> type(int(n)) 
<type 'int'> 
+0

「In [2] - Out [2]」を私に説明してもらえますか?ユーザが 'string'を入力として与えると、私もそれを拒絶したいからです。 – Marievi

+0

@Marievi: 'raw_input()' *は常に文字列を返します。彼らが意味することを解釈するのはあなた次第です。 – Blender

+0

説明をありがとう! – Marievi

2

あなたはintにキャストする必要があります - raw_inputはラインを読み、stringに変換したよう

num = int(raw_input("Enter the number :")) 

+0

好奇心のちょうど、なぜこれは誤りではありませんか?文字列と数値を比較するのが理にかなったシナリオは考えられません。 – Carcigenicate

+1

@Carcigenicate詳細については、ここで見つけることができます:[Pythonはどのように文字列とintを比較しますか?](http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int) – AKS

+1

@Carcigenicateこれは、Python 3以降のバージョンでエラーを生成します。 – ameyCU