Python 流程控制(04):讓程式決策更靈活,透過 if、else 和 elif 控制程式走向

讓程式會「判斷」,就能從被動輸出,升級成會思考的助理。

這一篇把日常抉擇——如「週末要不要帶傘?」——轉成程式裡的條件分支:ifelifelse,再用 and / or / not 把多個條件組合成清楚的規則。

你會看到為什麼有時要用「多路徑」(if-elif-else) 而不是堆疊好幾個 if,以及如何避免縮排、===、型別比較等新手常見陷阱。

if 語句介紹

if 語句是最基本的條件語句,根據條件決定是否執行特定程式碼區塊。

if 條件:
    # 當條件為 True 時執行的程式碼
    執行某些操作
      

條件必須是布林表達式,結果為 True 時,縮排的程式碼區塊會被執行;結果為 False 時,則會被跳過。

範例:

age = 15
if age >= 18:
 print("您可以投票")
 
# 如果 age 小於 18,不會顯示任何內容
Python 流程控制案例 age verification

實際應用 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("多睡一會兒")
Cinema age restriction sign showing PG-13 rating

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 區塊。

捐贈等級判 Donation tiers with platinum, gold, silver, and bronze medals

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 運算子,建立了複雜的決策邏輯。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端