4252: 杨辉三角

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

        杨辉三角形 ,是二项式系数在三角形中的一种几何排列。中国南宋数学家杨辉在 1261 年所著的 《详解九章算法》—书有明确记载。欧洲数学家帕斯卡在 1654 年发现这一规律 ,所以又叫做帕斯卡三角形。其定义为其顶端(第 1行)是 1;第 2 行是两个 1;第 3 行是'1,2,1',中间的”2”是其上方相邻的两个数字的和;依次类推 ,产生如图所示的杨辉三角形。 

    对于任意输入的3~15之间的正整数n,请编程输出前n行数字、以及由其组成的杨辉三角形。

函数提示∶print('{∶<3}'.format(10))能够以3个字符宽度左对齐的方式显示数字10。

                                                                          

输入

一个正整数n(3≤n≤15)

输出

由两部分组成。

第一部分输出由n行数字组成的列表;

第二部分输出n行数字组成的杨辉三角形。具体输出格式参考如下样例。

样例输入 复制

6

样例输出 复制

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1] 
                    1       
                1       1       
            1       2       1       
        1       3       3       1       
    1       4       6       4       1       
1       5       10      10      5       1  

提示

n=int(input())
a=[[0]*n for _ in range(n)]  #初始化所有数为0
for i in range(n):  #初始化第1列和对角线为1
    a[i][0]=a[i][i]=1
for i in range(2,n):  #从第3行第2列开始填充数值
    for j in range(1,i):
        a[i][j]=a[i-1][j]+a[i-1][j-1]
for i in range(n):  #删除数值依然为0的元素
    for j in range(n-1,-1,-1):
        if (a[i][j]==0):
            a[i].pop(j)
for r in a:
    print(r)
m=1
for r in a:
    for j in range(n-m):
        #引号里是4个空格
        print('{:<4}'.format('  '),end='')
    for j in a[m-1]:
        print('{:<4}'.format(j),end='')
        #引号里是4个空格
        print('{:<4}'.format('  '),end='')  
    print()
    m+=1