python函数杨辉三角,python求杨辉三角

怎么用python实现这样的杨辉三角啊

按照你的要求用字符串类型编写的杨辉三角的Python程序如下

创新互联专业为企业提供临沂网站建设、临沂做网站、临沂网站设计、临沂网站制作等企业网站建设、网页设计与制作、临沂企业网站模板建站服务,十余年临沂做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

def printYangHui(n):

for i in range(1,n+1):

if i==1:

s="1"

if i==2:

s="1,1"

if i2:

s1=""

begin=0;

for j in range(0,(i-3)+1):

begin1=s.find(",",begin)

begin2=s.find(",",begin1+1)

if begin2==-1:

begin2=begin1+2

s1=s1+str(int(s[begin:begin1])+int(s[begin1+1:begin2]))+","

begin=begin2-(begin2-begin1-1)

s="1,"+s1+"1"

print(s)

n=int(input())

printYangHui(n)

源代码如下(注意源代码的缩进)

关于杨辉三角python代码的问题

杨辉三角,是二项式系数在三角形中的一种几何排列。

前提:每行端点与结尾的数为1.

每个数等于它上方两数之和。

每行数字左右对称,由1开始逐渐变大。

第n行的数字有n项。

第n行数字和为2n-1。

第n行的m个数可表示为

C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

第n行的第m个数和第n-m+1个数相等

,为组合数性质之一。

每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即

C(n+1,i)=C(n,i)+C(n,i-1)。

(a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。

将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。

将各行数字相排列,可得11的n-1(n为行数)次方:1=11^0;

11=11^1;

121=11^2……当n5时会不符合这一条性质,此时应把第n行的最右面的数字”1”放在个位,然后把左面的一个数字的个位对齐到十位…

…,以此类推,把空位用“0”补齐,然后把所有的数加起来,得到的数正好是11的n-1次方。以n=11为例,第十一行的数为:1,10,45,120,210,252,210,120,45,10,1,结果为

25937424601=1110。

完整代码:

#!/usr/bin/python

#coding=utf-8

#

__author__

=

'cy'

#输出杨辉三角数值表

def

triangle(num):

#初始表值为[1]

triangle=[[1]]

#添加i个值([1])至triangle表,eg:[1]*3,triangle=[[1],

[1],

[1]]

for

i

in

range(2,

num+1):

triangle.append([1]*i)

#改变triangle表的值,eg:

#当num=5时,i取5,j取3

#triangle[4][1]

=

triangle[3][1]+triangle[3][0]

#triangle[4][2]

=

triangle[3][2]+triangle[3][1]

#triangle[4][3]

=

triangle[3][3]+triangle[3][2]

#相当于triangle表的第4位的值(这里的值为一个表)的第1,2,3位值等于第3位的值(这里的值也是一个表)的第1,2,3位值和0,1,2的值分别相加(即错位相加)。

for

j

in

range(1,

i-1):

triangle[i-1][j]

=

triangle[i-2][j]+triangle[i-2][j-1]

return

triangle

#格式化输出(输出的是一个表)

def

printtriangle(triangle,

width):

#列宽

column

=

len(triangle[-1])*width

for

sublist

in

triangle:

result

=

[]

for

contents

in

sublist:

#控制间距

result.append('{0:^{1}}'.format(str(contents),

width))

#控制缩进,{0:^{1}}:空格在两边补齐空位‘^’居中对齐,‘:’号后面带填充的字符

print('{0:^{1}}'.format(''.join(result),

column))

#启动函数

if

__name__

==

'__main__':

#输入整数

num

=

int(input('How

many

rows

do

you

want:'))

#打印信息

print

"The

triangle

rows

as

follows:"

triangle

=

triangle(num)

#列宽

width

=

len(str(triangle[-1][len(triangle[-1])//2]))+3

printtriangle(triangle,

width)

python杨辉三角形原理

triangles里用到了yield,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 triangles(5) 不会执行 triangles函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield L 时,triangles函数就返回一个迭代值,下次迭代时,代码从 yield L 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。

1 那个2去哪了

你看else语句 L1 = [1,1]每次L都是基于这个L1生成的 比如L=[1,2,1] 那么下一个L1就是[1,3,3,1],下一句L = L1 所以每次都是新的L1生成

2 画红圈的地方应该是和L1.insert(i,L[i-1+i])意思一样

不一样,插入的值是两个数的和

def triangles(max):

L = [1]

n = 0

while(nmax):

n = n+1

if(n == 2):

L=[1,1]

yield L

else:

i = 1

L1 = [1,1]

while(i=n-2):

L1.insert(i,L[i-1]+L[i])

i=i+1

L = L1

yield L

for n in triangles(5):

print n

如何用python输出杨辉三角

程序输出需要实现如下效果:

[1]

[1,1]

[1,2,1]

[1,3,3,1]

......

方法:迭代,生成器

123456789101112131415161718192021

def triangles() L = [1] while True: yiled L L =[1] + [L[i] + L[I+1] for i in range(len(L)-1)] + [1] n = 0 for t in triangles(): print(t) n += 1 if n == 10: break

实现逻辑:

1.由于yield为生成器中断输出,所以有了第一个次输出为[1]

2.继续while下面的yield后的循环,此时list长度为1,将其代入L中的len(L),得出[L[i]+L[i+1] for i in range(1-1)]得出为空值,所以yield L输出为[1,1]

3.此时len(L)值为2,代入得出[L[i]+L[i+1] for i in range(2-1)]为[L[i]+L[i+1] for i in range(1)],i能取值为0,代入后为[L[0]+L[1]],而L[0]和L[1]的值均为1(有上面结果可知),所以输出结果为[1,2,1]

4.由第三条可知此时len(L)值为3,代入得出[L[i]+L[i+1] for i in range(2)],i取值为0和1,通过循环输出有两个值,均为3,分别由[L[0]+L[1]],[L[1]+L[2]]

以此类推即可


当前题目:python函数杨辉三角,python求杨辉三角
文章位置:http://ybzwz.com/article/hsojog.html