Python 3.8从零开始学
上QQ阅读APP看书,第一时间看更新

3.5 牛刀小试——实现杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列,出现于中国南宋数学家杨辉1261年所著的《详解九章算法》一书中。杨辉三角是中国数学史上的一个伟大成就。

思考点拨:

(1)每个数等于它上方两数之和。

(2)每行数字左右对称,由1开始逐渐变大。

(3)第n行的数字有n项。

(4)前n行共[(1+n)n]/2个数。

(5)第n行的m个数可表示为C(n-1, m-1),即为从n-1个不同元素中取m-1个元素的组合数。

(6)第n行的第m个数和第n-m+1个数相等,为组合数性质之一。

(7)每个数字等于上一行的左右两个数字之和,可用此性质写出整个杨辉三角。

实现示例(yh_triangle.py):

# 生成杨辉三角的一行
def create_line(l_list):
line_list=[1]
for x in range(1, len(l_list)):
line_list.append(l_list[x] + l_list[x - 1])
line_list.append(1)
return line_list
# 打印
def print_line(line_list, width_v):
s=""
for x in line_list:
s += str(x) + "  "
print(s.center(width_v))
lines=[1]
row=int(input("输入行数:"))
# 设置打印宽度
width=row * 4
for x in range(row):
print_line(lines, width)
lines=create_line(lines)

执行示例如下:

输入行数:5
1
1  1
1  2  1
1  3  3  1
1  4  6  4  1