调用生成器时缺少打印任务

Missing print task when generator is invoked

我已经编写了以下代码来为三个不同的高度生成类似帕斯卡三角形的图案。每次都使用不同的字符来获取模式。我能够获得带有“*”和“&”的那些,但是第二次调用带有“=”的打印永远不会被调用。因此,屏幕上缺少相应的图案。试图通过在三个调用之间插入 input() 语句来进行调试,但无济于事。请帮忙。

def draw_triangle(pattern_values):

    def draw(ht, ch):
        for i in range(1, ht+1):
            print('{txt:^{wid}}'.format(txt=i*(ch+' '),wid=2*ht))

    draw(pattern_values[0], pattern_values[1])
    yield pattern_values

    while True:
        pattern_values = yield pattern_values
        draw(pattern_values[0], pattern_values[1])

pattern_series = draw_triangle([10, '*'])
next(pattern_series)
pattern_series.send([12, '=']) # This does not produce any output
pattern_series.send([14, '&'])

因此您可以将此函数用作没有初始值的生成器。

def draw_triangle(pattern_values=""):

    def draw(ht, ch):
        for i in range(1, ht+1):
            print('{txt:^{wid}}'.format(txt=i*(ch+' '),wid=2*ht))

    while True:
        pattern_values = yield pattern_values
        draw(pattern_values[0], pattern_values[1])

pattern_series = draw_triangle()
next(pattern_series)
pattern_series.send([10, '*'])
pattern_series.send([12, '=']) # This does not produce any output
pattern_series.send([14, '&'])