def yanghui_triangle(n):
row = [1]
for i in range(n):
yield row
row = [sum(x) for x in zip([0] + row, row + [0])]
n=int(input("请输入行数n:"))
for i, row in enumerate(yanghui_triangle(n)):
print(" " * (n - i), end="")
print(" ".join(str(x) for x in row))
1、解释说明:
这段代码定义了一个名为`yanghui_triangle`的函数,用于生成杨辉三角的前n行。杨辉三角是一个二维数组,其中每个数字是它上方两个数字之和。这个函数使用了生成器(generator)的概念,通过`yield`关键字返回每一行的列表。
具体来说,函数首先初始化一个只包含一个元素1的列表`row`,然后使用一个for循环遍历从0到n-1的整数。在每次迭代中,函数会先通过`yield`关键字返回当前的`row`,然后更新`row`为下一个杨辉三角的行。更新的方法是将当前行的首尾元素设为0,然后将相邻的元素相加得到新的一行。
2、运行演示:
3、注意事项:
- 输入的n应该是一个非负整数,否则程序可能会出现错误或无法正确显示杨辉三角。
- 由于使用了生成器,所以在调用`yanghui_triangle(n)`时,只会在需要时计算每一行,这样可以节省内存空间。但是,一旦生成器被耗尽(即已经生成了所有行),再次尝试从中获取数据将不会有任何输出。