首頁 > 後端開發 > Python教學 > 為什麼 Python 中 `a == x or y or z` 總是計算為 True?

為什麼 Python 中 `a == x or y or z` 總是計算為 True?

Linda Hamilton
發布: 2024-12-31 04:35:17
原創
745 人瀏覽過

Why Does `a == x or y or z` Always Evaluate to True in Python?

「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()":

使用生成器表達式「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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板