2016-09-29 7 views
1

数字を挿入したいのですが、4以外の数字を入力すると間違っていると言われますが、それが間違っていると "gog you win noob"と表示されます。しかし、私が4を挿入すると、それは間違っていると私に伝えます。パイソン3+、inputPythonの入力は決して整数と同じではありません

x = input("Insert a numer: ") 

while x != 4: 
    print("incorrect") 
    x =input("Insert another number: ") 

if x == 4: 
    print("gg you win, noob") 
+1

Python 2またはPython 3? –

+0

これは2で動作しているので、彼は3について話しています。 – brianpck

+1

@brianpckそれは正当な仮定ですが、私はそれを正確には言っていません_2で "働いています"。どちらの方法でもコードは間違っています。 – zvone

答えて

3

ストリングを返し、4は等しくない'4'を行います。入力がintでない場合は、intを使用ValueErrorをチェックするように注意して

while x != '4': 

または代わりに:あなたは、に修正する必要があります。 input()から

+1

Python 2と3:http://stackoverflow.com/questions/3800846/differences-between-input-and-raw-input – brianpck

1

結果は、あなたがそれを比較する前に整数に変換する必要があります文字列、次のようになります。

x = int(input("Insert another number: ") 

あなたの入力が数値でない場合、これはValueErrorが発生します。

0

ここで、if x == 4は必要ありません。 xまでは4に等しいので、whileループは渡されません。

x = int(input("Insert a numer: ")) 
while x != 4: 
    print("incorrect") 
    x = int(input("Insert another number: ")) 

print("gg you win, noob") 
0

Python 2と3は機能が異なるinput()です。

  • Python 2では、input()eval(raw_input())に相当します。
  • Python 3では、raw_input()はありませんが、input()はPython 2のraw_input()のように動作します。あなたのケースでは

:Pythonの2、input()

  • はあなたのタイプint4を与えるので、あなたのプログラムが動作します。
  • Python 3では、input()'4'タイプのstrです。プログラムがバグです。

Python 3では、これを修正する1つの方法はeval(input())を使用することです。しかし、信頼されていない文字列にevalを使用することは非常に危険です(Python 2ではプログラムが危険に働いています)。入力を最初に検証する必要があります。これは、整数に、すべての入力値を変換します

z = 0 
while z != "gg you win, noob": 
    try: 
     x = int(input("Insert a numer: ")) 
     while x != 4: 
      print("incorrect") 
      x =int(input("Insert another number: ")) 

     if x == 4: 
      z = "gg you win, noob" 
      print(z) 

    except: 
     print('Only input numbers') 

0

はこれを試してみてください。整数を入力しないと、exceptステートメントは数字を入力するように促し、while Trueループはエラーを出すのではなく最初からスクリプトを繰り返します。

関連する問題