Exercise
Pascal's Triangle is defined as follows:
1
/ \
1 1
/ \ / \
1 2 1
/ \ / \ / \
1 3 3 1
/ \ / \ / \ / \
1 4 6 4 1
/ \ / \ / \ / \ / \
1 5 10 10 5 1
Each row seen as a list, try to write a generator, the output list continues to the next line:
# 杨辉三角
def YH_triangles():
a =1
L = []
while True:
n, L2 = 0, []
for i in L:
if n == 0:
L2.append(L[n])
elif n-1 >= 0:
L2.append(L[n]+L[n-1])
n = n+1
L2.append(a)
yield L2
L = L2
# 测试
n = 0
results = []
for t in YH_triangles():
results.append(t)
n = n + 1
if n == 10:
break
for t in results:
print(t)
if results == [
[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1],
[1, 5, 10, 10, 5, 1],
[1, 6, 15, 20, 15, 6, 1],
[1, 7, 21, 35, 35, 21, 7, 1],
[1, 8, 28, 56, 70, 56, 28, 8, 1],
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
print('测试通过!')
else:
print('测试失败!')