Olá, Andressa. Como vai?
Excelente resolução! O seu código está 100% correto e atende com perfeita precisão a todos os requisitos do desafio do João.
A estrutura usando o laço while True (um loop infinito controlado nos bastidores) combinado com o operador lógico and para validar as duas condições simultaneamente é exatamente a melhor prática para esse tipo de fluxo. O uso do comando break para quebrar o laço assim que os dados são válidos garante que o programa não fique preso em uma repetição desnecessária.
Para enriquecer o seu projeto e expandir a lógica para cenários ainda mais realistas de segurança, separei duas dicas técnicas e uma sugestão de melhoria na experiência do usuário:
1. Dica de Usabilidade: Feedbacks Direcionados
No seu código atual, se o usuário digitar um nome de usuário válido (ex: Ana Maria), mas errar o tamanho da senha (ex: cinco), a mensagem do else diz que ambos estão errados. Na computação, dar um feedback específico sobre qual dos campos falhou melhora drasticamente a experiência de quem está navegando pelo site.
Podemos modular os avisos separando as validações dentro do laço. Veja esta variação mantendo a sua lógica do while True:
while True:
usuario = input("Digite o nome de usuário: ")
senha = input("Digite a senha: ")
# Criamos variáveis booleanas para guardar o estado de cada validação
usuario_valido = len(usuario) >= 5
senha_valida = len(senha) >= 8
if usuario_valido and senha_valida:
print("✅ Cadastro realizado com sucesso!")
break
# Se o programa não quebrou, investigamos o erro específico para ajudar o usuário:
if not usuario_valido:
print("❌ Erro: O nome de usuário deve ter pelo menos 5 caracteres.")
if not senha_valida:
print("❌ Erro: A senha deve ter pelo menos 8 caracteres.")
print("Por favor, tente novamente.\n")
2. Tratando Espaços em Branco com .strip()
Um comportamento muito comum em formulários é o usuário apertar a barra de espaço por engano antes ou depois de digitar o texto (por exemplo, digitar o usuário como "Ana " com dois espaços no final). Para a função len(), o caractere de espaço em branco conta como uma letra válida, o que poderia burlar a segurança do tamanho mínimo exigido pelo João.
Para blindar o seu código contra isso, a boa prática no Python é utilizar o método .strip(), que remove de forma automática todos os espaços inúteis do início e do fim de uma string:
# O .strip() limpa espaços acidentais antes de fazer a checagem do tamanho
usuario = input("Digite o nome de usuário: ").strip()
senha = input("Digite a senha: ").strip()
Parabéns por mais uma entrega impecável, com saídas limpas e uma lógica de repetição muito bem consolidada! Você está progredindo de forma fantástica no Python.
Espero que possa ter lhe ajudado!