任務
斐波那契數列是由 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
|
a = b # 此時 b=1, 那麼a=1 b = a + b # 那麼 b=2 |