ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python打印杨辉三角,注释详细

2022-01-23 23:34:48  阅读:192  来源: 互联网

标签:元素 temp python 打印 列表 端点 杨辉三角 append


 

 关键:杨辉三角形第i行j列的值 = 第 (i-1) 行 (j-1) 列的值 + 第 (i-1) 行 (j) 列的值

总体思路:循环计算出每个元素的值,用关键公式一层一层的计算,每一层元素存储在列表当中。要注意的是计算过程中的列表访问越界问题,故用条件判断是否为左右端点元素,改变计算方法。

若当前为该层左端点的话,第i行j列的值=第 (i-1) 行 (j) 列的值

若为该层右端点,则第i行j列的值 = 第 (i-1) 行 (j-1) 列的值

非做右端点,则 第i行j列的值 = 第 (i-1) 行 (j-1) 列的值 + 第 (i-1) 行 (j) 列的值

'''打印杨辉三角'''
'''
关键:杨辉三角形第i行j列的值=
第 (i-1) 行 (j-1) 列的值 + 第 (i-1) 行 (j) 列的值
'''

Ceng = int(input('输入要打印的杨辉三角层数:'))

A = [[1]]  #用列表来存储三角元素,最顶的元素是1

#循环计算出每个元素的值,一层一层的算,i表示层数,j表示该层的第j个元素
for i in range(1,Ceng):
    temp = []  #temp用来存储第i层的元素
    
    for j in range(i+1):  #杨辉三角的第i层会有i+1个元素
        
        #若为非端点元素,可以直接按公式加得出值
        if i-1 >= 0 and j-1 >= 0 and j < len(A[i-1]):
            temp.append(A[i-1][j-1] + A[i-1][j])
            
        #若 j-1 < 0 说明为左端元素,则注意越界问题,只加一个值就行
        elif j-1 < 0:
            temp.append(A[i-1][j])

        #若 j == len(A[i]),则说明为本层的最右端元素,同样只加公式中的一个值就行,以防列表越界
        elif j==len(A[i-1]):
            temp.append(A[i-1][j-1])

    A.append(temp) #注意是添加的元素单位是列表类型的,第一次内层循环后A=[[1], [1,1]


print(A)

'''
若层数为10,则A输出为:
[[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]]
通过A[i]直接获取杨辉三角第i层(最顶层记位0层)的所有元素
'''

标签:元素,temp,python,打印,列表,端点,杨辉三角,append
来源: https://blog.csdn.net/Bigheadzjh/article/details/122659194

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有