欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用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