【问题描述】
杨辉三角形,也称帕斯卡三角,其定义为:顶端是 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 fun(n):
# 生成n行的杨辉三角列表
ls = [[1], [1, 1]]
if n <= 2:
return ls[:n]
else:
for i in range(3, n + 1):
# 增加新的一行,该行开头第一个元素为1
ls.append([1])
# 由旧一行,定义生成新一行的元素
fo