练习:杨辉三角



杨辉三角


  

  1. 题目
  2. 代码运行效果
  3. 完整代码

练习题目

在这里插入图片描述


回首页

代码运行效果


在这里插入图片描述

  第六行起,“三角”排列有些“变形”,造成原因是,有了多于一位的数字,数字位数越多,三角变形就越厉害。如果都用相同的宽度打印“三角”的每一个数字,“杨辉三角”就会是一个标准的等腰三角形。😋😋

  修改每一个“杨辉三角”数字打印宽度,就可以打印出更多行排列齐整的“三角”。

例如:把每个数字的打印宽度设置为 5 ,在 111 的宽度上就可以打印出 18 行齐整的“三角”。
python 代码(数字打印宽度 5 ):
n = 18
print(f'\n\n\n{"杨辉三角":_^107}\n\n')
print(f'{"":_^111}')
Pascal_list = Pascal_triangle(n)
for i in Pascal_list:
    print(f'{" ".join([f"{int:.^5}" for int in i]):_^111}')
print(f'{"":_^111}')
print(f'\n\n{"The End":_^111}\n')

在这里插入图片描述


在这里插入图片描述


回首页

python完整代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
# coding: utf-8

def Pascal_triangle(n):
    '''杨辉三角二维列表生成'''
    if n == 0: #n为零时杨辉三角列表为空。
        return []
    if n == 1: #n为零时杨辉三角列表为[1]。
        return [[1]]
    if n == 2: ##n为零时杨辉三角列表为[1], [1, 1]。
        return [[1], [1, 1]]
    Pascal_list = [[1], [1, 1]]
    for i in range(3, n + 1): # n > 2 时,杨辉三角当前行除了首尾,都等于上一行当前位置和前一位置的两个数的和。
        temp = [] #初始化当前行这空。
        for k in range(i): #每一行的元素个数等于行数数字。
            if k == 0 or k == i - 1: #每一行首尾都是 1 。
                temp.append(1)
            else: #每一行其他元素等于上一行当前位置和前一位置的两个数的和。
                temp.insert(k, Pascal_list[i - 2][k - 1] + Pascal_list[i - 2][k]) #从第三行开始计算,所以是 i - 2 行。
        Pascal_list.append(temp) #当前行追加到杨辉三角列表。
    return Pascal_list #返回杨辉三角列表。

n = 12 #生成杨辉三角的行数。
print(f'\n\n\n{"杨辉三角":_^38}\n\n') #打印结果输出第一行提示。
Pascal_list = Pascal_triangle(n) #调用函数生成杨辉三角列表。
for i in Pascal_list: #遍历列表打印杨辉三角。
    print(f'{" ".join([str(int) for int in i]):^42}') #当前行解析成字符并用 ' '.join(str) 拼接成字符串居中打印输出。
print(f'\n\n{"The End":_^42}\n') #打印结果输出最后一行提示。

回首页

我的HOT博:

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 打赏
      打赏
    • 0
      评论

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    梦幻精灵_cq

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值