Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Análise do Limite de Crédito

Incluí no método Sacar um verificador do Limite de Crédito disponível, que analisa se o valor sacado ultrapassa o Saldo e o Saldo + Limite e realiza as operações considerando esses valores (obs.: limite de crédito padrão definido para 1000.00)

O que acham? Como posso melhorar o código?

    def Sacar(self, valor):
        #verificando se o valor ultrapassa o limite do saldo e o limite de crédito
        if self.__saldo < valor <= self.__limite + self.__saldo:
            #autorizando a utilização do limite especial de crédito
            while True:
                try:
                    check = int(input('UTILIZANDO LIMITE DE CRÉDITO. DESEJA CONTINUAR A OPERAÇÃO?\n'
                                      '1 - SIM\n2 - NÃO\n:  '))
                    if check not in [1, 2]:
                        print('DIGITE UMA OPÇÃO VÁLIDA.')
                    else:
                        break
                except ValueError:
                    print('DIGITE UMA OPÇÃO VÁLIDA.')
            #checando a escolha do cliente
            if check == 1:
                self.__limite -= valor - self.__saldo
                self.__saldo = 0
            else:
                print('OBRIGADO POR UTILIZAR O BONIS BANK.')
        else:
            #operando o saque normalmente, caso o saldo não tenha sido extrapolado
            self.__saldo -= valor
        print(f'Saldo atualizado (CC:{self.__conta}): {self.__saldo}\n'
              f'Saldo + Limite {self.__saldo + self.__limite}')
4 respostas

Na realidade, preciso consertar também a questão do método Depositar. Preciso encontar uma forma de setar uma variável com o valor inicial do limite, para poder fazer a operação de Depósito primeiro no Limite, depois no Saldo. Alguém sabe como setar essa variável com o valor inicial?

output do código inserido na questão

solução!

Aparentemente consegui resolver o problema anterior de forma simples.

class ContaCorrente:
    def __init__(self, cc, nome, saldo, limite = 1000):
        self.__conta = cc
        self.__titular = nome
        self.__saldo = float(saldo)
        self.__limite = float(limite)

    def Sacar(self, valor):
        #caso não haja valor disponível no saldo e no limite
        if valor > self.__saldo + self.__limite:
            print('SALDO INSUFICIENTE.')
        #verificando se o valor ultrapassa o saldo, mas é menor que o saldo com limite
        elif self.__saldo < valor <= self.__limite + self.__saldo:
            #autorizando a utilização do limite especial de crédito
            while True:
                try:
                    check = int(input('UTILIZANDO LIMITE DE CRÉDITO. DESEJA CONTINUAR A OPERAÇÃO?\n'
                                      '1 - SIM\n2 - NÃO\n:  '))
                    if check not in [1, 2]:
                        print('DIGITE UMA OPÇÃO VÁLIDA.')
                    else:
                        break
                except ValueError:
                    print('DIGITE UMA OPÇÃO VÁLIDA.')
            #checando a escolha do cliente
            if check == 1:
                self.__saldo -= valor
            else:
                print('OBRIGADO POR UTILIZAR O BONIS BANK.')
        else:
            #operando o saque normalmente, caso o saldo não tenha sido extrapolado
            self.__saldo -= valor
        print(f'Saldo atualizado (CC:{self.__conta}): {self.__saldo}\n'
              f'Saldo + Limite {self.__saldo + self.__limite}')

    def Depositar(self, valor):
        self.__saldo += valor
        print(f'Saldo atualizado (CC:{self.__conta}): {self.__saldo}\n'
              f'Saldo + Limite {self.__saldo + self.__limite}')

    def Saldo(self):
        print(f'CC: {self.__conta}\n'
              f'Titular: {self.__titular}\n'
              f'Saldo: {self.__saldo}\n'
              f'Saldo + Limite {self.__saldo + self.__limite}')

    def Transferir(self, valor, destino):
        self.Sacar(valor)
        destino.Depositar(valor)

output do código anterior

Olá Fabio, tudo bem com você?

Peço desculpas pela demora no retorno.

Vejo que conseguiu concluir o que foi proposto na segunda postagem. Meus parabéns pela implementação do código, fico feliz que esteja se desafiando e colocando em prática o que está aprendendo junto a Alura.

Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar seu desenvolvimento, desafios e tirar suas dúvidas.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Obrigado a vocês.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software