我正在用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,循环应该继续运行;是吗?
答案 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()
返回True
或False
,则返回isWinner = isWon()
。您不需要isLost()
,因为我们希望在用户获胜时退出循环。