Python 杨辉三角

 前言:我在学习Python的时候,正好学到列表推导式,于是这里尝试运用列表推导式来写一个杨辉三角。如果能点出其中不足或提出优化建议,感激不尽。

杨辉三角:杨辉三角左右两侧的数字都是1,而里面的数字等于它肩上的两数之和。

图源: 杨辉三角ppt_word文档在线阅读与下载_无忧文档

1.先建立一个值为1的三角形二维数组:

n = int(input("请输入一个整数n:"))
# 先建立一个直角三角形的二维数组
L = [[1 for x in range(n) if x <= y] for y in range(n)]
print(L)

运行结果:

 因为这样横排看着较抽象,我们可以换一个方式输出:

for x in range(n):print(L[x])

这样就可以变成直角三角形: 

 2.接下来让左右两侧的数字都是1,而里面的数字等于它肩上的两数之和。

因为是二维数组,所以用for循环嵌套。

因为里面的数字等于它肩上的两数之和,所以 L[x][y] = L[x - 1][y - 1] + L[x - 1][y]。

因为L下标不可小于零,所以x - 1 >= 0 and y - 1 >= 0。

因为取的是下三角所以x>y。

完整代码如下:

n = int(input("请输入一个整数n:"))
# 先建立一个直角三角形的二维数组
L = [[1 for x in range(n) if x <= y] for y in range(n)]
# 再转为杨辉三角
for x in range(n):for y in range(n):if x - 1 >= 0 and y - 1 >= 0 and x > y:L[x][y] = L[x - 1][y - 1] + L[x - 1][y]for x in range(n):print(L[x])

最后输出:


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部