Python循环运行calculateGrade函数仅返回单个值不符合预期问题
问题原因
- 最核心的诱因是代码缩进错误:你贴出的代码逻辑层面没有问题,按照你的测试用例运行会输出
[50.8, 46.6]和['D', 'F']两个结果。如果你实际运行时仅返回单个F,大概率是你本地编写时把grade = []初始化语句、或者第二个评级循环的代码错误缩进进了第一个计算平均分的循环内部。这种情况下每处理一个学生的成绩,grade列表都会被清空,仅保留当前学生的评级,最终只会留下最后一个学生的F结果。 - 次要排查点:检查入参格式是否符合要求,该函数需要传入二维列表格式的成绩,正确测试入参应为
[[66, 61, 88, 26, 13], [52, 38, 7, 74, 62]],如果入参格式错误也会触发逻辑异常。 - 补充优化点:你当前的判断条件没有覆盖分数等于50的边界场景,等于50的成绩无法匹配到任何规则,建议将最后一个判断条件调整为
elif item <= 50 :避免遗漏。
修正后可直接使用的参考代码
def calculateGrade(students_marks): students_avg = [] for j in students_marks: sume = 0 for i in j: sume += i avg = sume / len(j) students_avg.append(avg) print(students_avg) grade = [] for item in students_avg: if item >= 90: grade.append('A+') elif 80 < item <= 90: grade.append('A') elif 70 < item <= 80: grade.append('B') elif 60 < item <= 70: grade.append('C') elif 50 <= item <= 60: grade.append('D') else: grade.append('F') print(grade) return grade # 测试调用 calculateGrade([[66, 61, 88, 26, 13], [52, 38, 7, 74, 62]])
内容的提问来源于stack exchange,提问作者ChaitanyaSai
相关产品推荐
相关产品推荐

