1. 程式人生 > >python3練習100題——006

python3練習100題——006

a + b while htm ret fib oob 答案 bsp www

繼續做題~經過py3測試

原題鏈接:http://www.runoob.com/python/python-exercise-example6.html

題目:斐波那契數列。

我的代碼:

def fib(n):
    if n==1:        
        l=[0]
    elif n==2:
        l=[0,1]
    else:
        l=[0,1]
        for i in range(2,n):
            l.append(l[i-1]+l[i-2])
    return l


思考:函數fib是以列表的形式返回的斐波那契數列,該列表第0/1位的無法叠代得出,所以用了if來解決這個問題。但是判斷的次數很多,其實代碼很繁瑣。

看了題目下面的答案,可以用叠代的形式一次輸出一個數字,代碼也簡潔了很多~

def Fib(n):
    a, b = 0, 1       #直接用變量給出了1,2個數,不需要if         
    print(a)              
    while n-1:
        a, b, n = b, a + b, n - 1          #用一行代碼就實現了斐波那契數列的叠代,也實現了循環的計數
        print(a)

python3練習100題——006