1
resposta

Alguma dica para melhorar meu codigo

Me sinto meio travado quando o assunto e POO, aqui foi ate onde eu consegui chegar, me deem dicas de como posso melhorar meu codigo, ainda vou fazer o tratamento de errros da minha variavel valor para so aceitar numero sem que o programa de erro assim como fiz na função opcao_menu.

obrigado a todos!


from time import sleep

def menu(msg,lista, tam=0):
    tam += len(msg)
    print('*' * tam)
    print(msg)
    print('*' * tam)
    print(f'Saque maximo: {Conta.saque_maximo:.2f}R$')
    print(f'Deposito limite: {Conta.deposito_maximo:.2f}R$')
    for i, c in enumerate(lista):
        print(f'{i+1} - {c}')
    print('*' * tam)


def opcao_menu(msg):
    while True:
        try:
            opcao = int(input(msg))
            if opcao > 4:
                raise(opcao)
        except:
            if opcao >= 4:
                print('Opção indisponivel')
            else:
                print('Apenas numeros sao validos.')
            continue
        else:
            return opcao



class Conta:

    saque_maximo = 2000
    deposito_maximo = 5000

    def __init__(self, numero_conta, titular, saldo, limite):
        self.numero_conta = numero_conta
        self.titular = titular
        self.saldo = saldo
        self.limite = limite

    def extrato(self):
        print('Retirando extrato da conta, Aguarde um momento...')
        sleep(1)
        print('** Extrato **')
        print(f'Conta: {self.numero_conta}')
        print(f'Titular: {self.titular}')
        print(f'Saldo: {self.saldo:.2f}R$')
        print(f'Limite: {self.limite:.2f}R$')

    def saca(self, valor):
        if valor <= self.saque_maximo:
            if valor <= self.saldo:
                self.saldo -= valor
                sleep(1)
                print('Saque efetuado com sucesso...')
                print('Consulte o extrato para ver o saldo.')
            else:
                print('Saldo insuficiente')
        else:
            print('Valor acima do saque permitido')


    def deposita(self, valor):
        if valor <= self.deposito_maximo:
            if valor <= self.limite:
                self.saldo += valor
                sleep(1)
                print('Desposito efetuado com sucesso.')
                print('Consulte o extrato para ver o saldo.')
        else:
            print('Valor excedeu o valor de deposito.')

conta1 = Conta(123, 'Douglas', 5000, 20000)
opc = 0
while opc != 4:
    menu('Banco Central', ['Extrato', 'Deposito', 'Saque', 'Sair'])
    opc = opcao_menu('Digite sua opção: ')
    if opc == 1:
        conta1.extrato()
    elif opc == 2:
        valor = int(input('Digite o valor que deseja deposita:  R$'))
        conta1.deposita(valor)
    elif opc == 3:
        valor = int(input('Digite o valor que deseja sacar:  R$'))
        conta1.saca(valor)
    else:
        print('Saindo...')
1 resposta

Olá Douglas, tudo bem?

Parabéns pelo seu código! Você já tem um bom entendimento sobre POO e conseguiu criar um programa funcional.

Para melhorar ainda mais, sugiro que você utilize o conceito de herança. Por exemplo, você pode criar uma classe "ContaCorrente" que herda as características da classe "Conta", mas com algumas particularidades, como por exemplo, um limite de cheque especial.

Outra dica é utilizar o conceito de encapsulamento, tornando alguns atributos privados e criando métodos para acessá-los. Isso pode ajudar a proteger o seu código e evitar erros.

Por fim, sugiro que você continue estudando e praticando! A prática leva à perfeição e quanto mais você se dedicar, mais irá evoluir.

Bons estudos!