Discuss / Python / 生成器练习

生成器练习

Jack

#1 Created at ... [Delete] [Delete and Lock User]

我说一下我的感想,希望对别人有所帮助。

生成器就像是定一个规律,这个规律告诉程序应该如何输出,运作。

比如杨辉三角,我认为它的规律是1 +(这个+表示字符串之间的+) 上层两数之和+相差距离为1的两数之和......(以此类推) + 1。

#但是从[1]-->[1,1]的过程中无法用上面的规律,呢么可以将[1]和[1,1]的输出单独运行,除此之外的可以用上面的规律生成
def yang(h = 1):
    j = 0    if h >= 2:
        hh = 2    else:
        hh = 1    while j != hh:
        j += 1        yield j * [1]
    if h > 2:
        up = [1,1]
        while len(up) != h:
            zhongjian = []
            shang = 0            xia = 1            while len(zhongjian) < len(up) - 1:
                zhongjian.append(up[shang] + up[xia])
                shang += 1                xia += 1            yield [1] + zhongjian + [1]
            up = [1] + zhongjian + [1]

sanjiaoH = input('请输入杨辉三角的层数:')
for i in yang(int(sanjiaoH)):
    print(i)

  • 1

Reply