python 利用迭代器實現菲波納契

馬超_發表於2017-12-20
from collections import Iterable,Iterator




class Febo():


    def __init__(self,n):

        self.n = n

        # 定義變數記錄肥波的前一位和後一位值
        self.num1 = 0
        self.num2 = 1
        # 定義一個變數記錄下表的位置
        self.index = 0

     # iter :返回可迭代物件的迭代器。   iter(可迭代物件) == __iter__
    def __iter__(self):

        return self

    # next :獲取迭代器中的資料
    def __next__(self):
        # 如果下標小於 傳入的引數
        if self.index < self.n:
            ret  = self.num1
            self.num1,self.num2 = self.num2,self.num1+self.num2
            self.index += 1
            return ret

        else:
            raise StopIteration



febo = Febo(10)
print(febo)
# isinstance 判斷是不是例項
print(isinstance(febo,Iterable))
print(isinstance(febo,Iterator))

for i in febo:
    print(i)
複製程式碼

相關文章