我正在尝试在函数内创建一个列表,进行一些处理并返回该列表。代码如下:
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中的函数中创建列表吗?
编辑:我看到很多关于我的问题的投票。有人可以指导我为什么我的问题有这么多的downvotes。这将有助于我提出正确的问题并帮助社区:)答案 0 :(得分:2)
将fib = fib[i-1]+fib[i-2]
替换为fib.append(fib[-1] + fib[-2])
,您的代码将是正确的。
正如他们在评论中提到的那样,您的行fib = fib[i-1]+fib[i-2]
正在将列表fib
转换为int
,您希望将其附加到列表中以使代码正常工作。
答案 1 :(得分:1)
你很可能想要像
这样的东西fib.append(fib[-1]+fib[-2])
而不是
fib = fib[i-1]+fib[i-2]
答案 2 :(得分:1)
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)
我认为覆盖列表时会发生错误。