Python错误:列表对象不能用For循环调用

2024-06-26 09:14:25 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我有一个类型错误:“list”对象不可调用

它在下面的for循环中(如果type='D')

准确误差如下:

     Traceback(most recent call last):
     file"test.py", line 55 in <module>
     main()
     File "test.py", line 49, in main
     for i in range(len(accountlist())):
     TypeError: 'list' object is not callable

我的代码在下面,我试着将每个括号放在括号中,并将列表重命名为不同的名称,总是会遇到相同的错误。

我在这里做错什么了?

class BankAccount:

def __init__(self, getbankaccount, inputAmount=0):

    self.__balance = inputAmount

    self.__numDeposits = 0

    self.__numWithdrawals = 0

    self.__totalDeposits = 0

    self.__totalWithdrawals = 0

    self.__getbankaccount=getbankaccount

def getBalance(self):

    return self.__balance

def getNumDeposits(self):

    return self.__numDeposits

def getNumWithdrawals(self):

    return self.__numWithdrawals

def getTotalDeposits(self):

    return self.__totalDeposits

def getTotalWithdrawals(self):

    return self.__totalWithdrawals

def getbankaccount(self):

    return self.__getbankaccount

def Deposit(self,amount):

    self.__balance = self.__balance + amount

    self.__numDeposits = self.__numDeposits + 1

    self.__totalDeposits = self.__totalDeposits + amount

    return self.__balance

def Withdrawal(self,amount):

    if (self.__balance >= amount):

        self.__balance = self.__balance - amount

        self.__numWithdrawals = self.__numWithdrawals + 1

        self.__totalWithdrawals = self.__totalWithdrawals + amount

        return True

    else:

        return False


def main():
accountlist=[]

numbers=eval(input())

for i in range(numbers):

    account=input()

    amount=eval(input())

    initial=BankAccount(account, amount)

    accountlist.append(initial)

    type=input()

    while type!='#':

        if type=='D':

            account=input()

            amount=eval(input())

            for i in range(len(accountlist())):

                if(account==accountlist[i].getbankaccount()):

                    index=i

                    accountlist[index].Deposit(amount)

                    Print(amount, type, account)

        type=input()
main()

Tags: inselfforinputreturnmaindeftype
1条回答
网友
1楼 · 发布于 2024-06-26 09:14:25

你的问题是在for i in range(len(accountlist())):行中有accountlist()accountlist是一个list,而()表示您试图像调用函数一样调用它。将行更改为for i in range(len(accountlist)):,您应该已经全部设置好了。

另一方面,很容易从错误中识别出问题:

 TypeError: 'list' object is not callable

正是告诉你你需要知道的:你试图“调用”第49行的列表。学习阅读错误信息是一项重要而有用的技能。

相关问题 更多 >