杨辉三角杨辉 定义如下:
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