Dlaczego `a == b lub c lub d` zawsze ma wartość Prawda? [duplikować]
To pytanie ma już tutaj odpowiedź:
Jak przetestować wiele zmiennych względem wartości? 20 odpowiedziPiszę system bezpieczeństwa, który odmawia dostępu nieautoryzowanym użytkownikom.
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.")
Zapewnia dostęp do autoryzowanych użytkowników zgodnie z oczekiwaniami, ale pozwala także nieautoryzowanym użytkownikom!
Hello. Please enter your name:
Bob
Access granted.
Dlaczego tak się dzieje? Jasno stwierdziłem, że udzielam dostępu tylko wtedy, gdyname
równa się Kevin, Jon lub Inbar. Próbowałem też odwrotnej logiki,if "Kevin" or "Jon" or "Inbar" == name
, ale wynik jest taki sam.