Почему `a == b или c или d` всегда оценивается как True? [Дубликат]
На этот вопрос уже есть ответ здесь:
Как проверить несколько переменных против значения? 20 ответовЯ пишу систему безопасности, которая запрещает доступ неавторизованным пользователям.
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.")
Он предоставляет доступ авторизованным пользователям, как и ожидалось, но также позволяет неавторизованным пользователям!
Hello. Please enter your name:
Bob
Access granted.
Почему это происходит? Я'Я четко заявил, что предоставлять доступ только тогда, когдаname
равен Кевину, Джону или Инбару. Я также попробовал противоположную логику,if "Kevin" or "Jon" or "Inbar" == name
, но результат тот же.