Por que 'a == b ou c ou d' sempre é avaliado como Verdadeiro? [duplicado]
Esta questão já tem uma resposta aqui:
Como testar várias variáveis em relação a um valor? 20 respostasEstou escrevendo um sistema de segurança que nega acesso a usuários não autorizados.
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.")
Ele concede acesso a usuários autorizados conforme o esperado, mas também permite a entrada de usuários não autorizados!
Hello. Please enter your name:
Bob
Access granted.
Por que isso ocorre? Eu claramente afirmei apenas conceder acesso quandoname
é igual a Kevin, Jon ou Inbar. Eu também tentei a lógica oposta,if "Kevin" or "Jon" or "Inbar" == name
, Mas o resultado é o mesmo.