功能:當程式遇到錯誤時,不會直接中止,而是改執行你指定的處理方式。
一句話記憶:「預防程式因錯誤而當掉。」
情境一:使用者輸入錯誤
try:
age = int(input("請輸入年齡:"))
print(str(age)+"歲")
except:
print("請輸入數字")
輸出
請輸入年齡:二十歲
請輸入數字
情境二:除數不能為 0
try:
a=int(input("請輸入一個整數:"))
print(100 / a)
except:
print("不能除以0")
此時輸入0,則會
輸出
不能除以0
資料工程常見用途
Python 3.10 以上支援
功能:當有很多種固定選項時,比一直寫 if...elif...else 更清楚。
一句話記憶:「依照不同情況,走不同分支。」
情境一:飲料點餐
drink=str(input("請輸入飲料名稱:"))
match drink:
case "紅茶":
print("30元")
case "奶茶":
print("40元")
case "咖啡":
print("50元")
case _:
print("沒有販售")
請輸入飲料名稱:奶茶
輸出
40元
情境二:星期提醒
day = "Sunday"
match day:
case "Monday":
print("上班")
case "Saturday":
print("休息")
case "Sunday":
print("出去玩")
case _:
print("一般日")
輸出
出去玩
資料工程常見用途
例如不同檔案格式:
match file_type:
case "csv":
print("讀CSV")
case "json":
print("讀JSON")
case "xml":
print("讀XML")
功能:只有一個簡單判斷時,可以把 if...else 寫成一行。
一句話記憶:「簡短版 if...else。」
一般寫法
score = 80
if score >= 60:
result = "及格"
else:
result = "不及格"
print(result)
三元寫法
score = 80
result = "及格" if score >= 60 else "不及格"
print(result)
輸出
及格
情境一:判斷成年
age = 18
status = "成年" if age >= 18 else "未成年"
print(status)
輸出
成年
情境二:登入成功
login = True
message = "登入成功" if login else "登入失敗"
print(message)
輸出
登入成功
資料工程常見用途
資料缺失值替換:
name = user if user else "未知使用者"
如果沒有資料,就給預設值。
功能:確認某件事情一定成立。
如果條件不成立,就立刻停止程式並提醒開發者。
一句話記憶:「確認程式沒有違反預期。」
情境一:確認年齡合法
age = 20
assert age >= 18
print("可以進入")
輸出
可以進入
如果:
age = 15
assert age >= 18
輸出
AssertionError
代表:
這個條件不應該發生
情境二:確認列表不是空的
students = ["Amy", "John"]
assert len(students) > 0
print("開始點名")
如果:
students = []
程式就會停止。
資料工程常見用途
例如 ETL 前確認資料:
assert len(data) > 0
代表:
資料不能是空的或確認欄位存在:
assert "name" in row
避免後續處理時因缺少欄位而發生錯誤。
| 語法 | 功能 | 什麼時候使用 |
|---|---|---|
| try...except | 捕捉錯誤,避免程式中斷 | 使用者輸入、檔案、API、資料轉換 |
| match...case | 多種固定情況的分支判斷 | 選單、指令、檔案格式 |
| 三元運算式 | 一行完成簡單 if...else | 簡單條件賦值 |
| assert | 驗證條件是否成立 | 開發、測試、資料驗證 |