1
resposta

Validação de entrada para login

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.

while True:
    usuario = input("Digite o nome de usuário: ")
    senha = input("Digite a senha: ")

    if len(usuario) >= 5 and len(senha) >= 8:
        print("Cadastro realizado com sucesso!")
        break
    else:
        print("Dados inválidos. O nome de usuário deve ter pelo menos 5 caracteres e a senha pelo menos 8 caracteres.")

Digite o nome de usuário: Ana
Digite a senha: cinco
Dados inválidos. O nome de usuário deve ter pelo menos 5 caracteres e a senha pelo menos 8 caracteres.
Digite o nome de usuário: Ana Maria
Digite a senha: cincoseissete
Cadastro realizado com sucesso!
1 resposta

Olá, Andressa. Como vai?

Excelente resolução! O seu código está 100% correto e atende com perfeita precisão a todos os requisitos do desafio do João.

A estrutura usando o laço while True (um loop infinito controlado nos bastidores) combinado com o operador lógico and para validar as duas condições simultaneamente é exatamente a melhor prática para esse tipo de fluxo. O uso do comando break para quebrar o laço assim que os dados são válidos garante que o programa não fique preso em uma repetição desnecessária.

Para enriquecer o seu projeto e expandir a lógica para cenários ainda mais realistas de segurança, separei duas dicas técnicas e uma sugestão de melhoria na experiência do usuário:


1. Dica de Usabilidade: Feedbacks Direcionados

No seu código atual, se o usuário digitar um nome de usuário válido (ex: Ana Maria), mas errar o tamanho da senha (ex: cinco), a mensagem do else diz que ambos estão errados. Na computação, dar um feedback específico sobre qual dos campos falhou melhora drasticamente a experiência de quem está navegando pelo site.

Podemos modular os avisos separando as validações dentro do laço. Veja esta variação mantendo a sua lógica do while True:

while True:
    usuario = input("Digite o nome de usuário: ")
    senha = input("Digite a senha: ")

    # Criamos variáveis booleanas para guardar o estado de cada validação
    usuario_valido = len(usuario) >= 5
    senha_valida = len(senha) >= 8

    if usuario_valido and senha_valida:
        print("✅ Cadastro realizado com sucesso!")
        break
        
    # Se o programa não quebrou, investigamos o erro específico para ajudar o usuário:
    if not usuario_valido:
        print("❌ Erro: O nome de usuário deve ter pelo menos 5 caracteres.")
    if not senha_valida:
        print("❌ Erro: A senha deve ter pelo menos 8 caracteres.")
    print("Por favor, tente novamente.\n")

2. Tratando Espaços em Branco com .strip()

Um comportamento muito comum em formulários é o usuário apertar a barra de espaço por engano antes ou depois de digitar o texto (por exemplo, digitar o usuário como "Ana " com dois espaços no final). Para a função len(), o caractere de espaço em branco conta como uma letra válida, o que poderia burlar a segurança do tamanho mínimo exigido pelo João.

Para blindar o seu código contra isso, a boa prática no Python é utilizar o método .strip(), que remove de forma automática todos os espaços inúteis do início e do fim de uma string:

# O .strip() limpa espaços acidentais antes de fazer a checagem do tamanho
usuario = input("Digite o nome de usuário: ").strip()
senha = input("Digite a senha: ").strip()

Parabéns por mais uma entrega impecável, com saídas limpas e uma lógica de repetição muito bem consolidada! Você está progredindo de forma fantástica no Python.

Espero que possa ter lhe ajudado!