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,循环也会结束。如果一个返回 True 而另一个 False,它仍然结束。我的印象是,如果“条件”返回 True,则循环应该继续运行;是的?

4

2 回答 2

1

所以基本上你想循环直到 ifWon() 或 ifLost() 为真。

在原始代码中,当您在“if”之外“返回条件”时,您将立即离开循环。事实上,你永远不会到达 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'

有些人可能会反对嵌套返回,但这是一种非常简单的方法。

于 2012-11-08T04:35:58.380 回答
0

循环“结束”,因为方法的执行在return语句处停止。由于您的return语句在您的 while 循环内,因此您的条件似乎不起作用。

return语句移出循环后,您将获得预期的结果。


def game():

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

您将变量设置为要更改的条件。所以isWinner = False,然后while isWinner == False:做你的循环。如果isWon()返回Trueor False,那么在你的 while 中isWinner = isWon()。您不需要isLost(),因为我们希望在用户获胜时退出循环。

于 2012-11-08T04:27:28.513 回答