這裡的範例是可在 Python 3 執行的獨立小程式;輸出框是預先核對的結果。題庫作答時,請保留題目提供的 solve 與參數,使用 return 交回答案。模組章的雙檔範例會另外標明操作方式。
01|條件先得到 True 或 False
條件判斷從比較開始:== 相等、!= 不相等、< 小於、> 大於,<= 與 >= 則包含邊界。比較式的結果是 bool,Python 再根據它決定是否執行一個區塊。
score = 60
print(score >= 60)
print(score > 60)
print(score == 60)
print(score != 60)True False True False
02|if 與 else:兩條路選一條
if 條件後面加冒號,下一行縮排四個空格。條件為真時執行 if 區塊;否則執行 else 區塊。else 不需要再寫條件。區塊結束後回到原本縮排,後面的程式會繼續執行。
score = 58
if score >= 60:
print("達到目標")
else:
print("再練習一次")
print("繼續前進")再練習一次 繼續前進
03|elif:依順序找第一個符合的條件
多種情況可用 elif 串起來。一組 if/elif/else 只會執行第一個符合的分支。若條件是分數門檻,要先檢查較高門檻,否則 95 分可能先被 60 分的條件接走。
score = 85
if score >= 90:
level = "A"
elif score >= 75:
level = "B"
elif score >= 60:
level = "C"
else:
level = "再練習"
print(level)B
04|and、or、not 組合條件
and 要兩邊都成立,or 至少一邊成立,not 把真假反過來。組合條件時先用括號把意思寫清楚。Python 會短路判斷:and 左邊已是假、或 or 左邊已是真時,不需要再算右邊。
- 判斷 x 是 1 或 2,寫 x == 1 or x == 2,不能寫 x == 1 or 2。
- 先把每個小條件說成一句完整的話,再用 and/or 串接。
age = 14
has_ticket = True
is_closed = False
allowed = (age >= 12 and has_ticket) and not is_closed
print(allowed)
print(age < 12 or age >= 65)
print(12 <= age <= 18)True False True
05|包含與空資料的判斷
in 可以檢查資料是否出現在清單或文字中。空字串、空清單、0 與 None 在條件位置會被當成假;非空字串通常為真,因此文字 "False" 並不是布林 False。初學時用明確比較較容易看出意思。
colors = ["blue", "green"]
print("green" in colors)
print("red" not in colors)
text = ""
if len(text) == 0:
print("目前沒有文字")
print(bool("False"))True True 目前沒有文字 True
06|先檢查危險條件,再做計算
把不能計算的情況先處理掉,常能讓程式更清楚。下例先檢查數量是否為 0,避免除以 0;return 也會結束目前這次函式呼叫,後面的計算就不會繼續。
def average(total, count):
if count == 0:
return 0
return total / count
print(average(18, 3))
print(average(0, 0))6.0 0
WHEN SOMETHING GOES WRONG
遇到錯誤,先檢查這裡
漏掉冒號或縮排不一致
if、elif、else 的標頭後都需要冒號;同一區塊用相同縮排。先對齊區塊,再看比較式。
門檻差了一個等號
至少 60 是 >= 60,超過 60 才是 > 60。用 59、60、61 三個測資確認邊界。
用 is 比較一般數值或文字
本章的值是否相等使用 ==。is 用來判斷是否為同一個物件,常見的入門用法是 value is None。
PAUSE AND TRY
先不要急著看別人的寫法
- 將分級範例的 score 改成 90、75、60、59,先找出會進入哪個分支。
- 分別寫出『有票且已開門』和『有票或有邀請函』的條件。
- 一個規則寫『10 到 20,包含兩端』,最少應測哪些邊界值?
先用紙筆預測,再改動範例中的數字或文字。結果與預期不同時,找出最早開始不同的那一步。
把這幾件事帶走
- 條件必須表達你想檢查的完整事實。
- elif 按順序執行,第一個符合就停止選分支。
- 每次都測試門檻剛好相等的情況。
FROM READING TO PRACTICE
用三道免費題,練習本章觀念
先做簡單題確認語法,再把幾個步驟組合起來。三題都來自本章主題的新版免費題庫,難度表示需要組合的基本概念。
延伸閱讀:Python 官方文件
以下是本章查證使用的官方資料。可以先完成入門練習,再回來查閱更完整的參數與說明。