鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] Python:每日一题 196

[复制链接]
发表于 2018-8-11 00:20:06 | 显示全部楼层
  1. def tri(num):
  2.     print('1')
  3.     if num>1:
  4.         print('1 1')
  5.     list1=[1,1]
  6.     for i in range(2,num):
  7.         list2=[]
  8.         for x in range(len(list1)-1):
  9.             list2.append(list1[x]+list1[x+1])
  10.         list2.insert(0,max(list1))
  11.         list2.append(max(list1))
  12.         for a in list2:
  13.             print(a,end=' ')
  14.         print()
  15.         list1=list2.copy()
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-11 04:45:06 | 显示全部楼层
def tri():
    h=input("输入要打印杨辉三角的层数:")
    n=int(h)
    m=[]
    for i in range(n):
        if i==0:
            m.append('1')
            print(' ' *n*2+str(m))      
        elif i==1:
            m.append('1')
            print(' ' *(n-1)*2+str(m))
        else:   
            print(' ' *(n-i)*2+str(str_print(m,len(m)+1)))

def str_print(a, m):
        b=[]
        b=a[:]
       
        for i in range(m):
                if i !=0 or i!=1:
                        a[i-1]=str(int(b[i-2])+int(b[i-1]))
        a.append('1')
        a[0]='1'
        return a

if __name__ == "__main__":
    tri()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-11 12:43:17 | 显示全部楼层
本帖最后由 子沙 于 2018-8-11 12:47 编辑
  1. def fun_196(x):
  2.     if x==1:
  3.         print('1')
  4.     if x==2:
  5.         print('1')
  6.         print('1,1')
  7.     elif x>=3:
  8.         line=[1,1]
  9.         temp=max(line)
  10.         fun_196(2)#输出前两行
  11.         for i in range(3,x+1):
  12.             for j in range(1,i-1):
  13.                 line[j-1]=line[j-1]+line[j]#第i行的中间部分
  14.             line.insert(0,temp)#第i行的第一项
  15.             line[i-1]=temp#第i行的最后一项
  16.             temp=max(line)
  17.             for k in range(i-1):
  18.                 print(line[k],end=',')
  19.             print(line[i-1])#输出第i行
  20. fun_196(1)
  21. fun_196(2)
  22. fun_196(3)
  23. fun_196(10)
  24. fun_196(20)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-11 12:45:21 | 显示全部楼层
def yhTriangle(n):
    l, index = [1], 0
    while index < n:
        yield l
        l = [max(l)] + [l[i] + l[i + 1] for i in range(len(l) - 1)] + [max(l)]
        index += 1

for i in yhTriangle(10):
    print(i)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-11 13:23:39 | 显示全部楼层
  1. def tri(n):
  2.     a = [1]
  3.     while len(a) <= n:
  4.         print(', '.join(map(str, a)))
  5.         a = [max(a)] + [a[i] + a[i + 1] for i in range(len(a) - 1)] + [max(a)]


  6. tri(10)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-11 13:59:44 | 显示全部楼层
  1. def a196(n):
  2.         parsk=[1]
  3.         for i in range(n):
  4.                 print(','.join(str(n) for n in parsk))
  5.                 maxnum=max(parsk)
  6.                 cd=len(parsk)
  7.                 if cd<2:
  8.                         parsk.append(1)
  9.                 else:
  10.                         parsk2=[]
  11.                         for j in range(cd-1):
  12.                                 parsk2.append(parsk[j]+parsk[j+1])
  13.                         parsk2.append(maxnum)
  14.                         parsk2.insert(0,maxnum)
  15.                         parsk=parsk2
  16.                                
  17. a196(10)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-11 15:09:10 | 显示全部楼层
global c

