Python 不僅支持 if 陳述句相互嵌套,while 和 for 回圈結構也支持嵌套,所謂嵌套(Nest),就是一條陳述句里面還有另一條陳述句,例如 for 里面還有 for,while 里面還有 while,甚至 while 中有 for 或者 for 中有 while 也都是允許的,
當 2 個(甚至多個)回圈結構相互嵌套時,位于外層的回圈結構常簡稱為外層回圈或外回圈,位于內層的回圈結構常簡稱為內層回圈或內回圈,
回圈嵌套結構的代碼,Python 解釋器執行的流程為:
- 當外層回圈條件為 True 時,則執行外層回圈結構中的回圈體;
- 外層回圈體中包含了普通程式和內回圈,當內層回圈的回圈條件為 True 時會執行此回圈中的回圈體,直到內層回圈條件為 False,跳出內回圈;
- 如果此時外層回圈的條件仍為 True,則回傳第 2 步,繼續執行外層回圈體,直到外層回圈的回圈條件為 False;
- 當內層回圈的回圈條件為 False,且外層回圈的回圈條件也為 False,則整個嵌套回圈才算執行完畢,
回圈嵌套的執行流程圖如圖 1 所示:
圖 1 回圈嵌套的執行流程圖
下面程式演示了 while-for 嵌套結構:
i = 0 while i<10: for j in range(10): print("i=",i," j=",j) i=i+1
由于程式輸出結果篇幅太長,讀者可自行拷貝代碼并執行,觀察其執行結果,
可以看到,此程式中運用了嵌套回圈結構,其中外回圈使用的是 while 陳述句,而內回圈使用的是 for 陳述句,程式執行的流程是:
- 一開始 i=0,回圈條件 i<10 成立,進入 while 外回圈執行其外層回圈體;
- 從 j=0 開始,由于 j <10 成立,因此進入 for 內回圈執行內層回圈體,直到 j=10 不滿足回圈條件,跳出 for 回圈體,繼續執行 while 外回圈的回圈體;
- 執行 i=i+1 陳述句,如果 i<10 依舊成立,則從第 2 步繼續執行,直到 i<10 不成立,則此回圈嵌套結構才執行完畢,
根據上面的分析,此程式中外層回圈將回圈 10 次(從 i=0 到 i=9),而每次執行外層回圈時,內層回圈都從 j=0 回圈執行到 j=9,因此,該嵌套回圈結構將執行 10*10 = 100 次,
嵌套回圈執行的總次數 = 外回圈執行次數 * 內回圈執行次數
事實上,if 陳述句和回圈(while、for)結構之間,也可以相互嵌套,舉個例子:
i = 0 if i<10: for j in range(5): print("i=",i," j=",j)
程式執行結果為:
i= 0 j= 0
i= 0 j= 1
i= 0 j= 2
i= 0 j= 3
i= 0 j= 4
需要指明的是,上面程式演示的僅是 2 層嵌套結構,其實 if、while、for 之間完全支持多層( ≥3 )嵌套,例如:
if ...:
while ...:
for ...:
if ...:
...
也就是說,只要場景需要,判斷結構和回圈結構之間完全可以相互嵌套,甚至可以多層嵌套,
結尾福利
這里免費送大家一套2020最新python入門到高級專案實戰視頻教程,點擊這里即可領取!或者加入博主Python交流圈(QQ群:1049600759)免費下載,
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/234125.html
標籤:其他
