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

Colocando nome de forma diferente

Olá, seguindo a logica que seria uma identificação de usuário em algum sistema, eu gostaria de saber como funcionaria para que o usuário não precisasse colocar o nome de forma correta, exemplo: seguindo o nome dos usuários do exemplo, gostaria que o usuário Flávio não precisasse escrever o nome dele de forma perfeita, sem precisar colocar acento ou letras maiúsculas e mesmo assim o programa identificasse. eu até consegui resolver esse problema colocando vários elif, segue imagem do exemplo:

usuario = input("Informe o usuário do sistema:")

if(usuario == "Flávio"):
    print("Seja bem-vindo Flávio!")
elif(usuario == "Flavio"):
    print("Seja bem-vindo Flávio!")
elif(usuario == "flavio"):
    print("Seja bem-vindo Flávio!")
`

Mas queria saber se é possível simplificar esse código.

também tentei dessa forma:

if(usuario == "Flávio", "Flavio", "flavio"):
    print("Seja bem-vindo Flávio!")

Porém, assim não funcionou, ele identifica que é o Flávio mesmo se eu digitar outro usuário ou nome aleatório.

2 respostas

Olá Diego,

Eu e um amigo que estamos fazendo o curso, encontramos esta solução. Fizemos alguns testes e funciona bem. Deve haver uma forma mais fácil, mas acreditamos que essa seja uma solução boa para este momento.

usuario = input("Informe o usuário do sistema:")
usuario = usuario.lower()

usuario_cadastrado = "flavio"
usuario_2 = "flávio"

if usuario == usuario_cadastrado:
    print("Seja Bem Vindo Flávio!")
elif usuario==usuario_2:
    print("Seja Bem Vindo Flávio!")
else:
    print("Usuário não reconhecido")
solução!

Olá, talvez para o nivel em que vc está a melhor forma seja como o Juliano postou, com if e elif

porém conforme vc vai avançando na linguagem, vc aprende outras formas de resolver o mesmo problema.

Diego, para essa forma que vc quer usando apenas um if, vc necessita saber de operadores lógicos em python. Que são and, or e not

cada um serve para uma coisa, and serve para agregar, o or é o ou, ele serve para da alternativa e o not ""exclui""

Um exemplo lúdico para ficar claro

Quando vc está com fome e alguém te pergunta vc quer maçã ou abacaxi o operador lógico utilizado foi o or, que ele te dar esta possibilidade de escolher entre um ou outro, vc vai comer qualquer um desses dois

Se sua mãe lhe pedir para ir no mercado comprar maçã e abacaxi, ela está dizendo que vc tem que comprar a maçã e o abacaxi, se for só a maçã ou só o abacaxi vc vai apanhar kkkk

com operadores lógicos é quase igual, voltando ao computador ele vai entender da seguinte forma

|and| Retorna True se ambas as afirmações forem verdadeiras |

|or|Retorna True se uma das afirmações for verdadeira |

| not | retorna Falso se o resultado for verdadeiro ou Verdadeiro se o resultado for falso |

na estrutura de condição o if, ele só entra dentro do if se o que estiver dentro dele for verdadeiro.

ou seja se vc quiser que, print algo dentro de um if, o seu if tem que ser verdadeiro if 10 > 1: print(10 é maior que 1)

esse print so vai ser exucutado pq 10 é maior que um

aplicando ao seu código:

usuario = input("Informe o usuário do sistema:")

if(usuario == "Flávio" or usuario == "Flavio" or usuario == "flavio" or usuario == "flávio"):
    print("Seja bem-vindo Flávio!")
else:
    print("Você não é Flávio!")

Basicamente seu computador está pensando, vou conferir se o usuário é igual a Flávio(se for vou da print, se não vou testar com o próximo) ai vamos supor que usario não era igual ao primeiro, ele testa com o segundo, se for igual ao segundo ele imprime, se não ele testa com último, se for igual a último ele imprime, se não for igual a nenhuma dessas opções, aí seu código vai cair no else, qua vai cair no print("Você não é Flávio!")

Pra otimizar um pouco mais é só colocar um lower no input ai diminui um pouco o tamanho do if

usuario = input("Informe o usuário do sistema: ").lower()

if(usuario == "flavio" or usuario == "flávio"):
    print("Seja bem-vindo Flávio!")
else:
    print("Você não é Flávio!")

Se ao invez de or vc colocasse and, a variavel usuario teria que ser igual a todos(o que é impossivel e ele cairia direto no else) normalmente se usa o and, para quando se tem tuas váriasveis distintas e que as duas tem que ser igual a alguma coisa para prosseguir no if, como por exemplo alistamento, se vc quiser se alistar sexo == masc and idade > 17

e not serve para inverter o sentido de algo, no seu codigo vc poderia colocar

usuario = input("Informe o usuário do sistema:")

if(usuario == "Flávio" and not usuario == "João"):
    print("Seja bem-vindo Flávio!")
else:
    print("Você não é Flávio!")

mas seria desnecessário o jeito mais eficiente foi como mostrei anteriormente, foi só um exemplo para vc ter uma noção de como pode usar o not, ele sempre vai transformar true em false, e false em true

E uma maneira muito mais avançada que acho que pra esse caso especifico é um pouco desnecessário mas é uma opção, normalmente se utiliza pra n precisar usar muitos e muitos e muitos if e elifs, que é utilizando REGEX(expressões regulares) isso vc vai aprender bem no final da formação python daqui da alura, é bem simples, não vou explicar muito afundo, pois pode bugar um pouco a mente, mas basicamente o regex vc define um padrão e ele faz o python testar se aquela variavel é igual aquele padrao, ai ele retorna True ou False

import re

padrao = re.compile("[f][l][aá][v][i][o]")

usuario = input("Informe o usuário do sistema: ").lower()

result = padrao.search(usuario)

if result:
    print("Seja Bem Vindo Flávio!")
else:
    print("Você não é Flávio!")

Sendo bem breve e resumido, vc define o padrao daquela forma ali que está na variavel chamada padrao, crie uma variavel para receber o valor true ou false do teste se o usuario é igual ao padrao ou não, da pra fzr muito mais coisa com regex, é uma ferramenta muito útil no dia a dia, e iria ficar muito grande se eu explicasse tudo que sei de regex aqui.

Espero que tenho ajudado, Bons estudos, Não DESISTAM no inicio pode parecer dificil mas depois é tranquilo e vcs vão se apaixonar por saber e entender como funciona cada coisa no mundo de T.I., Abraço!!!

Qualquer dúvida manda pergunta aqui no forum ou responde a minha resosta aqui