用Python写一个杨辉三角
程序员文章站
2024-03-21 20:03:22
...
用Python写一个杨辉三角
杨辉三角是什么,在百度上随便一搜就能搜到这里不多做解释了
print("请输入一个整数,就会打印出相应行数的杨辉三角")
max=int(input())
def triangles(max):
L = [1]
n=1
while n<=max:
yield L
L = [sum(i) for i in zip([0]+L, L+[0])] #在每一行的最前面和最后面都看成有一个元素0,就发现下一行的1就是上一行的0+1
n+=1 #每行首位都有一个0后,其实下一行的数字,都是上一行,相邻两个元素相加的和
def ptintL(n):#打印n-1个空格
for i in range(1,n) :
print(' ',end='')
for i in triangles(max):
ptintL(max)
for j in i:
j=str(j)+' '
print(j,end='')
print()
max-=1
元组(2,3),元组列表[(1,2),(3,5)]
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
a = [1,2,3], b = [4,5,6],zipped = zip(a,b) ,[(1, 4), (2, 5), (3, 6)]
sum([1,4]) 5
简单举个例子第二行0,1,1,0 就是zip([0,1,1],[1,1,0]),将列表下表相同的元素求和就是下一行的杨辉三角
第三行0,1,2,1,0 就是zip([0,1,2,1],[1,2,1,0]),将列表下表相同的元素求和就是下一行的杨辉三角
结果
请输入一个整数,就会打印出相应行数的杨辉三角
10
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
上一篇: 将链表后k个节点移到链表头
下一篇: Mysql数据库表生成java实体工具类