简单程序python练习(2)

题目1:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

#!/user/bin/env python2
# -*-coding:utf-8 -*-
a=int(raw_input('Enter the month:'))
f1=1
f2=1
for i in range(1,a+1):
    print f1,f2,
    f1=f1+f2
    f2=f1+f2

题目2:判断101-200之间有多少个素数,并输出所有素数。

#!/user/bin/env python2
# -*-coding:utf-8 -*-
from math import sqrt
a=int(raw_input("Enter the begin num:"))
b=int(raw_input("Enter the end num:"))
c=[]
d=0
for i in range(a,b+1):
  k=int(sqrt(i+1)+1)
  for j in range(2,k):
    if i%j==0:
      break
  else:
    c.append(i)
    d+=1
print 'The total num is:%d'%d
print c

题目3:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

#!/user/bin/env python2
# -*-coding:utf-8 -*-
for a in range(100,1000):
  i=a/100
  j=a/10%10
  k=a%10
  if a==i**3+j**3+k**3:
    print a,

题目4:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

#!/user/bin/env python2
# -*- coding:utf-8 -*-

def reduceNum(n):
    if n<=0:
        print 'The num is wrong!'
        return
    elif n==1:
        print 'The result is 1'
        return
    print 'The result is',
    while n>1:    //确保n>1时一直在循环,直至n==1时结束。
        for i in xrange(2,n+1):
            if n%i==0:
                n /= i
                if n==1:
                    print i
                else:
                    print i,'*',
                break        //此处break为跳出for i in xrange(2,n+1)的那层循环

n=int(raw_input('Enter a integer:'))
print reduceNum(n)

题目5:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

#!/user/bin/env python2
# -*- coding:utf-8 -*-

def grade(n):
  if n>100 or n<0:
    print 'The grade is wrong!'
  else:
    if n>=90:
      print 'The grade is A'
    elif n>=60:
      print 'The grade is B'
    else:
      print 'The grade is C'

n=int(raw_input('Enter the grade:'))
print grade(n)

题目6:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#!/user/bin/env python2
# -*- coding:utf-8 -*-
import string
s=raw_input('Enter a string:\n')
letters=0
space=0
digit=0
others=0
i=0
while i

题目7:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

#!/user/bin/env python2
# -*- coding:utf-8 -*-

Tn=0
Sn=[]
n=int(raw_input('n='))
a=int(raw_input('a='))
if a<0 or a>9:
    print 'a is wrong!'
else:
    for i in range(n):
        Tn=Tn+a
        a=a*10
        Sn.append(Tn)
        print Tn

Sn=reduce(lambda x,y:x+y,Sn)
print 'Sum=',Sn

题目8:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

#!/user/bin/env python2
# -*- coding:utf-8 -*-

from sys import stdout
a=int(raw_input('Enter the first num:'))
b=int(raw_input('Enter the last num:'))
for j in range(a,b):
    k=[]
    n=-1
    s=j
    for i in range(1,j):
        if j%i==0:
            n+=1
            s-=i
            k.append(i)
    if s==0:
        print j
        for i in range(n):
            stdout.write(str(k[i]))
            stdout.write(' ')
        print k[n]

题目9:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

#!/user/bin/env python2
# -*- coding:utf-8 -*-

tour=[]
height=[]
hei=int(raw_input('Enter the height:'))
time=int(raw_input('Enter the times:'))

for i in range(1,time+1):
    if i==1:
        tour.append(hei)
    else:
        tour.append(2*hei)
    hei /=2
    height.append(hei)

print 'Sum height is {0}'.format(sum(tour))
print 'The  %dst shell is {0}'.format(height[-1]) %time

你可能感兴趣的:(简单程序python练习(2))