鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

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

[复制链接]
发表于 2018-3-14 19:32:58 | 显示全部楼层
allstr = ""
j = 1
for i in range(1, 51):
    j = j * i
    allstr = allstr + str(j)
for j in range(0, len(allstr), 40):
    print("("+str(j // 40 + 1) + ")", allstr[j:j+40])

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-14 20:33:15 | 显示全部楼层
def jc(n):     #封装一个阶乘函数
    rst = 1
    for i in range(1,n+1):
        rst *= i
    return str(rst)

s = ''
for i in range(1,51):    #拼接1~50的结果结果
    s = s + jc(i)

for i in range (0,(len(s)//40)+1):
    print('({}) {} '.format(i+1,   s[(i*40):(39+i*40)]))

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2018-3-14 20:49:59 | 显示全部楼层
评分截至标记。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 20:59:03 | 显示全部楼层

老铁厉害,但是程序可读性不是很高咯(分析ing。。。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 21:02:35 | 显示全部楼层
溯影 发表于 2018-3-14 20:59
老铁厉害,但是程序可读性不是很高咯(分析ing。。。)

所以我三种都写出来了。考虑可读性的话就看第一种。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 21:15:31 | 显示全部楼层

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

使用道具 举报

发表于 2018-3-14 22:56:42 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-3-14 21:02
所以我三种都写出来了。考虑可读性的话就看第一种。

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

使用道具 举报

发表于 2018-3-15 03:10:07 | 显示全部楼层
  1. def fac(number):
  2.     if  (number==1 or number==0):
  3.         return 1
  4.     else:
  5.         return fac(number-1)*number

  6. if __name__=='__main__':
  7.     res=''
  8.     for i in range(1,51):
  9.         res = res + str(fac(i))

  10.     cnt = 0
  11.     line_num = 1
  12.     print('(%d)'%line_num,end='')
  13.     for a in res:
  14.         cnt = cnt + 1
  15.         print(a,end='')
  16.         if cnt%40 == 0:
  17.             print('')
  18.             line_num+=1
  19.             print('(%d)'%line_num,end='')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 15:51:06 | 显示全部楼层
  1. from functools import reduce
  2. import time


  3. def add_num(n):
  4.     num = reduce(lambda x, y: x * y, range(1, n + 1))
  5.     return str(num)


  6. def to_str(n):
  7.     l = reduce(lambda x, y: x + y, map(add_num, range(1, n + 1)))
  8.     return l


  9. def get_result(n, k):
  10.     s = to_str(n)
  11.     m = int(len(s) / k)
  12.     dic = dict()
  13.     for i in range(1, m + 1):
  14.         dic[i] = s[k * (i - 1):k * i]
  15.     if len(s) % k:
  16.         dic[i + 1] = s[k * i:]
  17.     for each in dic:
  18.         print('({}){} '.format(each, dic[each]))


  19. if __name__ == '__main__':
  20.     t = time.time()
  21.     get_result(50, 40)
  22.     print(time.time() - t)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 16:45:10 | 显示全部楼层
第一次发贴。。。。。。
  1. s=''
  2. v=1
  3. n=0
  4. for i in range(1,51):
  5.   v*=i
  6.   s+=str(v)
  7.   while len(s)>40:
  8.     n+=1
  9.     print("("+str(n)+") "+s[:40])
  10.     s=s[40:]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 09:26:25 | 显示全部楼层
  1. def factorial(n):
  2.         if n == 1 or n==0:
  3.                 return 1
  4.         else:
  5.                 return (n)*factorial(n-1)
  6. if __name__ == "__main__":
  7.         n = input("输入阶乘n:")
  8.         str1 = ''
  9.         i,j,k = 1,1,0
  10.         while(i <= n):
  11.                 str2 = str(factorial(i))
  12.                 str1 = str1+str2
  13.                 i += 1
  14.         while(j <= len(str1)):
  15.                 if j % 40 == 0:
  16.                         print("(%d) %s" % (k,str1[(j-40):j]))
  17.                         k += 1
  18.                 if j == len(str1) :
  19.                         print("(%d) %s" % (k,str1[40 * k : ]))
  20.                 j += 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 23:46:49 | 显示全部楼层
def f(n):
    result = 1
    for i in range(1,n+1):
        result *= i
    return result

list1 = []
for n in range(1,51):
    list1.append(str(f(n)))

str1 = ''.join(list1)
for a in range(len(str1) // 40 + 1):
    print(str1[0+a*40:40+a*40])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-14 22:13:22 | 显示全部楼层
  1. import math
  2. s=''
  3. count=1
  4. num=0
  5. for i in range(1,51):
  6.         s+=str(math.factorial(i))
  7. print('(%2d) ' % count,end='')
  8. i=0
  9. while i < len(s):
  10.         num+=1
  11.         if num!=41:
  12.                 print(s[i],end='')
  13.                 i+=1               
  14.         else:
  15.                 count+=1               
  16.                 print()
  17.                 num=0
  18.                 print('(%2d) ' % count,end='')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-20 20:36:19 | 显示全部楼层
  1. str1 = ''
  2. for i in range(1,51):
  3.     t = 1
  4.     while i:
  5.         t *= i
  6.         i -= 1
  7.     str1 += str(t)


  8. list2 = list(str1)
  9. count = 0
  10. row = 1

  11. print('(',row,')',end=' ')
  12. for each in list2:
  13.     print(each,end='')
  14.     count += 1
  15.     if count % 40 == 0:
  16.         row += 1
  17.         print(end='\n')
  18.         print('(',row,')',end=' ')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-12 14:30:54 | 显示全部楼层
  1. def jieCheng(num):
  2.         result,num1=1,num
  3.         while num1!=1:
  4.                 result,num1=result*num1,num1-1
  5.         return result
  6. i,j=1,1
  7. str1=str(jieCheng(i))
  8. while i<50:
  9.     while len(str1)<40:
  10.         str1,i=str1+str(jieCheng(i+1)),i+1
  11.     print('(%2d)' %(j),'  ',str1[:40])
  12.     str1,j=str1[40:],j+1
  13. while len(str1)>40:
  14.         print('(%2d)' %(j),'  ',str1[:40])
  15.         str1,j=str1[40:],j+1
  16. print('(%2d)' %(j),'  ',str1[:40])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-12 15:57:56 | 显示全部楼层
本帖最后由 喜欢吃菠菜 于 2018-10-12 16:22 编辑

fac=lambda n:1 if n==1 else n*fac(n-1)
s=''.join(('{}'.format(fac(n)) for n in range(1,51)))
line=1
while s:
        s,tmp=s[41:],s[:41]
        print('(%2d)  %s ' % (line,tmp))
        line+=1
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 10:41:00 | 显示全部楼层
  1. def fun162(x):
  2.    
  3.     def factorial(y):
  4.         result = 1
  5.         for i in range(1,y+1):
  6.             result *= i
  7.         return result

  8.     str_a = ''.join([str(factorial(i)) for i in range(1,x+1)])
  9.     list_a = []
  10.     while len(str_a)>=40:
  11.         list_a.append(str_a[:40])
  12.         str_a = str_a[40:]
  13.     list_a.append(str_a)
  14.     line = 1
  15.     for i in list_a:
  16.         if line < 10:
  17.             print('( %s)  %s'%(line,i))
  18.         else:
  19.             print('(%s)  %s'%(line,i))
  20.         line += 1

  21. if __name__ == '__main__':
  22.     fun162(50)
复制代码
  1. ( 1)  1262412072050404032036288036288003991680
  2. ( 2)  0479001600622702080087178291200130767436
  3. ( 3)  8000209227898880003556874280960006402373
  4. ( 4)  7057280001216451004088320002432902008176
  5. ( 5)  6400005109094217170944000011240007277776
  6. ( 6)  0768000025852016738884976640000620448401
  7. ( 7)  7332394393600001551121004333098598400000
  8. ( 8)  0403291461126605635584000000108888694504
  9. ( 9)  1835216076800000030488834461171386050150
  10. (10)  4000000884176199373970195454361600000026
  11. (11)  5252859812191058636308480000000822283865
  12. (12)  4177922817725562880000000263130836933693
  13. (13)  5301672180121600000008683317618811886495
  14. (14)  5181944012800000002952327990396041408476
  15. (15)  1860964352000000010333147966386144929666
  16. (16)  6513375232000000003719933267899012174679
  17. (17)  9944815083520000000013763753091226345046
  18. (18)  3159795815809024000000005230226174666011
  19. (19)  1176000722410007429120000000020397882081
  20. (20)  1974433586402817399028973568000000008159
  21. (21)  1528324789773434561126959611589427200000
  22. (22)  0000334525266131638071081700620534407516
  23. (23)  6515200000000014050061177528798985431426
  24. (24)  0624451156993638400000000060415263063373
  25. (25)  8356373551320685139975072645120000000002
  26. (26)  6582715747884487680436258110146158903196
  27. (27)  3852800000000011962222086548019456196316
  28. (28)  1495657715064383733760000000000550262215
  29. (29)  9812088949850305428800254892961651752960
  30. (30)  0000000002586232415111681806429643551536
  31. (31)  1197996919763238912000000000012413915592
  32. (32)  5360726708622890473733750385214863546777
  33. (33)  6000000000060828186403426756087225216332
  34. (34)  1295376887552831379210240000000000304140
  35. (35)  9320171337804361260816606476884437764156
  36. (36)  8960512000000000000
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-20 16:39:25 | 显示全部楼层
  1. def getFactorial(num) :
  2.         temp = 1
  3.         for i in range(1, num + 1) :
  4.                 temp *= i
  5.         return temp

  6. def spellNum() :
  7.         list1 = [str(getFactorial(i)) for i in range(1, 51)]
  8.         list2 = list(''.join(list1))
  9.         lineNum, flag = 1, 0
  10.         print('[' + str(lineNum) + '] ', end='')
  11.         lineNum += 1
  12.         for i in list2 :
  13.                 if flag != 39 :
  14.                         print(i, end='')
  15.                         flag += 1
  16.                 else :
  17.                         flag = 0
  18.                         print(i)
  19.                         print('[' + str(lineNum) + '] ', end='')
  20.                         lineNum += 1

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

使用道具 举报

发表于 2019-1-20 17:36:36 | 显示全部楼层
def f(x):
    y=1
    for i in range(1 , x+1):
       y=y*i
    return y
      
st=""
n=0
y=""
for i in range(1,51):
    st=st+str(f(i))
for i in st:
    y=y+i
    n+=1
    if  n % 40==0:
        print("(",str(int(n/40))+")\t"+y)
        y=""
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 19:19:56 | 显示全部楼层
  1. def fun110(n):
  2.     s=[]
  3.     for i in range(1,n+1):
  4.         a=1
  5.         for j in range(1,i+1):
  6.             a*=j
  7.         s.append(a)
  8.             
  9.     return s

  10. def sss(n):
  11.     r=''
  12.     s=fun110(n)
  13.     for z in s:
  14.         r=r+str(z)
  15.     if len(r)%40==0:
  16.         for k in range(1,len(r)//40+1):
  17.             print(str(k)+' '+r[(k-1)*40:40*k])
  18.     else:
  19.         for i in range(1,len(r)//40+2):
  20.             print('('+str(i)+')'+' '+r[(i-1)*40:i*40])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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