使用Python的Fibonacci序列缩进错误

时间:2013-09-07 11:34:35

标签: python while-loop sequence fibonacci function

以下是我对Fibonacci序列的上述任务的代码。我被告知我缩进不正确,但我仍然无法弄清楚它为什么会发生。请问有人可以找我吗?我非常感谢任何帮助。此外,我的代码适用于任务1但不适用于任务2.我得到的错误是 IndentationError:unindent与任何外部缩进级别都不匹配,这在经过几个小时的尝试排序后非常令人沮丧。

任务1 Fibonacci序列的前10个数字是: 0,1,1,2,3,5,8,13,21,34 序列由前两个数字(0和1)生成,每个后续数字是前两个数字的总和。 Fibonacci序列中最大的数字小于10 ^ 22?

任务2将以前的Fibonacci代码重写为一个函数,将一个或两个参数作为参数。如果有一个参数,则将所有Fibonacci数字打印到该数字。如果有两个参数,则在两个参数之间打印所有Fibonacci序列号。

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

1 个答案:

答案 0 :(得分: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
    
  3. 此外,由于您没有返回任何内容,因此您不应该print fibo(60,6),因为None的隐式返回值会在最后打印出来。