Skip to content

[Python] 基本教學(4) 流程控制 break、pass、continue

在我們繼續往下紀錄 break, pass, continue 之前,我想先介紹 while 這個指令。這本是該在 For-loop 筆記時一同紀錄的,推遲到了現在。

while,我們可以其視為一個『只要符合條件便一直執行下去的迴圈』。
我舉個最基本的例子:

while True:
    print('no')


如果你真的開始執行程式——哦哦!那就糟糕了。在你選擇 terminate (中斷) 它之前,這個程式只會一直執行下去、一直 print 出 no 、不會停止。

這幅畫面肯定很糟糕。

以上是一個最基本的 while 迴圈,我們可以來看看另外一個例子。

a = 3
while a == 3:
    print('no')


如果你執行這個程式,是不是也會跟剛才一樣一直 print no 呢?答案是肯定的!while 後面的便是 while 執行的條件,只要符合條件,在 while 底下縮排的區塊就會一直執行一直執行喔!

所以究竟 while-loop 究竟該怎麼控制流程呢?我們今天的主角:流程控制語法 break、pass、continue 就姍姍來遲了!


break

break 出現在迭代的程式裡(比如 for、while 皆是)時,代表著我們直接跳出了這個迴圈。

n = 0
while True:
    n += 1
    print(n)

    if n == 10:
        break


我們設定了一個變數 n,然後開始執行 while 迴圈,每次迭代 n 這個變數都會加 1,然後我們會將此變數印出來——直到這個變數等於 10 時,我們便使用『break』離開迴圈。
我們下面來看看結果如何:

1
2
3
4
5
6
7
8
9
10

是不是在 n 印出等於 10 之後迴圈就結束了呢?


pass

pass 比較單純,我們可以認為它『跳過』了一次迭代不執行。
以下來看個單純的範例:

for n in range(10):
    if n == 4:
        pass
    else:
        print(n)


我們讓 n 在等於 4 時 pass 一次,這會對我們印出數字造成什麼樣的影響呢?

1
2
3
5
6
7
8
9

你看!是不是跳過 4 了呢?


continue

continue 的話,他的用法跟 pass 非常像,都是跳過當前的迭代。但比起跳過自己區塊的程式碼,continue 更是會直接停止本次的迭代,從下一次的迴圈開始。

若是光聽說明無法理解,我們直接來看看範例程式碼的比較。

# 這是 pass 的迴圈
times = 0
for n in range(10):
    if n == 4:
        pass
    else:
        print(n)

    times += 1
    print('這是本程式執行第%d次' % times)


Output:

0
這是本程式執行第1次
1
這是本程式執行第2次
2
這是本程式執行第3次
3
這是本程式執行第4次
這是本程式執行第5次
5
這是本程式執行第6次
6
這是本程式執行第7次
7
這是本程式執行第8次
8
這是本程式執行第9次
9
這是本程式執行第10次

我們引述了一個新的變數 times 充當計數器,可以看到我們雖然在 n=4 的時候跳過了印出 n 的部份,但迴圈底下的部份照常執行,代表 pass 只跳過了自己的個區域的程式碼。

然後我們再來看看 continue:

# 這是 continue 的迴圈
times = 0
for n in range(10):
    if n == 4:
        continue
    else:
        print(n)

    times += 1
    print('這是本程式執行第%d次' % times)


Output:

0
這是本程式執行第1次
1
這是本程式執行第2次
2
這是本程式執行第3次
3
這是本程式執行第4次
5
這是本程式執行第5次
6
這是本程式執行第6次
7
這是本程式執行第7次
8
這是本程式執行第8次
9
這是本程式執行第9次

我們可以很明顯看得出來,這次使用 continue,我們連底下的印出 times 的部份都跳掉了! 代表著 continue 是中止本次的迴圈,直接從下一次的迭代繼續開始。


References


Read More

Leave a Reply