Python遍历成绩字典计算平均值输出等级报错如何解决
问题排查
错误根源
- 函数设计逻辑错误:原
Average函数接收整个成绩字典作为入参,内部未传入当前计算的学生姓名,错误依赖外部循环的全局变量sName,同时函数内部重复遍历整个字典的键值对,拿到的value是['学科', [成绩列表]]的复合列表结构,直接传入float()转换触发第一个类型错误。 - 计算对象混淆:需求是计算单个学生的多科成绩平均值,原代码逻辑试图计算所有学生的总平均,取值逻辑完全错位,导致函数返回值不是合法数值,和整数90比较时触发第二个类型错误。
- 等级判断逻辑不全:仅实现了A级的判断分支,未覆盖其余分数区间。
修复后完整代码
graDict = {'John': ['Math', [90, 75, 77]], 'Adam': ['Math', [70, 75, 87, 77]]} # 入参为单个学生的成绩列表,直接计算平均值 def Average(score_list): total = 0 for score in score_list: total += float(score) return total / len(score_list) # 遍历所有学生计算等级 for sName in graDict.keys(): # 取出当前学生的成绩列表 current_scores = graDict[sName][1] avg_score = Average(current_scores) # 按分数区间匹配等级,可按需调整阈值 if avg_score >= 90: grade = 'A' elif avg_score >= 80: grade = 'B' elif avg_score >= 70: grade = 'C' elif avg_score >= 60: grade = 'D' else: grade = 'F' print("{} earns grade = {:.2f},对应等级{}".format(sName, avg_score, grade))
运行输出
John earns grade = 80.67,对应等级B Adam earns grade = 77.25,对应等级C
内容的提问来源于stack exchange,提问作者Victória Greco
相关产品推荐
相关产品推荐

