Olá, Estudante. Como vai?
O seu código está muito bem estruturado e a lógica do laço while utilizando uma variável de controle (cadastro_valido) é uma excelente prática para garantir que o usuário só saia do loop após fornecer dados que atendam aos requisitos.
Para agregar ainda mais valor ao seu exercício de validação de sistemas de login, gostaria de destacar alguns pontos técnicos importantes:
- Uso do elif vs if: No seu código, você utilizou o
elif. Isso significa que, se o nome de usuário for inválido, o sistema nem chega a verificar a senha naquela rodada. Essa é uma escolha de design válida, mas em sistemas reais, às vezes é preferível mostrar todos os erros de uma vez para o usuário. - Simplificação da condição do while: Em Python, você pode escrever
while not cadastro_valido:. É uma forma mais "pythônica" e elegante de dizer "enquanto o cadastro não for válido", tornando a leitura do código mais próxima da linguagem natural. - Segurança da Informação: Embora este seja um exercício de lógica, uma boa prática em sistemas de login é nunca usar
input() para senhas em produção, pois os caracteres ficam visíveis no terminal. Em Python, existe a biblioteca getpass que oculta o que está sendo digitado.
Para levar o seu desafio a um próximo nível, deixo uma sugestão de refatoração que verifica as duas condições simultaneamente e utiliza mensagens mais específicas:
cadastro_valido = False
while not cadastro_valido:
usuario = input("Digite seu nome de usuário: ").strip()
senha = input("Digite sua senha: ").strip()
erros = []
if len(usuario) < 5:
erros.append("O nome de usuário deve ter pelo menos 5 caracteres.")
if len(senha) < 8:
erros.append("A senha deve ter pelo menos 8 caracteres.")
if not erros:
print("Cadastro realizado com sucesso!")
cadastro_valido = True
else:
for erro in erros:
print(f"Erro: {erro}")
Nesse exemplo, se o usuário errar ambos, ele recebe as duas orientações de uma só vez, o que melhora a experiência de uso (UX).
Espero que possa ter lhe ajudado!