python 递归函数 三角形_求教 杨辉三角的递归解法 python:

求大神帮忙用python写一个杨辉三角的程序

def gettriangle(num):

triangle=[]

for i in range(0,num 1):

tmp=[1]*(i 1)

for j in range(1,i):

tmp[j]=triangle[i-1][j-1] triangle[i-1][j]

triangle.append(tmp)

return triangle

def printtriangle(triangle,width=4):

column=len(triangle[-1])*width;

for sublist in triangle:

result=[]

for element in sublist:

tmp='{0:^{1}d}'.format(element,width)

result.append(tmp)

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

if __name__=='__main__':

num=int(input("Enter a nonnegative integer:"))

triangle=gettriangle(num)

printtriangle(triangle,4)

求教 杨辉三角的递归解法 python

1九

def multiplicationTable():

for i in range(1, 10):

for j in range(1, i):

print "%d * %d = %d\t" % (j, i, j * i),

print "%d * %d = %d\n" % (i, i, i * i),

if __name__ == '__main__':

multiplicationTable()

2、杨辉

def pascalsTriangle(n):

line = [1]

print "\t" * (n - 1),

print "%d\n" % line[-1],

for i in range(n - 1):

new_line = [1]

for j in range(i):

new_line.append(line[j] line[j 1])

new_line.append(1)

line = new_line

print "\t" * (n - i - 2),

for each in line[:-1]:

print "%d\t\t" % each,

print "%d\n" % line[-1],

if __name__ == '__main__':

pascalsTriangle(7)

新手求教:请问怎样用python 显示杨辉三角,任意输入一个数N,输出一个N 1层的杨辉三角。

我一#/usr/bin/python

# coding:utf-8

n = -1

while n    n = raw_input("Enter a nonnegative integer >= 0:")

try:

n = int(n)

except:

print "please enter integer!"

n = -1

tmppascal = [0,]* (2 * n   3)

pascal = []

for i in range(n   2):

pascal  = [tmppascal[:],]

center = n   1

pascal[1][center] = 1

x = y = 0

for i in range(2, n   2):

if n % 2 == 1:

if i % 2 == 0:

x = 1

y = 2 * n   2

else:

x = 2

y = 2 * n   1

else:

if i % 2 == 1:

x = 1

y = 2 * n   2

else:

x = 2

y = 2 * n   1

for j in range(x, y, 2):

pascal[i][j] = pascal[i - 1][j - 1]   pascal[i - 1][j   1]

if n % 2 == 0:

max = pascal[n   1][center]

else:

max = pascal[n   1][center - 1]

maxlen = len(str(max))

for row in pascal[1:]:

for col in row[1:-1]:

if col == 0:

col = ""

fm = '{0: ^'   str(maxlen)   '}'

print fm.format(col),

print

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(n        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实现这样的杨辉三角啊

按照你的要求用串类型编写的杨角的Python程序如下def printYangHui(n):

for i in range(1,n 1):

if i==1:

s="1"

if i==2:

s="1,1"

if i>2:

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) enumerate(iterable) 是对一个可遍象进行遍历时添加遍历的方法. 例如:>>> alst = ['d' % x*2 for x in range(7, 3, -1)]

>>> alst

['0707', '0606', '0505', '0404']

>>> for i, item in enumerate(alst):

...     print i, item

...

0 0707

1 0606

2 0505

3 0404

>>>

2) while True: 进入持环; 通常环体内有判断逻辑, 当满足条件时 break 或 return

如何用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]]

以此类推即可

版权声明:本站所有文章皆为原创,欢迎转载或转发,请保留网站地址和作者信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值