首页 > 代码库 > python练习题11-20
python练习题11-20
11、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
12、判断101-200之间有多少个素数,并输出所有素数。
13、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
14、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
15、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
16、输出指定格式的日期。
17、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
18、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
19、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
20、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
11、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
‘‘‘ 可分两部分,分别是1、2月的小兔子以及3月以上的成年兔子 ‘‘‘ rabbits = {‘1st‘:0,‘2nd‘:0,‘adult‘:1} # 单位:对 total = [] # 第n个月数量 for n in range(1,22): if n < 3: pass else: rabbits[‘adult‘] += rabbits[‘2nd‘] # 每个月都有2月兔子成长为成年兔子 rabbits[‘2nd‘] = rabbits[‘1st‘] # 1月兔子成长为2月兔子 rabbits[‘1st‘] = rabbits[‘adult‘] # 成年兔子生出1月兔子 total.append(sum(rabbits.values())) print(total)
12、判断101-200之间有多少个素数,并输出所有素数。
L = [] for x in range(100,201): flag = True # 设定状态位 # for n in range(2,int(math.sqrt(x))+1): for n in range(2,int(x ** (1/2))+1): if x % n == 0: # 轮询是否有约数 flag = False if flag == True: L.append(x) print(L) print(len(L))
13、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
import math num = range(100,1000) for x in num: a = math.pow(x//100,3) # 百位数 b = math.pow(x%100//10,3) # 十位数 c = math.pow(x%10,3) # 个位数 if a + b + c == x: print(‘水仙花数:‘,x)
14、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
x = 100 def f(x): l = [] while True: for n in range(2,x): if x % n == 0: # 最小约数 l.append(str(n)) x = int(x / n) # 除约数后,重新循环 break if n == x - 1: # 所有数据轮询后,输出结果 l.append(str(x)) return l l = f(x) print(l) print(‘{}={}‘.format(str(x),‘*‘.join(l)))
15、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
a = 70 print(‘A‘ if a >= 90 else (‘C‘ if a < 60 else ‘B‘))
16、输出指定格式的日期。
import datetime print(datetime.date(1941, 1, 5).timetuple()) print(datetime.date(1941, 1, 5).timetuple()[0]) print(datetime.datetime(2011,12,3).strftime(‘%Y %m %d‘)) print(datetime.date.today().strftime(‘%d/%m/%Y‘)) import time print(time.asctime()) print(time.localtime(time.time())) a = time.localtime(time.time()) print(list(a)) print(a[1]) # print(time.strftime(‘%Y年%m月%d日‘,a)) print(time.strftime(‘%Y %m %d‘,a)) print(time.strptime(‘2017-4-3 12‘,‘%Y-%m-%d %H‘))
17、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
s = ‘123123fsdfsdfsd !*@#‘ 字母 = [x for x in s if x.isalpha()] 数字 = [x for x in s if x.isdigit()] 空格 = [x for x in s if x.isspace()] 其他 = [x for x in s if x not in 字母+数字+空格] print(len(字母)) print(len(数字)) print(len(空格)) print(len(其他))
18、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
# 方法一: n = 10 s = 3 l = [int(str(s)*i) for i in range(1,n+1)] print(sum(l)) n = 10 s = 3 a = map(lambda i:int(str(s)*i),range(1,n+1)) print(sum(a)) # 方法二 n = 10 a = 3 l = [] s1 = 0 SUM = 0 for x in range(n): s1 += a*10**x SUM += s1 l.append(s1) print(l) print(sum(l)) print(SUM)
19、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
def sum_test(n): s = 0 for x in range(1,n): if n%x == 0: s += x if s == n: # 若是完数,则输出该值 return n a = [i for i in range(1,1001) if sum_test(i)] print(a)
20、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
def f(x): h = [] for i in range(x): h.append(100 * (1/2)**i) distance = h[0] + 2 * sum(h[1:]) h_ = 100 * (1/2)**(i+1) print(‘第{}次落地时,共经{}米‘.format(x,distance)) print(‘第{}次反弹的高度是{}米‘.format(x,h_)) for x in range(11): f(x+1)
python练习题11-20