Python 流程控制案例 age verification

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

發佈留言

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

High Quality

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Fast Delivery

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Best Warranty

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.