[英]Hangman Program: Loop Validation
我正在用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,則循環應繼續運行; 是?
因此,基本上,您要循環播放直到ifWon()或ifLost()為True為止。
在原始代碼中,當您在“ 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'
有些人可能會反對嵌套收益,但這是一種非常簡單的方法。
循環“結束”,因為該方法的執行在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()
,因為我們希望在用戶獲勝時退出循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.