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
Freigeben: 2024-12-31 04:35:17
Original
755 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren
  • 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
Nach dem Login kopieren
  • 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
Nach dem Login kopieren

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.")
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage