【数据分析面试】64. 生成杨辉三角(Python)

在这里插入图片描述

题目

编写一个Python程序,要求用户输入一个正整数n,并输出一个大小为n的杨辉三角(Pascal’s Triangle)。

提示
杨辉三角的性质:每行的第一个和最后一个元素都是1。第n行(从0开始)的第k个元素(从0开始)可以通过公式计算得出:triangle[n][k] = triangle[n-1][k-1] + triangle[n-1][k](k > 0 且 k < n)

示例

输入:

请输入一个正整数:5

输出:

    1
   1 1
  1 2 1
 1 3 3 1
1 4 6 4 1

答案

解题思路

这个程序包含三个部分:

  1. 输入处理:提示用户输入一个正整数n
  2. 生成杨辉三角:存储杨辉三角的数据元素
  3. 打印结果:需要调整字符串的格式,使得每行的数字在视觉上对齐

答案代码

def generate_pascals_triangle(n):
    if n <= 0:
        return []  # 如果n不大于0,则返回空列表
    
    triangle = [[1]]  # 初始化杨辉三角的第一行

    for i in range(1, n):
        row = [1]  # 每行的第一个元素是1
        for j in range(1, i):
            # 每个元素是上一行的相邻两个元素之和
            row.append(triangle[i-1][j-1] + triangle[i-1][j])
        row.append(1)  # 每行的最后一个元素是1
        triangle.append(row)  # 将生成的行添加到杨辉三角中
    
    return triangle

def print_pascals_triangle(triangle):
    n = len(triangle)
    # 计算最后一行的宽度,用于对齐
    width = len(" ".join(map(str, triangle[-1])))

    for row in triangle:
        row_str = " ".join(map(str, row))
        # 将每行字符串居中打印
        print(row_str.center(width))

def main():
    # 提示用户输入一个正整数
    n = int(input("请输入一个正整数:"))
    if n <= 0:
        print("请输入一个正整数。")
        return
    
    # 生成杨辉三角并打印
    triangle = generate_pascals_triangle(n)
    print_pascals_triangle(triangle)

if __name__ == "__main__":
    main()

更多详细答案可见原文链接 或关注公众号查阅。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值