python编程 杨辉三角

"""
todo 杨辉三角
     又称帕斯卡三角形(Pascal('s Triangle),是一个在数学中非常著名的数列三角形
     它由法国数学家布莱兹·帕斯卡发现,但实际上,这个三角形在中国宋代的数学家杨辉的著作中已经出现,因此在中国通常被称为杨辉三角
     杨辉三角的每一行都由数字组成,排列成三角形状
     三角形的最顶端是第0行,只有一个数字1
     从第1行开始,每行的前一个和最后一个数字都是1,中间的数字是它正上方两个数字的和
"""

#              1
#             1 1
#            1 2 1
#           1 3 3 1
#          1 4 6 4 1
#        1 5 10 10 5 1
#       1 6 15 20 15 6 1

#定义一个函数,接收一个参数n表示杨辉三角的行数
#构建一个具有n行的杨辉三角
def pascal_triangle(n):
    #初始化杨辉三角的第0行为[1],并将其存储在列表triangle中
    triangle = [[1]]
    #使用循环从1到n-1,因为第0行已经初始化了
    #使用for循环填充之后的n-1行
    for i in range(1, n):
        #对于每一行创建一个新的列表row,用来存储当前行的值,i的值是当前行的索引
        #row的第一个元素设置为1
        row = [1]
        #使用另一个for循环,从1到i-1,不包括i,i是当前行的索引,因为i会与上一行的最后一个元素对应,
        #row中的每个元素是正上方两个数字的和,填充row中间的元素
        for j in range(1, i):
            row.append(triangle[i-1][j-1] + triangle[i-1][j])
        #最后一个元素也设置是1
        row.append(1)
        #将row添加到triangle列表中
        triangle.append(row)
    #返回构建好的杨辉三角列表
    return triangle

#用于格式化输出,接收一个triangle参数,杨辉三角列表
def print_triangle(triangle):
    #将列表类型转换为字符串
    #计算最宽行的长度,用map函数将最后一行的元素转换为字符串再用join连接成一个长字符串,
    # 方便之后的打印能够居中对齐
    width = len(" ".join(map(str, triangle[-1])))
    #遍历triangle中的每一行,map函数将row中的每个元素转换为字符串,再用join连接,
    # 再用center方法将该长字符串居中,print打印出来
    for row in triangle:
        print(" ".join(map(str, row)).center(width))

#调用
if __name__ == '__main__':
    n = input('请输入构建杨辉三角的行数:')
    print_triangle(pascal_triangle(int(n)))
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值