1
resposta

Validação de entrada para login

Olá pessoal,

Segue resultado referente ao exercicio:

João está desenvolvendo um sistema de cadastro para um site de leitura. Ele precisa garantir que os usuários insiram um nome de usuário e uma senha válidos. As regras são as seguintes:

O nome de usuário deve ter pelo menos 5 caracteres.
A senha deve ter pelo menos 8 caracteres.
João quer que o sistema continue solicitando as informações até que ambas as condições sejam atendidas. Quando o usuário insere dados válidos, o programa deve exibir a mensagem: "Cadastro realizado com sucesso!".

Crie um programa que implemente essa lógica usando um laço while.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Obrigada!

1 resposta

Olá, Vanessa. Como vai?

Parabéns por mais uma resolução excelente! O seu código ficou robusto, muito bem estruturado e trata perfeitamente o fluxo de validação contínua que o exercício do João exigia.

O uso do laço while True combinado com o operador lógico and para validar as duas condições simultaneamente foi a escolha ideal. O resultado impresso no console mostra que o programa se comportou perfeitamente: barrou as entradas curtas (123 e 12345) detalhando os erros e só encerrou o fluxo com o break quando o user44 e a senha longa foram digitados.

Para enriquecer o seu post no fórum e ajudar os alunos a entenderem técnicas de simplificação de blocos condicionais, podemos analisar a estrutura do seu else.

Otimizando a lógica com Cláusulas de Guarda e Early Exit

O seu código está totalmente correto, mas repare que a estrutura interna do seu else possui dois if independentes para descobrir qual erro exibir.

Em desenvolvimento de sistemas, quando utilizamos um laço infinito com break (conhecido como padrão de Early Exit ou Saída Antecipada), nós podemos eliminar completamente o bloco else principal. Se a condição do if inicial for verdadeira, o break corta o laço e o código de baixo nunca será executado. Se ela for falsa, o Python naturalmente continuará lendo as linhas seguintes.

Veja como o seu código pode ser reescrito de forma mais direta e linear, mantendo exatamente o mesmo comportamento:

while True:
    username = input("Digite seu nome de usuário (mínimo 5 caracteres): ")
    password = input("Digite sua senha (mínimo 8 caracteres): ")

    # Se tudo estiver correto, fazemos o "Early Exit" (Saída Antecipada)
    if len(username) >= 5 and len(password) >= 8:
        print("Cadastro realizado com sucesso!")
        break

    # Se o código chegou até aqui, é porque algo falhou. Não precisamos de um 'else:'
    if len(username) < 5:
        print("Erro: O nome de usuário deve ter pelo menos 5 caracteres.")
    if len(password) < 8:
        print("Erro: A senha deve ter pelo menos 8 caracteres.")
        
    print("Por favor, tente novamente.\n")

Vantagens dessa abordagem:

  1. Redução de aninhamento: Removemos um nível de indentação (o bloco para a direita dentro do else:), deixando o código alinhado verticalmente.
  2. Legibilidade: Fica muito mais fácil ler o código de cima para baixo como se fosse um roteiro sequencial de checagens.

Dominar a validação de dados de entrada com laços de repetição e funções de tamanho (len()) é um passo crucial para construir aplicações seguras no mundo real. Muito obrigado por compartilhar mais uma atividade prática impecável com a nossa comunidade!

Espero que possa ter lhe ajudado!