Python习题004
作业一:三迁举办选“帅气男孩”,评委打分可以输入打分,要求分数必须大于5,小于10;
- 方法一
i = 1
while i < 6:
score = input("请%d评委打分:"%i)
if int(score) > 5 and int(score)<10:
print("感谢您的打分")
else:
print("不在有效范围内")
continue
i += 1
作业 1 答案 1
- 方法二
import re
dic = {} #存储同学最终得分的字典
list_boy = [] # 存储参赛人员信息
def is_Chinese(word): #判断输入参数人员姓名是否合法
for ch in word:
if '\u4e00' <= ch <= '\u9fff':
return False
else:
print("输入姓名不合法,请重新输入")
return True def participant(): # 输入参赛人员基本信息
print("输入Q/q退出输入")
while True:
name = input("请输入参赛人员姓名:")
if name.upper() == "Q": # 输入q 退出
break
if is_Chinese(name): # is_Chinese(name) 调用判断输入参数人员姓名是否合法函数;姓名合法,函数返回False,本语句不执行
continue
if name in list_boy: #判断输入的值是否已经存在
print("此参赛人员已经输入,请重新输入")
continue
else:
list_boy.append(name)
print("--------------------------------------")
print("本次评选大赛参赛人员有:")
print(list_boy)
print("--------------------------------------")
def grade(count): # 评委打分函数,count :需要传入评委个数
sum = 0
count_person = count #记录有几个评委,求平均数
while count :
count1 = count # 记录第几个评委
print("请评委",count,"打分")
g = input("请输入大于5且小于10的数字:")
value = re.compile(r'^[-+]?[0-9]+\.[0-9]+$')
result1 = value.match(g) #检测字符串是否小数
result2 = g.isdigit() # 检测字符串是否只由数字组成
if (result1 or result2) and float(g) > 5 and float(g) < 10: # 输入合法 分数是整数,且大于5 ,且小于10
sum = sum + float(g) #求分数的和
else: # 输入不合法
print("错误提示!请输入正确数字!")
# print("---------------------------------------")
count = count1 # 调取前面存储的数字,重新让该评委评分
continue
count -=1; # 跳转到下一个评委打分
avg = round(sum / count_person,3)# 求分数平均数 round( x [, n]) 方法返回浮点数x的四舍五入值,n为保留几位小数。
return avg # 定义最终得分函数 n为传入的形参,表示有几个评委
def final_score(n):
for i in list_boy:
print("---------------------------------------")
print("请为",i,"同学打分")
dic[i] = grade(n) # grade(4) # 调取打分函数grade(n),n为传入的形参,表示有几个评委
print(i,"同学的最终得分为",dic[i])
print("---------------------------------------")
print("最终得分详情:")
print(dic)
# print("---------------------------------------") def boy(): # 评选“帅气男孩”
max_avg = 0
for i in dic: #变量字典,获取键
if dic[i] > max_avg: # 判断哪个值最大
max_avg = dic[i] #找出最终得分的字典中的最大值
max_boy = i
return max_boy,max_avg if __name__ == '__main__':
print("欢迎来到本次“帅气男孩”评选管理系统")
print("---------------------------------------")
participant()
while True:
n = input('请输入评委个数,输入Q/q退出:')
'''
break作用:用来跳出最内层的for循环或者while循环,脱离该循环后程序从循环代码后面继续执行。
即break语句只能跳出当前层次的循环。
'''
if n.upper() == "Q": # upper()函数 是把字母转换成大写
print("本次评选大赛完美结束!!")
break
if n.isdigit() and int(n) > 0: # 输入合法 数是整数,且大于0
n_input = int(n)
final_score(n_input)# 调取最终得分函数 n_input为传入参,表示有几个评委
else:
print("输入不合法")
continue #结束当前当次循环,即跳出循环体中还没有执行的语句,但是并不跳出当前循环。
print("三迁'帅气男孩'最终获得者是",boy()) #调用 boy()函数
print("---------------------------------------")
作业 1 答案 1 升级版
作业二:显示一个喜欢的电影列表,观看者给每个电影打分,最终将投票信息公布出来
例如:lst = ['变形金刚','哆啦A梦','我的野蛮女友','赤壁','天下无贼','无间道']
结果:lst = ['变形金刚' : 96 , '哆啦A梦' : 92 , '我的野蛮女友' : 88 , '赤壁' : 70 , '天下无贼' : 78 , '无间道' : 92]
- 方法一
lst = ['变形金刚','哆啦A梦','我的野蛮女友','赤壁','天下无贼','无间道']
dic = {}
for ele in lst:
score = input("请给电影%s打分:" % ele)
dic[ele] = score
print(dic)
作业 2 答案 1
- 方法二
dic = {}
lst = ['变形金刚','哆啦A梦','我的野蛮女友','赤壁','天下无贼','无间道']
for i in lst:
print("请对电影",i,"打分:")
g = float(input())
dic[i] = round(g, 2) #四舍五入,保留两位有效数
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)
dic = {'-':'fu','':'yi','':'er','':'san','':'si','':'wu','':'liu',
'':'qi','':'ba','':'jiu','':'ling','.':'dian'}
while True:
num = input('请输入数字,输入q/Q退出程序:')
if num.upper() == "Q":
print("奴家恭送小主")
break
for i in num:
if i not in dic:
print("你输入的数据中查不到,请重新输入!!!")
continue
print(dic[i],end=" ")
print()
作业 3 答案
作业四:车牌区域划分,现给出一下车牌,根据车牌的信息,分析出各省的车牌持有量
cars = ["鲁A32444","鲁B12333","京B8989M","黑C49678","黑C46555","沪B25041"]
locals = {"沪":"上海","黑":"黑龙江","鲁":"山东","鄂":"湖北","湘":"湖南","京":"北京"}
结果是:{山东:2,黑龙江:2,北京:1,上海:1}
cars = ["鲁A32444","鲁B12333","京B8989M","黑C49678","黑C46555","沪B25041"]
locals = {"沪":"上海","黑":"黑龙江","鲁":"山东","鄂":"湖北","湘":"湖南","京":"北京"}
dic = {}
for car in cars:
dic[locals[car[0]]] = dic.get(locals[car[0]],0) + 1
print(dic)
作业 4 答案
作业五:现有演艺工作者的收入信息
YanYi = {"范冰冰": 10, "倪妮": 11, "姑姑": 12, "古校长": 4.5}
1 .计算平均收益
2 .小于平均值的演艺工作者删掉
3.响应党和国家号召,打击偷税漏税,删除范冰冰
- 方法一
list_yan = [] # 存储字典当中的 键 信息
def Test():
sum = 0
avg = 0
for i in YanYi:
list_yan.append(i)
# 把字典中的键 遍历出来添加到集合中,目的:为了后面for循环删除字典中的信息
# 注意点:如果直接删除,会出现错误
sum += float(YanYi[i])
avg = sum / len(YanYi)
for j in list_yan:
if float(YanYi[j]) < avg:
YanYi.pop(j)
if '范冰冰' in YanYi: #判断 范冰冰是否在字典中
del YanYi['范冰冰']
print("演艺信息修改后为:")
print(YanYi)
print("------------------------------------")
print("平均收入为")
print(avg) if __name__ == '__main__':
YanYi = {"范冰冰": 25, "倪妮": 20, "姑姑": 10, "古校长": 5}
# print(list(YanYi))
print("演员初始信息为:")
print(YanYi)
print("------------------------------------")
Test()
作业 5 答案 1
- 方法二
YanYi = {} # 存储演员基本信息的字典
list_yan = [] #存储字典当中的 键 信息
list_name = [] #存储演员名称的列表
list_income = [] #存储演员收入的列表
def input_info(): # 建立演员基本信息
print("-"*68)
print("请按照要求输入演员基本信息,输入Q/q停止录入信息")
print("友情提示:")
print("为响应党和国家号召,打击偷税漏税,输入范冰冰信息,最后结果不显示")
print("-" * 68)
while True: # 循环输入演员基本信息
name = input("请输入演员名称:")
if name in list_name: # 如果输入的序号已经存在,请重新输入
print("此演员已有,请重新输入")
# python中break和continue的用法和区别详解 https://blog.csdn.net/wls666/article/details/90408393
continue # 只结束本次循环,并不终止整个循环(while循环)的执行
else:
list_name.append(name)
if name.upper() == "Q": # 如果输入的值等于q或Q,则停止录入景点信息 upper()函数是转换为大写字符 lower()小写
break # 跳出while循环
income = input("请输入演员收入:")
if income.upper() == "Q":
break
list_income.append(income) def Test():# 题目中 要求的 信息的方法
sum = 0
avg = 0
for i in YanYi: # 把字典转换成集合
list_yan.append(i)
sum += float(YanYi[i])
avg = round(sum / len(YanYi),3)
for j in list_yan:
if float(YanYi[j]) < avg :
YanYi.pop(j)
if '范冰冰' in YanYi: #判断 范冰冰是否在字典中
del YanYi['范冰冰']
print("演艺信息修改后为:")
print(YanYi)
print("------------------------------------")
print("平均收入为")
print(avg)
if __name__ == '__main__':
input_info()
YanYi= dict(zip(list_name,list_income))
print("演员初始信息为:")
print(YanYi)
print("------------------------------------")
Test() # 调用Test()函数
作业 5 答案 2 升级版
最新文章
- Node.js入门笔记(1):基本概念
- A Taxonomy of Parallel Processor Architectures
- 【翻译】configuration changes与handler.post
- INSERT INTO 语句的语法错误【 OLE报错,office终端执行SQL没有问题】
- js 中数字问题
- 随机生成数字(ashx文件,调用上篇所写发送邮件代码)
- winform 调用http 通过代理出现的一系列问题
- Mysql 存储程序
- 利用QObject反射实现jsonrpc
- 分享一个免费SSL证书申请网站,给网站开启https协议 | 张戈博客
- SQL 结构化查询语言手册
- MAVEN Scope使用
- CentOS的启动流程
- Git首次配置
- 第十二章 Java内存模型与线程
- 老罗最新发布了“子弹短信”这款IM,主打熟人社交能否对标微信?
- 用js实现博客打赏功能
- Python开发环境Linux配置
- 从mysql读取数据写入mongo
- js 逻辑运算符