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

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

Python跳出多層循環的方法能夠考慮如下幾種方法:oop

1.封裝函數,利用return.學習

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

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

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.
   breakblog

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

【如下程序代碼引自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 ---- 00 ---- 0 ---- 10 ---- 0 ---- 20 ---- 0 ---- 30 ---- 0 ---- 40 ---- 1 ---- 00 ---- 1 ---- 10 ---- 1 ---- 20 ---- 1 ---- 30 ---- 1 ---- 40 ---- 2 ---- 00 ---- 2 ---- 10 ---- 2 ---- 20 ---- 2 ---- 30 ---- 2 ---- 40 ---- 3 ---- 00 ---- 3 ---- 10 ---- 3 ---- 20 ---- 3 ---- 30 ---- 3 ---- 40 ---- 4 ---- 00 ---- 4 ---- 10 ---- 4 ---- 20 ---- 4 ---- 30 ---- 4 ---- 41 ---- 0 ---- 01 ---- 0 ---- 11 ---- 0 ---- 21 ---- 0 ---- 31 ---- 0 ---- 41 ---- 1 ---- 01 ---- 1 ---- 11 ---- 1 ---- 21 ---- 1 ---- 31 ---- 1 ---- 41 ---- 2 ---- 01 ---- 2 ---- 11 ---- 2 ---- 21 ---- 2 ---- 31 ---- 2 ---- 41 ---- 3 ---- 01 ---- 3 ---- 11 ---- 3 ---- 21 ---- 3 ---- 31 ---- 3 ---- 41 ---- 4 ---- 01 ---- 4 ---- 11 ---- 4 ---- 21 ---- 4 ---- 31 ---- 4 ---- 42 ---- 0 ---- 02 ---- 0 ---- 12 ---- 0 ---- 22 ---- 0 ---- 32 ---- 0 ---- 42 ---- 1 ---- 02 ---- 1 ---- 12 ---- 1 ---- 22 ---- 1 ---- 32 ---- 1 ---- 42 ---- 2 ---- 02 ---- 2 ---- 12 ---- 2 ---- 22 ---- 2 ---- 32 ---- 2 ---- 42 ---- 3 ---- 02 ---- 3 ---- 12 ---- 3 ---- 22 ---- 3 ---- 32 ---- 3 ---- 42 ---- 4 ---- 02 ---- 4 ---- 12 ---- 4 ---- 22 ---- 4 ---- 32 ---- 4 ---- 43 ---- 0 ---- 03 ---- 0 ---- 13 ---- 0 ---- 23 ---- 0 ---- 33 ---- 0 ---- 43 ---- 1 ---- 03 ---- 1 ---- 13 ---- 1 ---- 23 ---- 1 ---- 33 ---- 1 ---- 43 ---- 2 ---- 03 ---- 2 ---- 13 ---- 2 ---- 23 ---- 2 ---- 33 ---- 2 ---- 43 ---- 3 ---- 03 ---- 3 ---- 13 ---- 3 ---- 2

相關文章
相關標籤/搜索