1 分鐘搞懂 Python 迴圈控制:break、continue、pass

Chia Yin Chen
6 min readAug 6, 2018
Photo by Tine Ivanič on Unsplash

在使用迴圈時,你是否遇過需要在特定情況下,提早結束本次迴圈的進行或是強制結束迴圈呢?這篇文章將會介紹如何使用 Python 中的 break、continue、pass 語句來改變正常迴圈的程序。

先來簡單敘述一下 Python 中 break、continue、pass 的區別:

break:強制跳出 ❮整個❯ 迴圈

continue:強制跳出 ❮本次❯ 迴圈,繼續進入下一圈

pass:不做任何事情,所有的程式都將繼續

break

當偵測到字母 t 時,就會強制結束迴圈:

count=0
for string in 'content':
count+=1
if string == 't':
break
print(string)

print('\n迴圈結束')
print('迴圈執行了 %d 次' %count)

continue

當偵測到字母 t 時,會跳過本次迴圈剩下的程式碼 print(string),但不會結束迴圈,仍然會進入下一圈繼續執行:

count=0
for string in 'content':
count+=1
if string == 't':
continue
print(string)

print('\n迴圈結束')
print('迴圈執行了 %d 次' %count)

pass

當偵測到字母 t 時,會忽略該條件,繼續像正常迴圈一樣運行程序:

count=0
for string in 'content':
count+=1
if string == 't':
pass
print(string)

print('\n迴圈結束')
print('迴圈執行了 %d 次' %count)

在迴圈中使用 pass 語句,執行程式後,你會發現什麼事也沒做,完全不起任何作用,只是一個空運算而已,那問題就來了:

如果什麼事都不做,就不用寫拉,那 pass 語句是要做什麼的? …… ✍︎

其實有時候會有非寫不可的情況!!

pass 就像是 To do 的概念,在寫程式的時候,有時候想的比實際寫出來的速度快,例如定義一個函數,但還沒有實作出來,空著內容不寫又會產生語法錯誤🤦‍♂️,這時就會使用 pass 來替代,當作是個指標,提醒自己之後要來完成。

def myfunction():
pass #提醒自己之後要來完成

應用場景範例

情境 1:過濾

取出整數 { …, -2, -1, 0, 1, 2, … },過濾掉非整數的值。

# 定義函數
def filter_out_non_int(elements):
result = []
for element in elements:
if type(element) != int:
continue
result.append(element)

return result
# 呼叫函數
filter_out_non_int([0, 'one', 2, 3, 'four', 5, 'six', 'seven', 8, 9, 10])

📝 Note:利用 continue 告訴迴圈當 element 的 type 為非整數時,要跳出本次迴圈,繼續進入下一圈執行。

情境 2:比對

檢查 email 是否為公司官方信箱,如出現 hello、contact、sales、support、business、info 等關鍵字。

import re# 定義函數
def detect_email(email):
email_out = ['hello','contact','sales','support','business','info']
for e_out in email_out:
pattern = re.compile('.*' + e_out + '.*')
r = re.match(pattern, email.lower())
if r is not None:
print('{} 中包含 {} 關鍵字,因此判斷為官方信箱'.format(email, e_out))
break
else:
print('{} 為個人信箱'.format(email))

# 呼叫函數
detect_email('carol@gmail.com')
detect_email('Support@gmail.com')

📝 Note:利用 break 告訴迴圈當 email 字串中包含 email_out 列表 (List) 中的關鍵字時,要強制結束迴圈。

情境 3:限制數量

限制列表 (List) 儲存空間的長度。

# 定義函數
def number_sum_limit(nums, limit):
result = []
s = 0
for num in nums:
if len(result) == limit:
break
if type(num) == str:
continue
result.append(num)
s += num

return result, 'sum = {}'.format(s)
# 呼叫函數
number_sum_limit(nums = [7.5, 8, 'aa', 4.75, 'bb', 2, 8, 5, 6], limit = 5)

📝 Note:利用 break 告訴迴圈當 result 列表 (List) 中的元素數量超過 5 個時,必須停止繼續加總剩下的值,強制結束迴圈。利用 continue 告訴迴圈當元素的 type 為字符串時,要跳出本次迴圈,繼續進入下一圈執行。

搞懂了 break、continue、pass 語句之後,相信可以讓大家更靈活的運用迴圈 ✌️

--

--