鱼C论坛

 找回密码
 立即注册
楼主: ooxx7788

[技术交流] Python:每日一题 31(答题领鱼币)

[复制链接]
发表于 2017-6-16 18:38:04 | 显示全部楼层
  1. # 从前面往后面算
  2. def product_sum(n):
  3.     product = 1
  4.     the_sum = 0
  5.     k,setting = 1,1  # 控制第k个加法项

  6.     for i in range(1,n+1):
  7.         product *= i
  8.         # 乘法项内且没到最后一个数
  9.         if k < setting and i != n:
  10.             k += 1
  11.         # 到加法项或者循环最后一轮
  12.         else:
  13.             the_sum += product
  14.             # 为下一项乘积初始化 product 和 k,乘积因数个数 setting+1
  15.             product = 1
  16.             k = 1
  17.             setting += 1        
  18.     print(the_sum)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-19 14:45:10 | 显示全部楼层
def sum_num(n):
        L = [int(x) for x in range(1,n+1)]
        c = 1
        result = 0
        str1 = ''
        while len(L)>0:
                tmp = 1
                L1 = []
                for i in range(c):
                        if len(L)> 0:
                                L1.append(L[0])
                                tmp *= L.pop(0)
                str1 += '*'.join([str(n) for n in L1])
                str1 += '+'
                result += tmp
                c += 1
        print(str1[0:len(str1)-1],'=',result,sep='')
sum_num(16)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-19 15:21:45 From FishC Mobile | 显示全部楼层
求教~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-19 15:35:16 | 显示全部楼层

  1. a = input()
  2. result = 0
  3. num = 0
  4. total = 1

  5. for num in range(int(a)):
  6.     result = result + total - 1
  7.     if num > int(a) : break
  8.     total = num
  9.     for count in range(num):
  10.         total = total * num
  11.         num += 1
  12.         if num > int(a) : break
  13.         
  14. print(result)
  15.         
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-19 16:18:20 | 显示全部楼层
  1. a = input()
  2. result = 1
  3. num = 1
  4. total = 0

  5. for sha in range(1,int(a)+1):
  6.     result = result + total
  7.     num += 1
  8.     if num > int(a) : break
  9.     total = num
  10.     for count in range(sha):
  11.         num += 1
  12.         if num > int(a) : break
  13.         total = total * num
  14.         
  15. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-10 15:27:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-10 19:38:20 | 显示全部楼层
本帖最后由 shigure_takimi 于 2017-12-11 10:52 编辑
  1. def fun(n):
  2.     symbols = ''
  3.     for i in range(1,n):
  4.         symbols += '+'+'*'*i
  5.         if len(symbols) >= n:
  6.             break
  7.     if n <= 1:
  8.         return 'The parameter should larger than 1!'
  9.     else:
  10.         s = ''
  11.         for i in range(1,n):
  12.             s += str(i)+symbols[i-1]
  13.         s += str(n)
  14.         #print(s+'='+str(eval(s)))
  15.         return str(eval(s))

  16. print(fun(200000))   # 1.2 秒
  17. print(fun(2000000))  # 46 秒
  18. print(fun(3000000))  # 104 秒
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-11 10:03:03 | 显示全部楼层
回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-7 20:07:12 | 显示全部楼层
本帖最后由 kwty 于 2018-2-7 20:11 编辑

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

使用道具 举报

发表于 2018-2-9 14:44:09 | 显示全部楼层
本帖最后由 victor.xu 于 2018-2-10 09:35 编辑
  1. def func(n):
  2.     lis = list(range(1,n+1))
  3.     k = 1
  4.     lis1 = []
  5.     while len(lis) > k:
  6.         lis_t = lis[0:k]
  7.         del(lis[0:k])
  8.         lis1.append(lis_t)
  9.         k += 1
  10.         if len(lis) <= k and len(lis) != 0:
  11.             lis1.append(lis)
  12.     return lis1
  13. num = int(input('请输入自然数:\n'))
  14. result = func(num)
  15. print(result)
  16. #列表中各元素乘积形成的列表
  17. result_m = []
  18. #列表求和
  19. summ = 0
  20. for i in result:
  21. #列表中各元素乘积
  22.     result_i = 1
  23.     for j in i:
  24.         result_i *= j
  25.     result_m.append(result_i)
  26. for s in result_m:
  27.         summ += s
  28. print(summ)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-4 12:01:40 | 显示全部楼层

def nd(n):
        list1 = []
        list2 = []
        t = 1
        b = 1
        for i in range(1,n+1):
                if b != 0:
                        list1.append(i)
                        b -= 1
                else:
                        list2.append(list1)
                        list1 = []
                        t += 1
                        list1.append(i)
                        b = t - 1
                if i == n:
                        list2.append(list1)
        print(list2)
        return list2
       

def out(list2):
        list3 = []
        for each in list2:
                x = 1
                for j in each:
                        x *= j
                list3.append(x)
        print(list3)
        return sum(list3)

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

使用道具 举报

