0
点赞
收藏
分享

微信扫一扫

Python 杨辉三角

田妞的读书笔记 2022-04-13 阅读 126
python

【问题描述】

杨辉三角形,也称帕斯卡三角,其定义为:顶端是 1,视为(row0).第1行(row1)(1&1)两个1,这两个1是由他们上头左右两数之和 (不在三角形内的数视为0).依此类推产生第2行(row2):0+1=1;1+1=2;1+0=1.第3行(row3):0+1=1;1+2=3; 2+1=3;1+0=1. 循此法可以产生以下诸行,如下图所示。
定义一个函数 ,传入正整数参数 M,输出 M 行的杨辉三角(为使格式美观,采用M行中最大数的位数 做为数据输出时的占位宽度和 数据间的间隔)。

【输入形式】

 一个正整数,如:12 

【输出形式】

此时最大数的位数 为3

def triangle(n):
    l=[]
    for i in range(n):
        if i==0:
            l.append([1])
        elif i==1:
            l.append([1,1])
        else:
            y = []
            for j  in range(i+1):
                if j==0 or j==i:
                    y.append(1)
                else:
                    y.append(l[i-1][j]+l[i-1][j-1])
            l.append(y)
    return l

def printf(n,m):
    for i in range(n):
        print(' '* (block * (n - i)), end='')#不换行end=''
        for j in range(len(x[i])):
            print(' ' * (block - len(str(x[i][j]))), end='')
            print(x[i][j], end=' ' * block)
        print()#换行


n = int(input())
x=triangle(n)
maxNumber = max(x[n-1])
block = len(str(maxNumber))
printf(n, block)
举报

相关推荐

0 条评论