python创建和显示任意行数的杨辉三角/帕斯卡三角(函数)


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)

输出结果:

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值