我正在阅读一本教科书,我不知道为什么这段代码在编译器上的编译方式不同于本书中的内容.
def fibs(number):
result = [0, 1]
for i in range(number-2):
result.append(result[-2] + result[-1])
return result
Run Code Online (Sandbox Code Playgroud)
所以这个:
fibs(10)应该给我[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]但是由于某种原因,我得到[0, 1, 1]了我传递给函数的每个数字.
有任何想法吗?
小智 13
您帖子中的代码不是有效的Python.由于您的代码能够运行,它可能实际上是这样的:
def fibs(number):
result = [0, 1]
for i in range(number-2):
result.append(result[-2] + result[-1])
return result
Run Code Online (Sandbox Code Playgroud)
你return result缩进使得它在for循环内,而不是在它下面.这将导致它在返回之前仅向列表中添加一个值,从而生成您看到的列表.
Unindent那条线,它应该正常工作.