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 AntwortenIch 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.