以正三角形的格式输出前N行杨辉三角。每个数字占固定 4 位。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
参考解析
我们要解决的问题是打印前 N 行杨辉三角,核心要求有两个:
- 杨辉三角的数学规律:
- 中间的数字 = 上一行的前一个数字 + 上一行的当前位置数字(如第 3 行的
2 = 第 2 行的1 + 1)。
- 输出格式要求:
- 生成杨辉三角数据:
- 格式化输出:
- 用
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()