作业一:三迁举办选“帅气男孩”,评委打分可以输入打分,要求分数必须大于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的用法和区别详解
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 升级版