迭代器实现阶乘
class factorial():
def __init__(self, num=1, count=1):
self.num = num
self.count = count
self.ticks = 1
def __iter__(self):
return self
def __next__(self):
if self.ticks > self.count:
raise StopIteration
self.num = self.num * self.ticks
self.ticks += 1
return self.num
f = factorial(count=6)
for i in f:
print(i)
迭代器实现斐波拉契数列
class sequence():
def __init__(self, a=0, b=1, stop=1):
self.a = a
self.b = b
self.stop = stop
def __iter__(self):
return self
def __next__(self):
if self.a == 0:
print(self.b)
self.a, self.b = self.b, self.a + self.b
if self.b >= self.stop:
raise StopIteration
return self.b
s = sequence(stop=20)
for i in s:
print(i)