1

Python でハングマン ゲーム プログラムを作成していますが、ループの検証に関する問題が発生しました。問題のタイプの例を次に示します。

    def loopGet():
        condition = True
        while condition == True:
            userInput = raw_input("Enter a string: ")
            # assigns boolean value to condition
            condition = ifWon()
            # returns condition
            return condition
            #assigns boolean value
            condition = ifLost()
            #return condition
            return condition

ifWon() と ifLost() が既に作成されているふりをして、これは何が起こっているのか、そして私が理解しようとしていることの例です。私のプログラムでは、両方が True を返しても、ループは終了します。1 つが True を返し、もう 1 つが False を返す場合でも、終了します。「条件」がTrueを返す場合、ループは実行し続ける必要があるという印象を受けています。はい?

4

2 に答える 2

1

基本的に、ifWon() または ifLost() が True になるまでループします。

元のコードでは、"if" の外側で "return condition" を実行すると、すぐにループから抜け出します。実際、ifLost() に到達することはありません。その前の行で救済するだけだからです。

「条件」はまったく必要ないと思います... Trueになるまでループしてから戻ります。戻り値が if 内にあることに注意してください。したがって、True の場合にのみ戻ります。

  def loopGet():
    while True:
        userInput = raw_input("Enter a string: ")
        # do something with input
        if ifWon():
            return 'Won'
        if ifLost()
            return 'Lost'

ネストされた return に反対する人もいるかもしれませんが、それは非常に簡単な方法です。

于 2012-11-08T04:35:58.380 に答える
0

メソッドの実行がreturnステートメントで停止するため、ループは「終了」します。ステートメントが while ループ内にあるため、return条件が機能していないように見えます。

ステートメントをループの外に移動するreturnと、期待どおりの結果が得られます。


def game():

    isWinner = False
    while isWinner == False:
       # as the user for a guess
       # check the guess
       isWinner = isWon()
    return "You won!"

変更する条件に変数を設定します。それでisWinner = Falsewhile isWinner == False:あなたのループをしてください。またはをisWon()返す場合は、 while で。ユーザーが勝ったときにループを終了する必要があるため、は必要ありません。TrueFalseisWinner = isWon()isLost()

于 2012-11-08T04:27:28.513 に答える