2015-10-28 5 views
-1

Довольно простой код, но почему я получаю сообщение об ошибке?TypeError: объект 'function' не подлежит подписке

def sumList(l): 
    if l == []: 
     return 0 
    else: 
     return sumList[1:] + [l[0]] 
def main(): 
    l=[3,2,5,3] 
    print(sumList(l)) 

main() 
+3

'sumList' определяется только в одном месте: это функция. Функции не подлежат расшифровке. Вы пытались подстроить его. Поэтому вы получаете сообщение об ошибке, указывающее, что функция не подлежит расшифровке. Исправление состоит в том, чтобы не пытаться индексировать функцию. – TigerhawkT3

ответ

4

Я предполагаю, что вы имели в виду, чтобы сделать это:

def sumList(l): 
    if l == []: 
     return 0 
    else: 
     return sumList(l[1:]) + l[0] 
def main(): 
    l=[3,2,5,3] 
    print(sumList(l)) 

main() 

Вы хотите применить [1:] к l, не sumList (sumList функция).

Вам также необходимо добавить l[0] (первый номер), а не [l[0]] (список первого номера).

С этими изменениями программа печатает 13.

Я думаю, что это хорошая идея, чтобы избежать смешивания l и 1 в той же программе!

0

В строке 5 вы пытались использовать имя функции в качестве списка. Это не работает. Замените его именем входного параметра.

def sumList(l): 
    if l == []: 
     return 0 
    else: 
     return l[1:] + [l[0]] 
Смежные вопросы