迴圈指令
學習內容:
- 了解
while
和for
迴圈的基本用法 - 掌握如何使用
range()
函數搭配迴圈 - 了解
for-else
特殊語法結構 - 學習巢狀迴圈(迴圈內嵌迴圈)的運作方式
- 理解如何控制迴圈結束條件及跳出迴圈
while
迴圈
while
迴圈根據條件重複執行代碼,直到條件變為假。
語法:
while 條件:
# 執行的代碼
範例:
count = 1
while count <= 5:
print(count)
count += 1
for
迴圈
for
迴圈用於遍歷序列(如列表、字串等)。
語法:
for 變數 in 序列:
# 執行的代碼
範例:
fruits = ["蘋果", "香蕉", "櫻桃"]
for fruit in fruits:
print(fruit)
使用 range()
函數
range()
函數會生成一個範圍內的整數序列,通常用於搭配 for
迴圈進行重複操作。
語法:
range(開始值, 結束值, 步伐)
- 開始值(可省略,預設為 0)
- 結束值(不包含在內)
- 步伐(可省略,預設為 1)
for i in range(5):
print(i)
此範例輸出 0 到 4(不包含 5)。
範例:指定範圍與步伐
for i in range(2, 10, 2):
print(i)
此範例輸出 2, 4, 6, 8(從 2 開始,每次增加 2,直到小於 10)。
for-else
特殊語法結構
for-else
是 Python 的一個特殊語法結構,當迴圈執行完所有的迭代後,才會執行 else
區塊中的程式碼。如果迴圈被 break
中斷,則 else
區塊不會執行。
簡單來說:
- 如果
for
迴圈 正常執行結束,則會執行else
裡的程式碼。 - 如果
for
迴圈因break
提前結束,則 不會 執行else
。
範例:找出質數 這是一個常見的範例,用來判斷一個數字是否為質數。如果找到能整除的數字,立即 break
,否則當迴圈正常結束時執行 else
,說明這個數字是質數。
number = int(input("請輸入一個大於 1 的數字: "))
for i in range(2, number):
if number % i == 0:
print(f"{number} 不是質數,因為 {i} 能整除 {number}")
break
else:
print(f"{number} 是質數")
說明:
for
迴圈從 2 開始一直檢查到number-1
,如果number
能被某個數字整除,則 輸出不是質數的訊息並使用break
中斷迴圈指令。- 如果迴圈沒有遇到
break
,說明這個數字不能被其他數字整除,因而是質數,這時else
裡的內容會被執行。
範例:搜尋列表中的特定元素
在一個列表中尋找一個特定的元素,如果找到則立即結束搜尋(用 break
),否則在整個列表都找完後,表示元素不存在,這時執行 else
區塊。
items = ["蘋果", "香蕉", "橘子", "葡萄"]
search = input("請輸入要搜尋的水果: ")
for item in items:
if item == search:
print(f"找到 {search} 了!")
break
else:
print(f"列表中沒有 {search}")
說明:
for
迴圈逐一檢查列表中的水果是否等於使用者輸入的值。- 如果找到了,
break
迴圈並輸出找到的訊息。 - 如果迴圈結束且沒有找到該元素,則執行
else
,輸出未找到的訊息。
for-else
的使用場景
for-else
結構適合用在以下情況:
- 你想進行某種搜尋,如果找到了符合條件的值,則提前結束迴圈;如果遍歷了所有的元素但沒有找到,則執行某種處理(如顯示未找到)。
- 它是一個簡潔的語法,避免了在迴圈外部進行多餘的邏輯判斷(如使用布林變數來判斷是否找到)。
for-else
結構非常有用,但在其他程式語言中不常見,因此在 Python 中看到這個結構時,可能需要特別注意它的使用邏輯。
巢狀迴圈
巢狀迴圈是指在一個迴圈內再嵌套一個或多個迴圈,通常用於處理多維資料或需要進行重複的嵌套操作。
基本語法:
for 變數1 in 序列1:
for 變數2 in 序列2:
執行的程式碼
巢狀迴圈可以是任意層次的,例如一個 for
迴圈中可以再包含另一個 for
或 while
迴圈。
範例:列印乘法表
for i in range(1, 10):
for j in range(1, 10):
print(f"{i} x {j} = {i*j}", end="\t")
print() # 換行
此程式會輸出 1 到 9 的乘法表,每一行對應到某個數字的乘法運算。
break
和 continue
語句
break
:提早結束迴圈。continue
:跳過當前迴圈的剩餘程式碼,直接進入下一次迴圈。
範例:break
終止迴圈
for i in range(10):
if i == 5:
break # 當 i 等於 5 時,結束迴圈
print(i)
此範例會輸出 0 到 4,當遇到 5 時迴圈結束。
範例:continue
跳過當前迴圈
for i in range(5):
if i == 3:
continue # 當 i 等於 3 時,跳過此次迴圈
print(i)
此範例會輸出 0, 1, 2, 4(跳過了 3)。
這兩個語句也可以在巢狀迴圈中使用,對於特定層次的迴圈進行控制。
範例:巢狀迴圈中的 break
for i in range(1, 4):
for j in range(1, 4):
if j == 2:
break # 終止內層迴圈
print(f"i={i}, j={j}")
此範例會輸出:
i=1, j=1
i=2, j=1
i=3, j=1
當 j
等於 2 時,內層迴圈結束,但外層迴圈會繼續。
練習
使用巢狀迴圈,根據使用者輸入的數字列印一個直角三角形。例如,若使用者輸入 5
,則輸出如下:
*
**
***
****
*****