1
resposta

[Resolução] Validação de entrada para login

Boa tarde! Segue resolução da minha atividade:

'''
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.
'''
logins = [{"usuario": "Danilo", "senha": "Abc12345"}]

def cadastro():
    user = None
    while user == None or len(user) < 5:
        user = input("Digite o nome de usuário: ")
        if len(user) < 5:
            print("O nome de usuário deve ter pelo menos 5 caracteres.")

    senha = None
    while senha == None or len(senha) < 8:
        senha = input("Digite a sua senha: ")
        if len(senha) < 8:
            print("A senha deve ter pelo menos 8 caracteres.")
    
    logins.append({"usuario": user, "senha": senha})

def login():
    login = input("Digite o nome de usuário: ")
    for cadastro in logins:
        if cadastro["usuario"] == login:
            senha = input("Digite a sua senha: ")

            if cadastro["senha"] == senha:
                print("Login realizado com sucesso")
            else:
                print("Senha incorreta")
            return
        
    print("Esse cadastro não existe, saindo do programa!")
    

while True:
    print("-" * 50)
    print("Seja bem-vindo!")
    print("Selecione uma das opções:")
    print("1) Cadastro")
    print("2) Fazer login")
    print("-" * 50)

    opcao = int(input("Digite o número da opção: "))
    match opcao:
        case 1:
            cadastro()
        case 2:
            login()
            break
        case _:
            print("Nenhuma opção valida, saindo do programa")
            break
1 resposta

Fico à disposição para quaisquers sugestões de melhorias! Desde já agradeço.