2
respostas

Erro ao chamar def depositar, sacar

Bom dia!

Eu não consigo sair desse codigo.

PyDev console: starting. Python 3.10.3 (tags/v3.10.3:a342a49, Mar 16 2022, 13:07:40) [MSC v.1929 64 bit (AMD64)] on win32 from teste import cria_conta, deposita, saca, extrato deposita(conta, 15,0) Traceback (most recent call last): File "C:\Users\ftheo\AppData\Local\Programs\Python\Python310\lib\code.py", line 90, in runcode exec(code, self.locals) File "", line 1, in NameError: name 'conta' is not defined

2 respostas

Se vc puder colocar um print da saída do seu terminal vai ajudar bastante! Faz uma cópia desse código e roda ele na tua IDE, a saída deve ser 1ª -> Nome do cliente: joao, numero da conta:123; 2ª -> O saldo da cota do joao 800 R$.

#from typing import Any


class Conta:

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

    def __str__(self):
        return "Nome do cliente:{0}, numero da conta:{1}".format(self.titular, self.numero)


    @property
    def saldo(self):
        return self._saldo


    def deposita(self, valor:float):
        self._saldo += valor



    def saca(self, valor:float):
        if self._saldo < valor:
            raise ValueError('O saldo bancário é insuficiente')
        else:
            self._saldo -= valor


    def transfere(self, other, valor:float):
        if valor > self._saldo:
            raise ValueError('O saldo bancário é insuficiente')

        else:
            self.saca(valor)
            other.deposita(valor)


def main():

    conta_do_joao = Conta('joao','123', 550, 0)# instaciacao
    conta_do_mane = Conta('mane','333',700, 50) # instaciacao

    conta_do_joao.saca(50)# metodo saca
    conta_do_mane.deposita(100)# metodo deposita

    conta_do_mane.transfere(conta_do_joao, 300)# metodo transfere


    print(conta_do_joao)
    print()
    print('O saldo da cota do joao',conta_do_joao.saldo,'R$')


if __name__ == "__main__":
    main()

O problema foi o saldo, estava sem valor.