def tri():
    h=input("输入要打印杨辉三角的层数:")
    n=int(h)
    m=[]
    global c
    for i in range(n):
        if i==0:
            m.append(1)
            print(' ' *n*2+str(m))
            c=m[:]
        elif i==1:
            m.append(1)
            print(' ' *(n-1)*2+str(m))
            c=m[:]
        else:     
            upstr=str(str_print(m,len(m)+1))
            print(' ' *(n-i)*2+upstr)

def str_print(a, m):
    b=[]
    b=a[:]
        
    for i in range(m):
        if i !=0 or i!=1:
            a[i-1]=int(b[i-2])+int(b[i-1])
            
    a.append(max(b))
    a[0]=max(b)
   
    global c
    c=a[:]
    return a

if __name__ == "__main__":
    tri()

之前一个看错题目了,修改下

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 09:11:23 From FishC Mobile | 显示全部楼层
def tri(n):
        tri=[]
        for i in range(n):
                tri.append([])
                if i==0:
                        tri[i].append(1)#diyihang
                else:
                        for j in range(0,i-1):
                                tri[i].append(tri[i-1][j]+tri[i-1][j+1])
                        tri[i].insert(0,sorted(tri[i-1])[i-1])
                        tri[i].insert(i,sorted(tri[i-1])[i-1])
        for i in range(n):
                print(tri[i])
tri(8)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 11:00:38 | 显示全部楼层
  1. def tri(num):
  2.     list_a = [1]
  3.     yield list_a
  4.     list_b = [1,1]
  5.     list_c = []
  6.     for i in range(1,num):
  7.         list_c.append(list_b[i//2])
  8.         for j in range(i-1):
  9.             list_c.append(list_b[j]+list_b[j+1])
  10.         list_c.append(list_b[i//2])
  11.         yield list_c
  12.         list_b = list_c
  13.         list_c = []

  14. for m in tri(10):
  15.     print(m)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 13:52:58 | 显示全部楼层
这题卡住了,还评分吗?
  1. def fun196(n):
  2.     for t in range(1,n+1):
  3.         if t == 1:
  4.             a = [1]
  5.             print(str(a).strip('[]'))
  6.         if t == 2:
  7.             a = [1,1]
  8.             print(str(a).strip('[]'))
  9.         if t == 3:
  10.             a = [1,2,1]
  11.             print(str(a).strip('[]'))
  12.         if t >= 4:
  13.             a.append(max(a))
  14.             for i in range(t-2,0,-1):
  15.                 a[i] = a[i] + a[i-1]
  16.             a[0] = a[-1]
  17.             print(str(a).strip('[]'))
  18. x = fun196(10)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2018-8-13 10:59:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-14 09:48:08 | 显示全部楼层
  1. def triangles(n):
  2.     L = [1]
  3.     for i in range(n):
  4.         yield L
  5.         m = max(L)
  6.         if m > 2:
  7.             L.append(m)
  8.         else:
  9.             L.append(0)
  10.         L = [L[i - 1] + L[i] for i in range(len(L))]
  11.         if m > 1:
  12.             L[0], L[-1] = m, m


  13. for tri in triangles(10):
  14.     for i in tri:
  15.         print(i, end='\t')
  16.     print('\r')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-21 16:18:56 | 显示全部楼层
nice
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-26 15:24:05 | 显示全部楼层
def tri(num):
    list_1=[[1],[1,1]]
    for i in range(2,num):
        last_max = max(list_1[i-1])
        list_new = [last_max]+[0]*(i-1)+[last_max]
        for j in range(1,i):
            list_new[j]=list_1[i-1][j-1]+list_1[i-1][j]
        list_1.append(list_new)
    for each in list_1:
        print(each)

tri(10)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-27 22:12:16 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2019-7-27 22:17 编辑
  1. def func(time):
  2.   l,n=[1],1
  3.   while n-1<time:
  4.     l=[max(l)if i==0 or i==n-1 else sum(l[i-1:i+1])for i in range(n)]
  5.     yield l
  6.     n+=1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 00:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表