[关闭]
@SuHongjun 2020-11-17T09:11:53.000000Z 字数 8078 阅读 587

Python__VPL作业

Python


Python__VPL作业

标签(空格分隔): Python


输入PM2.5的值,判断是否存在空气污染

题目:输入PM2.5的值,判断是否存在空气污染,如果输入值大于等于75,提醒“存在空气污染”,否则告知用户“可以进行户外运动”
Test Case:------------------------

  1. Case = PM2.5的判断
  2. input = 75
  3. output = /.*空气污染*/
  4. Case = PM2.5的判断
  5. input = 90
  6. output = /.*空气污染*/
  7. Case = PM2.5的判断
  8. input = 74
  9. output = /.*户外运动*/

参考程序:----------------------------

  1. # -*- coding: utf-8 -*-
  2. pm = float(input("请输入PM2.5值:"))
  3. if pm>=75:
  4. print("存在空气污染")
  5. else:
  6. print("可进行户外运动")

判断是不是闰年

题目:请输入一个年份,如果是闰年,程序输出Yes,否则输出No
Test Case:------------------------

  1. Case= 闰年判断测试
  2. input = 2000
  3. output = /.*Yes*/i
  4. Case= 闰年判断测试
  5. input = 2001
  6. output = /.*No*/i
  7. Case= 闰年判断测试
  8. input = 1700
  9. output = /.*No*/i
  10. Case= 闰年判断测试
  11. input = 2004
  12. output = /.*Yes*/i

参考程序:----------------------------

  1. # -*- coding: utf-8 -*-
  2. y=int(input("请输入一个年份:"))
  3. if(y%4==0 and y%100!=0 or y%400==0):
  4. print("Yes")
  5. else:
  6. print("No")

判断3条边能否组成三角形及三角形类别

题目:输入3条边的长度(限整数),判断这3条边能否组成三角形。如果能组成三角形,判断这个三角形是不是等边、等腰、直角三角形
Test Case:------------------------

  1. Case = 三角形测试用例
  2. input = 2
  3. 3
  4. 4
  5. output = /.*能*/
  6. Case = 三角形测试用例
  7. input = 1
  8. 2
  9. 3
  10. output = /.*不能*/
  11. Case = 三角形测试用例
  12. input = 3
  13. 4
  14. 5
  15. output = /.*直角*/
  16. Case = 三角形测试用例
  17. input = 6
  18. 6
  19. 6
  20. output = /.*等边*/
  21. Case = 三角形测试用例
  22. input = 6
  23. 8
  24. 8
  25. output = /.*等腰*/

参考程序:----------------------------

  1. # -*- coding: utf-8 -*-
  2. a=int(input("a="))
  3. b=int(input("b="))
  4. c=int(input("c="))
  5. if(a+b>c and b+c>a and c+a>b):
  6. print("%d,%d,%d能组成三角形"%(a,b,c))
  7. if(a==b and b==c ):
  8. print("能组成等边三角形")
  9. elif(a==b or b==c or a==c):
  10. print("能组成等腰三角形")
  11. else:
  12. print("非等腰、等边三角形")
  13. if(a*a + b*b == c*c or b*b + c*c == a*a or c*c + a*a ==b*b):
  14. print("该三角形是直角三角形")
  15. else:
  16. print("该三角形是非直角三角形")
  17. else:
  18. print("%d,%d,%d不能组成三角形"%(a,b,c))

求数列前n项和(循环的应用)

输入一个正整数n,求数列 1 + 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + .....的前n项和

  1. Case= 数列前n项和测试
  2. input = 1
  3. output = /.*[1].[0]{0,}*/
  4. Case= 数列前n项和测试
  5. input = 2
  6. output = /.*[1].[3]{0,}*/
  7. Case= 数列前n项和测试
  8. input = 5
  9. output = /.*[1].[7][0-9]{0,}*/
  1. # -*- coding: utf-8 -*-
  2. n = int(input("n="))
  3. sum = 0.0
  4. i = 1
  5. while i<=n:
  6. sum += 1.0 / (2*i - 1)
  7. i = i+1
  8. print("sum=",sum)

输出质数(循环的应用)

