用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],但由于某种原因,我得到的是[0, 1, 1]对于我传递给函数的每一个数字。

任何想法?

您的帖子中的代码不是有效的Python。由于您的代码能够运行,它实际上可能是这样的:

def fibs(number):
    result = [0, 1]
    for i in range(number-2):
        result.append(result[-2] + result[-1])
        return result

你的return result是缩进的,这样它就在for循环内,而不是在它下面。这将导致它在返回之前只向列表中添加一个值,从而生成您所看到的列表。

在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]

我只是缩进代码,它对我来说是正确的:

def fibs(number):
    result = [0, 1]
    for i in range(number-2):
        result.append(result[-2] + result[-1])
    return result

最新更新