首先定义一个函数 GeneralGrade,期中包含中考分数M_exam、末考分数E_exam、中考占比Rate 三个参数,Rate参数缺省的话取值0.4 ;函数首先按比例将中考、末考成绩折算为总评分数,然后将总评分数转换为等级制(A、B、C、D、F)以字符串形式返回, 其中A(>=90)、B( 80+)、C(70+)、D(60+)、F(60以下)。 #初始状态,有以下两批次的成绩单,包括以下四个字典 mid_exam={"Tommy":78,"Jarry":89,"Sunny":93,"Honey":78,"Lily":80} #期中考试成绩主成绩单 姓名:分数 end_exam={"Tommy":60,"Jarry":69,"Sunny":88,"Honey":61,"Lily":88} #期末考试成绩主成绩单 姓名:分数 mid_exam0={"Money":56,"Crazy":99,"Windy":75,"Cloudy":87,"Lily":68} #期中考试成绩单补充材料 end_exam0={"Money":66,"Cloudy":94,"Crazy":77,"Windy":82,"Lily":90} #期末考试成绩单补充材料 在此基础上,接下来设计主程序程序完成以下任务 : 1. 将其中、期末的补充成绩单合并到主成绩单中,成绩不一致的以补充材料为准; 2.使用空的Input函数接收键盘输入一个纯小数赋值给rate,确定总评成绩中 期中考试分数的占比,然后以此为依据,使用开篇自定义的函数计算每个学生的总评成绩(等级制),生成一个包含所有学生的新字典Total_score,条目结构为 姓名: [期中,期末,总评等级] ; 注意:计算之前判断rate是否为0--1之间的纯小数,是的话 三个参数调用自定义函数GeneralGrade,否则本次输入的rate数据作废, 使用两个参数调用自定义函数GeneralGrade,rate取函数缺省值进行计算。 3. 使用空的Input函数接收键盘输入一个学生姓名(大小写通用),按姓名查找其详细成绩并以列表形式打印输出,以空格结束; 4.提取所有人的总评成绩的等级组成一个集合Grades,循环检测集合中缺少的成绩类型并输出,每个输出都以空格结束。 输入描述 无任何提示信息的input(),输入一个纯小数,如: 0.4 无任何提示信息的input(),输入学生姓名,如:sunny 输出描述 [78, 61, 'C'] F 样例输入1: 0.6 Honey 样例输出1: [78, 61, 'C'] F 样例输入2: 0.6 honey 样例输出2: [78, 61, 'C'] F 语言 Python 代码(请注意:不要出现中文)
1条回答 默认 最新
- 编程漫步者 2023-03-03 14:10关注
def GeneralGrade(M_exam, E_exam, Rate=0.4): score = M_exam * Rate + E_exam * (1 - Rate) if score >= 90: return 'A' elif score >= 80: return 'B' elif score >= 70: return 'C' elif score >= 60: return 'D' else: return 'F' mid_exam = {"Tommy":78, "Jarry":89, "Sunny":93, "Honey":78, "Lily":80} end_exam = {"Tommy":60, "Jarry":69, "Sunny":88, "Honey":61, "Lily":88} mid_exam0 = {"Money":56, "Crazy":99, "Windy":75, "Cloudy":87, "Lily":68} end_exam0 = {"Money":66, "Cloudy":94, "Crazy":77, "Windy":82, "Lily":90} mid_exam.update(mid_exam0) end_exam.update(end_exam0) for name in mid_exam: if name in end_exam: if end_exam[name] != mid_exam[name]: if end_exam0.get(name, None): end_exam[name] = end_exam0[name] else: mid_exam[name] = end_exam[name] rate = float(input().strip()) if not 0 < rate < 1: print("Input rate error") else: Total_score = {} for name in mid_exam: M_exam = mid_exam[name] E_exam = end_exam[name] if 0 < rate < 1: grade = GeneralGrade(M_exam, E_exam, rate) else: grade = GeneralGrade(M_exam, E_exam) Total_score[name] = [M_exam, E_exam, grade] search_name = input().strip() if search_name in Total_score: print(Total_score[search_name]) else: print("The student does not exist") Grades = set([Total_score[name][2] for name in Total_score]) missing_grades = set(['A', 'B', 'C', 'D', 'F']) - Grades for grade in missing_grades: print(grade, end=' ')
输出结果:
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 Python爬取指定微博话题下的内容,保存为txt
- ¥15 vue2登录调用后端接口如何实现
- ¥65 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥15 latex怎么处理论文引理引用参考文献
- ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?