Python 進階特殊方法

任務

斐波那契數列是由 0, 1, 1, 2, 3, 5, 8...構成。

請編寫一個Fib類,Fib(10)表示數列的前10個元素,print Fib(10) 可以打印出數列的前 10 個元素,len(Fib(10))可以正確返回數列的個數10。


參考代碼:


class Fib(object):
    def __init__(self, num):
        a, b, L = 0, 1, []
        for n in range(num):
            L.append(a)
            a, b = b, a + b
        self.numbers = L

    def __str__(self):
        return str(self.numbers)

    __repr__ = __str__

    def __len__(self):
        return len(self.numbers)


f = Fib(10)
print f
print len(f)




輸出結果

H:\Python27\python.exe C:/Users/Tao/PycharmProjects/test/test.py
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
10

Process finished with exit code 0


其中需要注意的是,賦值運算,先計算賦值號(也就是=號右邊的變量值,再賦值給=左邊的變量)

那麼

1
2
3
a, b = b, a+b
# 這種賦值,先計算等值 右邊 那麼 b=1 a+b=1
# 再賦值給a和b,那麼 a=1, b=1

而,下面的

1
2
3
4
= b
# 此時 b=1, 那麼a=1
= a+b
# 那麼 b=2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章