python趣味编程100 |
您所在的位置:网站首页 › python趣味编程100例-01 › python趣味编程100 |
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 001 # -*- coding: cp936 -*- 002 from math import acos,sqrt 003 #第一章----最简单的问题 004 #《c趣味编程》1-10题 005 #21:39 2007-1-5 006 def genfunc(n,k): 007 head = """ 008 def permute(seq0): 009 result = [] """ 010 boiler = """ 011 for counter%i in seq%i: 012 seq%i = seq%i[:] 013 seq%i.remove(counter%i)""" 014 for i in range(1,k+1): 015 space = ' '*i 016 head = head + boiler.replace('\n','\n'+space)%(i,i-1,i,i-1,i,i) 017 temp = ','.join([ 'counter%i'%(x) for x in range(1,k+1) ] ) 018 head = head + '\n' + space + " result.append(''.join([%s]))"%(temp) 019 return head + '\n return result\n' 020 def zz1(e,f): 021 ss=[] 022 for m in e: 023 s1=" "*62 024 k=f(m) 025 s2=s1[:k]+"*"+s1[k+1:] 026 k=62-k 027 s3=s2[:k]+"*"+s2[k+1:] 028 ss+=[s3] 029 return ss 030 031 def z1(): 032 #绘制余弦曲线 033 k=zz1(range(10,-11,-1),lambda m: int(acos(m/10.0)*10)) 034 for n in k: 035 print n 036 037 def z2(): 038 #绘制余弦曲线和一条直线 039 k=zz1(range(10,-11,-1),lambda m: int(acos(m/10.0)*10)) 040 def g(e,gg,f): 041 ss=[] 042 for m in e: 043 s1=gg[m] 044 k=f(m) 045 if 0 046 s2=s1[:k]+"#"+s1[k+1:] 047 else : 048 s2=s1 049 ss+=[s2] 050 return ss 051 k=g(range(20),k,lambda m: int(4.5*(m-1)+3.1)) 052 for n in k: 053 print n 054 055 def z3(): 056 #绘制圆 057 k=zz1(range(10,-11,-1),lambda m: int(30-2.5*int(sqrt(100-m*m)))) 058 for n in k: 059 print n 060 def z4(): 061 '''唱歌大奖比赛,去掉最高分和最低分得到平均分 062 ''' 063 def g(n): 064 x=max(n) 065 nn=min(n) 066 print "最高分",x 067 print "最低分",nn 068 print "平均分",(sum(n)-x-nn)/(len(n)-2) 069 return 070 m=[1,2,3,4,5,6,7] 071 g (m) 072 073 def z5(): 074 #555555的最大的三位数约数是多少 075 print max(filter(lambda x: 555555%x==0,range(100,999))) 076 def z6(): 077 #13的20次方的最后三位数是多少 078 def zz6(x,y,z): 079 xx=[x]*y 080 return reduce(lambda x,y:x*y%z, xx) 081 print zz6(13,20,1000) 082 083 def z7(): 084 #100 !的末尾有多少个0 085 def g(n): 086 k=0 087 for m in range(1,n+1): 088 if m%25==0 : 089 k+=2 090 elif m%5==0 : 091 k+=1 092 return k 093 print g(100) 094 def z8(): 095 #5个取3个的排列的总数以及方法 096 functext = genfunc(9,3) 097 print functext 098 exec(functext) 099 s=permute(list("12345")) 100 print s,len(s) 101 def z9(): 102 #计算杨辉三角形 103 g = lambda x,y: (y==1 or y==x+1) and 1 or g(x-1,y-1)+g(x-1,y) 104 for m in range(1,13): 105 print ' '*2*(13-m), 106 for n in range(1,m+2): 107 print str(g(m,n)).center(4), 108 print 109 def z10(): 110 #把10进制度变成2进制 111 def g(n,k): 112 d=n 113 s="" 114 while d!=0: 115 d,f=divmod(d,k) 116 s=str(f)+s 117 return s 118 print g(234,2) 119 if __name__ == '__main__': 120 s="" 121 for i in range(1,11): 122 s+='z'+str(i)+'()\n' 123 exec(s) 124 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |