2013-05-05 70 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