我正在读一本教科书,我不知道为什么这段代码在我的编译器上编译时与书中所说的不同。
def fibs(number):
result = [0, 1]
for i in range(number-2):
result.append(result[-2] + result[-1])
return result所以这是这样的:fibs(10)应该给我[0, 1, 1, 2, 3, 5, 8, 13, 21, 34],但是由于某种原因,我传递给函数的每个数字都得到了[0, 1, 1]。
有什么想法吗?
发布于 2011-12-02 08:17:02
您帖子中的代码不是有效的Python。由于您的代码能够运行,因此它实际上可能是这样的:
def fibs(number):
result = [0, 1]
for i in range(number-2):
result.append(result[-2] + result[-1])
return result您的return result被缩进到for循环内部,而不是它的下方。这将导致它在返回之前仅向列表中添加一个值,从而生成您所看到的列表。
取消缩进该行,它应该可以正常工作。
发布于 2011-12-02 08:18:12
在Python中,缩进是首要的。您发布的代码缩进不正确。
>>> def fibs(number):
... result = [0, 1]
... for i in range(number-2):
... result.append(result[-2] + result[-1])
... return result
...
>>> fibs(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]发布于 2011-12-02 08:18:25
我只是缩进了代码,它对我来说是正确的:
def fibs(number):
result = [0, 1]
for i in range(number-2):
result.append(result[-2] + result[-1])
return resulthttps://stackoverflow.com/questions/8350223
复制相似问题