地方政府公務人員四等-資訊處理類科計算機概要113 年第 21 題單選題
若執行下列的 Python 程式碼,螢幕上的輸出結果依序為何?
name1 = "Alice"
name2 = "Bob"
if name1 == "" or "user":
print("True")
else:
print("False")
if name2 == "Bob" and "Alice":
print("True")
else:
print("False")
ATrue True正確答案
BTrue False
CFalse True
DFalse False
A正確答案
Python 邏輯運算子 and/or 會回傳實際物件,非空字串在 if 條件中視為 True,故兩段皆輸出 True。
為什麼答案是 A
第一個 if 條件為 False or 'user' 回傳 'user' (True);第二個為 True and 'Alice' 回傳 'Alice' (True),故輸出兩個 True。
載入中…
完整詳解
Pro · 無限重點 Python 邏輯運算子 and/or 會回傳實際物件,非空字串在 if 條件中視為 True,故兩段皆輸出 True。
看到 or 接非空字串,結果必為該字串(視為 True);看到 and 接非空字串且前方為 True,結果亦為該字串(視為 True)。
逐選項分析
A✓ 正確
第一個 if 條件為 False or 'user' 回傳 'user' (True);第二個為 True and 'Alice' 回傳 'Alice' (True),故輸出兩個 True。
B✕
第二個 if 條件中,True and 'Alice' 會回傳 'Alice',在 if 判斷中視為 True 而非 False,故不會輸出 False。
C✕
第一個 if 條件中,False or 'user' 會回傳 'user',在 if 判斷中視為 True 而非 False,故不會輸出 False。
D✕
兩個 if 條件的最終評估結果皆為非空字串,在 Python 中均視為 True,不可能輸出 False。
Python 邏輯運算子回傳值規則
| 運算子 | 運算規則 | 範例與結果 |
|---|
| or | 若左側為 True 則回傳左側,否則回傳右側 | False or "user" ➔ "user" |
| and | 若左側為 False 則回傳左側,否則回傳右側 | True and "Alice" ➔ "Alice" |
許多初學者誤以為邏輯運算子(and/or)兩側必須是布林值,或認為條件式寫法不合法。Python 允許非空字串參與邏輯運算,且會回傳最後評估的物件,而在 if 判斷中非空字串等同於 True。