Oii, Daniel! Tudo bem?
A sua solução para o desafio de validação demonstra um nível de organização bem avançado. É muito interessante ver como você utilizou a modularização com funções pra separar cada etapa do processo de cadastro.
Sua abordagem trouxe uma interface mais limpa ao utilizar o comando para limpar o terminal e criar molduras para os títulos, o que melhora bastante a experiência de quem usa o programa.
- Modularização: Você dividiu o problema em funções específicas (
menu_cadastro_username, menu_cadastro_password), o que facilita a leitura e a manutenção futura. - Identidade visual: A criação da função
titulo_em_texto para padronizar os cabeçalhos ajuda a manter uma estética organizada no console. - Uso de recursão: Você utilizou chamadas recursivas para repetir a solicitação caso os dados sejam inválidos, garantindo que o programa não avance sem os critérios atendidos.
Ponto de Atenção: O Laço While
Embora sua lógica funcione através da recursão, o desafio solicitava especificamente o uso de um laço while.
Em Python, pra sistemas de entrada de dados, o while costuma ser preferido em vez da recursão por alguns motivos técnicos:
- Limite de memória: Se alguém errar o nome de usuário centenas de vezes seguidas, a recursão pode causar um estouro de pilha (stack overflow), enquanto o
while pode rodar indefinidamente sem problemas. - Estrutura da lista: No seu código, cada erro gera uma nova chamada que mantém a anterior "aberta" na memória até que a última seja concluída.
Você pode manter sua estrutura de funções, mas utilizar o laço para controlar as tentativas de forma mais linear:
def menu_cadastro_username():
while True: # O laço substitui a necessidade de chamar a função dentro dela mesma
titulo_em_texto('Cadastro de Usuário')
username = input('Digite seu nome de Usuário: ')
if len(username) >= 5:
DADOS_CADASTRAIS.append({'username': username})
os.system('cls')
break # Sai do laço apenas quando for válido
os.system('cls')
titulo_em_texto('O nome de usuário deve conter pelo menos 5 caracteres.')
Parabéns pela excelente estrutura de projeto e pelo cuidado com a apresentação visual no terminal.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!