Python如何将浮点型分数分级及字典推导式输出空值问题排查
错误原因汇总
- 字典定义语法错误:
student_records的赋值错误使用了冒号:,应改为等号= - 分级函数逻辑错误:
- 函数参数是
grade,但判断逻辑中误用了未定义的变量v - 边界值未覆盖:当前判断条件仅包含大于/小于,等于40.0、50.0、60.0、70.0的情况无匹配分支
- 分级返回值符号错误:需求要求返回
2:2、2:1,代码中写为2.2、2.1
- 函数参数是
- 字典推导式过滤条件错误:
if v == float是判断值是否等于float类,永远返回False,所有项都被过滤所以最终得到空字典,该冗余条件可直接删除,若要校验类型应改为isinstance(v, float) - 冗余变量:
name和grade两个变量定义后没有使用,可以删除
修正后完整代码
# 修正字典定义语法 student_records = {'Ada': 98.0, 'Bill': 45.0, 'Charlie': 63.2, 'Teri': 35.0, 'Johanna': 52.5, 'Tomas': 37.8, 'Piotr': 65.0, 'Grzegorz': 64.8} def grade_to_classification(grade): if grade < 40.0: return "Fail" elif 40.0 <= grade < 50.0: return "Pass" elif 50.0 <= grade < 60.0: return "2:2" elif 60.0 <= grade < 70.0: return "2:1" else: # 覆盖≥70.0的所有情况 return "First" # 删除错误的过滤条件 classified_student_records = {k:grade_to_classification(v) for k, v in student_records.items()} print(classified_student_records)
运行输出
{'Ada': 'First', 'Bill': 'Pass', 'Charlie': '2:1', 'Teri': 'Fail', 'Johanna': '2:2', 'Tomas': 'Fail', 'Piotr': '2:1', 'Grzegorz': '2:1'}
内容的提问来源于stack exchange,提问作者Grace
相关产品推荐
相关产品推荐

