2013-05-05 54 views
2

好吧,所以我有这个类型错误:“名单”对象不是可调用Python的错误:列表对象不可调用与For循环

这是对的(如果类型==“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() 

回答

4

你的问题是,在该行for i in range(len(accountlist())):你有accountlist()accountlistlist,而()意味着你试图像调用函数那样调用它。将该行更改为for i in range(len(accountlist)):,并且应该全部设置。

在旁注,它很容易从你的错误认识你的问题:

TypeError: 'list' object is not callable 

正好告诉你,你需要知道:那你想“呼”上线49的列表。学习阅读错误消息是一项重要和有用的技能。

+0

修复了TypeError,非常感谢,但它给了我一个SyntaxError:在第41行解析时意外的EOF。这将是第一个for循环的第一个amount = eval(input()),任何想法造成这种情况? – user2305960 2013-05-05 21:46:10

+0

@ user2305960我不确定你为什么需要'eval'。 'eval'用于评估包含在字符串中的python代码。如果您只是从用户那里查找金额,我会将其更改为'amount = input()'。 – 2013-05-05 21:47:29

+0

是不是eval(input())用于将输入转换为int? – user2305960 2013-05-05 21:49:27