5
respostas

Dúvida quanto a resolver um problema que "eu criei" no exercício de OO "conta.py".

Olá pessoal eu aqui de novo. estou com muita dúvida na loucura que eu criei.

Ai está:

class Conta:
    def __init__(self, numero, titular, saldo, limite):
        print("Construindo objeto ... {}".format(self))
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    pass

    def extrato(self):
        print("Saldo de {} do titular {}.".format(self.__saldo, self.__titular))

    # revisar essa def deposita..

    def deposita(self, valor):
        if self.__saldo - valor > 0:
            print(f"Você depositou {valor}, o saldo atual é {self.__saldo:02f}")

    def saca(self, valor):
        if self.__saldo - valor < 0:
            print(f"Você não possui saldo suficiênte.\nSaldo atual é {self.__saldo:02f}")
        else:
            self.__saldo -= valor
            print(f"Valor sacado R${valor}. Saldo atual é {self.__saldo:02f}")

    def transfere(self, valor, destino):
        if self.__saldo - valor < 0:
            print(f"Saldo insuficiênte para realiazar esta operação.Saldo atual é {self.__saldo:02f}")
        else:
            self.saca(valor)
            destino.deposita(valor)
            print(f"Transferência realizada com sucesso.")

O que está ocorrendo é que quando eu "chamo" no console:

`

from Conta import conta

conta1 = Conta(100, "Nico", 12000, 5000) Construindo objeto ... <conta.Conta object at 0x000002A743575CD0>

conta2 = Conta(101, "Marco", 1153.0, 1200) Construindo objeto ... <conta.Conta object at 0x000002A743575DF0>

O Problema começa aqui na transferência.

conta1.transfere(100, conta2)`

A trasnferência "ocorre", mas os dados não são modificados e ocorre um "print" excessivo na tela. Trazendo o "print" do:

def saca(self, valor):
        if self.__saldo - valor < 0:
            print(f"Você não possui saldo suficiênte.\nSaldo atual é {self.__saldo:02f}")

O "print" do:

self.__saldo -= valor
            print(f"Valor sacado R${valor}. Saldo atual é {self.__saldo:02f}")

E,

def transfere(self, valor, destino):
        if self.__saldo - valor < 0:
            print(f"Saldo insuficiênte para realiazar esta operação.Saldo atual é {self.__saldo:02f}")
        else:
            self.saca(valor)
            destino.deposita(valor)
            print(f"Transferência realizada com sucesso.")

Não estou conseguindo resolver, alguêm consegue dar uma forcinha nesse código? Muito obrigado pessoal.

5 respostas

Você consegue enviar um print do problema, pois testei sua source do jeito que está antes de fazer os breakpoints e está normal... ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade

PS: Me refiro aos prints, sobre a saída do programa, só está sendo debitado o valor da conta1 e não está sendo somado esse valor na conta2, pois na função deposita() você só está fazendo a condição de validação, não está adicionando o valor depositado sob o saldo, então o saldo sempre vai ser 1153

PS: Me refiro aos prints, sobre a saída do programa, só está sendo debitado o valor da conta1 e não está sendo somado esse valor na conta2, pois na função deposita() você só está fazendo a condição de validação, não está adicionando o valor depositado sob o saldo, então o saldo sempre vai ser 1153

Sim, sim. Eu reparei isso, mas não estou conseguindo fazer o saldo "acrescentar" o valor... E tem o fato também que esta dando "Print" em todas as variaveis do "transfere". vou ter que estudar um pouco mais . Rssss Vlw Thiago Matos, obrigado pelo retorno. vou continuar tentando aqui.

    def deposita(self, valor):
        if self.__saldo - valor > 0:
            self.__saldo += valor
            print(f"Você depositou {valor}, o saldo atual é {self.__saldo:02f}")

Voce está subtraindo no seu metodo deposita, está assim: if self.__saldo - valor > 0:

Tente trocar para : if self.__saldo + valor

Não Rodolfo, nessa linha o que está sendo checado é se o SALDO - VALOR DE DEPÓSITO é maior que 0.

Leve isso como dica: Se não tem sinal de = , não está sendo atribuído nenhum valor à variável :)