输入一个正整数n,输出n以内的所有质数

  1. Case= 质数输出测试
  2. input = 20
  3. output = /.*[2].*[3].*[13].*[19].*/
  4. Case= 质数输出测试
  5. input = 50
  6. output = /.*[2].*[17].*[23].*[43].*[47].*/
  7. Case= 质数输出测试
  8. input = 100
  9. output = /.*[7].*[19].*[41].*[79].*[97].*/
  10. Case= 质数输出测试
  11. input = 10
  12. output = /.*[^(4,6,8,9)].*/
  1. # -*- coding: utf-8 -*-
  2. n = int(input("请输入一个正整数:"))
  3. for m in range(2,n,1):
  4. IsZhiShu = True
  5. for i in range(2,m//2+1,1):
  6. if m%i==0:
  7. IsZhiShu = False
  8. break
  9. if IsZhiShu:
  10. print("%d\t"%m,end='')

输出字典

输入正整数n,生成包含 (i, i*i)的dict,该dict的keys为 1 到 n所有整数(包含1、在内),然后,输出该字典。
例如,如果输入9,程序的输出应该如下:
n=9
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

  1. Case= 输入n,输出字典
  2. input = 4
  3. output = {1: 1, 2: 4, 3: 9, 4: 16}
  4. Case= 输入n,输出字典
  5. input = 11
  6. output = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11: 121}
  1. n=int(input("n="))
  2. d=dict()
  3. for i in range(1,n+1):
  4. d[i]=i*i
  5. print( d )

输出正整数的约数的并集

输入2个大于20的正整数m和n,求出m和n的约数的并集,并输出。
例如,如果输入21和36,程序的运行结果应该如下:
m=21
n=36
{1, 2, 3, 4, 6, 7, 9, 12, 18, 21, 36}

  1. Case= 输入2个正整数,输出它们约数的并集
  2. input = 25
  3. 28
  4. output = /.*1,.*2,.*4,.*5,.*7,.*14,.*25,.*28.*/
  5. Case= 输入2个正整数,输出它们约数的并集
  6. input = 21
  7. 24
  8. output = /.*1.*21.*24.*/
  9. Case= 输入2个正整数,输出它们约数的并集
  10. input = 24
  11. 27
  12. output = /.*3.*/
  13. Case= 输入2个正整数,输出它们约数的并集
  14. input = 23
  15. 26
  16. output = /.*2.*/
  1. m=int(input("m="))
  2. n=int(input("n="))
  3. ys_m=set()
  4. ys_n=set()
  5. for i in range(1,m+1):
  6. if m%i == 0:
  7. ys_m.add(i)
  8. for i in range(1,n+1):
  9. if n%i == 0:
  10. ys_n.add(i)
  11. uset = ys_m | ys_n
  12. print(uset)

输入一个年份,输出其12个月的天数构成的一个tuple

输入一个年份,输出其12个月的天数构成的tuple。

例如:
当你输入一个闰年,比如2000时,程序的运行结果如下图:T1.png
而如果输入的不是闰年,比如2019时,程序的运行结果如下图:T2.png

  1. Case= 输入一个年份,输出其12个月的天数构成的一个tuple
  2. input = 2000
  3. output = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  4. Case= 输入一个年份,输出其12个月的天数构成的一个tuple
  5. input = 2001
  6. output = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  7. Case= 输入一个年份,输出其12个月的天数构成的一个tuple
  8. input = 1700
  9. output = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  10. Case= 输入一个年份,输出其12个月的天数构成的一个tuple
  11. input = 2004
  12. output = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  1. y = int(input("输入一个年份:"))
  2. ls1 = [31,28,31,30,31,30,31,31,30,31,30,31]
  3. if y%400 == 0 or y%4 == 0 and y%100 !=0:
  4. ls1[1] = 29
  5. t1 = tuple(ls1)
  6. print(t1)

输入扇形的半径r,输出扇形面积构成的list

输入扇形的半径r,输出1个list,这个list的各个元素的值为:从0°开始,到360°结束,圆心角每增加10°,所对应的扇形面积构成的list。π值取3.14,要包含360°在内
例如:
如果输入为10,程序运行结果如下图:T3.png

  1. Case= 输入扇形的半径r,输出扇形面积构成的list
  2. input = 10
  3. output = /.*\[0.0, .*, 305.*\].*/
  4. Case= 输入扇形的半径r,输出扇形面积构成的list
  5. input = 10
  6. output = /.*\[0.0, .*, 314.*\].*/
  7. Case= 输入扇形的半径r,输出扇形面积构成的list
  8. input = 5
  9. output = /.*\[0.0, 2.*, 6.*15.*, .*74.*, 76.*\].*/
  10. Case= 输入扇形的半径r,输出扇形面积构成的list
  11. input = 5
  12. output = /.*\[0.0, 2.*, 6.*15.*, .*74.*, 76.*, 78.*\].*/
  1. r = int(input("r="))
  2. ls1 = [ ]
  3. for n in range(0,361,10):
  4. ls1.append((n / 360.0) * 3.14 * r * r)
  5. print(ls1)

