python基础100练习题.docx

上传人:rrsccc 文档编号:8875072 上传时间:2021-01-21 格式:DOCX 页数:39 大小:59.05KB
返回 下载 相关 举报
python基础100练习题.docx_第1页
第1页 / 共39页
python基础100练习题.docx_第2页
第2页 / 共39页
python基础100练习题.docx_第3页
第3页 / 共39页
python基础100练习题.docx_第4页
第4页 / 共39页
python基础100练习题.docx_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《python基础100练习题.docx》由会员分享,可在线阅读,更多相关《python基础100练习题.docx(39页珍藏版)》请在三一文库上搜索。

1、实例001:数字组合题目 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析 遍历全部可能,把有重复的剃掉。total=0for i in range(1,5): for j in range(1,5): for k in range(1,5): if (i!=j)and(j!=k)and(k!=i): print(i,j,k) total+=1print(total)12345678简便方法 用itertools中的permutations即可。import itertoolssum2=0a=1,2,3,4for i in itertools.permu

2、tations(a,3): print(i) sum2+=1print(sum2)12345678实例002:“个税计算”题目 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?程序分析 分区间计算即可。profit

3、=int(input(Show me the money: )bonus=0thresholds=100000,100000,200000,200000,400000rates=0.1,0.075,0.05,0.03,0.015,0.01for i in range(len(thresholds): if profit=thresholdsi: bonus+=profit*ratesi profit=0 break else: bonus+=thresholdsi*ratesi profit-=thresholdsibonus+=profit*rates-1print(bonus)123456

4、7891011121314实例003:完全平方数题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:n=0while (n+1)*2-n*n=168: n+=1print(n+1)-85123456789思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。结合起来:n=0while (n+1)*2-n*nrawj: rawi,rawj=

5、rawj,rawiprint(raw)raw2=for i in range(3): x=int(input(int%d: %(i) raw2.append(x)print(sorted(raw2)123456789101112131415161718实例006:斐波那契数列题目 斐波那契数列。程序分析 斐波那契数列(Fibonacci sequence),从1,1开始,后面每一项等于前面两项之和。图方便就递归实现,图性能就用循环。# 递归实现def Fib(n): return 1 if n=2 else Fib(n-1)+Fib(n-2)print(Fib(int(input() # 朴素

6、实现target=int(input()res=0a,b=1,1for i in range(target-1): a,b=b,a+bprint(a)12345678910111213实例007:copy题目 将一个列表的数据复制到另一个列表中。程序分析 使用列表:,拿不准可以调用copy模块。import copya = 1,2,3,4,a,bb = a# 赋值c = a:# 浅拷贝d = copy.copy(a)# 浅拷贝e = copy.deepcopy(a)# 深拷贝a.append(5)a4.append(c)print(a=,a)print(b=,b)print(c=,c)prin

7、t(d=,d)print(e=,e)= RESTART: F:PyWorkspacePython100100examples007.py =a= 1, 2, 3, 4, a, b, c, 5b= 1, 2, 3, 4, a, b, c, 5c= 1, 2, 3, 4, a, b, cd= 1, 2, 3, 4, a, b, ce= 1, 2, 3, 4, a, b1234567891011121314151617181920212223实例008:九九乘法表题目 输出 9*9 乘法口诀表。程序分析 分行与列考虑,共9行9列,i控制行,j控制列。for i in range(1,10): for

8、 j in range(1,i+1): print(%d*%d=%2ld %(i,j,i*j),end=) print()1234实例009:暂停一秒输出题目 暂停一秒输出。程序分析 使用 time 模块的 sleep() 函数。import timefor i in range(4): print(str(int(time.time()-2:) time.sleep(1)1234实例010:给人看的时间题目 暂停一秒输出,并格式化当前时间。程序分析 同009.import timefor i in range(4): print(time.strftime(%Y-%m-%d %H:%M:%S

9、,time.localtime(time.time() time.sleep(1)12345实例011:养兔子题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析 我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。month=int(input(繁殖几个月?: )month_1=1month_2=0month_3=0month_eld

10、er=0for i in range(month): month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3 print(第%d个月共%(i+1),month_1+month_2+month_3+month_elder,对兔子) print(其中1月兔:,month_1) print(其中2月兔:,month_2) print(其中3月兔:,month_3) print(其中成年兔:,month_elder)123456789101112实例012:100到200的素

11、数题目 判断101-200之间有多少个素数,并输出所有素数。程序分析 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 用else可以进一步简化代码.import mathfor i in range(100,200): flag=0 for j in range(2,round(math.sqrt(i)+1): if i%j=0: flag=1 break if flag: continue print(i)print(nSimplify the code with elsen)for i in range(100,200): for j

12、 in range(2,round(math.sqrt(i)+1): if i%j=0: break else: print(i)123456789101112131415161718192021实例013:所有水仙花数题目 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方5的三次方3的三次方。程序分析 利用for循环控制100-999个数,每个数分解出个位,十位,百位。for i in range(100,1000): s=str(i) one=int(s-1) ten=int(s-2) hun=int(s-3

13、) if i = one*3+ten*3+hun*3: print(i)1234567实例014:分解质因数题目 将一个整数分解质因数。例如:输入90,打印出90=233*5。程序分析 根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。target=int(input(输入一个整数:)print(target,= ,end=)if target0: target=abs(target) print(-1*,end=)flag=0if target=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。程序分析 用条件判断即可。points=int(in

14、put(输入分数:)if points=90: grade=Aelif points1 else 1print(factorial(5)123实例027:递归输出题目 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。程序分析 递归真是蠢方法。def rec(string): if len(string)!=1: rec(string1:) print(string0,end=)rec(input(string here:)123456实例028:递归求等差数列题目 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第

15、2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?程序分析 就一等差数列。def age(n): if n=1: return 10 return 2+age(n-1)print(age(5)12345实例029:反向输出题目 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。程序分析 学会分解出每一位数,用字符串的方法总是比较省事。n=int(input(输入一个正整数:)n=str(n)print(%d位数%len(n)print(n:-1)1234实例030:回文数题目 一个5位数,判断它是不是回文数。即12321是回文数

16、,个位与万位相同,十位与千位相同。程序分析 用字符串比较方便,就算输入的不是数字都ok。n=input(随便你输入啥啦:)a=0b=len(n)-1flag=Truewhile a 1: for j in range(2,i): if (i % j) = 0: break else: print(i)123456789实例037:排序题目 对10个数进行排序。程序分析 同实例005。raw=for i in range(10): x=int(input(int%d: %(i) raw.append(x) for i in range(len(raw): for j in range(i,len

17、(raw): if rawirawj: rawi,rawj=rawj,rawiprint(raw)1234567891011实例038:矩阵对角线之和题目 求一个3*3矩阵主对角线元素之和。程序分析 无。mat=1,2,3, 3,4,5, 4,5,6 res=0for i in range(len(mat): res+=matiiprint(res)12345678实例039:有序列表插入元素题目 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。程序分析 首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。lis=1,10

18、,100,1000,10000,100000n=int(input(insert a number: )lis.append(n)for i in range(len(lis)-1): if lisi=n: for j in range(i,len(lis): lisj,lis-1=lis-1,lisj breakprint(lis)123456789实例040:逆序列表题目 将一个数组逆序输出。程序分析 依次交换位置,或者直接调用reverse方法。lis=1,10,100,1000,10000,100000for i in range(int(len(lis)/2): lisi,lisle

19、n(lis)-1-i=lislen(lis)-1-i,lisiprint(第一种实现:)print(lis)lis=1,10,100,1000,10000,100000print(第二种实现:)lis.reverse()print(lis)123456789101112实例041:类的方法与变量题目 模仿静态变量的用法。程序分析 构造类,了解类的方法与变量。def dummy(): i=0 print(i) i+=1class cls: i=0 def dummy(self): print(self.i) self.i+=1a=cls()for i in range(50): dummy()

20、a.dummy()123456789101112131415实例042:变量作用域题目 学习使用auto定义变量的用法。程序分析 python中的变量作用域。i=0n=0def dummy(): i=0 print(i) i+=1def dummy2(): global n print(n) n+=1print(函数内部的同名变量)for j in range(20): print(i) dummy() i+=1print(global声明同名变量)for k in range(20): print(n) dummy2() n+=10123456789101112131415161718192

21、0实例043:作用域、类的方法与变量题目 模仿静态变量(static)另一案例。程序分析 综合实例041和实例042。class dummy: num=1 def Num(self): print(class dummy num:,self.num) print(global num: ,num) self.num+=1n=dummy()num=1for i in range(5): num*=10 n.Num()123456789101112实例044:矩阵相加题目 计算两个矩阵相加。程序分析 创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应

22、位置中。X = 12,7,3, 4 ,5,6, 7 ,8,9 Y = 5,8,1, 6,7,3, 4,5,9 res=0,0,0, 0,0,0, 0,0,0for i in range(len(res): for j in range(len(res0): resij=Xij+Yijprint(res)12345678910111213141516实例045:求和题目 统计 1 到 100 之和。程序分析 无res=0for i in range(1,101): res+=iprint(res)1234实例046:打破循环题目 求输入数字的平方,如果平方运算后小于 50 则退出。程序分析 无w

23、hile True: try: n=float(input(输入一个数字:) except: print(输入错误) continue dn=n*2 print(其平方为:,dn) if dn50: print(平方小于50,退出) break1234567891011实例047:函数交换变量题目 两个变量值用函数互换。程序分析 无def exc(a,b): return (b,a)a=0b=10a,b=exc(a,b)print(a,b)123456实例048:数字比大小题目 数字比较。程序分析 无a=int(input(a=)b=int(input(b=)if ab: print(ab:

24、print(ab)else: print(a=b)12345678实例049:lambda题目 使用lambda来创建匿名函数。程序分析 无Max=lambda x,y:x*(x=y)+y*(yx)Min=lambda x,y:x*(x=y)+y*(yx)a=int(input(1:)b=int(input(2:)print(Max(a,b)print(Min(a,b)12345678实例050:随机数题目 输出一个随机数。程序分析 使用 random 模块。import randomprint(random.uniform(10,20)12实例051:按位与题目 学习使用按位与 & 。程序分析 0&0=0; 0&1=0; 1&0=0; 1&1=1。a=0o77print(a)b=a&3print(b)b=b&7print(b)123456实例052:按位或题目 学习使用按位或 | 。程序分析 0|0=0; 0|1=1; 1|0=1; 1|1=1a=0o77print(a|3)print(a|3|7)123实例053:按位异或题目 学习使用按位异或 。程序分析 00=0; 01=1; 10=1; 11=0a=0o77print(a3)print(a37)123

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1