鱼C论坛

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

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

[复制链接]
发表于 2018-3-12 16:53:59 | 显示全部楼层
  1. def fac(n):
  2.     if n == 1: return 1
  3.     else: return fac(n-1)*n
  4.    
  5. def genS(n):
  6.     return ''.join([str(fac(x)) for x in range(1,n+1)])
  7.    
  8. def p(n):
  9.     s = genS(n)
  10.     n = 1
  11.     L = []
  12.     while s:
  13.         L.append([str(n),s[:40]])
  14.         s = s[40:]
  15.         n += 1
  16.     return L

  17. for [x,y] in p(50):
  18.     print('({:>2}) {}'.format(x,y))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 17:05:59 | 显示全部楼层
def fact(x):  
    result = 1  
    for i in range(2,x + 1):  
        result *= i  
    return result


list1=str(fact(1))
for i in range(2,51):
    list1=list1+str(fact(i))

count=0
y=1


for j in range(y):
    print('('+str(y)+')',end=' ')
    for i in list1:
        print(i,end='')
        count += 1
        if(count%40==0):
            print(end='\n')
            y+=1
            print('('+str(y)+')',end=' ')  

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 18:09:44 | 显示全部楼层
#计算阶乘函数
def factorial(num):
    x = 1
    for i in range(num+1):
        if i > 0:
            x *= i
    return x

if __name__ == '__main__':
    tal = inx = ''
    line = 0
    for j in range(51):
        if j>0:
            inx += str(factorial(j))
    for i in range(len(inx)):
        if not(i%40):
            line += 1
            if len(str(line)) == 1:
                tal = ' '
            elif len(str(line)) == 2:
                tal = ''
            print('(%s%d)'%(tal, line),inx[i:i+40])

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 18:50:01 | 显示全部楼层
#创建初始值
a = 1
ls = [1]
#生成1-50的阶乘,并将结果追加到列表中
for i in range(2,50):
    a= a*i
    b= str(a)
    ls.append(b)
#将列表中的所有阶乘拼接到一起
factorial = '1'
for i in range(1,49):
    factorial = factorial + ls[i]
#以40为分界点打印结果
L=len(factorial)
B=int(L/40)
for i in range(1,B):
    #为个位数字添加空格
    if i<10:
        e = str(i)
        a = ' '+ e
    else:
        a = str(i)
    b = '('+ a + ')'
    c = 39*i
    d = 39*(i-1)
    #print(b)
    print(b+ '  ' + factorial[d:c])
#追加余数列
C=B*40
D=str(B)
E = '('+ D + ')'
print(E + '  ' + factorial[C:])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 19:03:57 | 显示全部楼层
#初学者,再循环下列表d_d
#创建初始值
a = 1
ls = [1]
#生成1-50的阶乘,并将结果追加到列表中
for i in range(2,50):
    a= a*i
    b= str(a)
    ls.append(b)
#将列表中的所有阶乘拼接到一起
factorial = '1'
for i in ls:
    a = str(i)
    factorial = a + factorial
    #以40为分界点打印结果
L=len(factorial)
B=int(L/40)
for i in range(1,B):
    #为个位数字添加空格
    if i<10:
        e = str(i)
        a = ' '+ e
    else:
        a = str(i)
    b = '('+ a + ')'
    c = 39*i
    d = 39*(i-1)
    #print(b)
    print(b+ '  ' + factorial[d:c])
C=B*40
D=str(B)
E = '('+ D + ')'
#追加余数列
print(E + '  ' + factorial[C:])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 19:15:27 | 显示全部楼层
  1. #coding=utf-8
  2. def factorial(n):
  3.     sum = 1
  4.     for i in range(1,n+1):
  5.         sum *= i
  6.     return sum
  7. str_num = ""
  8. #将所有的阶乘转换成字符并连接起来
  9. for item in range(1,51):
  10.     num = factorial(item)
  11.     str_num += str(num)
  12. n = 0#限制每行的个数
  13. flag = 1#用于输出行数
  14. for item in str_num:
  15.     if n%40 == 0:
  16.         print ("(%d) "%(flag),end="")
  17.     print (item,end="")
  18.     n += 1
  19.     if n >= 40:
  20.         n = 0
  21.         flag += 1
  22.         print("")
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 19:49:12 | 显示全部楼层
def fun(n):
    num=1
    for each in range(1,n+1):
        num=each*num
    return num
n=1
str_p=''
while n<=50:
    num_l=fun(n)
    str_p+=str(num_l)
    n+=1
