1
resposta

13 Validação de entrada para login

resposta:

#Laço infinito que continuará solicitando os dados até que sejam válidos
while True:
print("--- NOVO CADASTRO ---")
usuario = input("Digite o nome de usuário (mínimo 5 caracteres): ")
senha = input("Digite a senha (mínimo 8 caracteres): ")

# Validação das regras de negócio
if len(usuario) >= 5 and len(senha) >= 8:
    print("\nCadastro realizado com sucesso!")
    break  # Encerra o loop e finaliza o programa
else:
    print("\nErro: Usuário ou senha não atendem aos requisitos mínimos. Tente novamente.\n")
1 resposta

Olá, Deivide. Como vai?

Sua resolução está excelente e atende perfeitamente aos requisitos de segurança e validação! A estrutura while True (que cria um laço intencionalmente infinito) combinada com o comando break para a saída é a abordagem padrão mais eficiente na programação para resolver problemas de validação de dados de entrada.

O uso da função len() para contar os caracteres e o operador lógico and para garantir que ambas as regras sejam verdadeiras ao mesmo tempo mostram que você assimilou muito bem a lógica de condições complexas.

Para agregar ainda mais valor ao seu aprendizado e trazer uma perspectiva prática de mercado, separei duas sugestões de melhorias que tornariam esse sistema de login e cadastro ainda mais robusto:


1. Sistema com Limite de Tentativas

No seu código atual, se um usuário errar os requisitos, o laço continuará rodando para sempre. No ambiente corporativo e em análises de segurança, deixar um laço de login totalmente livre abre brechas para ataques automatizados (como tentativas de força bruta).

Uma boa prática é adicionar uma variável contadora para limitar o número de tentativas e bloquear o processo caso o limite seja atingido. Veja como implementar isso:

tentativas = 0
limite_tentativas = 3

while tentativas < limite_tentativas:
    print(f"--- NOVO CADASTRO (Tentativa {tentativas + 1} de {limite_tentativas}) ---")
    usuario = input("Digite o nome de usuário (mínimo 5 caracteres): ")
    senha = input("Digite a senha (mínimo 8 caracteres): ")
    
    if len(usuario) >= 5 and len(senha) >= 8:
        print("\nCadastro realizado com sucesso!")
        break
    else:
        tentativas += 1
        print("\nErro: Usuário ou senha não atendem aos requisitos.")
        if tentativas < limite_tentativas:
            print("Tente novamente.\n")
else:
    # Este bloco ELSE só executa se o WHILE chegar ao fim sem passar pelo BREAK
    print("\nNúmero máximo de tentativas atingido. Cadastro bloqueado por segurança!")

2. Mensagens de Erro Específicas (Feedback ao Usuário)

No seu código, se o usuário digitar uma senha válida (com 10 caracteres), mas um nome de usuário inválido (com 3 caracteres), o sistema exibirá uma mensagem genérica dizendo que "Usuário ou senha não atendem aos requisitos". Para melhorar a experiência do usuário (UX), o ideal é dizer exatamente qual dos dois campos falhou.

Podemos fazer isso separando as validações com estruturas if e elif:

if len(usuario) < 5:
    print("\nErro: O nome de usuário precisa ter pelo menos 5 caracteres.\n")
elif len(senha) < 8:
    print("\nErro: A senha precisa ter pelo menos 8 caracteres.\n")
else:
    print("\nCadastro realizado com sucesso!")
    break

Dessa forma, o seu programa se torna muito mais amigável e indica com clareza o caminho para a correção.

Parabéns pela dedicação ao longo de todo o curso e por compartilhar soluções tão limpas e bem comentadas aqui no fórum!

Espero que possa ter lhe ajudado!