Olá, Juliana. Como vai?
O seu código está excelente e resolve o problema de validação de forma muito eficiente! O uso da estrutura while True em conjunto com os comandos continue e break é o padrão ideal em Python para criar loops de repetição que dependem de validações dinâmicas de dados inseridos pelo usuário.
Analisando a sua lógica, o fluxo funciona perfeitamente: o continue interrompe a iteração atual e volta para o topo do laço caso alguma regra falhe, enquanto o break garante que o programa saia do loop apenas quando todas as condições forem atendidas com sucesso.
Para complementar os seus estudos e agregar ainda mais valor ao seu aprendizado, podemos aplicar duas boas práticas de refatoração bem comuns no mercado de desenvolvimento:
- **Remover o excesso de
continue**: Como as suas validações estão estruturadas com blocos if independentes e mensagens de erro específicas, o uso do continue no primeiro if é obrigatório para evitar que o código verifique a senha antes do usuário corrigir o nome. Porém, podemos estruturar as validações usando elif ou simplesmente deixar o fluxo correr se organizarmos os testes dentro de uma única lógica de validação. - Modularização com Funções: Conforme os seus sistemas em Python forem crescendo, misturar a captura de dados (
input) com as regras de validação pode dificultar a manutenção do código. Isolar as regras em uma função separada deixa o seu script muito mais limpo e reutilizável.
Veja um exemplo de como reestruturar o seu código aplicando essas boas práticas:
def validar_credenciais(usuario, senha):
if len(usuario) < 5:
print("O nome de usuário deve ter pelo menos 5 caracteres.")
return False
if len(senha) < 8:
print("A senha deve ter pelo menos 8 caracteres.")
return False
return True
# Loop principal do programa
while True:
nome_usuario = input("Digite seu nome de usuário: ")
senha = input("Digite sua senha: ")
if validar_credenciais(nome_usuario, senha):
print("Cadastro realizado com sucesso!")
break
Dica de ouro em Python: Separar a lógica em funções deixa o seu laço while responsável apenas pelo fluxo da tela (perguntar e parar), enquanto a função foca exclusivamente nas regras de negócio. Isso tornará a criação de testes automatizados muito mais simples no futuro!
Parabéns pela excelente implementação do laço de repetição e pela organização do código!
Espero que possa ter lhe ajudado!