簡體   English   中英

打破一個while循環

[英]Breaking out of a while loop

我是 python 和編程的新手,並且難以擺脫調用幾個函數的 while 循環。 我嘗試了各種不同的選項,但它們都以相同的方式結束,它們並沒有結束它只是繼續運行。 我只是在這里,因為我已經研究並嘗試了很長時間來解決這個問題。 下面是一些您可以看到可能與 function 混淆的代碼。 我不會只發布最后一部分的完整程序。 感謝您在我學習期間提供的任何幫助。 這也是我第一次發帖,過去一年我一直在使用stackoverflow。

def main():
        choice = input('''Hello,
Would you like to do basic math or return an average?
Please select 1 for basic math and 2 for average and 3 to quit:

''')
        if choice == '1':
            print(performCalculation())

        elif choice == '2':
            print(calculateAverage())

        elif choice == '3':
            print(main())

j = 0
k = 0
while j < 3:
    print(main())
    while k == 3:
        break
print('All Done!')

簡單地改變

j = 0
k = 0
while j < 3:
    print(main())
    while k == 3:
        break
print('All Done!')

j = 0

while j < 3:
    print(main())
    j += 1
    
print('All Done!')

你的 while 循環永遠不會中斷的原因是因為你有while j < 3: ,但你永遠不會改變j的值,所以如果它一開始就更小,它就會永遠更小。

此外, k永遠不會等於3即使它會,while循環中的break語句只會使while 循環終止,而不是主循環。

您在這里有幾個基本錯誤。 我將按照您的程序執行順序為 go。

您沒有增加循環變量。

您已經開始循環變量,其中jk (為什么不ij ?)設置為零,並根據這些變量的值循環。 由於它們永遠不會遞增,因此您的循環永遠不會遇到退出條件。

您可以在相應循環結束時使用j += 1k += 1遞增變量。

你的循環是“unpythonic”

這些通常會寫成我下面的例子。 您不需要單獨聲明i或在此處增加它。 Python 為您處理。

for i in range(0, 3):
    ...

您正在打印不返回任何內容的 function。

您的主要 function 沒有返回值,因此調用print(main())是無稽之談。 您可以簡單地用main()替換它,除非您將main()更改為具有某種return "foo"語句。

暫無
暫無

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

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