def create_psc_triangle(line_num):
"""
创建杨辉三角(帕斯卡三角)
:param line_num: 行数
:return: 存储杨辉三角的列表
"""
l1 = [1] # 第一行
l2 = [1, 1] # 第二行
ls = [] # 用于指定杨辉三角l的最后一个元素(行)
ln = [1, 1] # 初始化第n行
l = [l1, l2] # 当行数大于等于2时,初始化杨辉三角
n = 2 # 记录杨辉三角列表l的元素个数
num = int(line_num) # 将参数转化为整型
if num == 1: # 返回只有一行的杨辉三角
del l[1]
return l
if num == 2: # 返回只有两行的杨辉三角
return l
if num > 2: # 返回行数大于两行的杨辉三角
i = 0
ls_long = 2 # 用于记录ls列表的元素个数
'''
此循环将用于生成特定行数的杨辉三角
'''
while i < num - 2:
ls = l[n - 1] # 将ls列表指向杨辉三角l的最后一行(即最后一个元素),方便再此基础上生成下一行
j = 0
while j < ls_long - 1:
ln.insert(j + 1, (ls[j] + ls[j + 1]))
j += 1
ls_long += 1
l.append(ln)
ln = [1, 1]
n += 1
i += 1
return l
def show_psc_triangle(l):
"""
显示杨辉三角
:param l: 存储杨辉三角的列表
:return: none
"""
'''
变量导读:
i:int,用于存储杨辉三角的行数
n:list,用于存储杨辉三角列表l中的一个元素,即某一行
s:string,用于存储由某一行转化而来的字符串,或某一行中最大的数转化而来的字符串(第60行)
worth:int,用于存储最终显示宽度
j:int,用于指定行
'''
i = 0
for s in l:
i += 1
# 计算杨辉三角中最大的数的位数,并确定最终显示宽度
n = l[i - 1] # 最后一行
s = str(max(n)) # 将最大的数转化为字符串类型
worth = i * len(s) + i - 1 # 确定宽度,行数=某一行的数值个数,宽度=数值个数*最大数的宽度+空格总数
# 只有一行时
if i == 1:
n1 = l[0]
s1 = str(n1[0])
print(s1.center(10))
# 多于一行时
if i > 1:
# 先输出第一行
j = 1
n = l[0]
s = str(n[0])
print(s.center(worth))
# 其余行逐行输出
x = 0
while x < i - 1:
n = l[j]
s = str(n[0]) # 将列表中的第一个元素转化为字符串
y = 0
while y < x + 1:
s = s + ' ' + str(n[y + 1]) # 将列表中的所有元素转化为各数值之间带有空格的形式
y += 1
print(s.center(worth)) # 输出行
j += 1 # 转到下一行
x += 1
l = create_psc_triangle(10)
show_psc_triangle(l)
输出结果: