1
resposta

[Sugestão] Validação de entrada para login | 10

'''
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.
'''

import os

nome_usuario = ''
senha = ''

titulo = 'Sistema de Cadastro - Buscante'

def limpar_terminal():
    os.system('cls' if os.name == 'nt' else 'clear')

def titulo_cadastro():
    print('-' * len(titulo))
    print(titulo)
    print('-' * len(titulo))

limpar_terminal()
titulo_cadastro()

while True:
    print() # Espaço em branco para melhor visualização
    nome_usuario = input('Digite um nome de usuário (mínimo 5 caracteres): ')

    if len(nome_usuario) < 5:
        input('Nome de usuário inválido. Pressione Enter para tentar novamente...')
        limpar_terminal()
        titulo_cadastro()
        continue

    break

while True:

    limpar_terminal()
    titulo_cadastro()
    print() # Espaço em branco para melhor visualização
    print(f'Nome de usuário: {nome_usuario}')
    print() # Espaço em branco para melhor visualização

    senha = input('Digite uma senha (mínimo 8 caracteres): ')

    if len(senha) < 8:
        input('Senha inválida. Pressione Enter para tentar novamente...')
        limpar_terminal()
        titulo_cadastro()
        continue

    break

limpar_terminal()
titulo_cadastro()
print() # Espaço em branco para melhor visualização
print('Cadastro realizado com sucesso!')
print(f'''
    Dados cadastrados:
    
    Nome do usuário: {nome_usuario}
    senha: {'*' * len(senha)}
''')
1 resposta

Oi, José! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Chamou atenção a organização do fluxo com dois laços while, separando bem a validação do nome de usuário e da senha, além do cuidado com a experiência visual ao limpar o terminal e reapresentar o título.

Uma dica interessante para o futuro é usar uma função para validar o tamanho de textos e evitar repetição de lógica, o que deixa o código mais simples de manter. Veja este exemplo:


def validar_tamanho(texto, tamanho_minimo):
    return len(texto) >= tamanho_minimo

usuario = input("Digite o usuario: ")
if validar_tamanho(usuario, 5):
    print("Usuario valido")

Esse código cria uma função que verifica se o texto possui o tamanho mínimo esperado e retorna True ou False.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!