def gfib(n): a = 1 b = 1 while a < n: yield a a, b = b, a + b if __name__ == '__main__': gen = gfib(100) for i in range(10): print(next(gen), end=' ') print() for v in gfib(20): print(v, end=' ') print() def ifib(): a = 1 b = 1 while True: yield a a, b = b, a + b if __name__ == '__main__': for i, v in zip(range(15), ifib()): print(v, end=' ') print()