r=len(str_p)//40+1
for line in range(1,r+1):
    print('('+str(line).rjust(2)+') '+str_p[:40])
    str_p=str_p[40:]

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 20:34:54 | 显示全部楼层


  1. def calculate():
  2.     i=0
  3.     begi=1
  4.     se=1
  5.     al=1
  6.     temp=''
  7.     while al<51:
  8.         temp=temp+str(se)
  9.         se=se*(al+1)
  10.         al+=1
  11.     a=0
  12.     b=40
  13.     length=len(temp)
  14.     while length>=40:
  15.         print('(',begi,')',end='')
  16.         begi+=1
  17.         print(temp[a:a+40])
  18.         a+=40
  19.         length-=40
  20.     print('(', begi, ')',end='')
  21.     print(temp[a:])




  22. if __name__=='__main__':
  23.     calculate()

复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 21:10:53 | 显示全部楼层
def factorial(n):
        if n == 1 or n==0:
                return 1
        else:
                return (n)*factorial(n-1)
if __name__ == "__main__":
        n = input("输入阶乘n:")
        str1 = ''
        i,j,k = 1,1,0
        while(i <= n):
                str2 = str(factorial(i))
                str1 = str1+str2
                i += 1
        while(j <= len(str1)):
                if j % 40 == 0:
                        print("(%d) %s" % (k,str1[(j-40):j]))
                        k += 1
                if j == len(str1) :
                        print("(%d) %s" % (k,str1[40 * k : ]))
                j += 1

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 21:52:23 | 显示全部楼层
def f(x):
    i=1
    p=1
    while i<=x:
        p=p*i
        i+=1
    return p
m=int(input('请输入一个正整数,拼接1的阶乘到这个数的阶乘'))
l=''
for n in range(1,m+1):
    l=l+str(f(n))
