杨辉三角,估计在国内上过奥数班的小朋友们都学习过。
关于杨辉三角的介绍,可以参看百度百科:http://baike.baidu.com/view/7804.htm
这里给出Python的实现方法,主要是看到C语言的写法,叽叽歪歪,叽叽歪歪,实在忍不了,动手写了一个:
1
NUM
=
5
2
3 def printLine(lineList):
4 lineList = [str(tmpNum) for tmpNum in lineList]
5 print ( " %s%s " % ( " " * (NUM - len(lineList)), " " .join(lineList)))
6
7 for i in range(NUM):
8 if i < 2 :
9 yhList = [ 1 ] * (i + 1 )
10 else :
11 yhList[ 1 : - 1 ] = [(tmpNum + yhList[j]) for j, tmpNum in enumerate(yhList[ 1 :])]
12 printLine(yhList)
2
3 def printLine(lineList):
4 lineList = [str(tmpNum) for tmpNum in lineList]
5 print ( " %s%s " % ( " " * (NUM - len(lineList)), " " .join(lineList)))
6
7 for i in range(NUM):
8 if i < 2 :
9 yhList = [ 1 ] * (i + 1 )
10 else :
11 yhList[ 1 : - 1 ] = [(tmpNum + yhList[j]) for j, tmpNum in enumerate(yhList[ 1 :])]
12 printLine(yhList)
运行结果如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
总觉得我的代码还是有可以精简的地方,写成更少的行。
留待以后再来优化吧,呵呵。
希望Python达人不吝赐教。
转载于:https://www.cnblogs.com/maodouzi/archive/2011/07/12/2104153.html