Warum ergibt "a == b oder c oder d" immer "True"? [Duplikat]

Diese Frage hat hier bereits eine Antwort:

Wie teste ich mehrere Variablen gegen einen Wert? 20 Antworten

Ich schreibe ein Sicherheitssystem, das nicht autorisierten Benutzern den Zugriff verweigert.

import sys

print("Hello. Please enter your name:")
name = sys.stdin.readline().strip()
if name == "Kevin" or "Jon" or "Inbar":
    print("Access granted.")
else:
    print("Access denied.")

Es gewährt autorisierten Benutzern erwartungsgemäß Zugriff, lässt aber auch nicht autorisierte Benutzer zu!

Hello. Please enter your name:
Bob
Access granted.

Warum tritt das auf? Ich habe ausdrücklich erklärt, dass ich nur dann Zugriff gewähren soll, wennname entspricht Kevin, Jon oder Inbar. Ich habe auch die entgegengesetzte Logik versucht,if "Kevin" or "Jon" or "Inbar" == name, aber das Ergebnis ist das gleiche.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage