2014-11-08 96 views
0

while循環時「沒有」第一次進入了「你想繼續」的問題正確地停止。當在「是」之後或在幾個「是」之後輸入「否」時,則用戶必須回答「否」,因爲在其之前有很多「是」的條目:例如「是」,「是」,「否」在第一個「否」答案後會產生兩個「你願意繼續」的問題。Python中,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() 
+0

你能檢查你的縮進嗎?我相信'main2'應該比它低一級。 – 2014-11-08 03:55:14

回答

0

你testing3調用將調用內MAIN2閃避,但MAIN2調用testing3高清讓你乒乓兩者之間。

要得到這個你應該看看你的堆棧幀感,你應該看到testing3隨後testing2隨後testing3等,爲你怎麼過很多次進入是一個框架。

無論你的意思(我不認爲你這樣做),你創建了一個遞歸函數。所以,你有沒有多次進入的原因是因爲你放鬆了(突然離開堆棧幀)

+0

感謝您的回答。 我回去了def def3()之外的def main2(),這立即糾正了我的問題。 – 2014-11-08 04:02:31

0

正確使用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腳本中特殊變量被執行,其接收特殊值主要