2017-02-06 2 views
0

ランダムに生成された数に対する推測の近さに基づいて異なる応答を生成しようとしています。コメントアウトされたセクションは、乱数の10個以内の推測のために異なる応答を生成しようとする試みです。Python乱数ゲーム、乱数との親密度に基づいて異なる応答

import random 

while True: 

    number = random.randint(1,1000) 
    guess = 0 
    tries = 0 

    while guess != number: 
     guess = input('Please enter your guess, number must be between 0 and 1000: ') 
     tries += 1 
    if guess < number: 
     if number - 10 <= guess: 
      print('Getting warm but still too low!') 
     print('Too Low!') 
    elif guess > number: 
     if number + 10 >= guess: 
      print('Getting warm but still too high!') 
     print('Too High!') 
    print("Great Guess! The number was %i and you guessed it in %s tries!") % (number, tries) 
    again = raw_input("Enter 'y' or 'n' to select to play again: ") 
    if again == 'n': 
     break 

ランダムに生成された番号の指定された範囲内にあるとき、以下の出力を生成します。

Please enter your guess, number must be between 0 and 1000: 256 
Getting warm but still too low! 
Too Low! 
Please enter your guess, number must be between 0 and 1000: 257 
Great Guess! The number was 257 and you guessed it in 13 tries! 
+0

これで問題は何ですか? – user2896976

+0

私が遭遇している問題は、推測の程度に基づいてメッセージが変化しないということです。最終的に、推測値が乱数の10個以内であれば、印刷された文脈は、それらがより暖かくなっていると報告するはずです。 – Ablakey

+1

ifステートメントの場合、システムはリストを1つずつ順番に調べます。つまり、あなたのケースでは、あまりにも低い - >高すぎる範囲がある場合、あなたの条件は同じように順序づける必要があります。たとえば、 'guess user2896976

答えて

2

問題はインデントが原因で、初心者として、あなたはどのように基本的なネストされたループの動作を確認する必要があります:あなたが好きなあなたは、メッセージを表示するかの句を再アレンジできます。インデント後のコードは正しい結果を返します。他にも「あまりにも低い」と「あまりにも高い」プリントを処理するために追加しました

import random 

while True: 

    number = random.randint(1,1000) 
    guess = 0 
    tries = 0 

    while guess != number: 
     guess = input('Please enter your guess, number must be between 0 and 1000: ') 
     tries += 1 
     if guess < number: 
      if number - 10 <= guess: 
       print('Getting warm but still too low!') 
      else: 
       print('Too Low!') 
     elif guess > number: 
      if number + 10 >= guess: 
       print('Getting warm but still too high!') 
      else: 
       print('Too High!') 
     else: 
      print("Great Guess! The number was %i and you guessed it in %s tries!") % (number, tries) 

    again = raw_input("Enter 'y' or 'n' to select to play again: ") 
    if again == 'n': 
     break 
1

問題は、最初のif節の条件が最初に満たされ、他の条件が無視されるためです。

if number - 10 <= guess: 
     print('Getting warm but still too low!') 
    elif guess < number: 
     print('Too Low!') 
    elif number + 10 >= guess: 
     print('Getting warm but still too high!') 
    elif guess > number: 
     print('Too High!') 
関連する問題