杨辉三角python蓝桥杯
时间: 2025-01-20 17:54:55 浏览: 36
### Python 实现杨辉三角的蓝桥杯题目解法
#### 使用迭代方法构建杨辉三角
为了满足蓝桥杯竞赛的要求,一种常见的方式是通过逐层迭代来生成杨辉三角。这种方法不仅直观而且易于理解。
```python
def create_pascals_triangle(n):
triangle = []
for row_num in range(n):
# 初始化新行,默认全为1
row = [None for _ in range(row_num + 1)]
row[0], row[-1] = 1, 1
# 计算中间值
for j in range(1, len(row) - 1):
row[j] = triangle[row_num - 1][j - 1] + triangle[row_num - 1][j]
triangle.append(row)
return triangle
# 打印函数用于展示结果
def print_triangle(triangle):
max_length = len(' '.join(map(str, triangle[-1])))
for row in triangle:
formatted_row = ' '.join(map(str, row))
print(formatted_row.center(max_length))
num_rows = 5
pascals_triangle = create_pascals_triangle(num_rows)
print_triangle(pascals_triangle)
```
这段代码定义了一个`create_pascals_triangle()` 函数用来创建指定层数的杨辉三角,并且提供了一个辅助打印功能 `print_triangle()`, 可以美观地显示这个结构[^3]。
#### 利用组合数公式简化计算过程
另一种更高效的解决方案是基于组合数学中的二项式系数理论。每一行代表的是 (a+b)^n 的展开式的各项系数,在这里可以直接调用 math 库里的 comb 方法快速求得特定位置上的数值:
```python
from math import comb
def pascal_with_combinations(rows_count):
result = []
for line_number in range(rows_count):
current_line = [
str(comb(line_number, column_index))
for column_index in range(line_number + 1)
]
result.append(current_line)
return [' '.join(x).center(len(' '.join(result[-1]))) for x in result]
rows_to_generate = 7
formatted_lines = pascal_with_combinations(rows_to_generate)
for l in formatted_lines:
print(l)
```
上述例子展示了如何仅用一行简洁优雅的方式来表达相同逻辑的同时保持良好的可读性和性能效率[^2]。
阅读全文
相关推荐
















