精华内容
下载资源
问答
  • 原标题:Python教程| Python 杨辉三角杨辉三角,是一种像三角形一样的几何排列。在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又...

    原标题:Python教程| Python 杨辉三角

    杨辉三角,是一种像三角形一样的几何排列。在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

    [代码运行结果]

    [代码]

    # 算法一: 递归

    def pasica(n):

    '''n 代表三角的层号,从0开始'''

    if n==0:

    return (1,)

    else:

    res = (1,)

    for i in range(n-1):

    res += ( pasica(n-1)[i]+pasica(n-1)[i+1] ,)

    res += (1,)

    return res

    # Test code

    # print( pasica(0) )

    # print( pasica(1) )

    # print( pasica(2) )

    # print( pasica(3) )

    # print( pasica(4) )

    # print( pasica(5) )

    # print( pasica(6) )

    # print( pasica(7) )

    # print( pasica(8) ) # 开始卡

    # print( pasica(9) ) # 很慢了

    # 算法二: 用闭包设计缓存机制

    def pasica():

    '''n 代表三角的层号,从0开始'''

    alldata = [(1,),(1,1)] # 设计缓存

    def pas(n):

    lastestID = len(alldata)-1

    if n<=lastestID:

    return alldata[n] # 快速由缓存提取数据

    else:

    for i in range(n - lastestID ): # 需要在alldata里补充 n - lastestID

    tu=[]

    lastLine = list(alldata[lastestID])

    lastLine = [0]+lastLine+[0]

    # print(lastLine,'='*10)

    for j, d in enumerate(lastLine):

    if j+1

    tu.append(d+lastLine[j+1])

    alldata.append(tuple(tu))

    lastestID = len(alldata)-1

    return alldata[n]

    return pas

    fpas = pasica()

    # Test

    # print( fpas(0) )

    # print( fpas(1) )

    # print( fpas(2) )

    # print( fpas(3) )

    # print( fpas(4) )

    # print( fpas(5) )

    # print( fpas(6) )

    # print( fpas(7) )

    # print( fpas(8) )

    # print( fpas(9) )

    def seeOutput( n ):

    aa = fpas(n)

    weight = len( str( max(aa))) + 1

    nline = " ".join( [ "{:

    alldata = []

    for i in range(n+1):

    aa = fpas(i)

    iline = " ".join( [ "{:

    print( "{:^{w}}".format(iline, w=len(nline)) )

    seeOutput(10)

    责任编辑:

    展开全文
  • Python 杨辉三角

    2018-11-27 18:12:12
    Python 杨辉三角 首先附上我们需要求得的杨辉三角: [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,...

    Python 杨辉三角

    首先附上我们需要求得的杨辉三角:

    [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]
    

    很显然,是按照一行一个数列(list)实现的,也就是说,我们得在程序中不断的返回每一行的list并且打印出来

    第一步:先找规律,抽象化问题:

    首先我们观察到,第一行为[1],我们直接赋给一个变量:初始化数列 p = [1]
    其次我们观察到,下面的每一行的开头结尾都是[1],那么我们可以推导出每一行的规律为:[1]+…+[1]
    那么我们发现,从第三行开始中间的 [2],第四行中间的 [3,3],第五行中间的 [4,6,4] 等等以此类推才是我们需要推导的部分

    第一行:[1] 设 p = [1]

    第二行:[1]+[1] 设 p = [1,1]

    第三行:[1]+[2]+[1] 设 p = [1,2,1]

    第四行:[1]+[3]+[3]+[1]设 p = [1,3,3,1]

    经过找规律,我们发现,每一个新的list中间的部分,都等于上一行list的:第0个元素+第1个元素,第1个元素+第2个元素,第2个元素+第3个元素,…

    加上头尾也就是[1] +[p[0]+p[1]]+[p[1]+p[2]]…+[1]

    比如上面第三行:p[0] = 1, p[1] = 2, p[2] = [1]

    那么第四行就是:[1] + [1+2] (# p[0]+p[1])+ [2+1](# p[1]+p[2])+ [1]

    后面以此类推

    既然核心点是这个除去首位两个 [1] 的中间部分:[p[0] + p[1]]+[p[1] + p[2]]+[p[2] + p[3]]…

    我们很容易得到规律:[p[i] + p[i+1]]# for i in range(x)

    如果还没看懂,你可以找一张纸,将每一行都按照这个规律写出来:

    new p代表本行list的中间部分,p代表上一行list:

    [1]
     
    [1]+[1]
     
    [1]+[2]+[1] new p = p[0] + p[1] / i = 0,1 需要 i in range(1)
    # range(1) = 0,根据[p[i] + p[i+1]]即可实现p[0]+p[0+1]
     
    [1]+[3]+[3]+[1] new p = p[0] + p[1], p[1] + p[2] /i = 0,1,2 需要 i in range(2)
    [1]+[4]+[6]+[4]+[1] new p = p[0] + p[1], p[1] + p[2], p[2] + p[3] /i = 0,1,2,3 需要 i in range(3)
    [1]+[5]+[10]+[10]+[5]+[1] new p = p[0] + p[1], p[1] + p[2], p[2] + p[3], p[3] + p[4] /i = 0,1,2,3,4需要 i in range(4)
    

    i的规律为上一行list元素个数-1,也就是len(p) - 1
    至此,已经可以得出推导式:

    [1] + [p[i] + p[i + 1] for i in range(len(p) - 1)] + [1]
    

    补全程序代码:

    def triangles():
        p = [1]
        while True:
            yield p#generator函数与普通函数的差别:在执行过程中,遇到yield就中断,下次又继续执行
            p = [1] + [p[i] + p[i+1] for i in range(len(p)-1)] + [1]
    n = 0
    for t in triangles():
        print(t)
        n = n + 1
        if n == 10:
            break
    

    结果:

    [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]
    

    附其他方法:

    def triangles():
        L = [1]
        nextL = []
        i = 0
        j = 1
        while True:
            if len(L)>i and i-1>=0:
               nextL.append(L[i-1]+L[i])
            else:
               nextL.append(1)
            i = i+1
            if i >len(L)-1 and i == j:
                yield (nextL)
                L = nextL
                nextL = []
                i = 0
                j = j + 1
    
    n = 0
    results = []
    for t in triangles():
        print(t)
        results.append(t)
        n = n + 1
        if n == 10:
            break
    if results == [
        [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]
    ]:
        print('测试通过!')
    else:
        print('测试失败!')
    

    转自:Python中杨辉三角的理解(廖雪峰教程例)

    展开全文
  • python杨辉三角

    2020-03-29 23:56:01
    在控制台输出如图所示一个8层的杨辉三角杨辉三角介绍: 每个数等于它上方两数之和 每行数字左右对称,由1开始逐渐变大 第n行的数字有n项,将n取8 n = 8 a = [1] b = [1, 1] c = [] print(a) print(b) ...

    在控制台输出如图所示一个8层的杨辉三角。

    杨辉三角介绍:

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

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

    第n行的数字有n项,将n取8

    11.png

     

    n = 8
    a = [1]
    b = [1, 1]
    c = []
    print(a)
    print(b)
    for i in range(1, n):
        c.clear()
        c.append(1)
        for j in range(i):
            c.append(b[j]+b[j+1])
        c.append(1)
        b = c.copy()
        print(c)

    运行结果:

    [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]

     

    展开全文
  • Python杨辉三角形

    2019-05-02 18:36:00
    N=[1]#杨辉三角的第一行n=int(input())for i in range(n):#打印n行 L=N.copy()#我们需要把N复制给L,而不能直接L=N,因为这样L和N 会在同一个地址,后面就会出错 for j in range(len(L)):#遍历和转化 temp=str(L[j])...

    输出n0<n)行杨辉三角形,n由用户输入。

     

    N=[1]#杨辉三角的第一行
    n=int(input())
    for i in range(n):#打印n行
    L=N.copy()#我们需要把N复制给L,而不能直接L=N,因为这样L和N 会在同一个地址,后面就会出错
    for j in range(len(L)):#遍历和转化
    temp=str(L[j])
    L[j]=temp
    l=''.join(L).center(50)#组合和居中
    print(l)#打印L
    N.append(0)
    N=[N[k]+N[k-1] for k in range(i+2)]

     

     

    转载于:https://www.cnblogs.com/ggrm/p/10803010.html

    展开全文
  • Python杨辉三角

    2019-07-31 21:03:00
    杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的...
  • 直接上代码,也是网上找的,自己试了试,很好玩,记录一下:def triangles():L = [1]while True:yield LL.append(0)L = [L[i-1]+L[i] for i in range(len(L))]定义一个函数,输入打印多少行:def canshu(k):n = 0for...
  • python杨辉三角形

    千次阅读 2019-07-01 13:39:04
    python教学
  • python 杨辉三角

    2018-07-27 15:22:04
    问题: 杨辉三角定义如下: 1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / \ 1 5 10 10 ...
  • AI引擎请务必选择“MXNet”,“MXNet-1.2.1-python3.6”。由于示例代码已编写其使用引擎版本,如果使用“MXNet-1.2.1-python2.7”,训练作业将运行失败。 由于此训练作业数据量较大,运行时间较长,建议选择GPU资源...
  • 如何用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+...
  • 如何用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+...
  • /bin/python #coding=gb18030 a= "hello" len=(a) #为什么运Python len() 方法返回字符串长度。 len()方法语法: len( str ) 返回值: 返回字符串长度。 以下实例展示了len()的使用方法: #。/usr/bin/python str = ...
  • 1/ \1 1/ \ / \1 2 1/ \ / \ / \1 3 3 1/ \ / \ / \ / \1 4 6 4 1/ \ / \ / \ / \ / \1 5 10 10 5 1把每一行看做一个list,试写一个generator,不断输出下一行的list:def triangles():L=[1]n=0while True:yiel...
  • 原博文2020-03-14 23:23 −代码实现:# python实现杨辉三角形def yanghui(): # 定义第一行列表为[1] line = [1] while True: # yield的作用:把一个函数变成生成器,同时返回一个list,下次从yield的下条语句执行 ...
  • Python中,杨辉三角总是拿出来当算法题考,那什么是杨辉三角呢?查看定义先来观察下面的杨辉三角图例: 通过观察会发现,杨辉三角的每行的第一个与最后一个数都是1,且从第3行开始非1数字是它左上方和右上方的数的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,406
精华内容 562
关键字:

python杨辉三角

python 订阅