python经验分享

杨辉三角

def generate_pascals_triangle(n):
    if n == 0:
        return []
    elif n == 1:
        return [[1]]
    else:
        result = generate_pascals_triangle(n - 1)
        last_row = result[-1]
        new_row = [1] + [last_row[i] + last_row[i + 1] for i in range(len(last_row) - 1)] + [1]
        result.append(new_row)
        return result

def print_pascals_triangle(triangle):
    for row in triangle:
        print(" ".join(str(num) for num in row).center(len(triangle[-1]) * 2))

n = int(input("n="))
triangle = generate_pascals_triangle(n)
print_pascals_triangle(triangle)
generate_pascals_triangle(n) 函数:这个函数接收一个整数n作为输入,用于生成帕斯卡三角形的前n行。
如果n为0,函数返回一个空列表。
如果n为1,函数返回一个包含单个列表[1]的列表,这是帕斯卡三角形的第一行。
如果n大于1,函数首先递归调用自己以生成前n-1行的帕斯卡三角形,然后将这n-1行的结果存储在result变量中。
接着,函数计算第n行(即新行),方法是使用前一行的值来计算当前行的每个值(除了开始和结束的1之外,每个值是它正上方和左上方两个数的和)。
最后,将新计算得到的行添加到result列表中,并返回result。
print_pascals_triangle(triangle) 函数:这个函数接收一个列表(帕斯卡三角形的表示)作为输入,并打印这个三角形。
对于三角形的每一行,函数首先将该行中的每个数字转换为字符串,并用空格将它们连接起来。
然后,使用str.center()方法将得到的字符串居中,居中的宽度是三角形最后一行长度的两倍。这样做的目的是为了在打印时让三角形看起来更加美观。
最后,打印出每一行。
主程序:程序首先提示用户输入一个整数n,然后调用generate_pascals_triangle(n)函数生成帕斯卡三角形的前n行,并存储在triangle变量中。最后,调用print_pascals_triangle(triangle)函数打印出这个三角形。
但是,在打印帕斯卡三角形时,每行的居中宽度是基于三角形最后一行的长度来计算的,这会导致当n较小时,前几行看起来像是被“挤压”在了一起。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值