Python习题004

作业一:三迁举办选“帅气男孩”,评委打分可以输入打分,要求分数必须大于5,小于10;

  • 方法一
1 i = 1
2 while i < 6:
3     score = input("请%d评委打分:"%i)
4     if int(score) > 5 and int(score)<10:
5         print("感谢您的打分")
6     else:
7         print("不在有效范围内")
8         continue
9     i += 1
作业 1 答案 1
  • 方法二
 1 import re
 2 dic = {} #存储同学最终得分的字典
 3 list_boy = [] # 存储参赛人员信息
 4 def is_Chinese(word): #判断输入参数人员姓名是否合法
 5     for ch in word:
 6         if 'u4e00' <= ch <= 'u9fff':
 7             return False
 8         else:
 9             print("输入姓名不合法,请重新输入")
10             return True
11 
12 def participant(): # 输入参赛人员基本信息
13     print("输入Q/q退出输入")
14     while True:
15         name = input("请输入参赛人员姓名:")
16         if name.upper() == "Q": # 输入q 退出
17             break
18         if is_Chinese(name): # is_Chinese(name) 调用判断输入参数人员姓名是否合法函数;姓名合法,函数返回False,本语句不执行
19             continue
20         if name in list_boy:   #判断输入的值是否已经存在
21             print("此参赛人员已经输入,请重新输入")
22             continue
23         else:
24             list_boy.append(name)
25     print("--------------------------------------")
26     print("本次评选大赛参赛人员有:")
27     print(list_boy)
28     print("--------------------------------------")
29 def grade(count):   # 评委打分函数,count :需要传入评委个数
30     sum = 0
31     count_person = count #记录有几个评委,求平均数
32     while count :
33         count1 = count # 记录第几个评委
34         print("请评委",count,"打分")
35         g = input("请输入大于5且小于10的数字:")
36         value = re.compile(r'^[-+]?[0-9]+.[0-9]+$')
37         result1 = value.match(g) #检测字符串是否小数
38         result2 = g.isdigit() # 检测字符串是否只由数字组成
39         if  (result1 or result2) and float(g) > 5 and float(g) < 10: # 输入合法 分数是整数,且大于5 ,且小于10
40             sum = sum + float(g)  #求分数的和
41         else:       # 输入不合法
42             print("错误提示!请输入正确数字!")
43             # print("---------------------------------------")
44             count = count1  # 调取前面存储的数字,重新让该评委评分
45             continue
46         count -=1;    # 跳转到下一个评委打分
47     avg = round(sum / count_person,3)# 求分数平均数 round( x [, n]) 方法返回浮点数x的四舍五入值,n为保留几位小数。
48     return avg
49 
50 # 定义最终得分函数 n为传入的形参,表示有几个评委
51 def final_score(n):
52     for i in list_boy:
53         print("---------------------------------------")
54         print("请为",i,"同学打分")
55         dic[i] = grade(n) # grade(4) # 调取打分函数grade(n),n为传入的形参,表示有几个评委
56         print(i,"同学的最终得分为",dic[i])
57     print("---------------------------------------")
58     print("最终得分详情:")
59     print(dic)
60     # print("---------------------------------------")
61 
62 def boy():  # 评选“帅气男孩”
63     max_avg = 0
64     for i in dic:   #变量字典,获取键
65         if dic[i] > max_avg:    # 判断哪个值最大
66             max_avg = dic[i]    #找出最终得分的字典中的最大值
67             max_boy = i
68     return max_boy,max_avg
69 
70 if __name__ == '__main__':
71     print("欢迎来到本次“帅气男孩”评选管理系统")
72     print("---------------------------------------")
73     participant()
74     while True:
75         n = input('请输入评委个数,输入Q/q退出:')
76         '''
77         break作用:用来跳出最内层的for循环或者while循环,脱离该循环后程序从循环代码后面继续执行。
78                    即break语句只能跳出当前层次的循环。
79         '''
80         if n.upper() == "Q": # upper()函数 是把字母转换成大写
81             print("本次评选大赛完美结束!!")
82             break
83         if n.isdigit() and int(n) > 0:  # 输入合法 数是整数,且大于0
84             n_input = int(n)
85             final_score(n_input)# 调取最终得分函数 n_input为传入参,表示有几个评委
86         else:
87             print("输入不合法")
88             continue #结束当前当次循环,即跳出循环体中还没有执行的语句,但是并不跳出当前循环。
89         print("三迁'帅气男孩'最终获得者是",boy()) #调用 boy()函数
90         print("---------------------------------------")
作业 1 答案 1 升级版

作业二:显示一个喜欢的电影列表,观看者给每个电影打分,最终将投票信息公布出来

例如:lst = ['变形金刚','哆啦A梦','我的野蛮女友','赤壁','天下无贼','无间道']

     结果:lst = ['变形金刚' : 96 , '哆啦A梦' : 92 , '我的野蛮女友' : 88 , '赤壁' : 70 , '天下无贼' : 78 , '无间道' : 92]

  • 方法一
1 lst = ['变形金刚','哆啦A梦','我的野蛮女友','赤壁','天下无贼','无间道']
2 dic = {}
3 for ele in lst:
4     score = input("请给电影%s打分:" % ele)
5     dic[ele] = score
6 print(dic)
作业 2 答案 1
  • 方法二
1 dic = {}
2 lst = ['变形金刚','哆啦A梦','我的野蛮女友','赤壁','天下无贼','无间道']
3 for i in lst:
4    print("请对电影",i,"打分:")
5    g = float(input())
6    dic[i] = round(g, 2)    #四舍五入,保留两位有效数
7 print(dic)
作业 2 答案 2

