Python字典值替换技术问题:如何按分数阈值替换为对应等级
修正字典分数转等级的代码实现
原代码存在的问题
- 遍历字典时错误使用
values(),无法通过分数定位到对应的科目键(字典的键是科目名称,不是分数) - 误用字典的
update()方法:该方法用于合并字典,不能直接替换单个键的值 - 函数未返回处理后的字典,主程序调用后无法获取结果
修正后的代码
模块classifygrade.py中的函数
def classify_grade(module_marks): # 遍历每个科目及其分数 for subject, score in module_marks.items(): if score >= 70: module_marks[subject] = "distinction" elif score >= 60: module_marks[subject] = "merit" elif score >= 50: module_marks[subject] = "pass" else: module_marks[subject] = "fail" # 返回处理后的字典 return module_marks
主程序代码
module_1 = "Maths" module_2 = "English" module_3 = "Science" module_4 = "Business" module_5 = "PE" mark_1 = 20 mark_2 = 30 mark_3 = 40 mark_4 = 50 mark_5 = 60 # 构建科目-分数字典,无需额外int转换 module_marks = { module_1: mark_1, module_2: mark_2, module_3: mark_3, module_4: mark_4, module_5: mark_5 } # 导入模块并调用函数 import classifygrade marks = classifygrade.classify_grade(module_marks) # 打印验证结果 print(marks)
修正说明
- 使用
items()遍历字典的键值对,直接获取科目(键)和对应的分数(值),确保能正确定位到要修改的条目 - 通过
module_marks[subject] = 等级的方式直接替换值,替代错误的update()用法 - 函数添加返回语句,让主程序可以接收处理后的结果
- 移除不必要的
int()转换,因为mark变量本身已是整数类型
内容的提问来源于stack exchange,提问作者Cbrady
相关产品推荐
相关产品推荐

