浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
>>> def test(x=20):
    a
="1.4"+"9"*x
    
for i in xrange(3,len(a)):
        
print "round(%s)=%s,contains %s '9'" %(a[:i],round(float(a[:i])),(len(a[:i])-3))

        
>>> test()
round(
1.4)=1.0,contains 0 '9'
round(
1.49)=1.0,contains 1 '9'
round(
1.499)=1.0,contains 2 '9'
round(
1.4999)=1.0,contains 3 '9'
round(
1.49999)=1.0,contains 4 '9'
round(
1.499999)=1.0,contains 5 '9'
round(
1.4999999)=1.0,contains 6 '9'
round(
1.49999999)=1.0,contains 7 '9'
round(
1.499999999)=1.0,contains 8 '9'
round(
1.4999999999)=1.0,contains 9 '9'
round(
1.49999999999)=1.0,contains 10 '9'
round(
1.499999999999)=1.0,contains 11 '9'
round(
1.4999999999999)=1.0,contains 12 '9'
round(
1.49999999999999)=1.0,contains 13 '9'
round(
1.499999999999999)=1.0,contains 14 '9'
round(
1.4999999999999999)=2.0,contains 15 '9'
round(
1.49999999999999999)=2.0,contains 16 '9'
round(
1.499999999999999999)=2.0,contains 17 '9'
round(
1.4999999999999999999)=2.0,contains 18 '9'
round(
1.49999999999999999999)=2.0,contains 19 '9'
>>> 

 

在看到python的round时想到js有三个关于取整的方法Math.round,Math.ceil还有一个没记住,于是做了一些尝试

还是有点意思的吧?

 

这个是编程之美里的一个题,我用来熟悉一下python的syntx,不考虑什么算法什么的,just get things done

子数组的最大乘积

 

>>> def do(x):
    
return reduce(lambda x,y:x*y,x)
>>> def fun2(x):
    
"""x is a list"""
    temp
=[]
    
for i in range(1,len(x)+1):
        
for j in range(len(x)+1):
            
if(j<i):
                
print x[j:i]
                temp.append(do(x[j:i]))
    
return max(temp)

>>> fun2(x)
[0]
[0, 
1]
[
1]
[0, 
12]
[
12]
[
2]
[0, 
123]
[
123]
[
23]
[
3]
6

 

数组中的子数组之和的最大值

 

def do(x):
    
return sum(x);
#改一下这个do函数,继续复用fun2(x)即可
[-10231]
>>> fun2(_)
[
-10]
[
-102]
[
2]
[
-1023]
[
23]
[
3]
[
-10231]
[
231]
[
31]
[
1]
6

 

求数组中的递增序列,如1,-1,2,-3,4,-5,6,-7,最长的序列是1,2,4,6

 

def fun4(y):
    x
=y[:]
    temp
=[]
    
if len(x)<1:
        
return x
    
else:
        
for i in xrange(len(x)-1):
            
if x[i]<x[i+1]:
                temp.append(x[i])
            
else:
                x[i
+1]=x[i]
        
if x[len(x)-1]>x[len(x)-2]:
            temp.append(x[len(x)
-1])
    
return temp

[
-1-29610]
>>> fun4(_)
[
-1910]
>>> 

 

这题目走了弯路了,一直在想用reduce,结果进死胡同了,如果是考试肯定答不出了,下面是我错误的代码

 

def do2(x):
    
global temp
    temp
=[]
    
def nested(a,b):
        
#global temp
        print temp
        
if(a<b):
            
if temp==[]:
                
print "temp is []"
                temp.append(a)
            temp.append(b)
            
return b
        
else:
            temp.append(a)
            
return a
    
if len(x)>1:
        reduce(nested,x)
    
else:
        temp
=x[:]
    
return temp

def fun3(x):
    result
=[]
    
for i in xrange(len(x)):
        
print "current list=",x[i:]
        result.append(do2(x[i:]))
    
print "haha=",result
    y
=result.sort(lambda x,y:cmp(len(x),len(y)))
    
print "x=",result
    
return result.pop()

给一个N!e.g. N!=362800,N!的末尾有2个0.那N=20时,有x个0,求N!的二进制表示中最低位1的位置

 

>>> def fun5(x):
    temp
=str(reduce(lambda a,b:a*b,range(1,x+1)))
    
print temp
    
for i in xrange(len(temp)-1,-1,-1):
        
if temp[i]!='0':
            
return len(temp)-i-1

        
>>> fun5(20)
2432902008176640000
4

 

 

>>> def fun6(x):
    yy
=reduce(lambda a,b:a*b,xrange(x,0,-1))
    
print "yy=",yy
    zz
=tobin(yy)
    
print "zz=",zz
    
for i in xrange(len(zz)-1,-1,-1):
        
if zz[i]=="1":
            
return len(zz)-i-1

        
>>> 
>>> fun6(5)
yy
= 120
zz
= 1111000
3
>>> def tobin(x):
    L
=[]
    
while (x/2)!=or (x%2)!=1:
        L.append(str(x
%2))
        x
=x/2
    
else:
        L.append(str(x
%2))
    
return "".join(L[::-1])

>>> 

 

使用递归和非递归的方法计算阶乘

 

>>> def fun10(x):
    
if x>1:
        
return x*fun10(x-1)
    
else:
        
return 1

    
>>> fun10(3)
6
>>> 
>>> def fun9(x):
    
return reduce(lambda a,b:a*b,xrange(1,x+1));

>>> fun9(3)
6

 

 给一个十进制的整数N,写下从1开始到N的所有整数,然后娄一下其中1出现的次数,例如N=2,时写下1,2,这里只出现1次

写一个f(N),返回1到N之间出现"1"的次数,比如f(12)-5

满足条件下f(N)=N的最大的N是多少

 

Code

第二小题我没想出来,难道他是递减的函数吗...

posted on 2009-03-13 09:33  lexus  阅读(1007)  评论(0编辑  收藏  举报