for t in range(0,len(l)//40+1):
    q=t+1
    print(('(%d)'+'  '+l[40*t:40*q])%q)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-12 23:07:28 | 显示全部楼层
def Factorial(n):
    if n == 0:
        return 1
    else:
        k=1
        for i in range(1,n+1):
            k = k*i
        return k
string = ''
for each in range(1,51):
    string = string+str(Factorial(each))


linenumber = len(string)//40
for line in range(1,linenumber+1):
    print('(%2d)'%line+' '+string[(line-1)*40:line*40])
print('(%2d)'%line+' '+string[line*40:])

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-13 08:52:43 | 显示全部楼层
  1. def factorial(i):
  2.     result = 1
  3.     for x in range(1,i+1):
  4.         result = result * x
  5.     return result
  6.    
  7.    
  8. def join_fact(i):
  9.     result = ''
  10.     temp = []
  11.     for x in range(1,i+1):   
  12.         temp.append(str(factorial(x)))
  13.         result = ''.join(temp)
  14.     return result
  15.    
  16.    
  17. def print_result(i):
  18.     result = join_fact(i)
  19.     count = len(result) // 40
  20.     row = 1
  21.     for x in range(count):
  22.         print("(%2d)"%row,end=' ')
  23.         print(result[x*40:(x+1)*40])
  24.         row += 1
  25.     print("(%2d)"%row,end=' ')
  26.     print(result[count*40:])

  27. if __name__ == '__main__':
  28.     print_result(50)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-13 09:24:19 | 显示全部楼层
import math

def fac_plus(n):
        fac_plus_out = ''
        for i in range(1, n+1):
                each = math.factorial(i)    #阶乘函数
                each_s = str(each)
                fac_plus_out += each_s
        #print(fac_plus_out)
        return fac_plus_out

#fac_plus(7)
def cut_each(s):
        start = 0
        end = 40
        t = 1
        while True:

                sp = s[start:end]
                if len(sp):
                        print('(',t,')',sp)
                        t +=1
                        start += 40
                        end += 40
                else:
                        break

cut_each(fac_plus(50))

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-13 11:37:09 | 显示全部楼层
  1. def fun(n):
  2.         if n ==1:
  3.                 return 1
  4.         else:
  5.                 return (n*fun(n-1))
  6. with open (r'C:\Users\lcfyujianwen\Desktop\jiecheng.txt', 'w') as f:
  7.         pass
  8.                
  9. for i in range(1,51):
  10.         with open (r'C:\Users\lcfyujianwen\Desktop\jiecheng.txt', 'a') as f:
  11.                 f.write(str(fun(i)))

  12. with open (r'C:\Users\lcfyujianwen\Desktop\jiecheng.txt', 'r+') as k, open (r'C:\Users\lcfyujianwen\Desktop\jie.txt', 'a') as g:
  13.         num = len(k.read())
  14.         k.seek(0)
  15.         s = k.read()
  16.         n = 1
  17.         g.write('( 1)  ')
  18.         m =1
  19.         for i in range(num):
  20.                 g.write(s[i])
  21.                 if n == 40:
  22.                         m+=1
  23.                         g.write('\n')
  24.                         g.write('(%2d)  '%m)
  25.                         n = 0
  26.                        
  27.                 n +=1
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-13 13:33:03 | 显示全部楼层
  1. #定义一个计算阶乘的函数
  2. def  factorial(n):
  3.     if n == 1:
  4.         return 1
  5.     return n * factorial(n-1)
  6. L = [] #将阶乘结果放进这个列表中
  7. V = '' #将列表中的阶乘结果利用字符串的性质加起来
  8. #通过循环实现上述目标
  9. for i in range(1,51):
  10.     L.append(str(factorial(i)))
  11. for i in L:
  12.     V += i
  13. #输出结果
  14. if int(len(V)) > (int(int(len(V))/40) * 40):
  15.     num_P = int(int(len(V))/40+1) #行,python的计算式省略了小数位
  16. else:
  17.     num_P = int(int(len(V))/40+1)
  18. num_C = 0 #记录四十个
  19. for i in range(1,num_P+1):#利用切片,实现每四十个为一组输出
  20.     print('(',i,')','  ',V[num_C:num_C+40])
  21.     num_C += 40
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-13 14:25:36 | 显示全部楼层
  1. import math
  2. def fun():
  3.     a = "".join([str(math.factorial(i)) for i in range(1,51)])
  4.     for i in range(len(a)//40+1):
  5.         print("(%-3d)  %s" % (i+1,a[i*40:(i+1)*40]))
  6. if __name__=="__main__":
  7.     fun()
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-13 22:29:30 | 显示全部楼层
  1. def fun(n):
  2.     #定义阶乘函数
  3.     result = 1
  4.     for i in range(1, n+1):
  5.         result *= i

  6.     return result

  7. def main():
  8.     gg = 50

  9.     str_gg = ''

  10.     #将1-50的阶乘分别转化为字符串类型,并合并到一个字符串里
  11.     for i in range(1,gg+1):
  12.         str_gg += str(fun(i))

  13.     #计算按要求排列得到的行数
  14.     str_length = len(str_gg)
  15.     str_row = str_length//40 + 1

  16.     #根据题目要求进行排列
  17.     for i in range(1, str_row+1):
  18.         if i < 10:
  19.             print('( ' , i, ')' ,' ', end=' ')
  20.             print(str_gg[((i-1)*40):(i*40)])
  21.         else:
  22.             print('(' , i, ')' ,' ', end=' ')
  23.             print(str_gg[((i-1)*40):(i*40)])
  24.         

  25. if __name__ == "__main__":
  26.     main()

  27.         
  28.    
复制代码


结果:
(  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-13 23:16:00 | 显示全部楼层
  1. import re
  2. def jiecheng(a):
  3.     if a==1:
  4.         return 1
  5.     else:
  6.         return jiecheng(a-1)*a

  7. strs=""

  8. for i in range(1,51):
  9.     strs+=str(jiecheng(i))

  10. str_list=re.findall(r'.{40}',strs)

  11. num=1
  12. for item in str_list:
  13.     print("(%d)\t%s"%(num,item))
  14.     num+=1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-13 23:51:47 | 显示全部楼层
cj=1
zh=0
for i in range(1,51):
    cj*=i
    zh=int(str(zh)+str(cj))
zh=str(zh)
for i in range(1,10):
    print('( '+str(i)+') ',zh[0:40])
    zh=zh[40:]
for i in range(10,36):
    print('('+str(i)+') ',zh[0:40])
    zh=zh[40:]
print('(36) ',zh)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-14 09:19:48 | 显示全部楼层
不会加行标
  1. from __future__ import print_function
  2. import math

  3. facl = 1
  4. num = []
  5. count=0
  6. for i in range(1,51):
  7.     fac = math.factorial(i)
  8.     num.append(fac)
  9. num1 = list(''.join(map(str,num)))
  10. for j in num1:
  11.     print(j,end='')
  12.     count += 1
  13.     if(count%40==0):
  14.         print(end='\n')
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 12:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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