這個主題考什麼
- 安排 if 和 elif 的順序,避免寬泛條件擋在前面。
- 預測空集合、零和 None 的真值。
- 正確使用比較鏈和布林運算子。
常見錯誤
- 想寫 == 卻寫成了 =。
- 把寬泛的 if 放在更具體的 elif 前面,導致 elif 永遠執行不到。
- 看錯縮進,誤以為某條語句屬於上面的分支。
範例題
從完整題庫中挑出的 10 道代表題。先自己作答,再展開答案。
-
1. 小明判斷「有奶且有茶」才做奶茶:True and False 的結果是?
顯示答案
答案
B. False解析: and 遇到一側為假就回傳該值,不再看其餘部分;兩個條件都要成立,所以結果是 False,短路省掉了後面的判斷。
-
2. 🧋 小明判斷「有奶且有茶」才做奶茶,True and 0 的結果是?
顯示答案
答案
B. 0解析: and 回傳第一個假值,0 是假值,所以結果是 0 而不是 False;真值判斷和物件本身不是一回事,這點常被忽略。
-
3. 🧋 小明根據銷量標記「爆款」或「普通」,以下哪個等價於三元運算子 a if cond else b?
顯示答案
答案
A. 用 if/else 分支分別取 a 或 b解析: 這個表達式就是 if/else 分別選 a 或 b 的簡寫。? : 屬於 C 系語言,Python 沒有。
-
4. 如果條件是 `if 0:`,會執行哪個分支?
顯示答案
答案
A. else 分支解析: if 0 判斷真假,0 為假,if 體被跳過、執行 else;空字串和空串列也是同樣結果,不會報錯,分支只走一條。
-
5. 小明查看「珍珠」是否在奶茶加料串列 ["珍珠", "椰果", "布丁"] 裡:"珍珠" ___ ["珍珠", "椰果", "布丁"]
顯示答案
答案
in解析: in 判斷成員關係並回傳布林值,boba 正在這三種配料裡,所以為真;not in 是它的否定,兩者都只回傳布林值。
-
6. 🧋 小明判斷「有奶且有茶」才做奶茶,`1 and 2` 的結果轉成 bool 是 ___
顯示答案
答案
True解析: 1 and 2 因兩邊都為真而回傳 2,bool(2) 是 True;值本身和它的真假是兩個問題,別混為一談。
-
7. 🧋 小明查看某款奶茶是否在選單裡,判斷鍵'age'是否在字典d中:'age' ___ d
顯示答案
答案
in解析: 對字典來說 in 查的是鍵不是值,'age' in d 問的是該鍵是否存在。要查值得用 d.values()。
-
8. 條件表達式把 0 當什麼?輸出什麼?
x = 0 print("yes" if x else "no")顯示答案
答案
no解析: 0、空字串、空串列和 None 都算假,所以取 else 的值;只有 x 為真時才會列印 yes,這個規則叫真值判斷。
-
9. `score(-5, 0)` 回傳什麼?
from math import sqrt # X, and Y variable names against [pylint]: C0104, but is the same as the stub, advise not to change this. def score(x, y): dart_location = sqrt(x * x + y * y) if dart_location <= 1.0: return 10 elif dart_location <= 5.0: return 5 elif dart_location <= 10.0: return 1 else: return 0 print(score(-5, 0))顯示答案
答案
5解析: sqrt(25 + 0) = 5.0,大於 1.0 但不超過 5.0,第二個分支回傳 5。判斷用的是 <=,邊界包含在內。
-
10. `equilateral([0.5, 0.5, 0.5])` 回傳什麼?
def valid(sides): return sum(sorted(sides)[:2]) >= sorted(sides)[2] and all( side > 0 for side in sides ) def equilateral(sides): return valid(sides) and all(sides[0] == side for side in sides) def isosceles(sides): return valid(sides) and any( side_1 == side_2 for side_1, side_2 in zip(sorted(sides), sorted(sides)[1:]) ) def scalene(sides): return valid(sides) and not isosceles(sides) print(equilateral([0.5, 0.5, 0.5]))顯示答案
答案
True解析: 浮點同樣適用:0.5 + 0.5 >= 0.5 且三邊相等,等邊判斷回傳 True。沒有任何只許整數的限制。
常見問題
elif 等於 else 裡面再寫 if 嗎?
邏輯上相似,但 elif 讓分支互斥,也避免多一層縮進。
哪些值是假?
False、None、數字零,以及空字串或空集合為假;大多數其他物件為真。
繼續保持練習節奏。
完整題庫會在這個瀏覽器裡記住進度,支援依主題篩選,並包含每日一題和錯題重練。