1

这是我为斐波那契数列执行上述任务的代码。有人告诉我我缩进不正确,但我仍然无法弄清楚为什么会发生这种情况。有谁能帮我看看吗?我非常感谢任何帮助。此外,我的代码适用于任务 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
4

1 回答 1

0

夫妻问题。

  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

于 2013-09-07T11:39:10.730 回答