一、题目
编写程序,格式化输出杨辉三角。杨辉三角即二项式定理的系数表,各元素满足如下条件:第一列及对角线上的元素均为1;其余每个元素等于它上一行同一列元素与前一列元素之和。运行效果参见下图
二、题意理解
第一列及对角线上的元素均为1:对角线上的元素为1的意思如下图
即消除空格后对角线上的元素唯一
然后解题方法在题目中已经给出:其余每个元素等于它上一行同一列元素与前一列元素之和。
三、Python代码实现
l0 = []
for i in range(6): #取前六行杨辉三角
l1 = [] #新列表置空
for x in range(i+1):
if x == i or x == 0:
l1.append("1")
else:
if x < i and x != i:
l1.append(str(int(l0[x]) + int(l0[x - 1])))
print(' '.join(l1).center(20)) #每循环一次,打印出一行杨辉三角
l0 = l1 #新列表和老列表的交替
其中较难实现的是如何将l1这个列表内的元素取出来,然后再居中打印
我们采用了下面的方法
' '.join(l1).center(20)
其中' '.join(l1)只会将l1中的元素取出,并在中间加上一个空格,而center()可以实现居中显示的效果。
四、总结
本题做法的难点在于如何构造好的一行杨辉三角列表的元素取出,然后按照题意进行打印。