1

何らかの理由で、userGuess が compAnswer と等しくならないかのように while ループが壊れることはありません。最初に答えを印刷しているので、わかります。Pythonista で実行します。

def guessing_game():
    compAnswer = random.randint(1,10)
    print compAnswer
    guesses = 1
    print "Okay, I\'m thinking of a number between 1 and 10."
    userGuess = raw_input("What number am I thinking of?:  ")
    while userGuess != compAnswer:
        userGuess = raw_input("Nope!  try again:  ")
        guesses += 1
    playAgain = raw_input("You got it!  My number was %s and it took you %d guesses.  Play again?:  " % (compAnswer, guesses))
    if playAgain == "yes":
        guessing_game()
    else:
        print "Okay bye!"
4

2 に答える 2

3

compAnswerは整数、userGuess文字列です。それらを等しくしたい場合は、同じタイプを使用してください。

while userGuess != str(compAnswer):
于 2014-04-01T18:20:37.210 に答える
0

compAnswer は整数ですが、userGuess はコマンド ラインから文字列値を受け取る raw_input() であるため、同じデータ型ではないため、== になることはなく、ループし続けます。6行目でこれを試してください:

userGuess = int(raw_input("What number am I thinking of?: "))

ただし、受け入れる入力は常に数値型であり、数値以外の文字を入力するとこれが壊れる可能性があるため、さらに良いことに、その行を try ブロックに入れてユーザー入力を検証し、ValueError をキャッチできます。

try: userGuess = int(raw_input("What number am I thinking of?: ")) except ValueError: print "invalid input"

于 2014-04-01T18:34:11.810 に答える