输入n,输出字典

输入正整数n,生成包含 (i, i*i)的dict,该dict的keys为 1 到 n所有整数(包含1、在内),然后,输出该字典。
例如,如果输入9,程序的输出应该如下图:ex1.png

  1. Case= 输入n,输出字典
  2. input = 4
  3. output = {1: 1, 2: 4, 3: 9, 4: 16}
  4. Case= 输入n,输出字典
  5. input = 11
  6. output = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11: 121}
  1. """
  2. 输入正整数n,生成包含 (i, i*i)的dict,该dict的keys为 1 到 n所有整数(包含1、n在内),
  3. 然后,输出该字典。
  4. """
  5. n = int(input("n="))
  6. d1 = { }
  7. for i in range(1,n+1):
  8. d1[i] = i*i
  9. print(d1)

成绩输入合法性检查
输入百分制的成绩,判断输入合法性,若输入合法,则给出对应等级:[90,100]为A等,[80 - 90) 为B等,[70 - 80) 为C等,[60 - 70) 为D等,[0,60)为E等。
使用 try - except 、assert语句进行成绩输入合法性检查,要求输入的成绩必须是 0--100分的数字,如果输入不是数字,提示“输入不是数字”,如果数字超出范围,提示“分数超出范围”

  1. Case= 成绩输入合法性检查
  2. input = 100
  3. output = /.*[Aa].*/
  4. Case= 成绩输入合法性检查
  5. input = 89
  6. output = /.*[Bb].*/
  7. Case= 成绩输入合法性检查
  8. input = 78
  9. output = /.*[Cc].*/
  10. Case= 成绩输入合法性检查
  11. input = 68
  12. output = /.*[Dd].*/
  13. Case= 成绩输入合法性检查
  14. input = 54
  15. output = /.*[Ee].*/
  16. Case= 成绩输入合法性检查
  17. input = 4ab
  18. output = /.*不是.*数字.*/
  19. Case= 成绩输入合法性检查
  20. input = 112
  21. output = /.*超出.*范围.*/
  22. Case= 成绩输入合法性检查
  23. input = -1
  24. output = /.*超出.*/
  1. try:
  2. g_fen_shu=int(input("请输入百分制成绩:"))
  3. assert 0<=g_fen_shu<=100
  4. if g_fen_shu<60:
  5. print("E")
  6. elif g_fen_shu<70:
  7. print("D")
  8. elif g_fen_shu<80:
  9. print("C")
  10. elif g_fen_shu<90:
  11. print("B")
  12. elif g_fen_shu<=100:
  13. print("A")
  14. except ValueError:
  15. print("输入不是数字")
  16. except AssertionError:
  17. print("分数超出范围")

用函数方式输出质数

