1
resposta

Exercício realizado para praticar

Olá, bom dia, tudo bem? Em busca de colocar os conhecimentos adquiridos durante o curso em prática, realizei um exercício autonomo com uma proposta de realizar uma página de login e cadastro de usuários. Se possível, gostaria da opnião de vocês para me dar dicas de como eu poderia melhorar o meu código:

import os

usuarios_cadastrados = [{'nome':'Henri', 'email':'henri@email.com', 'senha':'123'}]

def exibir_logo_da_empresa():
    print('''
█░█ █░█ █▄░█ ▀█▀ █▀▀ █▀█   █▀▀ █▀█ █▀▄▀█ █▀█ ▄▀█ █▄░█ █▄█
█▀█ █▄█ █░▀█ ░█░ ██▄ █▀▄   █▄▄ █▄█ █░▀░█ █▀▀ █▀█ █░▀█ ░█░
          ''')

def exibir_opcoes_de_entrada():
    print('1. Login', '2. Cadastrar', '\n3. Sair', sep='\n')

def exibir_subtitulos(texto):
    os.system('cls')
    exibir_logo_da_empresa()
    linha = '*' * len(texto)
    print(texto)
    print(linha)

def voltar_ao_menu_de_entrada():
    input('\nTecle ENTER para retornar ao menu de entrada ')
    os.system('cls')
    main()

def logar():
    exibir_subtitulos('Realize o Login')

    email = input('\nEmail: ')
    senha = input('Senha: ')

    for usuario in usuarios_cadastrados:
        if email == usuario['email'] and senha == usuario['senha']:
            print(f'\nBem-vindo {usuario['nome']}')
            input('\nPressione ENTER para seguir ')
            print('EM MANUTENÇÃO...')

            voltar_ao_menu_de_entrada()
            break
    else:
        print('\nUsuário não escontrado...')
        voltar_ao_menu_de_entrada()

def cadastrar():
    exibir_subtitulos('Realize o seu cadastro')
    nome = input('\nNome: ')
    email = input('Email: ')
    senha = input('Senha: ')
    
    for usuario in usuarios_cadastrados:
        if email == usuario['email']:
            print(f'\nSinto muito {nome}, esse email já está cadastrado em nosso sistema...')

            voltar_ao_menu_de_entrada()
            break
    else:
        novo_usuario = {'nome':nome, 'email':email, 'senha':senha}
        usuarios_cadastrados.append(novo_usuario)
        print(f'\nUsuário {nome} cadastrado(a) com sucesso!')
        
        voltar_ao_menu_de_entrada()

def finalizar_sessao():
    os.system('cls')
    exibir_logo_da_empresa()
    print('Finalizando sessão...')

def opcao_invalida():
    os.system('cls')
    exibir_logo_da_empresa()
    print('Opção inválida...')
    voltar_ao_menu_de_entrada()

def escolher_opcao_de_entrada():
    opcao_de_entrada = int(input('\nDigite a opção desejada: '))

    try:
        match opcao_de_entrada:
            case 1:
                logar()
            case 2:
                cadastrar()
            case 3:
                finalizar_sessao()
            case _:
                opcao_invalida()
    except:
        opcao_invalida()

def main():
    exibir_logo_da_empresa()
    exibir_opcoes_de_entrada()
    escolher_opcao_de_entrada()

if __name__ == '__main__':
    main()

Algo que me incomoda, é o tamanho do código, será que é possível eu separar em diferentes arquivos as funções do restante? Além disso, tenho interesse em talvez aprimorar esse projeto, alguma sugestão de qual forma eu poderia fazer isso?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá, bom dia!

Parabéns pelo seu trabalho! Seu código está bem organizado e fácil de entender. Aqui estão algumas sugestões para melhorar ainda mais o seu código:

Separação de responsabilidades: Você pode dividir seu código em diferentes arquivos com base na responsabilidade de cada função. Por exemplo, você pode ter um arquivo para funções relacionadas à exibição (como exibir_logo_da_empresa e exibir_opcoes_de_entrada), outro para funções relacionadas ao gerenciamento de usuários (como logar e cadastrar), e assim por diante. Isso tornará seu código mais modular e mais fácil de manter. Validação de entrada: Você pode adicionar mais validações de entrada para garantir que os usuários estão inserindo dados válidos. Por exemplo, você pode verificar se o e-mail inserido é um e-mail válido ou se a senha atende a certos critérios de segurança. Mensagens de erro mais informativas: Em vez de apenas imprimir “Opção inválida” quando o usuário insere uma opção inválida, você pode informar ao usuário quais opções são válidas. Uso de banco de dados: Atualmente, você está armazenando usuários em uma lista em memória. Isso significa que os usuários serão perdidos sempre que o programa for encerrado. Você pode considerar o uso de um banco de dados para armazenar usuários, para que os dados persistam entre as execuções do programa. Espero que essas sugestões sejam úteis! Continue com o ótimo trabalho e não hesite em perguntar se tiver mais dúvidas.