37 lines
638 B
Python
37 lines
638 B
Python
|
"""
|
||
|
自定义迭代器
|
||
|
"""
|
||
|
|
||
|
|
||
|
class Fibo:
|
||
|
"""斐波拉切数列迭代器"""
|
||
|
|
||
|
def __init__(self, num):
|
||
|
self.num = num
|
||
|
self.a, self.b = 0, 1
|
||
|
self.idx = 0
|
||
|
|
||
|
def __iter__(self):
|
||
|
return self
|
||
|
|
||
|
def __next__(self):
|
||
|
if self.idx < self.num:
|
||
|
self.a, self.b = self.b, self.a + self.b
|
||
|
self.idx += 1
|
||
|
return self.a
|
||
|
raise StopIteration()
|
||
|
|
||
|
|
||
|
def main():
|
||
|
"""主函数"""
|
||
|
for val in Fibo(10):
|
||
|
print(val)
|
||
|
print('-' * 10)
|
||
|
fibo_iter = Fibo(10)
|
||
|
for _ in range(10):
|
||
|
print(next(fibo_iter))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|