鱼C论坛

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

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

[复制链接]
发表于 2018-3-11 21:15:05 | 显示全部楼层
  1. def jiecheng(n):
  2.     m = ''
  3.     jie = 1
  4.     for i in range(1,n+1):
  5.         jie = jie*i
  6.         m = m+str(jie)
  7.     return m

  8. def shuchu(m):
  9.     b = 0
  10.     while b<=(len(m)/40):
  11.         a = '('+str(b)+')'
  12.         a = a.ljust(6)
  13.         print(a,end = '')
  14.         for i in m[b*40:(b+1)*40-1]:
  15.             print(i,end='')
  16.         print()
  17.         b += 1
  18.         
  19. n = int(input('输入整数:'))
  20. shuchu(jiecheng(n))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 21:24:04 | 显示全部楼层
count = 1
str1 = ''
count1 = 0
count2 = 1
dict1 = dict()
for i in range(1,51):
    count *= i
    str1 += str(count)
print('( %d)'%count2,end=' ')
for x in range(len(str1)):
    count1 += 1
    print(str1[x],end='')
    if count1 == 40:
        count2 += 1
        print('\n'+'( %d)'%count2,end=' ')
        count1 = 0

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 21:28:02 | 显示全部楼层
def fact(n):
    if 0 == n:
        return 1
    else:
        return n*fact(n-1)
str_tmp = ''
for i in range(1, 51):
    str_tmp += str(fact(i))

j = 1
count = 0


for i in range(len(str_tmp)):
    if count == 0:
        print('(%2d)  '%j, end='')
    print(str_tmp[i], end='')
    count += 1
   
    if count == 40:
        print('')
        j += 1
        count = 0
   

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 21:36:47 | 显示全部楼层
  1. def factorial(n):
  2.     if n == 0 or n == 1:
  3.         return 1
  4.     else:
  5.         return n * factorial(n-1)
  6. def main():
  7.    
  8.     num_str = ''
  9.     for i in range(1, 51):
  10.         num_str += str(factorial(i))
  11.     print("(1)", end='')
  12.     for i in range(len(num_str)):
  13.         if i != 0 and i % 40:
  14.             print(num_str[i],end='')
  15.         else:
  16.             if i != 0:
  17.                 print()
  18.                 print("(%d)" % (i//40+1), end='')
  19.                 print(num_str[i], end='')
  20.     print()
  21.    

  22.   

  23. if __name__ == '__main__':
  24.     main()
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 22:35:44 | 显示全部楼层
本帖最后由 纳兰小寒 于 2018-3-11 22:48 编辑
  1. def fun(n):
  2.     if n == 1:
  3.         return 1
  4.     else:
  5.         return fun(n-1) * n

  6. def list_sort():
  7.     num_str =''
  8.     for x in range(1,51):
  9.         num_str += str(fun(x))
  10.     index = 0
  11.     count = 1
  12.     while index < len(num_str):
  13.         print('({:>2}) {}'.format((count),num_str[index:index+40]))
  14.         count += 1
  15.         index += 40

  16. list_sort()
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 22:40:33 | 显示全部楼层
  1. import sys
  2. sys.setrecursionlimit(100000)#修改递归深度
  3. numbers = []
  4. def jiecheng(n):
  5.     if n == 1:
  6.         return 1
  7.     else:
  8.         return n * jiecheng(n-1)
  9. for i in range(1,51):
  10.     result = jiecheng(i)
  11.     numbers.append(str(result))
  12. str1 = ''.join(numbers)#获得字符串
  13. book = 40 #一个标记
  14. for i in range(50):
  15.     print('('+str(i+1)+')',end=' ')
  16.     print(str1[i*book:(i+1)*book])
  17.     if len(str1[i*book:(i+1)*book]) < 40:
  18.         sys.exit()
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 22:46:05 | 显示全部楼层
  1. def factorial(num):
  2.     "计算num的阶乘"
  3.     fac = 1
  4.     if num < 0:
  5.         return 0
  6.     elif num == 0:
  7.         return 1
  8.     else:
  9.         for i in range(1, num + 1):
  10.             fac = fac * i
  11.     return fac

  12. tem = ""
  13. for each in range(1,51):
  14.     tem = tem + str(factorial(num = each))

  15. t = 1
  16. while len(tem) >= 40:
  17.     if t < 10:
  18.         xu = "( "+ str(t) + ") "
  19.     else:
  20.         xu = "("+ str(t) + ") "
  21.     print( xu + tem[0:40])
  22.     tem = tem[40:]
  23.     t += 1
  24. print( "("+ str(t) + ") " + tem)

  25. ( 1) 1262412072050404032036288036288003991680
  26. ( 2) 0479001600622702080087178291200130767436
  27. ( 3) 8000209227898880003556874280960006402373
  28. ( 4) 7057280001216451004088320002432902008176
  29. ( 5) 6400005109094217170944000011240007277776
  30. ( 6) 0768000025852016738884976640000620448401
  31. ( 7) 7332394393600001551121004333098598400000
  32. ( 8) 0403291461126605635584000000108888694504
  33. ( 9) 1835216076800000030488834461171386050150
  34. (10) 4000000884176199373970195454361600000026
  35. (11) 5252859812191058636308480000000822283865
  36. (12) 4177922817725562880000000263130836933693
  37. (13) 5301672180121600000008683317618811886495
  38. (14) 5181944012800000002952327990396041408476
  39. (15) 1860964352000000010333147966386144929666
  40. (16) 6513375232000000003719933267899012174679
  41. (17) 9944815083520000000013763753091226345046
  42. (18) 3159795815809024000000005230226174666011
  43. (19) 1176000722410007429120000000020397882081
  44. (20) 1974433586402817399028973568000000008159
  45. (21) 1528324789773434561126959611589427200000
  46. (22) 0000334525266131638071081700620534407516
  47. (23) 6515200000000014050061177528798985431426
  48. (24) 0624451156993638400000000060415263063373
  49. (25) 8356373551320685139975072645120000000002
  50. (26) 6582715747884487680436258110146158903196
  51. (27) 3852800000000011962222086548019456196316
  52. (28) 1495657715064383733760000000000550262215
  53. (29) 9812088949850305428800254892961651752960
  54. (30) 0000000002586232415111681806429643551536
  55. (31) 1197996919763238912000000000012413915592
  56. (32) 5360726708622890473733750385214863546777
  57. (33) 6000000000060828186403426756087225216332
  58. (34) 1295376887552831379210240000000000304140
  59. (35) 9320171337804361260816606476884437764156
  60. (36) 8960512000000000000
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 23:20:23 | 显示全部楼层
  1. def q162():
  2.     line=i=ans=1
  3.     string=''
  4.     while i<=50:
  5.         ans*=i
  6.         string+=str(ans)
  7.         i+=1
  8.     while string:
  9.         print('(%2d)'%(line),string[:40])
  10.         string=string[40:]
  11.         line+=1
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 23:22:16 | 显示全部楼层
def fac(n):
    s = 1
    for i in range(1,n+1):
        s = i*s
    return s
#main
out = ""
for i in range(1,51):
    result = fac(i)
    out = out + str(result)
hang = int(len(out) / 40)
for i in range(1,hang+1):
    print('(%2d)'%i,out[40*(i-1):40*(i)])
print('(%2d)'%(hang+1),out[40*hang:])

一开始看感觉好简单,但是做了40分钟才勉强实现功能。。。。

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-11 23:49:55 | 显示全部楼层
def factorial(x):
    facsum = 1
    temp = x
    while temp > 0:
        facsum *= temp
        temp -= 1
    return str(facsum)

result = ''
for i in range(1,51):
    result += factorial(i)

lines = len(result) // 40 + 1

for each in range(lines):
    print('(%2d)' % (each + 1),' ',result[each * 40:(each + 1) * 40])

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 08:24:21 | 显示全部楼层
def fun(n):
    if n==1:
        return 1
    return n*fun(n-1)

str_num=''
hang_num=1
for i in range(1,51):
    str_num+=str(fun(i))
    while len(str_num)>=40: #判断长度是否超过40
        result=str_num[0:40]
        str_num=str_num[40:]
        print('(%d) %s' %(hang_num,result),end='\r\n')#打印输出
        hang_num+=1
print('(%d) %s' %(hang_num,str_num),end='\r\n')

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 09:35:20 | 显示全部楼层
本帖最后由 天圆突破 于 2018-3-12 11:03 编辑
  1. def sprint(string):
  2.     lst = list()
  3.     i = 0
  4.     n = len(string)
  5.     while i < n:
  6.         lst.append(string[i:i+40])
  7.         i += 40
  8.     else:
  9.         for i, each in enumerate(lst, 1):
  10.             print('%.2d  %s'%(i, each))

  11. def nn(n = 50):
  12.     string = '1'
  13.     for j in range(1, n+1):
  14.         p = 1
  15.         for i in range(1, j+1):
  16.             p *= i
  17.         string += str(p)
  18.     return string

  19. if __name__=='__main__':
  20.     sprint(nn(50))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 09:52:16 | 显示全部楼层
  1. '''
  2. 我们知道1的阶乘是1,2的阶乘是2,3的阶乘是6,4的阶乘是24,将前4个数字的阶乘排在一起是12624
  3. 现在要求将1~50的阶乘排在一起打印出来
  4. 要求,每40个数字1行,当本行超过40个时换行到下一行,另外在每行的开头打印行号。
  5. '''

  6. #生成所有阶乘结果连接起来数值字符串的函数
  7. def create_Numstr(n):
  8.     def jc(m):
  9.         if m==0:
  10.             return 1
  11.         else:
  12.             return m*jc(m-1)
  13.     stra=''
  14.     for i in range(1,n+1):
  15.         stra=stra+str(jc(i))
  16.     return stra

  17. #生成该字符串对应每40个字符一组元素的列表
  18. def print_40perrow(n):
  19.     #首先生成1~n阶乘结果连接起来的字符串
  20.     xstr=create_Numstr(n)
  21.     lenx=len(xstr)
  22.     i=0
  23.     while i<lenx:
  24.         xh=i//40+1
  25.         print("(%2d)"% (xh)+'  '+xstr[i:39+i])
  26.         i=i+40

  27. print_40perrow(50)
  28.    
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 10:22:25 | 显示全部楼层
  1. import math
  2. a = reduce(lambda x, y: x + y, [str(math.factorial(i)) for i in range(1, 51)])
  3. b = [a[i:i + 40] for i in xrange(0, len(a), 40)]
  4. c = ''.join(map(lambda x: '(%s) %s\n' % (x[0] + 1, x[1]), enumerate(b)))
  5. print c
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 10:40:57 | 显示全部楼层
def factorial(n):
    total = 1
    for i in range(1, n + 1):
        total *= i
    return str(total)


total_str = ''
for num in range(1, 51):
    total_str += factorial(num)
len_str = len(total_str)
row_num = len_str // 40 + 1

for each_row in range(1, row_num + 1):
    str_final = total_str[40 * each_row - 40 :40 * each_row]
    print('(' + ('%2s' % str(each_row)) + ')' + str_final)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 11:24:45 | 显示全部楼层
#定义一个方法求阶乘
def fun(num):
    factorial = 1
    for i in range(1, num + 1):
        factorial = factorial * i
    return factorial


str1 = ''
for i in range(1,51):
    str1 = str1 + str(fun(i))
row = len(str1)//40
if(len(str1)%40!=0):
    row +=1
for i in range(row):
    print('(%d) '%(i+1),end = '\t')
    print(str1[i*40:(i+1)*40])


(1)         1262412072050404032036288036288003991680
(2)         0479001600622702080087178291200130767436
(3)         8000209227898880003556874280960006402373
(4)         7057280001216451004088320002432902008176
(5)         6400005109094217170944000011240007277776
(6)         0768000025852016738884976640000620448401
(7)         7332394393600001551121004333098598400000
(8)         0403291461126605635584000000108888694504
(9)         1835216076800000030488834461171386050150
(10)         4000000884176199373970195454361600000026
(11)         5252859812191058636308480000000822283865
(12)         4177922817725562880000000263130836933693
(13)         5301672180121600000008683317618811886495
(14)         5181944012800000002952327990396041408476
(15)         1860964352000000010333147966386144929666
(16)         6513375232000000003719933267899012174679
(17)         9944815083520000000013763753091226345046
(18)         3159795815809024000000005230226174666011
(19)         1176000722410007429120000000020397882081
(20)         1974433586402817399028973568000000008159
(21)         1528324789773434561126959611589427200000
(22)         0000334525266131638071081700620534407516
(23)         6515200000000014050061177528798985431426
(24)         0624451156993638400000000060415263063373
(25)         8356373551320685139975072645120000000002
(26)         6582715747884487680436258110146158903196
(27)         3852800000000011962222086548019456196316
(28)         1495657715064383733760000000000550262215
(29)         9812088949850305428800254892961651752960
(30)         0000000002586232415111681806429643551536
(31)         1197996919763238912000000000012413915592
(32)         5360726708622890473733750385214863546777
(33)         6000000000060828186403426756087225216332
(34)         1295376887552831379210240000000000304140
(35)         9320171337804361260816606476884437764156
(36)         8960512000000000000

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 12:37:59 | 显示全部楼层
def jiesheng(n):
    if n<1:
        print('输入有误')
    else:
        x=1
        y=1
        string=''
        while n>y:
            x=x*y
            y=y+1
            string=string+str(x)
    x=x*n
    string=string+str(x)
    return string
n=int(input('请输入一个整数:'))
hj=jiesheng(n)
a=0
b=40
c=1
pri=''
while a<len(hj):
    pri=hj[a:b]
    print('('+str(c)+')'+pri)
    a+=40
    b+=40
    c+=1

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 13:45:28 | 显示全部楼层
本帖最后由 Chase_Kas 于 2018-3-12 17:21 编辑
  1. def factorial(a):
  2.     product = 1
  3.     if a == 0:
  4.         return 1
  5.     else:
  6.         for i in range(1, a + 1):
  7.             product *= i
  8.         return product

  9. def fun(i):
  10.     str1 = ''
  11.     for i in range(1, i+1):
  12.         str1 += str(factorial(i))
  13.     if not len(str1) % 40:
  14.         num_line = len(str1)//40 + 1
  15.     else:
  16.         num_line = len(str1)//40 + 2
  17.     for j in range(1, num_line):
  18.         line = '(' + str(j).rjust(len(str(num_line))) + ')'
  19.         print(line, '', str1[((j-1) * 40):(j * 40)])

  20. fun(50)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 16:01:23 | 显示全部楼层
  1. from functools import reduce


  2. def fact(n):
  3.     if n == 0:
  4.         return 1
  5.     else:
  6.         return reduce(lambda x, y: x*y, range(1, n+1))      # 求阶乘


  7. str1 = ''
  8. for i in range(1, 51):
  9.     str1 += str(fact(i))

  10. for k in range(0, len(str1), 40):
  11.     print("(%2d)" % (k // 40 + 1), end=' ')
  12.     print(str1[k:k+40])
复制代码


结果:
( 1) 1262412072050404032036288036288003991680
( 2) 0479001600622702080087178291200130767436
( 3) 8000209227898880003556874280960006402373
( 4) 7057280001216451004088320002432902008176
( 5) 6400005109094217170944000011240007277776
( 6) 0768000025852016738884976640000620448401
( 7) 7332394393600001551121004333098598400000
( 8) 0403291461126605635584000000108888694504
( 9) 1835216076800000030488834461171386050150
(10) 4000000884176199373970195454361600000026
(11) 5252859812191058636308480000000822283865
(12) 4177922817725562880000000263130836933693
(13) 5301672180121600000008683317618811886495
(14) 5181944012800000002952327990396041408476
(15) 1860964352000000010333147966386144929666
(16) 6513375232000000003719933267899012174679
(17) 9944815083520000000013763753091226345046
(18) 3159795815809024000000005230226174666011
(19) 1176000722410007429120000000020397882081
(20) 1974433586402817399028973568000000008159
(21) 1528324789773434561126959611589427200000
(22) 0000334525266131638071081700620534407516
(23) 6515200000000014050061177528798985431426
(24) 0624451156993638400000000060415263063373
(25) 8356373551320685139975072645120000000002
(26) 6582715747884487680436258110146158903196
(27) 3852800000000011962222086548019456196316
(28) 1495657715064383733760000000000550262215
(29) 9812088949850305428800254892961651752960
(30) 0000000002586232415111681806429643551536
(31) 1197996919763238912000000000012413915592
(32) 5360726708622890473733750385214863546777
(33) 6000000000060828186403426756087225216332
(34) 1295376887552831379210240000000000304140
(35) 9320171337804361260816606476884437764156
(36) 8960512000000000000

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 16:17:20 | 显示全部楼层
result=""
for  i   in  range(1,51):
    total=1
    for  j   in  range(1,i+1):
        total*=j
    result=result+str(total)
    if len(result)==40:
        print(result)
    elif  len(result)>40:
        print(result[:40])
        result=result[41:]
    else:
        if i==50:
         print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 15:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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