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、付费专栏及课程。

余额充值