條件選擇是什麼?
if / elif / else 的角色
在 Python 中,條件選擇主要使用 if、elif、else 來控制程式流程:
根據「條件是否成立」,決定要執行哪一段程式碼。
你可以把它想成「程式的十字路口」:
當條件為真(True)走這條路,為假(False)就走另一條。
在科學計算與日常應用中,「判斷」幾乎無所不在:
例如:溫度是否過高?分數是否及格?是否需要發出警告?
Python 條件敘述的分類地圖
常見結構整理
常見的條件敘述可以這樣分類:
- 單一路徑選擇:只有「成立時」做事(
if)。
- 雙向選擇:成立與不成立,各有不同處理(
if-else)。
- 多向選擇:依照不同條件分成多條路(
if-elif-else)。
- 條件組合:使用
and、or、not 把多個條件合併。
- 巢狀條件:在 if 區塊裡面再寫 if,形成多層判斷。
- 條件運算式:把簡單的 if-else 寫成一行(
a if cond else b)。
- 模式比對:Python 3.10 之後的
match-case,類似多向選擇的進階版。
初學時先把前三種基本 if 型態弄熟,再慢慢加上條件組合與巢狀就可以了。
三種基本 if 型態
單一、雙向、多向
1. 單一條件判斷(if)
只有在條件為真時才執行某段程式碼,否則直接略過。
if 條件:
# 如果條件為真,執行這裡的程式碼
程式碼 A
程式碼 B
|
|
2. 條件判斷與否(if-else)
「成立」與「不成立」各有一條路。
if 條件:
# 如果條件為真,執行這裡的程式碼
程式碼 A
else:
# 如果條件為假,執行這裡的程式碼
程式碼 B
程式碼 C
|
|
3. 多重條件判斷(if-elif-else)
當有「多種狀況」時,可以用 elif 依序檢查。
if 條件1:
# 如果條件1為真,執行這裡的程式碼
程式碼 A
elif 條件2:
# 如果條件1為假,且條件2為真
程式碼 B
elif 條件3:
# 如果條件1,2皆為假,且條件3為真
程式碼 C
else:
# 如果所有條件都為假
程式碼 D
程式碼 E
|
|
條件組合與多條件判斷
and / or / not
當我們需要同時考慮多個條件時,就會用到邏輯運算子:
and:兩個條件都為 True,整體才為 True。
or:只要有一個為 True,整體就為 True。
not:把 True 變 False,False 變 True。
範例:成績與缺席數判斷
score = int(input("請輸入成績:"))
absent = int(input("請輸入缺席次數:"))
if score >= 60 and absent <= 3:
print("及格,且出席狀況良好")
elif score >= 60 and absent > 3:
print("及格,但出席狀況需注意")
else:
print("不及格")
寫複合條件時,善用括號 可以讓邏輯更清楚,也避免優先順序搞錯。
巢狀 if 與條件簡寫
Nested If & Conditional Expression
1. 巢狀 if(Nested if)
在 if 區塊裡再寫 if,適合處理「先大篩選,再細分」的情況。
score = int(input("分數:"))
if score >= 60:
print("及格")
if score >= 80:
print("表現優良")
else:
print("不及格,加油!")
2. 條件運算式(Conditional Expression)
當 if-else 很簡單時,可以寫成一行:
score = int(input("分數:"))
result = "及格" if score >= 60 else "不及格"
print(result)
推薦用在簡短判斷上,條件太複雜時還是用一般 if-else 比較好讀。
進階:match-case(Python 3.10+)
類似多向選擇的模式比對
從 Python 3.10 開始,新增了 match-case 語法,
可以把「多向選擇」寫得更像「模式比對」:
grade = input("請輸入等第 A~F:")
match grade:
case "A":
print("表現非常優秀")
case "B":
print("不錯,可以再努力")
case "C":
print("普通,需要加強")
case "D":
print("勉強及格,要更用心")
case "F":
print("不及格,加油!")
case _:
print("輸入錯誤")
在課堂上可以先讓同學知道有這個語法,
但實作時仍可先以 if-elif-else 為主,等基礎熟悉後再往模式比對前進。