用Python输出一个杨辉三角的例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Python输出一个杨辉三角的例子相关的知识,希望对你有一定的参考价值。

用Python输出一个杨辉三角的例子这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友

参考技术A 用Python输出一个杨辉三角的例子
这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下
关于杨辉三角是什么东西,右转维基百科:杨辉三角
稍微看一下直观一点的图:
代码如下:

杨辉三角有以下几个特点:
每一项的值等于他左上角的数和右上角的数的和,如果左上角或者右上角没有数字,就按0计算。
第N层项数总比N-1层多1个
计算第N层的杨辉三角,必须知道N-1层的数字,然后将相邻2项的数字相加,就能得到下一层除了最边上2个1的所有数字。 听起来有点像递归的思想,我们不妨假设我们已经知道N-1层的数字,来计算一下N层的数字吧。
代码如下:
def _yanghui_trangle(n, result):
if n == 1:
return [1]
else:
return [sum(i) for i in zip([0] + result, result + [0])]

上面代码中,result表示N-1层杨辉三角的数字。实习上,我们在列表2端各补了一个0,然后计算相邻项的和,就可以直接得到结果。
稍微完善一下代码:
代码如下:
def yanghui_trangle(n):
def _yanghui_trangle(n, result):
if n == 1:
return [1]
else:
return [sum(i) for i in zip([0] + result, result + [0])]
pre_result = []
for i in xrange(n):
pre_result = _yanghui_trangle(i + 1, pre_result)
yield pre_result
if __name__ == "__main__":
for line in yanghui_trangle1(5):
print line

_yanghui_trangle可以用lambda的方式简写,但是可读性感觉会变差,所以还是保持现状好了。
tips: 上面的程序并没有考虑数据格式化的问题,也就是说输出不是完美的三角形。
鉴于最近在学习erlang,补上一个erlang版本的,性能上没有测试过,不过还是要惊叹于函数式语言的表达能力:
代码如下:

-module(yanghui).
-author(lfyzjck).
-export([triangle/1]).
triangle_next(P) ->
lists:zipwith(fun(X, Y) -> X+Y end, [0|P], P ++ [0]).
triangle(1) ->
[[1]];
triangle(N) ->
L = triangle(N - 1),
[H|_] = L,
[triangle_next(H)|L].

python 小练习 9

还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
..............
先在给你一个正整数n,请你输出杨辉三角的前n层
注意:层数从1开始计数,每层数字之间用一个空格隔开,行尾不要有空格。
如n=2,则输出:
1
1 1

AC代码如下:
a = [[0 for i in range(n)]for j in range(n)]

a[0][0] = 1
a[1][0] = 1
a[1][1] = 1
for i in range(n):
    a[i][0] = a[i][i] = 1
    for j in range(1,i//2+1): #取膜除法
        a[i][j] = a[i][i-j] = a[i-1][j-1] +a[i-1][j]

for i in range(n):
    print( .join(str(x)for x in a[i] if x!=0) )#这是一种输出方式
for i in range(n):
    for j in range(i+1):
        print(a[i][j],end= )
    print(\n,end=‘‘)#这是第二种输出方式

两行代码的解法:

for i in xrange(n):
    print " ".join(map(str, reduce(lambda x, y: map(sum, zip([0]+x, x+[0])), xrange(i), [1])))

 



以上是关于用Python输出一个杨辉三角的例子的主要内容,如果未能解决你的问题,请参考以下文章

Python练习题——用列表的方法输出杨辉三角

怎么用Java的控制台输出各种三角形?

python杨辉三角形原理

python打印杨辉三角的两种方法及详解

Python 打印各种三角形

例子:列表--杨辉三角