讓程式會「判斷」,就能從被動輸出,升級成會思考的助理。
這一篇把日常抉擇——如「週末要不要帶傘?」——轉成程式裡的條件分支:if
、elif
、else
,再用 and / or / not
把多個條件組合成清楚的規則。
你會看到為什麼有時要用「多路徑」(if-elif-else
) 而不是堆疊好幾個 if
,以及如何避免縮排、=
與 ==
、型別比較等新手常見陷阱。
if 語句介紹
if 語句是最基本的條件語句,根據條件決定是否執行特定程式碼區塊。
if 條件:
# 當條件為 True 時執行的程式碼
執行某些操作
條件必須是布林表達式,結果為 True 時,縮排的程式碼區塊會被執行;結果為 False 時,則會被跳過。
範例:
age = 15
if age >= 18:
print("您可以投票")
# 如果 age 小於 18,不會顯示任何內容

實際應用 if 語句 – 檢查使用者年齡是否滿足
考慮一個電影串流平台,需要檢查使用者年齡是否滿足觀看 PG-13 電影的要求:
# 檢查使用者年齡
user_age = 12
if user_age < 13:
print("抱歉,需要家長控制")
print("請尋求家長協助解鎖此內容")
# 如果年齡大於或等於 13,程式繼續執行其他內容
這個程式會檢查 user_age 是否小於 13,如果是,則顯示需要家長控制的訊息。
布林運算子:and
and 運算子結合兩個布林表達式,只有當兩個表達式都為 True 時,結果才是 True。
# and 運算子範例
(5 > 3) and (10 < 20) # True,因為兩個表達式都是 True
(5 > 3) and (10 > 20) # False,因為第二個表達式是 False
(5 < 3) and (10 < 20) # False,因為第一個表達式是 False
(5 < 3) and (10 > 20) # False,因為兩個表達式都是 False
使用 and 運算子時,如果第一個表達式為 False,Python 會短路求值(不評估第二個表達式),因為結果已經確定為 False。
布林運算子:or
or 運算子結合兩個布林表達式,只要有一個表達式為 True,結果就是 True。
# or 運算子範例
(5 > 3) or (10 < 20) # True,因為兩個表達式都是 True
(5 > 3) or (10 > 20) # True,因為第一個表達式是 True
(5 < 3) or (10 < 20) # True,因為第二個表達式是 True
(5 < 3) or (10 > 20) # False,因為兩個表達式都是 False
使用 or 運算子時,如果第一個表達式為 True,Python 會短路求值(不評估第二個表達式),因為結果已經確定為 True。
布林運算子:not
not 運算子用於反轉布林表達式的值,將 True 變為 False,將 False 變為 True。
基本用法
not True # False
not False # True
not (5 > 3) # False
not (5 < 3) # True
實際應用
is_weekend = False
if not is_weekend:
print("該上班了!")
is_valid = not (username == "" or password == "")
# 檢查用戶名和密碼是否都不為空
not 運算子在需要檢查條件不成立的情況下特別有用。
else 語句
else 語句用於定義當 if 條件不成立時應執行的程式碼區塊。
if 條件:
# 條件為 True 時執行
執行操作 A
else:
# 條件為 False 時執行
執行操作 B
else 語句必須跟在 if 語句之後,且不能單獨使用。
範例:
is_weekday = True
if is_weekday:
print("早上六點半起床")
else:
print("多睡一會兒")

else 電影分級判斷範例
讓我們改進電影串流平台的年齡檢查程式,增加 else 語句:
user_age = 15
if user_age >= 13:
print("您可以觀看 PG-13 電影")
print("祝您觀影愉快!")
else:
print("抱歉,您必須年滿 13 歲才能觀看此電影")
print("請尋求家長協助或選擇適合您年齡的內容")
使用 else 語句後,我們的程式碼更加完整,無論條件是否成立都有對應的處理方式。
elif 語句
elif 是 “else if” 的縮寫,用於檢查多個條件,當前一個條件不成立時才會檢查 elif 條件。
score = 85
if score >= 90:
print("優秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("普通")
elif score >= 60:
print("及格")
else:
print("不及格")
程式會從上到下檢查條件,一旦找到第一個成立的條件,執行對應程式碼後就會跳過剩餘的 elif 和 else 區塊。

elif 捐贈等級判斷範例
考慮一個慈善機構根據捐款金額顯示感謝訊息的程式:
donation = 750 # 假設捐款金額為 750 元
print("感謝您的捐款!")
if donation >= 1000:
print("您已達到白金贊助級別")
elif donation >= 500:
print("您已達到黃金贊助級別")
elif donation >= 100:
print("您已達到銀牌贊助級別")
else:
print("您已達到銅牌贊助級別")
使用 elif 語句確保每位捐贈者只會收到一種等級的訊息,而不是多種。
為什麼使用 elif 而非多個 if?
使用多個 if
donation = 750
if donation >= 100:
print("銀牌級別")
if donation >= 500:
print("黃金級別")
if donation >= 1000:
print("白金級別")
輸出:
銀牌級別
黃金級別
問題:條件重疊時會執行多個區塊
使用 if-elif
donation = 750
if donation >= 1000:
print("白金級別")
elif donation >= 500:
print("黃金級別")
elif donation >= 100:
print("銀牌級別")
輸出:
黃金級別
優點:只執行第一個符合的條件
組合條件語句與布林運算子
在實際應用中,我們常需要組合多種條件語句和布林運算子:
age = 25
has_id = True
is_holiday = False
is_weekend = True
# 檢查是否符合進入酒吧的條件
if age >= 18 and has_id:
if is_holiday or is_weekend:
print("歡迎光臨,今天有特別優惠!")
else:
print("歡迎光臨!")
elif age >= 18 and not has_id:
print("抱歉,請出示有效身份證明")
else:
print("抱歉,未滿 18 歲不得入內")
這個例子結合了 if、elif、else 語句和 and、or、not 運算子,建立了複雜的決策邏輯。