首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python排除Fibonacci系列故障

使用python排除Fibonacci系列故障
EN

Stack Overflow用户
提问于 2011-12-02 08:14:11
回答 3查看 180关注 0票数 2

我正在读一本教科书,我不知道为什么这段代码在我的编译器上编译时与书中所说的不同。

代码语言:javascript
复制
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]

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-02 08:17:02

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

代码语言:javascript
复制
def fibs(number):
    result = [0, 1]
    for i in range(number-2):
        result.append(result[-2] + result[-1])
        return result

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

取消缩进该行,它应该可以正常工作。

票数 13
EN

Stack Overflow用户

发布于 2011-12-02 08:18:12

在Python中,缩进是首要的。您发布的代码缩进不正确。

代码语言:javascript
复制
>>> 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]
票数 2
EN

Stack Overflow用户

发布于 2011-12-02 08:18:25

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

代码语言:javascript
复制
def fibs(number):
    result = [0, 1]
    for i in range(number-2):
        result.append(result[-2] + result[-1])
    return result
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8350223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档