Python 條件選擇(if / elif / else)
Selection Statements in Python
條件選擇是什麼? if / elif / else 的角色

在 Python 中,條件選擇主要使用 ifelifelse 來控制程式流程:
根據「條件是否成立」,決定要執行哪一段程式碼。

你可以把它想成「程式的十字路口」:
當條件為真(True)走這條路,為假(False)就走另一條。

在科學計算與日常應用中,「判斷」幾乎無所不在:
例如:溫度是否過高?分數是否及格?是否需要發出警告?

Python 條件敘述的分類地圖 常見結構整理

常見的條件敘述可以這樣分類:

  • 單一路徑選擇:只有「成立時」做事(if)。
  • 雙向選擇:成立與不成立,各有不同處理(if-else)。
  • 多向選擇:依照不同條件分成多條路(if-elif-else)。
  • 條件組合:使用 andornot 把多個條件合併。
  • 巢狀條件:在 if 區塊裡面再寫 if,形成多層判斷。
  • 條件運算式:把簡單的 if-else 寫成一行(a if cond else b)。
  • 模式比對:Python 3.10 之後的 match-case,類似多向選擇的進階版。

初學時先把前三種基本 if 型態弄熟,再慢慢加上條件組合與巢狀就可以了。

三種基本 if 型態 單一、雙向、多向

1. 單一條件判斷(if)

只有在條件為真時才執行某段程式碼,否則直接略過。

if 條件:
    # 如果條件為真,執行這裡的程式碼
    程式碼 A
程式碼 B
條件 Y N
程式碼 A
程式碼 B

2. 條件判斷與否(if-else)

「成立」與「不成立」各有一條路。

if 條件:
    # 如果條件為真,執行這裡的程式碼
    程式碼 A
else:
    # 如果條件為假,執行這裡的程式碼
    程式碼 B
程式碼 C
條件 Y N
程式碼 A
程式碼 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
if-elif-else
條件組合與多條件判斷 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 為主,等基礎熟悉後再往模式比對前進。