当前位置:首页>python>python 每周一练 精选题(三十四) 杨辉三角

python 每周一练 精选题(三十四) 杨辉三角

  • 2026-09-09 04:19:11
python 每周一练 精选题(三十四) 杨辉三角
杨辉三角
本题要求按照规定格式打印前N行杨辉三角。
输入格式:
输入在一行中给出N(1≤N≤10)。
输出格式:
以正三角形的格式输出前N行杨辉三角。每个数字占固定 4 位。
输入样例:
6
输出样例:
      1     1 1    1 2 1   1 3 3 1  1 4 6 4 1 1 5 10 10 5 1

参考解析

我们要解决的问题是打印前 N 行杨辉三角,核心要求有两个:

  1. 杨辉三角的数学规律:
    • 第i行(从 0 开始数)有i+1个数字。
    • 每行的首尾数字都是1。
    • 中间的数字 = 上一行的前一个数字 + 上一行的当前位置数字(如第 3 行的2 = 第 2 行的1 + 1)。
  2. 输出格式要求:
    • 整体是正三角形(居中对齐)。
    • 每个数字占固定 4 位宽度。
解题思路
  1. 生成杨辉三角数据:
    • 先初始化一个二维列表,用来存储每一行的数字。
    • 逐行生成:首尾为 1,中间数字由上一行计算得出。
  2. 格式化输出:
    • 用format()函数控制每个数字占 4 位宽度。
    • 通过每行前的空格实现居中对齐,让整体呈正三角形。
完整代码
# 1. 读取输入的N值(题目规定1 ≤ N ≤ 10)n = int(input())# 2. 初始化杨辉三角列表,用来存储每一行的数据triangle = []# 3. 逐行生成杨辉三角for i in range(n):    # 初始化当前行,长度为 i+1,所有元素先设为1    row = [1] * (i + 1)    # 计算中间的数字(首尾已经是1,不用处理)    for j in range(1, i):        # 当前数字 = 上一行的前一个数字 + 上一行的当前数字        row[j] = triangle[i-1][j-1] + triangle[i-1][j]    # 把生成的行加入到杨辉三角列表中    triangle.append(row)# 4. 按要求格式输出杨辉三角for i in range(n):    # 每一行的前导空格数可以根据总行数和当前行号计算    print(" " * (n - i - 1) * 2, end="")    # 打印当前行的每个数字,每个数字占4位宽度    for num in triangle[i]:        print("{:4d}".format(num), end="")    print()

最新文章

随机文章