python 用列表生成器 打印杨辉三角

廖雪峰 python教程 

生成器章节,有一道杨辉的题目。

杨辉三角定义如下:

          1
        1   1
      1   2   1
    1   3   3   1
  1   4   6   4   1
1   5   10  10  5   1

def triangles():
    result = [1]
    n = 0
    while n < 20:
        yield result
        l = list(result)
        l.append(0)
        print(l)
        result = [l[i] + l[i - 1] for i in range(len(l))]
        n = n + 1
    return 'done'

这里展示了 每一次的l(末尾添加0为了放便计算下一行 例如 l[-1] + l[0] = 0 + 1 = 1) [1]

[1, 0]

[1, 1]

[1, 1, 0]

[1, 2, 1]

[1, 2, 1, 0]

[1, 3, 3, 1]

[1, 3, 3, 1, 0]

[1, 4, 6, 4, 1]

[1, 4, 6, 4, 1, 0]

[1, 5, 10, 10, 5, 1]

测试数据:

n = 0
results = []
for t in triangles():
    print(t)
    results.append(t)
    n = n + 1
    if n == 10:
        break
if results == [
    [1],
    [1, 1],
    [1, 2, 1],
    [1, 3, 3, 1],
    [1, 4, 6, 4, 1],
    [1, 5, 10, 10, 5, 1],
    [1, 6, 15, 20, 15, 6, 1],
    [1, 7, 21, 35, 35, 21, 7, 1],
    [1, 8, 28, 56, 70, 56, 28, 8, 1],
    [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
    print('测试通过!')
else:
    print('测试失败!')

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/Tianweidadada/article/details/79812980
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