1
resposta

[Projeto] Validação de entrada para login

while True:
  nome = input("Digite seu nome de usuário:")
  senha = input("Digite sua senha:")

  nome_invalido = False
  senha_invalida = False

  if len(nome) < 5:
    nome_invalido = True
    print("O nome de usuário deve ter pelo menos 5 caracteres.")
    continue

  if len(senha) < 8:
    senha_invalida = True
    print("A senha deve ter pelo menos 8 caracteres.")  
    continue

  if not nome_invalido and not senha_invalida:
      print("Usuário cadastrado com sucesso!")
      break
1 resposta

Olá, Marcelo. Como vai?

Parabéns pela resolução da atividade! O seu código para validação de login está muito bem estruturado e o uso do while True com a condição de parada break no final foi a escolha perfeita para garantir que o programa continue rodando até que todas as condições sejam atendidas.

Gostaria de destacar um ponto técnico muito interessante no seu código e trazer uma sugestão de refatoração que vai deixar o seu fluxo de execução ainda mais limpo e eficiente:

Análise do fluxo atual e as Flags
No seu código, você criou duas variáveis de controle (também chamadas de flags): nome_invalido e senha_invalida. Elas começam como False e mudam para True caso os critérios de tamanho não sejam atingidos.

No entanto, perceba que logo após alterar essas flags, você utilizou o comando continue. O continue interrompe a execução da repetição atual e volta imediatamente para o início do while. Por causa disso, o programa nunca chega a ler a última verificação condicional (if not nome_invalido and not senha_invalida:) caso algum dos dados seja inválido.

Dessa forma, as suas duas variáveis flags acabam ficando sem utilidade prática no código, pois o próprio continue já barra o avanço do programa.

Sugestão de Refatoração (Código mais limpo)
Como o Python lê o código de cima para baixo, nós podemos eliminar as variáveis de controle e fazer com que o sucesso do cadastro seja a consequência natural de passar pelos dois filtros anteriores. Veja como o código fica mais enxuto:

while True:
    nome = input("Digite seu nome de usuário: ")
    senha = input("Digite sua senha: ")

    if len(nome) < 5:
        print("O nome de usuário deve ter pelo menos 5 caracteres.")
        continue

    if len(senha) < 8:
        print("A senha deve ter pelo menos 8 caracteres.")
        continue

    # Se o código chegou até aqui, significa que o nome e a senha são válidos!
    print("Usuário cadastrado com sucesso!")
    break

Indo além: Validando tudo de uma vez só
Se você quiser evitar que o usuário digite a senha caso o nome já esteja incorreto, o uso do continue que você fez está perfeito. Mas, se você quisesse fazer uma validação única e direta, poderia combinar as duas condições em um único bloco estruturado:

while True:
    nome = input("Digite seu nome de usuário: ")
    senha = input("Digite sua senha: ")

    if len(nome) < 5:
        print("O nome de usuário deve ter pelo menos 5 caracteres.")
    elif len(senha) < 8:
        print("A senha deve ter pelo menos 8 caracteres.")
    else:
        print("Usuário cadastrado com sucesso!")
        break

Ambas as abordagens eliminam variáveis desnecessárias na memória e mantêm a excelente lógica de repetição que você construiu.

Continue praticando e compartilhando seus códigos com a comunidade!

Espero que possa ter lhe ajudado!