python趣味编程100_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值