2015-12-30 147 views
0

我知道這個問題已被問了很多之前,但我似乎無法在我的代碼中找到任何地方,我將我的列表綁定到一個整數值。我改變了所有的變量名稱,但無濟於事。TypeError:'int'對象不可調用python 2.7

這裏是我運行的完整代碼:

import sys 
def powerset(a): 
# returns a list of all subsets of the list a 
if (len(a) == 0): 
    return [[]] 
else: 
    allSubsets = [ ] 
    for subset in powerset(a[1:]): 
     allSubsets += [subset] 
     allSubsets += [[a[0]] + subset] 
    return allSubsets 

if __name__ == '__main__': 
    no_test = int(sys.stdin.readline()) 
    for i in xrange(no_test): 
    xor_res = 0 
    len = int(sys.stdin.readline()) 
    numbers_array = map(int,sys.stdin.readline().split()) 
    numbers = [] 
    for i in numbers_array: 
     numbers.append(i) 
    maxset = powerset(numbers) 
    for set in maxset: 
     if len(set) != 0: 
      temp = 0 
      for i in set: 
       temp = temp^i 
     xor_res = xor_res^temp 
    print xor_res 

,這是錯誤我得到:

Traceback (most recent call last):File "solution.py", line 24, in <module>maxset = powerset(numbers)File "solution.py", line 6, in powerset if (len(a) == 0):TypeError: 'int' object is not callable 

有人能告訴我發生了什麼事情錯在這裏? 謝謝!

回答

4

您已經創建了一個名爲len變量陰影內置的功能len()

len = int(sys.stdin.readline()) 

當您嘗試調用整個代碼len功能,解釋找到len變量第一和試圖調用它就像一個功能。由於這是一個int,這不能完成,我們看到了錯誤。

要解決您的問題,請將您的變量稱爲不同的東西。一般來說,避免使用「len」,「list」,「map」等名稱來創建變量,因爲使用這些名稱會影響內置變量。

+0

哦,我明白了,這很有道理。非常感謝! – Batman

+0

@Batman如果此答案解決了您的問題,您可以通過單擊投票計數器下的複選標記將其標記爲已接受。我將不勝感激。 – ApproachingDarknessFish