Python3 跳出多重循環 for...else...


Python循環跳出有break和continue,但是每次只能提前結束或中止當前層的循環。可否從內層循環跳出外層循環呢?

Python跳出多層循環的方法可以考慮以下幾種方法:

1.封裝函數,利用return.

2.自定義異常,跳出循環。

3.(本次隨筆的重點)用for...else...語句

for a in xrange(10):
     for b in xrange(20):
          if something(a, b):
               # Break the inner loop...
              break
    else:
          # Continue if the inner loop wasn't broken.
         continue
   # Inner loop was broken, break the outer.
   break

不只是if有,while和for都有else分支。循環體的else分支觸發條件是循環正常結束。如果循環內被break跳出,就不執行else。所以這個邏輯是:如果循環內break了,不觸發else,則執行下一句外層循環中的break;如果正常結束,執行else分支里的continue,直接跳轉到外層循環的下一輪,跳過了第二個break。

【以下程序代碼引自https://blog.csdn.net/churximi/article/details/51043595,僅供學習參考,如有不妥,請聯系我刪除。】

for i in range(5):
     for j in range(5):
          for k in range(5):
               if i == j == k == 3:
                   break
               else:
                     print(i, '----', j, '----', k)
         else: # else1
               continue
         break # break1
    else: # else2
            continue
    break # break2

【輸出結果】

0 ---- 0 ---- 0
0 ---- 0 ---- 1
0 ---- 0 ---- 2
0 ---- 0 ---- 3
0 ---- 0 ---- 4
0 ---- 1 ---- 0
0 ---- 1 ---- 1
0 ---- 1 ---- 2
0 ---- 1 ---- 3
0 ---- 1 ---- 4
0 ---- 2 ---- 0
0 ---- 2 ---- 1
0 ---- 2 ---- 2
0 ---- 2 ---- 3
0 ---- 2 ---- 4
0 ---- 3 ---- 0
0 ---- 3 ---- 1
0 ---- 3 ---- 2
0 ---- 3 ---- 3
0 ---- 3 ---- 4
0 ---- 4 ---- 0
0 ---- 4 ---- 1
0 ---- 4 ---- 2
0 ---- 4 ---- 3
0 ---- 4 ---- 4
1 ---- 0 ---- 0
1 ---- 0 ---- 1
1 ---- 0 ---- 2
1 ---- 0 ---- 3
1 ---- 0 ---- 4
1 ---- 1 ---- 0
1 ---- 1 ---- 1
1 ---- 1 ---- 2
1 ---- 1 ---- 3
1 ---- 1 ---- 4
1 ---- 2 ---- 0
1 ---- 2 ---- 1
1 ---- 2 ---- 2
1 ---- 2 ---- 3
1 ---- 2 ---- 4
1 ---- 3 ---- 0
1 ---- 3 ---- 1
1 ---- 3 ---- 2
1 ---- 3 ---- 3
1 ---- 3 ---- 4
1 ---- 4 ---- 0
1 ---- 4 ---- 1
1 ---- 4 ---- 2
1 ---- 4 ---- 3
1 ---- 4 ---- 4
2 ---- 0 ---- 0
2 ---- 0 ---- 1
2 ---- 0 ---- 2
2 ---- 0 ---- 3
2 ---- 0 ---- 4
2 ---- 1 ---- 0
2 ---- 1 ---- 1
2 ---- 1 ---- 2
2 ---- 1 ---- 3
2 ---- 1 ---- 4
2 ---- 2 ---- 0
2 ---- 2 ---- 1
2 ---- 2 ---- 2
2 ---- 2 ---- 3
2 ---- 2 ---- 4
2 ---- 3 ---- 0
2 ---- 3 ---- 1
2 ---- 3 ---- 2
2 ---- 3 ---- 3
2 ---- 3 ---- 4
2 ---- 4 ---- 0
2 ---- 4 ---- 1
2 ---- 4 ---- 2
2 ---- 4 ---- 3
2 ---- 4 ---- 4
3 ---- 0 ---- 0
3 ---- 0 ---- 1
3 ---- 0 ---- 2
3 ---- 0 ---- 3
3 ---- 0 ---- 4
3 ---- 1 ---- 0
3 ---- 1 ---- 1
3 ---- 1 ---- 2
3 ---- 1 ---- 3
3 ---- 1 ---- 4
3 ---- 2 ---- 0
3 ---- 2 ---- 1
3 ---- 2 ---- 2
3 ---- 2 ---- 3
3 ---- 2 ---- 4
3 ---- 3 ---- 0
3 ---- 3 ---- 1
3 ---- 3 ---- 2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM