python的函数是怎么执行的?

为什么n=0时for语句不报错,n=1或n=2时执行完if语句为什么for语句不继续执行,能不能改成if···elif···else:for这样的形式?
def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
print (fib(10))

 

n=0时执行到了for i in range(2,n),这个range是个空列表[],故一次也不会进入for循环执行“ fibs.append(fibs[-1] + fibs[-2])”,,直接返回[1,1],故不报错

n=1返回[1]

n=2返回[1,1]

n=3及以上,进入for循环,fibs每次增加一个元素,其值为倒数第1个和倒数第2个元素之和

改为if ... elif...else可以如下:

def fib(n):
    if n<1:
        return None
    elif n == 1:
        return [1]
    elif n == 2:
        return [1, 1]
    else:
        fibs = [1, 1]
        for i in range(2, n):
            fibs.append(fibs[-1] + fibs[-2])
    return fibs
print (fib(10))

温馨提示:答案为网友推荐,仅供参考
相似回答