杨辉三角杨辉 定义如下:
1
2
3
4
5
6
7
8
9
10
11
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def triangles(): L = [ 1 ] while True : yield L M = L[:] #复制一个list,这样才不会影响到原有的list。不然results里的每个列表的末尾会为0. M.append( 0 ) L = [M[i - 1 ] + M[i] for i in range ( len (M))] n = 0 results = [] for t in triangles(): print (t) results.append(t) print (results) n = n + 1 if n = = 10 : break |
ps:如何实现心
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
def printlove(start,length,midnumber = 0 ,flag = 31 ): for i in range ( 31 ): if i<start or i>start + length - 1 and i< 15 - (midnumber - 1 ) / 2 or i> 15 + (midnumber - 1 ) / 2 and i< 31 - start - length or i> 30 - start or i = = flag: print " " , else : print "*" , print "" for i in range ( 16 ): if i = = 0 : printlove( 4 , 3 ) elif i = = 1 : printlove( 1 , 9 ) elif i> = 2 and i< = 5 : printlove( 0 ,i + 10 ) elif i = = 6 : printlove( 1 , 7 , 7 , 15 ) elif i> = 7 and i< = 8 : printlove(i - 5 , 6 , 5 - (i - 7 ) * 2 ) elif i = = 9 : printlove( 5 , 6 , 1 ) elif i = = 10 : printlove( 8 , 6 , 1 ) elif i = = 15 : printlove( 15 , 1 , 1 ) else : printlove(i - 1 , 16 - i, 1 ) |
实现的效果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000016180681