Heim >Backend-Entwicklung >Python-Tutorial >Warum wird „a == x oder y oder z' in Python immer als wahr ausgewertet?

Warum wird „a == x oder y oder z' in Python immer als wahr ausgewertet?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 04:35:17740Durchsuche

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

Der Irrtum „a == x oder y oder z“

Beim Versuch, eine Variable mit mehreren Werten zu vergleichen, ist es verlockend, ihn zu verwenden Logische Operatoren von Python, wie in:

if a == x or y or z:  # Incorrect

Dieser Ausdruck wird jedoch immer als True ausgewertet, unabhängig vom Wert von A. Dies liegt daran, dass sich der „oder“-Operator in diesem Kontext nicht wie erwartet verhält.

Funktionsweise des „oder“-Operators

Pythons „oder“-Operator (|) wird als True ausgewertet, wenn einer seiner Operanden True ist. Da also im obigen Ausdruck eines von x, y oder z immer wahr ist (ein nicht leerer Wert ist in Python wahr), wird der Ausdruck unabhängig vom Wert von a als wahr ausgewertet.

Korrekte Möglichkeiten zum Vergleichen mit mehreren Werten

Um eine Variable korrekt mit mehreren Werten zu vergleichen, gibt es mehrere Optionen:

  • Explizite „ODER“-Operatoren:

Verwenden Sie explizite „ODER“-Operatoren, um jeden Wert einzeln zu vergleichen:

if a == x or a == y or a == z:  # Correct
  • Sets bzw Listen:

Erstellen Sie einen Satz oder eine Liste gültiger Werte und verwenden Sie den „in“-Operator, um die Mitgliedschaft zu überprüfen:

if a in {"Kevin", "Jon", "Inbar"}:  # Correct
  • Generatorausdruck und „any()“:

Verwenden Sie einen Generatorausdruck mit „any()“, um jeden explizit zu überprüfen Wert:

if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]):  # Correct

Leistung berücksichtigen

Aus Gründen der Leistung ist die Verwendung von Sätzen oder Listen mit dem „in“-Operator normalerweise die schnellste Option. Generatorausdrücke, die „any()“ verwenden, sind am ausführlichsten und langsamsten.

Beispielverwendung

Zugriff nur autorisierten Benutzern gewähren:

authorized_names = {"Kevin", "Jon", "Inbar"}
name = input("Please enter your name: ")
if name in authorized_names:
    print("Access granted.")
else:
    print("Access denied.")

Das obige ist der detaillierte Inhalt vonWarum wird „a == x oder y oder z' in Python immer als wahr ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn