Создание списка внутри функции - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь создать список внутри функции, выполнить некоторую обработку и вернуть этот список.Код выглядит следующим образом:

def fibo(num):
    fib = [1,2]
    i =2
    while fib[-1] <int(num):
        fib = fib[i-1]+fib[i-2]
        i+=1
    return fib

При вызове функции я получаю сообщение об ошибке, сообщающее, что

while fib[-1] <int(num):
TypeError: 'int' object is not subscriptable

Почему возникает эта проблема?Могу ли я не создать список в функции в Python?

РЕДАКТИРОВАТЬ: я вижу много отрицательных ответов на мой вопрос.Может ли кто-нибудь объяснить мне, почему мой вопрос получил так много отрицательных ответов.Это помогло бы мне задать правильные вопросы и помочь сообществу:)

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Скорее всего, вам нужно что-то вроде

fib.append(fib[-1]+fib[-2])

вместо

fib = fib[i-1]+fib[i-2]
0 голосов
/ 22 мая 2018
def fibo(num):
    i =2
    fib = [1, 2]

    while fib[-1] < int(num):
        fib.append(fib[i-1]+fib[i-2])
        #fib = fib[i-1] + fib[i-2]
        i+= 1
    return fib

result=fibo(9)
print(result)

Я думаю, что ошибка возникает при перезаписи списка.

0 голосов
/ 22 мая 2018

Замените fib = fib[i-1]+fib[i-2] на fib.append(fib[-1] + fib[-2]), и ваш код будет правильным.

Как уже упоминалось в комментариях, ваша строка fib = fib[i-1]+fib[i-2] преобразует список fib в int, который вы хотите добавить в свой список для правильной работы кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...