作业三:输入一个整数,输出每个数字对应的拼音。

    dic = { '-':'fu','1':'yi','2':'er','3':'san','4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu','0':'ling','.':'dian'}

    (请输入数字 : 889  输出:ba ba jiu)

 1 dic = {'-':'fu','1':'yi','2':'er','3':'san','4':'si','5':'wu','6':'liu',
 2        '7':'qi','8':'ba','9':'jiu','0':'ling','.':'dian'}
 3 while True:
 4     num = input('请输入数字,输入q/Q退出程序:')
 5     if num.upper() == "Q":
 6         print("奴家恭送小主")
 7         break
 8     for i in num:
 9         if i not in dic:
10             print("你输入的数据中查不到,请重新输入!!!")
11             continue
12         print(dic[i],end=" ")
13     print()
作业 3 答案 

作业四:车牌区域划分,现给出一下车牌,根据车牌的信息,分析出各省的车牌持有量

    cars = ["鲁A32444","鲁B12333","京B8989M","黑C49678","黑C46555","沪B25041"]

    locals = {"沪":"上海","黑":"黑龙江","鲁":"山东","鄂":"湖北","湘":"湖南","京":"北京"}

    结果是:{山东:2,黑龙江:2,北京:1,上海:1}

1 cars = ["鲁A32444","鲁B12333","京B8989M","黑C49678","黑C46555","沪B25041"]
2 locals = {"":"上海","":"黑龙江","":"山东","":"湖北","":"湖南","":"北京"}
3 dic = {}
4 for car in cars:
5     dic[locals[car[0]]] = dic.get(locals[car[0]],0) + 1
6 print(dic)
作业 4 答案 

作业五:现有演艺工作者的收入信息

  YanYi = {"范冰冰": 10, "倪妮": 11, "姑姑": 12, "古校长": 4.5}
  1 .计算平均收益
  2 .小于平均值的演艺工作者删掉
  3.响应党和国家号召,打击偷税漏税,删除范冰冰

  • 方法一
 1 list_yan = []  # 存储字典当中的 键 信息
 2 def Test():
 3     sum = 0
 4     avg = 0
 5     for i in YanYi:
 6         list_yan.append(i)
 7         # 把字典中的键 遍历出来添加到集合中,目的:为了后面for循环删除字典中的信息
 8         # 注意点:如果直接删除,会出现错误
 9         sum += float(YanYi[i])
10         avg = sum / len(YanYi)
11     for j in list_yan:
12         if float(YanYi[j]) < avg:
13             YanYi.pop(j)
14     if '范冰冰' in YanYi: #判断 范冰冰是否在字典中
15         del YanYi['范冰冰']
16     print("演艺信息修改后为:")
17     print(YanYi)
18     print("------------------------------------")
19     print("平均收入为")
20     print(avg)
21 
22 if __name__ == '__main__':
23     YanYi = {"范冰冰": 25, "倪妮": 20, "姑姑": 10, "古校长": 5}
24     # print(list(YanYi))
25     print("演员初始信息为:")
26     print(YanYi)
27     print("------------------------------------")
28     Test()
作业 5 答案 1
  • 方法二
 1 YanYi = {}  # 存储演员基本信息的字典
 2 list_yan = [] #存储字典当中的 键 信息
 3 list_name = [] #存储演员名称的列表
 4 list_income = [] #存储演员收入的列表
 5 def input_info():  # 建立演员基本信息
 6     print("-"*68)
 7     print("请按照要求输入演员基本信息,输入Q/q停止录入信息")
 8     print("友情提示:")
 9     print("为响应党和国家号召,打击偷税漏税,输入范冰冰信息,最后结果不显示")
10     print("-" * 68)
11     while True:   # 循环输入演员基本信息
12         name = input("请输入演员名称:")
13         if name in list_name: # 如果输入的序号已经存在,请重新输入
14             print("此演员已有,请重新输入")
15             # python中break和continue的用法和区别详解 https://blog.csdn.net/wls666/article/details/90408393
16             continue  # 只结束本次循环,并不终止整个循环(while循环)的执行
17         else:
18             list_name.append(name)
19         if name.upper() == "Q":  # 如果输入的值等于q或Q,则停止录入景点信息  upper()函数是转换为大写字符 lower()小写
20             break  # 跳出while循环
21         income = input("请输入演员收入:")
22         if income.upper() == "Q":
23             break
24         list_income.append(income)
25 
26 def Test():# 题目中 要求的 信息的方法
27     sum = 0
28     avg = 0
29     for i in YanYi:   # 把字典转换成集合
30         list_yan.append(i)
31         sum += float(YanYi[i])
32         avg = round(sum / len(YanYi),3)
33     for j in list_yan:
34        if float(YanYi[j]) < avg :
35            YanYi.pop(j)
36     if '范冰冰' in YanYi:    #判断 范冰冰是否在字典中
37         del YanYi['范冰冰']
38     print("演艺信息修改后为:")
39     print(YanYi)
40     print("------------------------------------")
41     print("平均收入为")
42     print(avg)
43 if __name__ == '__main__':
44     input_info()
45     YanYi= dict(zip(list_name,list_income))
46     print("演员初始信息为:")
47     print(YanYi)
48     print("------------------------------------")
49     Test() # 调用Test()函数
作业 5 答案 2 升级版
原文地址:https://www.cnblogs.com/oito/p/11210582.html