【Python】格式化打印杨辉三角形
使用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. 循此法可以产生以下诸行,如下图所示。定义一
·
使用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行中最大数的位数 做为数据输出时的占位宽度和 数据间的间隔)。
二、代码
如下:
组合数函数原理
import math as m
def c(n,r):#定义函数计算C n r
if n==0 or r==0:
return 1
else:
return int(m.factorial(n)/(m.factorial(r)*m.factorial(n-r)))
x=eval(input())
all=[]
l=[]
#创建一个二维列表以每一行的数的列表为元素,如[[1],[1,1],[1,2,1]]
for n in range(x):
for r in range(n+1):
l.append(c(n,r))#每一个元素都是C n r,n为列,r为一列中的第几项
all.append(l[:])
l.clear()
max=all[x-1][x//2]#找到最大数
num=0
#判断最大数位数
while max!=0:
num+=1
max=max//10
for n in range(x):
#打印每行前端空格
print(' '*((x-n)*num),end='')
#输出数字内容
for nn in range(n+1):
print("{:>{}}".format(all[n][nn],num*2),end='')
#格式控制打印三角形内容,右对齐,占num*2个字符
print()
总结
1、理解杨辉三角中每一个数的来历
2、掌握format的格式控制方法
更多推荐
已为社区贡献1条内容
所有评论(0)