Hangman程序:循环验证

时间:2012-11-08 04:25:27

标签: python

我正在用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,它仍然会结束。我的印象是,如果“condition”返回True,循环应该继续运行;是吗?

2 个答案:

答案 0 :(得分:1)

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

在原始代码中,当您在“if”之外“返回条件”时,您将立即离开循环。事实上,你永远不会达到ifLost(),因为在此之前你只能在线上拯救。

我认为你根本不需要“条件”......只需循环直到你得到一个真,然后返回。注意返回如何在if中,所以你只返回True。

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

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

答案 1 :(得分: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()返回TrueFalse,则返回isWinner = isWon()。您不需要isLost(),因为我们希望在用户获胜时退出循环。