CS61A_lab08

发布时间 2023-04-06 19:56:59作者: 哎呦_不想学习哟~

题目:

Write the generator function make_generators_generator, which takes a zero-argument generator function g and returns a generator that yields generators. For each element e yielded by the generator object returned by calling g, a new generator object is yielded that will generate entries 1 through e yielded by the generator returned by g.

 1 def make_generators_generator(g):
 2     """Generates all the "sub"-generators of the generator returned by
 3     the generator function g.
 4 
 5     >>> def every_m_ints_to(n, m):
 6     ...     i = 0
 7     ...     while (i <= n):
 8     ...         yield i
 9     ...         i += m
10     ...
11     >>> def every_3_ints_to_10():
12     ...     for item in every_m_ints_to(10, 3):
13     ...         yield item
14     ...
15     >>> for gen in make_generators_generator(every_3_ints_to_10):
16     ...     print("Next Generator:")
17     ...     for item in gen:
18     ...         print(item)
19     ...
20     Next Generator:
21     0
22     Next Generator:
23     0
24     3
25     Next Generator:
26     0
27     3
28     6
29     Next Generator:
30     0
31     3
32     6
33     9
34     """
35     "*** YOUR CODE HERE ***"

 

Tips:

def every_m_ints_to(n, m):
    i = 0
    while i <= n:
        yield i
        i += m


def every_3_ints_to_10():
    for item in every_m_ints_to(10, 3):
        yield item


g = every_3_ints_to_10()
print(type(g))
print(type(every_3_ints_to_10))
print(list(g))