2020-02-10 18:54:06
杨辉三角定义如下:
1
/ \
1 1
/ \ / \
1 2 1
/ \ / \ / \
1 3 3 1
/ \ / \ / \ / \
1 4 6 4 1
/ \ / \ / \ / \ / \
1 5 10 10 5 1
把每一行看做一个list,试写一个generator,不断输出下一行的list
1 def triangles(): 2 i=1 3 list1=[1] 4 yield list1 5 i=2 6 list2=[1,1] 7 yield list2 8 list1=list2 9 while i<=10: 10 i+=1 11 list2=[0 for i in range(0,i)] 12 list2[0]=1 13 list2[-1]=1 14 for j in range(1,i-1): 15 list2[j]=list1[j-1]+list1[j] 16 list1=list2 17 yield list2 18
测试代码
1 # 期待输出:
2 # [1]
3 # [1, 1]
4 # [1, 2, 1]
5 # [1, 3, 3, 1]
6 # [1, 4, 6, 4, 1]
7 # [1, 5, 10, 10, 5, 1]
8 # [1, 6, 15, 20, 15, 6, 1]
9 # [1, 7, 21, 35, 35, 21, 7, 1]
10 # [1, 8, 28, 56, 70, 56, 28, 8, 1]
11 # [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
12 n = 0
13 results = []
14 for t in triangles():
15 results.append(t)
16 n = n + 1
17 if n == 10:
18 break
19
20 for t in results:
21 print(t)
22
23 if results == [
24 [1],
25 [1, 1],
26 [1, 2, 1],
27 [1, 3, 3, 1],
28 [1, 4, 6, 4, 1],
29 [1, 5, 10, 10, 5, 1],
30 [1, 6, 15, 20, 15, 6, 1],
31 [1, 7, 21, 35, 35, 21, 7, 1],
32 [1, 8, 28, 56, 70, 56, 28, 8, 1],
33 [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
34 ]:
35 print('测试通过!')
36 else:
37 print('测试失败!')
来源:https://www.cnblogs.com/lzycodinglife/p/12292154.html