【问题标题】:Python Error: List Object Not Callable with For LoopPython 错误:无法使用 For 循环调用的列表对象
【发布时间】:2013-04-29 15:46:49
【问题描述】:

好吧,我遇到了这个 TypeError: 'list' object is not callable

它位于 (if type=='D') 下方的 for 循环中

具体错误如下:

     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()

【问题讨论】:

    标签: python list class loops typeerror


    【解决方案1】:

    您的问题是在for i in range(len(accountlist())): 行中您有accountlist()accountlistlist() 表示您正在尝试像调用函数一样调用它。将行更改为for i in range(len(accountlist)):,您应该一切就绪。

    在旁注中,很容易从错误中识别出你的问题:

     TypeError: 'list' object is not callable
    

    准确地告诉您您需要知道的内容:您正试图“调用”第 49 行的列表。学习阅读错误消息是一项重要且有用的技能。

    【讨论】:

    • 修复了 TypeError,非常感谢,但它给了我一个 SyntaxError: Unexpected EOF while parsing on line 41。这将是第一个 for 循环下面的第一个 amount=eval(input()) ,知道是什么原因造成的吗?
    • @user2305960 我不知道你为什么需要evaleval 用于评估字符串中包含的 python 代码。如果您只是从用户那里寻找金额,我会将其更改为 amount=input()
    • 不是 eval(input()) 用来将输入转换为 int 的吗?
    • @user2305960 我想你可以这样做,这样做会更安全int(input())
    • 为什么会比 eval 更安全?我的教授总是将 eval 用于 int 输入。
    猜你喜欢
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多