0

私は Python でハングマン ゲームを構築しようとしています。ユーザーが既に試した文字を入力した場合、入力機能を繰り返すように設定しました。ただし、何らかの理由で、「推測」変数には、私が試したすべての値が格納されており、なぜこれが起こっているのか混乱しています。最新の入力のみを保存したい。コードは次のとおりです。

def inputGuess(lettersGuessed):

    guess = raw_input("What is your guess? ")
    guess = guess.lower()
    if guess in lettersGuessed:
        print "You've already guessed that. Try again!"
        inputGuess(lettersGuessed)
    print guess
    return guess

出力 (注意として、最初の 'a' は 'if' ステートメントをテストするためにプリロードされています):

>>> 
Loading word list from file...
55900 words loaded.
The secret word has 8 letters!
Available letters: bcdefghijklmnopqrstuvwxyz
What is your guess? a
You've already guessed that. Try again!
What is your guess? a
You've already guessed that. Try again!
What is your guess? a
You've already guessed that. Try again!
What is your guess? f
f
a
a
a
['a', 'a']
>>> 

print ステートメントは、複数の値が関係しているように見えることを示しています。なぜこれが起こっているのか誰でも説明できますか?明らかな何かが欠けているに違いないと感じています。本当にありがとう!

4

1 に答える 1

1

そのように再帰的に自分自身を呼び出すのは悪い考えです。最終的に例外が発生します。これを処理する適切な方法はwhileループです

def inputGuess(lettersGuessed):
    while True:
        guess = raw_input("What is your guess? ")
        guess = guess.lower()
        if guess in lettersGuessed:
            print "You've already guessed that. Try again!"
        else:
            break
    print guess
    return guess
于 2013-03-15T06:30:37.740 に答える