簡體   English   中英

子手計划:循環驗證

[英]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()返回TrueFalse ,則在您的isWinner = isWon() 您不需要isLost() ,因為我們希望在用戶獲勝時退出循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM