〔程式教學〕Python 中的迴圈 (Loop) 觀念

前言
前一篇文章中,我們學習了如何在 Python 中撰寫流程控制的語法,透過 if、elif 與 else 關鍵字能夠在程式中加入「條件的判斷」,並執行相對應的程式碼。在本篇文章中,我們將延伸流程控制中「條件」的概念,來解釋程式中的「迴圈」(Loop) 。
迴圈 (Loop) 是什麼

在前一篇文章中,我們介紹過上篇這張圖。所謂的「流程控制」,就是由「條件」與條件成立時要執行的「任務」所組成。因此,電腦在執行此程式時,會先對條件進行判斷,依照判斷結果執行相對應的程式碼,整個程式才算是執行結束。
假如我們希望電腦在執行此程式時,可以「重複」進行條件的判斷呢?如下圖所示,在執行完相對應程式碼後,程式並沒有結束,而是「重新」回到條件的判斷。

你注意到了嗎?「重複」、「重新」或是「再一次」指的就是「迴圈」(Loop)。在程式的世界中,「迴圈」的概念相當常見,只要我們希望『符合某一條件,就「重複」執行某段程式碼』,就會透過迴圈的概念來實作。
Python 中的迴圈語法
如下方的列表所示,在 Python 與大多數的程式語言中,迴圈的語法通常會透過兩種關鍵字來實現,分別是「while」與「for」。兩種關鍵字所寫出來的迴圈,就稱為「while loop」與「for loop」。
- for → for loop
- while → while loop
其中,while loop 的觀念就是我們上面對迴圈的介紹,因此我們先從 Python 中的 while loop 語法開始介紹。
Python 中的 while loop
我們直接觀察以下的程式碼:
num = 0 while num < 3: print('number: ' + str(num)) num = num + 1
在程式碼中,我們使用了 while 關鍵字,並在關鍵字後方加上條件與冒號,滿足條件的程式碼則是換行並縮排。
下方為此程式的輸出,我們可以發現迴圈中的程式碼總共被執行了三次。
number: 0 number: 1 number: 2
我們必須注意到在上方程式碼中,一定是「先」確定條件成立,「後」執行迴圈內部的程式碼。接著,讓我們深入了解上述程式碼的執行流程:
第 1 個 Loop
- 判斷條件 num < 3。因為此時 num 為 0,故條件成立。
- 執行迴圈內的程式碼。「number: 0」被顯示出來,num 被加上 1,變成 1。
第 2 個 Loop
- 判斷條件 num < 3。因為此時 num 為 1,故條件成立。
- 執行迴圈內的程式碼。「number: 1」被顯示出來,num 被加上 1,變成 2。
第 3 個 Loop
- 判斷條件 num < 3。因為此時 num 為 2,故條件成立。
- 執行迴圈內的程式碼。「number: 2」被顯示出來,num 被加上 1,變成 3。
第 4 個 Loop
- 判斷條件 num < 3。因為此時 num 為 3,故條件不成立。
從上面的執行流程,我們可以清楚觀察到:「迴圈條件」被執行了 4 次;「迴圈內部的程式碼」被執行了 3 次。
接著,我們再透過一個程式範例,熟悉 while loop 的撰寫。下方的程式碼,透過 while loop 計算 1 到 100 的總和:
sum = 0 num = 1 while num <= 100: sum += num num += 1 print(f'sum: {sum}')
下方為程式實際的執行流程:
第 1 個 Loop
- 判斷 Loop 條件「num <= 100」。此時 num 為 1,故條件成立。
- 執行 Loop 程式碼「sum += num」,相當於「sum = sum + num」,此時 sum 為 1、num 為 2。
第 2 個 Loop
- 判斷 Loop 條件「num <= 100」。此時 num 為 2,故條件成立。
- 執行 Loop 程式碼「sum += num」,相當於「sum = sum + num」,此時 sum 為 1 + 2、num 為 3。
第 3 個 Loop
- 判斷 Loop 條件「num <= 100」。此時 num 為 3,故條件成立。
- 執行 Loop 程式碼「sum += num」,相當於「sum = sum + num」,此時 sum 為 1 + 2 + 3、num 為 4。
第 4 個 Loop
- 判斷 Loop 條件「num <= 100」。此時 num 為 4,故條件成立。
- 執行 Loop 程式碼「sum += num」,相當於「sum = sum + num」,此時 sum 為 1 + 2 + 3 + 4、num 為 5。
…
第 100 個 Loop
- 判斷 Loop 條件「num <= 100」。此時 num 為 100,故條件成立。
- 執行 Loop 程式碼「sum += num」,相當於「sum = sum + num」,此時 sum 為 1 + 2 + 3 + 4 + … + 100、num 為 101。
第 101 個 Loop
- 判斷 Loop 條件「num <= 100」。此時 num 為 101,故條件不成立。
由此我們可以清楚的觀察到 while loop 由 1 加到 100 的過程。
需要特別補充的是最後一行的 print() 函式。除了透過「字串加法」將字串與變數合起來之外,我們也可以透過 f string 的方式將變數插入到字串中。
# 字串加法: print('sum: ' + str(sum)) # f string print(f'sum: {sum}')
當我們使用 f string 的寫法時,需要在字串前方加上 f,並在字串中需要插入變數的地方透過{}將變數包起來。透過 f string 可以更簡單的將字串與變數和在一起。
break 與 continue
提到迴圈 (Loop) 的觀念時,break 與 continue 兩個角色一定會被介紹到。
- break:立即離開迴圈
當迴圈的條件成立後,電腦會執行回圈內部的程式碼。我們可以在迴圈內加上 break,當電腦執行到這一行時,就會直接離開迴圈。
sum = 0 num = 1 while num <= 100: sum += num num += 1 break print(f'sum: {sum}')
在上述的程式碼中,最終的 sum 會是 1。因為當電腦第一次進入迴圈後,遇到 break 時,就會馬上離開迴圈。如果直接在迴圈內部的程式碼加上 break 就會失去迴圈「重複」執行的目的。因此,我們通常會透過 if 進行判斷,如果條件滿足,才透過 break 離開迴圈。
sum = 0 num = 1 while num <= 100: sum += num num += 1 if sum > 1000: break print(f'sum: {sum}')
在上面這段程式碼中,我們判斷如果「sum > 1000」才執行 break。
- continue:直接回到迴圈條件判斷
當迴圈的條件成立後,電腦會執行回圈內部的程式碼。我們可以在迴圈內加上 continue,當電腦執行到這一行時,就會直接回到迴圈的條件進行判斷。
sum = 0 num = 1 while num <= 100: sum += num num += 1 print(f'sum: {sum}')
在上面這段程式碼中,每一次迴圈的最後都會將 sum 的數值顯示出來。但是如果我們希望只有當 sum > 4000 時才顯示,我可以透過 continue 直接忽略迴圈內剩下的程式碼,回到迴圈條件判斷的地方:
while num <= 100: sum += num num += 1 if sum < 4000: continue print(f'sum: {sum}')
只要 sum < 4000,電腦就會執行到 continue 這行程式碼,馬上結束這一個迴圈,回到迴圈條件判斷的階段。
這邊需要特別注意的是,break 與 continue 只能寫在迴圈內部,也就是只能用在 while loop 與 for loop 當中。
Python 中的 for loop
了解完 while loop 後,我們接著學習 Python 中的 for loop。如下圖所示,while loop 是以「條件」來決定目前的迴圈是否要執行;for loop 則是透過「次數」決定好要執行幾次迴圈。


