簡體   English   中英

Python,而While循環無法正常運行

[英]Python, While Loop Not Functioning Properly

當首先為“您想繼續”問題輸入“否”時,while循環正確停止。 當在“是”之后或在多個“是”條目之后輸入“否”時,則用戶必須回答“否”,因為在此之前有許多“是”條目:例如,“是”,“是”,“否”在第一個“否”答案之后產生兩個“您想繼續”問題。

我剛剛開始學習Python,因此任何建議都會有所幫助。

謝謝。

def testing3():
    def Grade(score):
        if score >= 90:
            letter = "A"
        elif score >= 80:
            letter = "B"
        elif score >= 70:
            letter = "C"
        elif score >= 60:
            letter = "D"
        else:
            letter = "F"
        print(letter) 

    def main():
        x = input("Enter Numerical Grade: ")
        numGrade = int(x)
        Grade(numGrade)

    main()

    def main2():
        while True:
            test = input("Would you like to continue?: ")
            if test == 'Yes':
                testing3()
            else:
                print("Done")
                break

    main2()

testing3()

您的testing3調用會調用內部的main2 def,但是main2會調用testing3 def,因此您在兩者之間進行了ping-poning。

為了了解這一點,您應該查看堆棧框架,並看到一個用於test3的框架,然后是testing2,然后是testing3,依次類推,以了解您輸入了yes的次數。

無論您是否打算(我認為您沒有這樣做),您都創建了一個遞歸函數。 因此,您不必多次輸入的原因是在展開時(將幀彈出堆棧)

while循環的正確使用應如下所示:

finish = False
while not finish:
  # do your stuff here
  finish = evaluateLoopFinish()

在此,終點是一個信號標志,您必須在每個回合結束時對其進行評估。 第一次設置為False,因此不設置False == True,因此進入循環。

另一個提示:只能使用一個這樣的主體

def main(args):
  # do your stuff here

if __name__=="__main__":
  main()

每個Python腳本都有一個名稱特殊變量,該變量保存模塊的名稱, 要執行的Python腳本收到的特殊值main 除外

暫無
暫無

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

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