python小代码(三)

1.
#一球从100米高度自由落下,每次落地后反跳回原高度的一半;
#再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
s=100
x=1
i=100
while x!=10:
    i=i*0.5
    s=s+i*2
    x+=1
print "the total of distance is %3.3f\n"%(s)
print "the tenth distance is %1.3f"%(i*0.5)
   
2.
#有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...
#求出这个数列的前20项之和
s,a,b=0.0,2.0,1.0    #赋值为带小数部分是为了识别float型
for i in range(20):
    s=s+a/b
    print a,'/',b
    temp=b
    b=a
    a=a+temp
print "Sum is %9.6f"%(s)

3.
#求1+2!+3!+...+20!的和
s,m,temp=0,0,1
for i in range(1,21):
    m=i*temp
    temp=m
    s=s+m
print s
解析:要注意在运行时temp保存上一次循环的结果。

4.
#利用递归方法求5!
def func(n):
    if n==0|n==1:
        res=1
    elif n>1:
        res=func(n-1)*n
    return res
print func(5)

5.
#给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
#(这里是一种简单的算法,师专数002班赵鑫提供)
x=input("enter: ")
if x==0:
    print "must be positive number"
elif x>99999:
    print "can't enter a number that greater than 99999"
else:
    a=x/10000
    b=x%10000/1000
    c=x%1000/100
    d=x%100/10
    e=x%10
    if a!=0:
        print "it's 5\n%d%d%d%d%d"%(e,d,c,b,a)
    elif b!=0:
        print "it's 4\n%d%d%d%d"%(e,d,c,b)
    elif c!=0:
        print "it's 3\n%d%d%d"%(e,d,c)
    elif d!=0:
        print "it's 2\n%d%d"%(e,d)
    elif e!=0:
        print "it's only 1\n%d"%(e)