Olá, Giovany. Como vai?
Parabéns pela resolução! Você aplicou um padrão de projeto muito comum em sistemas de segurança: o Loop de Validação. O uso do while True é a escolha técnica perfeita para esse cenário, pois você não sabe quantas vezes o usuário vai errar antes de acertar.
Gostaria de destacar alguns pontos muito positivos na sua lógica:
- Uso Estratégico do
continue: Ao encontrar um erro, você usa o continue para "saltar" o resto do código e voltar ao início do laço imediatamente. Isso evita que o programa execute ações desnecessárias quando os dados estão inválidos. - O Papel do
break: Você o posicionou corretamente no final, garantindo que o loop só seja interrompido após todas as validações passarem com sucesso. - Verificação de Comprimento (
len): Utilizar o comprimento mínimo de caracteres é o primeiro passo para criar sistemas resilientes contra ataques simples de força bruta.
Dica de Segurança (Upgrade no Código)
Em sistemas de login reais, raramente validamos o comprimento do nome de usuário e da senha no mesmo bloco sem oferecer um feedback mais detalhado.
Uma pequena melhoria que você pode implementar é a Limpeza de Espaços. Às vezes, o usuário digita um espaço sem querer no final do nome. Você pode usar o método .strip() para evitar que espaços vazios contem como caracteres válidos:
nome_usuario = input("Digite seu nome de usuário: ").strip()
Desafio Extra:
Que tal tentar adicionar uma regra para a senha não ser igual ao nome de usuário? Na segurança digital, essa é uma das primeiras verificações de vulnerabilidade. Basta adicionar mais um if:
if senha == nome_usuario:
print("A senha não pode ser igual ao nome de usuário.")
continue
Sua base em laços de repetição está ficando muito sólida. Já pensou em como você limitaria o número de tentativas (ex: apenas 3 chances) antes de bloquear o programa?
Espero que possa ter lhe ajudado!