
在 Python 程式設計中,流程控制 (flow control) 決定了程式碼執行的順序。透過流程控制,您可以讓程式根據不同的條件執行不同的程式碼區塊,或者重複執行某些程式碼區塊。
Python 提供了三種主要的流程控制結構:
- if-else 條件判斷: 根據條件是否成立 (True 或 False) 來決定執行哪個程式碼區塊。
- for 迴圈: 重複執行程式碼區塊,通常用於遍歷 (iterate) 一個序列 (例如串列、元組、字串) 或產生一系列數字。
- while 迴圈: 當條件為真 (True) 時,重複執行程式碼區塊。
本文將詳細介紹這三種流程控制結構的用法,並提供豐富的範例程式碼。
1. if-else 條件判斷
if-else 語句用於根據條件的真假來執行不同的程式碼區塊。
基本語法
if 條件:
# 如果條件為 True,執行這個程式碼區塊
# ...
else:
# 如果條件為 False,執行這個程式碼區塊
# ...
重要觀念
- if 後面要加上條件 (通常是比較運算或邏輯運算)。
- 條件後面的冒號 (:) 不能省略。
- if 和 else 下方的程式碼區塊必須縮排 (通常是 4 個空格)。
- else 是可選的 (可以只有 if,沒有 else)。
單向 if (只有 if)
age = 20
if age >= 18:
print("已成年")
雙向 if-else
score = 75
if score >= 60:
print("及格")
else:
print("不及格")
多向 if-elif-else
當您有多個互斥的條件需要判斷時,可以使用 if-elif-else 結構。
score = 85
if score >= 90:
print("優秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("普通")
elif score >= 60:
print("及格")
else:
print("不及格")
注意事項:
- elif 是 "else if" 的縮寫,可以用來檢查多個條件。
- elif 和 else 都是可選的,但 else 最多只能有一個,且必須放在最後面。
- Python 沒有 switch-case 語句。
2. for 迴圈
for 迴圈用於重複執行程式碼區塊,通常用於遍歷序列 (例如串列、元組、字串、字典的key) 或產生一系列數字。
基本語法
for 變數 in 可迭代物件:
# 對每個元素執行的程式碼區塊
# ...
遍歷序列 (list, tuple, string)
# 遍歷串列
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
print(fruit)
# 遍歷元組
my_tuple = (1, 2, 3)
for num in my_tuple:
print(num)
# 遍歷字串
message = "Hello"
for char in message:
print(char)
使用 range() 產生數字序列
range(start, stop, step)
- start: 起始值 (預設為 0)
- stop: 結束值 (不包含此值)
- step: 步長 (預設為 1)
for i in range(5): # 0, 1, 2, 3, 4
print(i)
for i in range(1, 6): # 1, 2, 3, 4, 5
print(i)
for i in range(1, 10, 2): # 1, 3, 5, 7, 9
print(i)
for i in range(5, 0, -1): # 5, 4, 3, 2, 1
print(i)
迭代字典
my_dict = {"a": 1, "b": 2, "c": 3}
# 迭代 keys (預設行為)
for key in my_dict:
print(key)
# 迭代 values
for value in my_dict.values():
print(value)
# 迭代 items (key-value pairs)
for key, value in my_dict.items():
print(f"{key}: {value}")
搭配 enumerate() 與 zip()
使用 enumerate() 可以在迴圈中同時獲得索引和值。
fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
print(f"索引: {index}, 值: {fruit}")
使用 zip() 可以將多個序列打包,進行平行迭代。
names = ['Alice', 'Bob', 'Charlie']
ages = [30, 25, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")
3. while 迴圈
while 迴圈用於當條件為真 (True) 時,重複執行程式碼區塊。
基本語法
while 條件:
# 當條件為 True 時,重複執行的程式碼區塊
# ...
# 範例
count = 0
while count < 5:
print(count)
count += 1 # 更新條件變數,避免無限迴圈
警告:務必確保 while 迴圈的條件最終會變為 False,否則會導致「無限迴圈」,程式將永遠不會停止。
迴圈的進階控制
break 和 continue
- break: 立即跳出並結束整個迴圈。
- continue: 跳過本次迴圈的剩餘程式碼,直接進入下一次迭代。
# break 範例: 找到第一個符合條件的就停止
for i in range(10):
if i == 5:
print("找到 5,迴圈結束")
break
print(i) # 輸出 0, 1, 2, 3, 4
# continue 範例: 跳過特定條件
for i in range(5):
if i == 2:
print("跳過 2")
continue
print(i) # 輸出 0, 1, 3, 4
迴圈的 else 子句
Python 的 for 和 while 迴圈可以有一個可選的 else 子句。此區塊的程式碼會在迴圈「正常結束」(即沒有被 break 中斷) 時執行。
# for...else 範例
for i in range(5):
print(i)
else:
print("迴圈正常結束") # 會執行
# while...else 範例
count = 0
while count < 5:
print(count)
count += 1
else:
print("迴圈正常結束") # 會執行
巢狀迴圈 (Nested Loops)
迴圈內可以包含另一個迴圈,稱為巢狀迴圈。常見的應用是處理二維資料 (例如矩陣、表格)。
# 產生九九乘法表
for i in range(1, 4): # 外層迴圈
for j in range(1, 4): # 內層迴圈
print(f"{i} * {j} = {i*j}")
總結
Python 的流程控制結構 (if-else、for、while) 提供了強大的方式來控制程式碼的執行流程。掌握這些結構的用法,並善用 break、continue 和 else 子句,是 Python 程式設計的關鍵技能。