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

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

 关键:杨辉三角形第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层)的所有元素
'''

上一篇:数组随机赋值并实现反转


下一篇:算法练习题17---蓝桥杯2019省赛“特别数的和”