Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Utilizando apenas IF e ELSE, pq para qlqr nome digitado o if é verdadeiro e nunca entra na condição else?

Tentei resolver diferente o exercicio com o código abaixo, mas não entendi pq nunca entra na condição else! Para qualquer nome que seja digitado sempre vai exibir na tela Veja bem-vindo.

usuario = input("Digite o seu nome de usuário do sistema: ")

if(usuario == "Flavio", "Douglas", "Nico"):
    print("Seja bem-vindo, ", usuario, end=("!\n"))
else:
    print("Usuario não identificado!")
2 respostas

O python é uma liguagem que não possui uma forte tipagem, devido a isso ele pode confudir bastante no inicio.

nesse seu problema em especifo voce utilizou o input para inserir os dados no qual ele atribuiu a tipagem de string para a variavel depois no if vc comparou o valor de usuario com 3 strings que não possui dados incomuns além de sua tipagem, assim o if não valida os valores dentro da string somente seu tipo.

uma solução para resolver seu problema seria transformando os nomes "Flavio", "Douglas", "Nico" em uma lista de string adicionando 'in' e colchetes [] conforme o codigo abaixo:

usuario = input("Digite o seu nome de usuário do sistema: ")

if(usuario in ["Flavio", "Douglas", "Nico"]):
    print("Seja bem-vindo, ", usuario, end=("!\n"))
else:
    print("Usuario não identificado!")

Obs: neste modelo apresentado ele procura nomes exatamente iguais aos que estão dentro do colchetes podendo considerar errados caso coloque tudo minusculo ou outra letra maiscula além da primeira.

Ps: caso queira se aprofundar um pouco existe este artigo dentro da alura https://www.alura.com.br/artigos/como-comparar-objetos-no-python

solução!

Bom o que acontece é um comportamento padrão do python, ao separar elementos por vírgula ele cria uma tupla, logo o que seu IF faz é criar uma tupla com os seguintes valores (False, "Douglas", "Nico").

Tente fazer algo assim e você observará o mesmo comportamento,

usuario = input("Digite o seu nome de usuário do sistema: ")

tupla = usuario == "Flavio", "Douglas", "Nico"

if(tupla):
    print("Seja bem-vindo, ", usuario, end=("!\n"))
else:
    print("Usuario não identificado!")

Peça para ele printar tupla e você verá uma saída como essa,

(False, "Douglas", "Nico")

Outra caractística do Python é que se algo não é False, bom então ele é verdadeiro isso vale para qualquer inteiro, ponto flutuante, array, tupla, strings (exceto o valor 0, que é o valor False padrão da programação) então se você tá fazendo if (tupla) ele vai avaliar como verdadeiro e não entrar no else.

Portanto uma solução em que o código vai se comportar você espera é essa aqui,

usuario = input("Digite o seu nome de usuário do sistema: ")

if(usuario == "Flavio" or usuario == "Douglas" or usuario == "Nico"):
    print("Seja bem-vindo, ", usuario, end=("!\n"))
else:
    print("Usuario não identificado!")

ou até mesmo,

usuario = input("Digite o seu nome de usuário do sistema: ")

if(usuario == ("Flavio" or "Douglas" or "Nico")):
    print("Seja bem-vindo, ", usuario, end=("!\n"))
else:
    print("Usuario não identificado!")

A título de curiosidade você pode fazer as avaliações abaixo e obersavar como o Python vai se comportar,

if((False, 10, "Hello wolrd")):
    print("Isso é true!")
else:
    print("Isso é false!")

if("Hello wolrd"):
    print("Isso é true!")
else:
    print("Isso é false!")

if(10):
    print("Isso é true!")
else:
    print("Isso é false!")

if((False)):
    print("Isso é true!")
else:
    print("Isso é false!")

if(0):
    print("Isso é true!")
else:
    print("Isso é false!")

Tenha um Bom dia Marcelo!!! E Bons estudos, siga firme!!! ;)))