【问题标题】:Fibonacci sequence indent error using Python使用 Python 的斐波那契序列缩进错误
【发布时间】:2013-09-07 11:34:35
【问题描述】:

这是我为斐波那契数列执行上述任务的代码。有人告诉我我缩进不正确,但我仍然无法弄清楚为什么会发生这种情况。有谁能帮我看看吗?我非常感谢任何帮助。此外,我的代码适用于任务 1,但不适用于任务 2。我得到的错误是 IndentationError: unindent does not match any external indentation level,经过数小时的尝试整理,这真的令人沮丧。

任务 1 斐波那契数列的前 10 个数字是: 0、1、1、2、3、5、8、13、21、34 该序列由前两个数字(0 和 1)生成,随后的每个数字都是前两个数字的和。斐波那契数列中小于 10^22 的最大数是多少?

任务 2 将您之前的斐波那契代码重写为一个以一个或两个参数作为参数的函数。如果有一个参数,则打印该数字之前的所有斐波那契数。如果有两个参数,则打印两个参数之间的所有斐波那契数列。

x0,x1=0,1
while x1 < 1e22:
    x0,x1=x1,x0+x1
    print x1
#end of task 1

def fibo(xmax,xmin=0):
    x0,x1 = 0,1
    while x0 <= xmax:
        x0,x1=x0,x0+x1
        if x0 >= xmin:
            print x0
print fibo(60,6)
#end of task 2

【问题讨论】:

  • 我没有看到任何缩进错误,但是您的 fibo 函数中有一个无限循环,因为 x0 始终为 0,因此 x0 &lt;= xmax 在每次迭代中都是 true。
  • 你用什么来运行这段代码,有没有关于这个错误的行号等指示?

标签: python while-loop sequence fibonacci function


【解决方案1】:

几个问题。

  1. 在第一个任务中,您应该只打印小于 10e22 的数字。在此处取消缩进 python 语句,因为您在代码中打印了该数字之前的所有数字。

    x0,x1=0,1
    while x1 < 1e22:
        x0,x1=x1,x0+x1
    print x1
    #end of task 1
    
  2. 在第二个代码中,您似乎混淆了更新语句,您将x0 重新分配给它自己。

    def fibo(xmax,xmin=0):
        x0,x1 = 0,1
        while x0 <= xmax:
            x0,x1=x1, x1+x0
            if x0 >= xmin:
                print x0
    fibo(60,6)
    #end of task 2
    

此外,由于您不返回任何内容,因此您不应该执行 print fibo(60,6),因为 None 的隐式返回值会在最后打印出来。

【讨论】:

  • 非常感谢!我自己整理了一下,在有人回答我的无意义问题之前试图删除帖子“!但是我在这里发现了很多有用的cmets!作为Python用户的新手,我想对帮助过的人说声谢谢!
  • @JamesNgaiChunTat :如果它解决了您的问题,请随时 accept the answer。 :)
猜你喜欢
  • 2019-03-25
  • 1970-01-01
  • 2013-08-03
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
相关资源
最近更新 更多