在 Python 中,我們經常會透過 range() 函式,指定 for loop 要執行的次數。
for num in range(10): print('Hello World')
上方程式碼為 Python 中基本的 for loop 範例。Python 中 for loop 的語法通常由下列元素所組成:
- for 關鍵字
- 變數名稱 → 上方使用 num
- in 關鍵字
- 序列 (Sequence) 或可迭代的物件 (Iterable Object) → 上方使用 range(10)
「序列 (Sequence) 或可迭代的物件 (Iterable Object)」這一個名詞實在是看起來很可怕,但是對於初學著的我們而言,我們可以先把它想成「一連串的物件」。如下方列出很多「一連串的物件」:
- [1, 2, 3, 4, 5, 6, 7, 8]
- [“apple”, “orange”, “132”, “456”, “789”]
- [-1, -6, 65, 32]
- [2.5, 3.0, 5.2, 3.1]
因此,range(10) 我們可以先把它想成 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (注意是 0 到 9,不是 1 到 10)。for num in range(10) 則變成 for num in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。按照字面上的意思,每一次的迴圈中 num 都會「依序」對應到 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 中的每一個數字。因此,透過 range(10) 指定迴圈總共執行 10 次。
for num in range(10): print(f'num: {num}')
上方程式碼直接將 num 每一次對應到的數字顯示出來。
我們一樣可以在 for loop 中使用 break 與 continue 等關鍵字:
for num in range(10): if num == 5: break print(f'num: {num}')
在上方程式碼中,如果 num 為 5 時,就直接離開迴圈。
接著,我們再透過一個程式範例,熟悉 for loop 的撰寫。下方的程式碼,透過 for loop 計算 1 到 100 的總和:
sum = 0 for num in range(101): sum += num print(f'sum: {sum}')
結語
在本篇文章中,我們學習了迴圈 (Loop) 的觀念,以及如何在 Python 中撰寫 for loop 與 while loop 的語法。此外,我們也學習到迴圈的好朋友「break」與「continue」的作用。在下一篇文章中,我們將會正式學習「函式」(Function) 的概念。
👣 👣 👣 我喜歡撰寫程式開發、資料科學領域相關的文章,希望可以透過簡單的文字解釋複雜的觀念!如果你也有興趣可以到我的其他平台逛逛哦!
👉🏻 DataSci Ocean
👉🏻 YouTube
👉🏻 Instagram
《Python 零基礎教學》系列文章
01 - Google Colaboratory 介紹
02 - Python 中的加減乘除
03 - Python 中的變數與資料類型
04 - 第一個 Python 程式
05 - Python 中的 Boolean Operator (1)
06 - Python 中的 Boolean Operator (2)
07 - Python 中的 IF, ELSE IF, ELSE
Like my work? Don't forget to support and clap, let me know that you are with me on the road of creation. Keep this enthusiasm together!