发表于 2018-5-16 23:05:32 | 显示全部楼层
本帖最后由 小庆子 于 2018-5-16 23:09 编辑
  1. def numb(n):
  2.     num = []               
  3.     for i in range(1,n+1):
  4.             num.append(i)          #将所有数字添加到一个列表中,并反相(方便后面的pop)
  5.     num.reverse()
  6.     times = 0
  7.     end = 0
  8.     while len(num) != 0:           #判断是第多少项
  9.                                    #如果列表中没有数字了就跳出项
  10.         times += 1
  11.         time = times
  12.         result = 1
  13.         while time != 0 :          #第多少项就有多少个数字相乘
  14.             if len(num) == 0:      #如果列表中没有数字了就跳出乘
  15.                 break
  16.             else:
  17.                 result *= num.pop()
  18.                 time -= 1
  19.         end += result
  20.     print(end)
  21. n = int(input('有多少个数?:'))
  22. numb(n)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-24 18:29:09 | 显示全部楼层
云里雾里
  1. k = int(input('请输入加法项个数:'))
  2. x = list(range(1,k+1))
  3. m = 1
  4. sumx = 0
  5. i = 0
  6. while i < k:
  7.     pro = 1
  8.     n = 1
  9.     while n <= m :
  10.         pro *= x[i]
  11.         n += 1
  12.         i += 1
  13.         if i == k:
  14.             break
  15.     m += 1
  16.     sumx += pro

  17. print(sumx)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-13 18:00:19 | 显示全部楼层
  1. print('求:1+2*3+4*5*6+7*8*9*10+11*12*13*14*15+……+(n-k)*...*(n-1)*n的和。')
  2. num = int(input('请输入一个正整数n:'))
  3. if num==1:
  4.     print('计算结果为:1')
  5.     exit()
  6. elif num==2:
  7.     print('计算结果为:1+2=3')
  8.     exit()
  9. else:
  10.     Nums = [str(x) for x in range(1,num+1)]
  11.     abd = []
  12.     b = 1
  13.     for i in range(num):
  14.         if i==0:
  15.             abd.append(Nums[i])
  16.         elif i+b<num:
  17.             abd.append('*'.join(Nums[b-1:i+b]))
  18.         else:
  19.             abd.append('*'.join(Nums[b-1:num]))
  20.             break
  21.         b+=i
  22.         b+=1
  23.     result ='+'.join(abd)
  24. print('输入的结果是:')
  25. print(result+'='+str(eval(result)))
复制代码

输入20的结果:
求:1+2*3+4*5*6+7*8*9*10+11*12*13*14*15+……+(n-k)*...*(n-1)*n的和。
请输入一个正整数n:20
输入的结果是:
1+2*3+4*5*6+7*8*9*10+11*12*13*14*15+16*17*18*19*20=2226007
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 17:32:34 | 显示全部楼层
jrro452 发表于 2018-6-13 18:00
输入20的结果:
求:1+2*3+4*5*6+7*8*9*10+11*12*13*14*15+……+(n-k)*...*(n-1)*n的和。
请输入一个正 ...

突然发现前面几段代码都是无用的····修改如下:
  1. import time
  2. print('求:1+2*3+4*5*6+7*8*9*10+11*12*13*14*15+……+(n-k)*...*(n-1)*n的和。')
  3. num = int(input('请输入一个正整数n:'))
  4. starttime = time.time()

  5. Nums = [str(x) for x in range(1,num+1)]
  6. abd = []
  7. b = 1
  8. for i in range(num):
  9.     if i==0:
  10.         abd.append(Nums[i])
  11.     elif i+b<num:
  12.         abd.append('*'.join(Nums[b-1:i+b]))
  13.     else:
  14.         abd.append('*'.join(Nums[b-1:num]))
  15.         break
  16.     b+=i
  17.     b+=1
  18. result ='+'.join(abd)
  19. print('输入的结果是:')
  20. print(eval(result))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-1 11:26:06 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-25 09:16:58 | 显示全部楼层
感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2018-12-10 10:36:43 | 显示全部楼层
  1. def nums(n):
  2.     x = 1
  3.     m = n+1
  4.     while n:
  5.         for i in range(x,m):
  6.             n -= i
  7.             x += 1
  8.             if n < 0 or n == 0:
  9.                 return i
  10.             continue

  11. # m 是nusm(n)的返回值
  12. def add(n,m):
  13.     if m == 1:
  14.         return 1
  15.     if m > 1:
  16.         sum = 1
  17.         x = 0
  18.         # m项前一共有几个数
  19.         for i in range(1,m):
  20.             x += i
  21.         for i in range(x+1,n+1):
  22.             sum *= i
  23.         n = x   
  24.         m -= 1
  25.         return sum+add(n,m)

  26. while 1:
  27.     n = int(input('正整数:'))
  28.     print(add(n,nums(n)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 10:52:14 | 显示全部楼层

  1. n = int(input("n:"))

  2. x = 1
  3. result = 0

  4. for i in range(1, 1000000):
  5.     y = 1
  6.     for j in range(i):
  7.         y = y * x
  8.         x += 1
  9.         if x > n:
  10.             break
  11.     result += y
  12.     if x > n:
  13.         print(result)
  14.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 07:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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