如何不使用sum()函数计算字典中各班级平均分及平均分的总均值
不使用内置sum()的实现方案
你猜想的嵌套循环思路是完全可行的,实现逻辑如下:
- 第一层外层遍历字典的每一组班级名称和对应成绩列表,内层遍历单个班级的所有成绩,手动累加成绩总和、统计学生人数,计算单个班级的平均分
- 后续再遍历所有班级的平均分结果,再次手动累加计算总均值
def calc_avg_without_sum(classes): class_averages = {} # 计算每个班级的平均分 for class_name, grades in classes.items(): class_total = 0 student_num = 0 for grade in grades: class_total += grade student_num += 1 class_averages[class_name] = class_total / student_num # 计算各班平均分的总均值 all_avg_total = 0 class_num = 0 for avg_score in class_averages.values(): all_avg_total += avg_score class_num += 1 average_of_averages = all_avg_total / class_num return class_averages, average_of_averages # 测试调用 classes = {"Spanish II": [100, 99, 100, 98], "US History I": [95, 96, 97, 94]} averages, total_avg = calc_avg_without_sum(classes) print("Average grades in each class:", averages) print("Average of average grades:", total_avg)
运行后输出结果和你原有使用sum()的代码结果完全一致:
Average grades in each class: {'Spanish II': 99.25, 'US History I': 95.5} Average of average grades: 97.375
内容的提问来源于stack exchange,提问作者shook
相关产品推荐
相关产品推荐

