2017-08-23 3 views
1

私は以下のサンプルコードを持っています。入力値が整数の場合は特定のコードを実行します。 ユーザーが整数固有のコードを入力した場合は実行されます。そうでない場合は、入力値が整数ではないというエラーを表示し、入力を再度促すはずです。 整数が入力されるか、コードを強制終了するまで実行してください。 入力値に対しても複数のテストを実行する必要があります。常にPythonは入力に基づいて特定のコードを実行します

あなたのコードスニペットに input()機能は、ユーザからの入力を受け取り、文字列 See Documentationに変換し、ユーザから与えられた入力が整数、その​​後さらに進行されると仮定し integerにそれをキャストする tryに必要
import random 
print('Hello , What is your name') 
name = input() 
print('hello '+ name +' i am thinking a number between 1 to 20. Please take a guess') 

inputNumber = input() 

if inputNumber == int: 
     #Code 
else: 
     print('please enter the int') 
+0

あなたの質問は何ですか?コードはほぼ正しいと思われる。 – Carcigenicate

+6

[有効な応答を返すまでユーザーに入力を求める](https://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-レスポンス) –

答えて

3

のでif b == int:ますあなたに虚偽を与える。

正しい手順:

import random 
print('Hello , What is your name') 
name = input() 
print('hello ' + name + ' i am thinking a number between 1 to 20. Please take a guess') 
while(True): 
    try: 
     inputNumber = int(input()) 
     # now it is sure that input number is integer. 
     ### CODE 

    except ValueError: 
     print('please enter the int') 

ここで私は無限ループごとに更新されていますが、あなたはwhile(inputNumber != randomNumber)のようなあなたのコードのロジックあたりの何かのように変更することができますが、これのためにあなたは、whileループの前に、ユーザからの入力をする必要がある場合、

import random 
print('Hello , What is your name') 
name = input() 
print('hello ' + name + ' i am thinking a number between 1 to 20. Please take a guess') 

randomNumber = random.randint(1,21) 
try: 
    inputNumber = int(input()) 
except ValueError: 
    print('please enter int only') 
while(inputNumber != randomNumber): 
    try: 
     print('try again!') 
     inputNumber = int(input()) 
     # now it is sure that input number is integer. 

     if (inputNumber == randomNumber): 
      print('correct') 
      break 

    except ValueError: 
     print('please enter the int') 
+0

はい、正しいですが、ユーザーが再度入力する必要があるステップに実行を戻す方法。セクションが実行される以外はユーザーが文字列値を入力した場合、入力が整数でない場合は、ユーザーに再度入力を促す必要があります。 –

+0

「whileループ」にtry catchコードを入れることができます – warl0ck

+0

私は試してみましたが、試してみましたが –

-2

あなたのコード(ifを含む)をwhileループに入れることができます。

invalidInput = True 
while invalidInput: 

    # Ask for user input 

    if (test_if_user_input_is_valid) : 
     invalidInput = False 
     # Rest of the code 

    else: 
     # Ask the user for the right format. This takes back to the beginning of while loop 
+0

私はこれが正しいとは思わない。 – SH7890

+0

元のコードをそのまま残して、ブール値をテストしました。元のコードを削除するように編集しました。正直な質問:ここで 'while'を使うのは何が問題なのですか? –

+0

私はinputNumber == intについて話していました。それはいつも虚偽を返すと思います。 – SH7890

1

あなたの推測が高すぎるか低すぎる場合は、フィードバックを使用してよりインタラクティブなゲームを作成します。

import random 
lower = 1 
upper = 20 
rand = random.randint(lower,upper) 

name = input('Hello , What is your name? ') 

entered = input('hello %s i am thinking a number from %s to %s. Please take a guess: ' % (name, lower, upper)) 

while True: 
    try: 
     guess = int(entered) 
     if guess > rand: 
      print('Lower!') 
     elif guess < rand: 
      print('Higher!') 
     elif guess == rand: 
      break 
    except: 
     print('You did not enter a valid integer!') 

    entered = input('Try again: ') 

print('Congratulations! You guessed correctly!') 
+0

あなた自身を実行してください。 1番目のTRYブロックが正しく実行されていません.2番目に同じ条件をチェックするために複数のifを置く方法はありますか? –

+0

このコードは私のマシンで正常に動作します。また、ステートメントとPythonで問題がなければ、それらは別々のものになります。小さな非効率性であり、pythonicではなく、意味のある方法でこのプログラムに影響を与えません。関係なく固定。 まだエラーがある場合は、ここに投稿してください。 – Evan

0

おかげで私を助けるために皆、特別ウォーロック&エヴァン。 問題が解決されたことを確認するためにここにコードを貼り付けています。

##This the guess the number. 
    import random 
    print('Hello , What is your name') 
    name = input() 
    print('hello '+ name +' i am thinking a number between 1 to 20. Please take a guess') 
    guess = random.randint(1,10) 

    while True: 

     try : 
       inputNumber = int(input()) 

       if inputNumber > guess : 
        print('Lower!') 
       elif inputNumber < guess : 
        print('Higher!') 
       elif inputNumber == guess : 
        print('Well Done, Its a Correct Guess') 
        break 

     except: 
       print('Enter a number dear') 

    print('Thanks for playing') 
関連する問題