Jump to content

Erro ao invocar função: missing 1 required positional argument


Wenderson Lisboa
Go to solution Solved by thoga31,

Recommended Posts

Boa noite amigos, estou com o seguinte script:

import datetime

class Conta:
    def __init__(self, numero, titular, saldo, limite = 1000.0):
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite
        self.historico = Historico()
    
    def deposita(self, valor):
        self.saldo += valor
        self.historico.transacoes.append(f"Deposito de : {valor}")

    def sacar(self, saldo2, valor):
        saldo2 = self.saldo
        if(saldo2 < valor):
            return print('Saldo insuficiente')
        else:
            self.saldo -= valor
            self.historico.transacoes.append(f"Saque de : {valor}")

    def extrato(self):
        print(f'Numero nº {self.numero} \n Titular: {self.titular} \n Saldo: R$ {self.saldo}')
        self.historico.transacoes.append(f"Seu saldo é de: {self.saldo}")

    def transfere(self, valor, destino):
        retirou = self.sacar(valor)
        if(retirou == False):
            return False
        else:
            destino.deposita(valor)
            self.historico.transacoes.append(f"Transferencia de {valor} para conta de {destino.numero}")
            return True

    def criar_conta(numero, titular, saldo, limite):
        conta = {"numero": numero,"titular": titular, "saldo": saldo, "limite": limite}
        return conta


class Cliente:
    def __init__(self, nome, sobrenome, cpf):
        self.nome = nome
        self.sobrenome = sobrenome
        self.cpf = cpf


class Historico:
    def __init__(self):
        self.data_abertura = datetime.datetime.today()
        self.transacoes = []

    def imprime(self):
        print(f'Data de abertura: {self.data_abertura} ')
        print('Transações: ')
        for t in self.transacoes:
            print(' - ', t)

cliente1 = Cliente('João', 'Oliveira', '1111111-11')
cliente2 = Cliente('Marcos','Azevedo', '2222222-22')
conta1 = Conta('123-4', cliente1, 1000.0)
conta2 = Conta('123-5', cliente2, 1000.0)
conta1.deposita(500.0)
conta1.sacar(50.0)
conta1.transfere(conta2, 200.0)
conta1.extrato
conta1.historico.imprime()

 

Sempre me retorna esse Erro: sacar() missing 1 required positional argument: 'valor'

Por favor me digam onde estou errando. De já agradeço 

Edited by pwseo
formatação, assunto mais descritivo
Link to comment
Share on other sites

  • Solution

O erro é auto-explicativo. O método sacar() recebe dois argumentos, saldo2 e valor:

def sacar(self, saldo2, valor):

E quando invocas o método, só lhe passas um único argumento:

conta1.sacar(50.0)

O primeiro argumento é saldo2, ao qual passas o valor 50.0, e o segundo argumento é valor, ao qual nada passas. Daí o erro "sacar() missing 1 required positional argument: 'valor'": o método requer 1 argumento de nome valor.

Ou passas dois argumentos pela ordem pretendida, ou corriges a função caso não seja pretendido receber dois argumentos mas sim apenas um.

Cumprimentos.

Knowledge is free!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.