编写convertMarks函数:将学生成绩字典转换为等级字典
实现分数转等级的
convertMarks函数 需求说明
给定一个嵌套字典,外层键为学生姓名,内层嵌套字典的键为科目、值为分数,需要编写convertMarks函数,将所有分数替换为对应等级。等级规则(包含两端点):
- A:91-100
- B:81-90
- C:71-80
- D:61-70
- E+:51-60
- E:41-50
- F:0-40
示例输入:
{'Lakshman': {'Maths': 90, 'English': 75, 'Social Science': 10}}
示例输出:
{'Lakshman': {'Maths': 'B', 'English': 'C', 'Social Science': 'F'}}
解决方案代码
def convertMarks(student_marks): # 定义分数区间与等级的对应关系,按分数从高到低排列 grade_rules = [ (91, 100, 'A'), (81, 90, 'B'), (71, 80, 'C'), (61, 70, 'D'), (51, 60, 'E+'), (41, 50, 'E'), (0, 40, 'F') ] result = {} for student, subjects in student_marks.items(): student_grades = {} for subject, score in subjects.items(): # 遍历等级规则,匹配对应等级 for min_score, max_score, grade in grade_rules: if min_score <= score <= max_score: student_grades[subject] = grade break result[student] = student_grades return result
代码说明
- 等级规则定义:用列表存储每个等级的分数区间和对应等级,按分数从高到低排列,匹配时一旦找到符合区间即可跳出循环,提升效率。
- 嵌套字典遍历:外层遍历每个学生,内层遍历该学生的所有科目分数,逐个转换为等级。
- 区间匹配:通过
min_score <= score <= max_score判断分数所属区间,匹配成功后立即赋值并终止当前等级遍历,避免无效计算。
测试验证
用示例输入测试函数:
test_input = {'Lakshman': {'Maths': 90, 'English': 75, 'Social Science': 10}} print(convertMarks(test_input)) # 输出:{'Lakshman': {'Maths': 'B', 'English': 'C', 'Social Science': 'F'}}
内容的提问来源于stack exchange,提问作者Rama Krishna Mandapaka
相关产品推荐
相关产品推荐

