求大神帮忙用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),
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]]
以此类推即可
版权声明:本站所有文章皆为原创,欢迎转载或转发,请保留网站地址和作者信息。