「a == x 或y 或z」謬誤
當嘗試將一個變數與多個值進行比較時,很容易使用Python 的邏輯運算符,如:
if a == x or y or z: # Incorrect
但是,此表達式的計算結果總是為True,無論 a 的值為何。這是因為在此上下文中“或”運算符的行為不符合預期。
「或」運算子如何運作
Python 的「或」運算子 (|)如果任何運算元為 True,則計算結果為 True。因此,在上面的表達式中,由於 x、y 或 z 之一始終為 True(Python 中非空值為 True),因此無論 a 的值為何,表達式的計算結果均為 True。
比較多個值的正確方法
要正確地將一個變數與多個值進行比較,有幾種方法選項:
使用顯式「或」運算子分別與每個數值進行比較:
if a == x or a == y or a == z: # Correct
建立有效值的集合或列表,並使用「in」運算符檢查成員資格:
if a in {"Kevin", "Jon", "Inbar"}: # Correct
使用生成器表達式「any()」明確檢查每個值:
if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]): # Correct
考慮效能
為了效能,使用「in」運算子的集合或清單通常是最快的選擇。使用“any()”的生成器表達式最冗長且最慢。
用法範例
僅授予授權使用者存取權:
authorized_names = {"Kevin", "Jon", "Inbar"} name = input("Please enter your name: ") if name in authorized_names: print("Access granted.") else: print("Access denied.")
以上是為什麼 Python 中 `a == x or y or z` 總是計算為 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!