iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
自我挑戰組

Python 學習整理系列 第 13

Day13. 巢狀結構、break & continue

  • 分享至 

  • xImage
  •  

重點:

  • 巢狀迴圈的運用
  • 如何更靈活的運用迴圈
    • 設定中斷迴圈的方法
    • 設定從頭開始執行下一次迴圈的方法

為什麼要學進階的迴圈應用

  • 為什麼要學巢狀迴圈
    • 有時候,單層迴圈已經沒辦法滿足需求
      • 例如:九九層法表需要兩個變數
      • for i in range(1,10) 只能跑出 1 到 9 的迴圈,但我們還需要另一個由 1 跑到 9 的迴圈
  • 為什麼要學 break & continue
    • 可以更靈活地運用迴圈

巢狀迴圈 Nested Loop

while 判斷條件:
    while 判斷條件:
        第二層迴圈程式碼
    第一層迴圈程式碼
迴圈外的程式碼
  • 巢狀迴圈的特性是在迴圈裡面又包覆著其他的迴圈

巢狀迴圈運作的基本概念

  • 巢狀迴圈的運作方式和時鐘類似
    • 第一層迴圈像時針
    • 第二層迴圈像分針
      Ex:09:00 ~ 12:00
      1.時針為 9,分針由 0 走到 60
      2.時針為 10,分針由 0 走到 60
      3.時針為 11,分針由 0 走到 60
      第二層迴圈(分針)跑完一輪後,
      第一層迴圈(時針)才會進到下一次迴圈,
      接著重新完成第二層迴圈,依次類推....
for first in range(3):
    for second in ['a', 'b']:
        print(first, second)
print('good!')
# 0 a
# 0 b
# 1 a
# 1 b
# 2 a
# 2 b
# good!

例1.用 for 迴圈設計九九乘法表

for i in range(1, 10):
    for j in range(1, 10):
        if j == 9:
            print(str(j) + '*' + str(i) + '=' + str(j*i))
        else:
            print(str(j) + "*" + str(i) + '=' + str(j*i), end='\t')
# 1*1=1	2*1=2	3*1=3	4*1=4	5*1=5	6*1=6	7*1=7	8*1=8	9*1=9
# 1*2=2	2*2=4	3*2=6	4*2=8	5*2=10	6*2=12	7*2=14	8*2=16	9*2=18
# 1*3=3	2*3=6	3*3=9	4*3=12	5*3=15	6*3=18	7*3=21	8*3=24	9*3=27
# 1*4=4	2*4=8	3*4=12	4*4=16	5*4=20	6*4=24	7*4=28	8*4=32	9*4=36
# 1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	6*5=30	7*5=35	8*5=40	9*5=45
# 1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	7*6=42	8*6=48	9*6=54
# 1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	8*7=56	9*7=63
# 1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	9*8=72
# 1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81

巢狀結構 Nested Loop

  • 輸入正整數 n,輸出高度為 n 層的直角三角形
  • 每層形成的數字為該層的層數
  • 當 n = 6時,輸出 6 層,每層數量為該層數字
num = 6
for i in range(1, num+1):
    for j in range(1, i+1):
        print(str(i), end='')
    print()
# 1
# 22
# 333
# 4444
# 55555
# 666666

break 以及 continue

  • 當迴圈的判斷條件不再符合時,迴圈自然結束
  • 如果想要在指定的情況下跳出迴圈呢?
    • 使用break
  • 如果想要略過還沒執行完成的迴圈,直接開始下一輪迴圈呢?
    • 使用 continue

Break 的運作概念

while 判斷條件:
    迴圈內程式碼
if 離開迴圈的條件:
    break
迴圈外的程式碼
  • 當程式執行到迴圈結構內的 break 敘述時,break 敘述會中斷迴圈的執行,並且跳出迴圈結構
country = ['英國', '美國', '法國']

for name in country:
    if name == '美國':
        break
    print(name)
print('Good')
# 英國
# Good

Continue 的運作概念

while 判斷條件:
    迴圈內程式碼
    if 離開迴圈的條件:
        continue
    迴圈內程式碼2
迴圈外的程式碼
  • 當略過條件沒有被滿足時,程式會不斷在迴圈內跑到不再符合判斷條件
  • 當略過條件滿足時,程式會跳出正在進行的迴圈,繼續執行下一步的迴圈運作
country = ['英國', '美國', '法國']

for name in country:
    if name == '美國':
        continue
    print(name)
print('Good')
# 英國
# 法國
# Good

整理表格:

說明 | | 程式指令 |
-------------- | ---------------------------------------------
巢狀迴圈 | |迴圈內包含另一迴圈
結束迴圈|規則 |當迴圈的判斷條件不再符合時,迴圈自然結束
結束迴圈|不規則| break:中斷迴圈的執行,並且跳出迴圈結構
結束迴圈|不規則| continue:中斷正在進行的迴圈繼續執行下一步的迴圈


參考資料:
Yes


上一篇
Day12. while loop 迴圈
下一篇
Day14. Python 例外類型
系列文
Python 學習整理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言