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

Continua passando do limite

Não sei onde está errado, mas continua sacando além do limite. O que pode ser?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

class Conta:

    def __init__(self, numero, titular, saldo, limite=1000):  
        print("construindo objeto....".format(self))  
        self.__numero = numero 
        self.__titular = titular  
        self.__saldo = saldo
        self.__limite = limite


    def saldo(self):
        print("O saldo é de {} do titular {}".format(self.__saldo, self.__titular))

    def saca(self, valor):
        if (valor <= self.__saldo + self.__limite):
            self.__saldo -= valor
        else:
            print("o valor de {} ultrapassou o limite".format(valor))

        def deposita(self, valor):
            self.__saldo += valor


        def transfere(self, valor, destino):
            self.saca(valor)
            self.deposita(valor)

Eu notei o problema da indentação no deposita() e transfere(), consertei já, mas o problema não era esse.

2 respostas
solução!

Olá Amanda, tudo bem com você?

Conforme o proposto na atividade, o limite para saque será definido da seguinte forma:

limite para saque = saldo da conta + limite da conta

É representada pela seguinte parte do código:

    def saca(self, valor):
        if (valor <= self.__saldo + self.__limite):
            self.__saldo -= valor
        else:
            print("o valor de {} ultrapassou o limite disponível para saque.".format(valor))

Usando o exemplo da conta1 que você criou, temos os seguintes valores:

limite para saque = 700 + 1200
limite para saque = 1900

Vimos que na conta1 podemos sacar até 1900, dessa forma, quando sacamos 1500 não atingimos esse limite:

conta1.saca(1500)
conta1.saldo()
# Resultado

O saldo é de -800 do titular Carlos

Podemos fazer um teste agora que a conta possui um saldo de -800 e tentar realizarmos outro saque de 1500, obtendo o seguinte resultado:

conta1.saca(1500)
# Resultado

 valor de 1500 ultrapassou o limite
  • Vale lembrarmos que, quando criamos o objeto conta1 e informamos um valor para o limite, o valor padrão será substituído, passando para 1200 e não os 1000 definido como padrão.

  • Uma dica para melhorar a visualização é a mudança da mensagem que informa para o usuário quando é feito a tentativa de sacar um valor não permitido, assim evitará que a palavra “limite” seja confundida com a variável __limite, deixo abaixo um exemplo:

print("o valor de {} ultrapassou o limite disponível para saque.".format(valor))

Caso tenha dúvidas, encontro-me à disposição.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Nossa.... Não notei isso, tão óbvio. Eu foquei demais em não mostrar valor negativo, obrigado pelo atenção.

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