我們知道,在執行 while 循環或者 for 循環時,只要循環條件滿足,程序將會一直執行循環體,不停地轉圈。但在某些場景,我們可能希望在循環結束前就強制結束循環,Python 提供了 2 種強制離開當前循環體的辦法:
- 使用 continue 語句,可以跳過執行本次循環體中剩余的代碼,轉而執行下一次的循環。https://www.furuihua.cn/pingtai/
- 只用 break 語句,可以完全終止當前循環。
本節先講解 break 的用法,continue 語句放到下節做詳細介紹。
break 語句可以立即終止當前循環的執行,跳出當前所在的循環結構。無論是 while 循環還是 for 循環,只要執行 break 語句,就會直接結束當前正在執行的循環體。
這就好比在操場上跑步,原計划跑 10 圈,可是當跑到第 2 圈的時候,突然想起有急事要辦,於是果斷停止跑步並離開操場,這就相當於使用了 break 語句提前終止了循環。
break 語句的語法非常簡單,只需要在相應 while 或 for 語句中直接加入即可。例如如下程序:
- add = "http://c.biancheng.net/python/,http://c.biancheng.net/shell/"
- # 一個簡單的for循環
- for i in add:
- if i == ',' :
- #終止循環
- break
- print(i,end="")
- print("\n執行循環體外的代碼")
運行結果為:
http://c.biancheng.net/python/
執行循環體外的代碼
分析上面程序不難看出,當循環至 add 字符串中的逗號( , )時,程序執行 break 語句,其會直接終止當前的循環,跳出循環體。
break 語句一般會結合 if 語句進行搭配使用,表示在某種條件下跳出循環體。
注意,通過前面的學習我們知道,for 循環后也可以配備一個 else 語句。這種情況下,如果使用 break 語句跳出循環體,不會執行 else 中包含的代碼。舉個例子:
- add = "http://c.biancheng.net/python/,http://c.biancheng.net/shell/"
- for i in add:
- if i == ',' :
- #終止循環
- break
- print(i,end="")
- else:
- print("執行 else 語句中的代碼")
- print("\n執行循環體外的代碼")
程序執行結果為:
http://c.biancheng.net/python/
執行循環體外的代碼
從輸出結果可以看出,使用 break 跳出當前循環體之后,該循環后的 else 代碼塊也不會被執行。但是,如果將 else 代碼塊中的代碼直接放在循環體的后面,則該部分代碼將會被執行。
另外,對於嵌套的循環結構來說,break 語句只會終止所在循環體的執行,而不會作用於所有的循環體。舉個例子:
- add = "http://c.biancheng.net/python/,http://c.biancheng.net/shell/"
- for i in range(3):
- for j in add:
- if j == ',':
- break
- print(j,end="")
- print("\n跳出內循環")
程序執行結果為:
http://c.biancheng.net/python/
跳出內循環
http://c.biancheng.net/python/
跳出內循環
http://c.biancheng.net/python/
跳出內循環
分析上面程序,每當執行內層循環時,只要循環至 add 字符串中的逗號( , )就會執行 break 語句,它會立即停止執行當前所在的內存循環體,轉而繼續執行外層循環。
那么讀者可能會問,在嵌套循環結構中,如何同時跳出內層循環和外層循環呢?最簡單的方法就是借用一個 bool 類型的變量。
修改上面的程序:
- add = "http://c.biancheng.net/python/,http://c.biancheng.net/shell/"
- #提前定義一個 bool 變量,並為其賦初值
- flag = False
- for i in range(3):
- for j in add:
- if j == ',':
- #在 break 前,修改 flag 的值
- flag = True
- break
- print(j,end="")
- print("\n跳出內循環")
- #在外層循環體中再次使用 break
- if flag == True:
- print("跳出外層循環")
- break
可以看到,通過借助一個 bool 類型的變量 flag,在跳出內循環時更改 flag 的值,同時在外層循環體中,判斷 flag 的值是否發生改動,如有改動,則再次執行 break 跳出外層循環;反之,則繼續執行外層循環。
因此,上面程序的執行結果為:
http://c.biancheng.net/python/
跳出內循環
跳出外層循環
當然,這里僅跳出了 2 層嵌套循環,此方法支持跳出多層嵌套循環。