杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
解题思路:
杨辉三角的特点是第i行的两个数据和是第i+1行对应位置的数值,所以可以借助这个特点来解决,根据已知的最后一行,求下一行的数据。
三角形的前两行是固定的[1],[1,1]。所以将它们直接存储到一个列表中。
a=[[1],[1,1]] #使用a列表来存储前两行数据
n=int(input())
for i in range(n-2): #已知两行,所以用n-2
b = a[-1]
new = [1] #创建列表new来存储新一行的数据,且新一行的第一个数据是1
for i in range(len(b)-1):
new.append(b[i]+b[i+1]) #将已知最后一行的两个数据和存储到new列表中
new.append(1) #新一行的最后一个数据是1
a.append(new) #将新的一行添加到已有前两行的a列表中
for i in a:
print(i)