2016-10-26 17 views
0

私のプログラムはユーザに0から100までの数字を推測するように求められていますが、出力を正しく得ることはできません。ユーザー番号が乱数より大きい瞬間には、「あなたの番号が高すぎます」という無限の量が印刷されます。また、最初のUserGuessが低い場合、実際には乱数より大きいにも関わらず、次の数字はすべて同じプロンプト(「あなたの数字は低すぎます」)になります。私は何が間違っているのか分かりません。どんな助けでも大歓迎です。ありがとうございました!乱数ゲームPythonを推測する

from random import randint 

def main(): 


    guessesTaken = 0 

    randomNumber = randint(0,100) 
    #print(randomNumber) 
    giveUp = -1 
    UserGuess = int(input("Take a guess" + "(The random number is: " + str(randomNumber) + "): ")) 

    while UserGuess != randomNumber: 

     guessesTaken += 1 

     if UserGuess < randomNumber: 
      UserGuess = int(input("Your guess is too high.Try again: ")) 

     elif UserGuess > randomNumber: 
      UserGuess = int(input("Your guess is too high.Try again: ")) 

     elif UserGuess == randomNumber or UserGuess == giveUp: 
      break 

    if UserGuess == randomNumber: 
     guessesTaken = str(guessesTaken) 
     print("Yes, that is right!") 
     print("It took you " + guessesTaken + " guesses") 
    if UserGuess == giveUp: 
     guessesTaken = str(guessesTaken) 
     randomNumber = str(randomNumber) 
     print("Better luck next time.") 
     print("You tried"+ guessesTaken + " guesses") 


    return 
    print (main()) 

if __name__ == "__main__": 
    main()  
+1

だろう

if guess (is too low) if the guess (is not too low), and (is too high) if the guess (is not too low), and (is not too high), and (is correct) or (is 'give up') 

です正しく(whileループ内で) – alexpeits

+0

ところで、あなたのくぼみを修正してください。 – TurtleIzzy

答えて

3

ループの中に入ると、より多くのユーザー入力を取得する必要があります。検討する

UserGuess = None 

while UserGuess != randomNumber: 
    UserGuess = int(input("Take a guess" + "(The random number is: " + str(randomNumber) + "): ")) 
    guessesTaken += 1 
    .... 

これは、最初の推定値です。それからあなたは繰り返しそれを再評価しています。ユーザーが推測を変更する機会はないので、無限にループします。


また、if/elifの順序を変更する必要があります。

現状では、構造はあなたが、彼は推測していなかった場合は、入力に再び番号をユーザーに依頼する必要があり、それが働いて取得する簡単な方法は、

if UserGuess == randomNumber or UserGuess == giveUp: 
    ... 
elif UserGuess > randomNumber: 
    ... 
elif UserGuess < randomNumber: 
    .... 
+0

私はその問題を解決しましたが、私のプログラムは-1を入力すると実行されますが(あきらめたいという意味です)、あまりにも低いと言います。どんな考え? –

+0

@ JaneDoe2 ifとelifの文ブロックが順番になるからです。 -1は、あなたが推測したものよりも低いので、その文を受け入れ、移動したい場合、3番目の 'elif'文を最初のものに移動することができます:' UserGuess == randomNumber or UserGuess == giveUp'これを最初のif 、あなたの現在の最初の 'if'を' elif'にする – MooingRawr

関連する問題