Olá pessoal! Eu tomei a liberdade de alterar o código original da aula, fazendo uma verificação na hora de realizar o saque, sendo que, quando o saldo chegasse a 0, então os próximos saques iriam subtrair o valor do limite, Ex.: saldo = 200.0, limite = 1000.0 / saque(300) / saldo = -100.0, limite = 900.0
Eu fiz vários testes no programa, e se eu realizar um saque grande de uma vez, por exemplo 800.0, o programa aceita. Mas quando eu tentei realizar vários saques de 200 em 200, ou de 100 em 100, ele diz que não tenho limite suficiente, mesmo quando ainda tinha cerca de 500.0 Vou deixar meu código aqui para vocês verem obs: Ignorem os comentários hahaha
class Conta:
def __init__(self, numero, titular, saldo, limite):
self.__numero = numero
self.__titular = titular
self.__saldo = saldo
self.__limite = limite
def extrato(self):
print(f'O saldo de {self.__titular} é de R${self.__saldo}.')
def deposita(self, valor):
self.__saldo += valor
print (f'Houve um depósito de {valor}')
return self.__saldo
"""def __pode_sacar(self, valor_do_saque):
valor_disponivel_a_sacar = self.saldo + self.limite
return valor_do_saque <= valor_disponivel_a_sacar"""
def saca(self, valor):
if valor <= (self.saldo + self.limite):
self.__saldo -= valor
print(f'Houve um saque de {valor}')
if self.__saldo <0:
self.__limite -= valor
else:
print("Você não tem limite suficiente!")
#return self.saldo
def transfere(self, valor, destino):
self.destino = destino
self.saca(valor)
destino.deposita(valor)
@property
def saldo(self):#Get é usado para ter o retorno de algo, sempre!
return self.__saldo
@property
def titular(self):
return self.__titular.title()
@property
def limite(self):
return self.__limite
@limite.setter
def limite(self, limite):# Set é usado para acessar um attibuto, e modificá-lo
self.__limite = limite
# Apenas criar os métodos GET E SET quando forem realmente necessários...
@staticmethod# São métodos pertencentes à classe, não ao objeto. Podemos acessá-los sem a necessidade
# de instanciarmos um objeto.
def codigos_dos_bancos():
return {'BB': '001', 'Caixa': '104', 'Bradesco':'237'}
@staticmethod
def codigo_do_banco():
return "001"