定义一个函数,该函数可以判断传入的值(形参值)是不是质数,然后调用该函数输出m--n之间(包括m、n在内)的所有质数。
1、m、n由用户输入。m>=2,n>=2,若不满足要求,程序提示:“m和n的值必须大于等于2”
2、允许m>n,但是程序要考虑这种情况如何处理。
3、要求程序能对不合法的输入(m或者n不是整数)进行异常的捕获和处理,提示:“输入不是整数”
4、输入语句:
m = int(input("m:"))
n = int(input("n:"))

  1. def is_prime(n):
  2. prime = True
  3. for i in range(2,n//2):
  4. if n % i ==0:
  5. return False
  6. return True
  7. try:
  8. m = int(input("m:"))
  9. n = int(input("n:"))
  10. if m>=2 and n>=2:
  11. step = 1
  12. end = n+1
  13. if m>n:
  14. step = -1
  15. end = n-1
  16. for i in range(m,end,step):
  17. if is_prime(i):
  18. print(i,end = " ")
  19. else:
  20. print("m和n的值必须大于等于2")
  21. except:
  22. print("输入不是整数!")

闭包应用:手机消费贷款手续费计算

某手机商为了促进销售,提供如下的消费贷款方案:
贷款额度 0 -- 5000元,零利率,但是要收取手续费,手续费收取的金额与贷款期限相关,方案如下
1--3个月:手续费1%,贷款期限每延长一个月,手续费增加千分之五。编写一个程序,输入贷款期限、金额,计算输出手续费。

要求用闭包实现

  1. def DaiKuan(qx):
  2. fl = 10
  3. if(qx>4):
  4. fl = fl + (qx-3)*5
  5. def ShouXuFei(Jine):
  6. return Jine*fl/1000
  7. return ShouXuFei
  8. n = eval(input("请输入贷款期限(个月数):"))
  9. sxf = DaiKuan(n)
  10. je = eval(input("请输入贷款金额:"))
  11. print("手续费:%.2f元"%sxf(je))
  1. Case= 闭包应用:手机消费贷款手续费计算
  2. input = 3
  3. 100
  4. output = /.*1.00.*/
  5. Case= 闭包应用:手机消费贷款手续费计算
  6. input = 3
  7. 100
  8. output = /.*1.*/
  9. Case= 闭包应用:手机消费贷款手续费计算
  10. input = 12
  11. 1500
  12. output = /.*82.50.*/
  13. Case= 闭包应用:手机消费贷款手续费计算
  14. input = 12
  15. 1500
  16. output = /.*82.*/

高阶函数应用:计算输出多个人全年个人所得税应纳税金额列表

我国个人所得税起征点是5000元,全年应纳税所得额 = 全年收入 - 60000,
个人所得税的税率如下表所示:

级数 全年应纳税所得额 税率(%)
1 不超过36000元的 3
2 超过36000元至144000元的部分 10
3 超过144000元至300000元的部分 20
4 超过300000元至420000元的部分 25
5 超过420000元至660000元的部分 30
6 超过660000元至960000元的部分 35
7 超过960000元的部分 45

输入多个人全年收入列表,使用map( )函数计算输出应纳税金额列表。
参考下图:

图略

实现1:

  1. def grsds(je): #个人上的税
  2. ynssde = je - 60000 #应纳税所得额
  3. jt = [(960000,45),(660000,35),(420000,30),(300000,25),(144000,20),(36000,10),(0,3)]
  4. nse = 0 #纳税额
  5. for jtz,sl in jt: #阶梯值,税率
  6. if ynssde>jtz:
  7. jdynssd = ynssde - jtz #该阶段内的应纳税所得额
  8. nse = nse + jdynssd * sl/100 #各阶段纳税额累加
  9. ynssde = jtz #还未计算纳税额的应纳税所得额
  10. return nse
  11. drsr = list(eval(input("请输入多个人的全年收入列表:"))) #多人收入
  12. #print(drsr)
  13. print("以上各人对应的全年个人所得税纳税额为:",list(map(grsds,drsr)))

实现2:

  1. def sds(nsr):
  2. nsjt = [960000,660000,420000,300000,144000,36000,0]
  3. sl = [45,35,30,25,20,10,3]
  4. ynssde = nsr - 60000
  5. nse = 0
  6. i = 0
  7. while(ynssde>0):
  8. jtynssde = 0
  9. if ynssde > nsjt[i]:
  10. jtynssde = ynssde - nsjt[i] #4万 = 100万 - 96万
  11. ynssde = nsjt[i] #96万 还未计算所得税
  12. nse = nse + jtynssde * sl[i]/100
  13. i += 1
  14. return nse
  15. srlb = list(eval(input("请输入多个人的全年收入列表:")))
  16. sdslb = list(map(sds,srlb))
  17. print("对应的所得税额是:",sdslb)
  1. Case= 高阶函数应用:计算输出多个人全年个人所得税应纳税金额列表
  2. input = 36000,200000,1000000
  3. output = /.*\[0, 11480.*, 243080.*\].*/
  4. Case= 高阶函数应用:计算输出多个人全年个人所得税应纳税金额列表
  5. input = [36000,200000,1000000]
  6. output = /.*\[0, 11480.*, 243080.*\].*/
  7. Case= 高阶函数应用:计算输出多个人全年个人所得税应纳税金额列表
  8. input = [37000,78000,145000,700000,1000000,2000000]
  9. output = /.*\[0, 540.*, 5980.*, 139080.*, 243080.*, 691080.*\].*/
  10. Case= 高阶函数应用:计算输出多个人全年个人所得税应纳税金额列表
  11. input = 37000,78000,145000,700000,1000000,2000000
  12. output = /.*\[0, 540.*, 5980.*, 139080.*, 243080.*, 691080.*\].*/
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注