Python如何录入多学生多份成绩并统计各学生的平均分数
Python学生成绩统计修改方案
问题说明
原有代码未存储录入的学生成绩,仅在录入完成后输出done,无法完成按学生维度统计成绩数量和平均分的需求,同时原有代码的异常捕获逻辑存在漏洞:输入非法内容后第二次输入未做校验,连续两次输入非数字会直接抛出异常退出。
完整修改后代码
# 存储所有学生成绩,索引对应学生序号(学生从1开始计数) all_students_scores = [] student_number = 1 while True: current_scores = [] # 循环录入当前学生的成绩 while True: try: score = int(input(f"请输入学生{student_number}的成绩(输入-1结束当前学生录入):")) except ValueError: print("输入的成绩不是有效数字,请重新输入。") continue if score == -1: break # 成绩合法且不是结束标志,存入当前学生成绩列表 current_scores.append(score) # 把当前学生的成绩存入总列表 all_students_scores.append(current_scores) # 询问是否还有下一个学生 more_student = input("是否还有其他学生?(是/否):") if more_student != "是": break student_number += 1 # 输出统计结果 for idx, scores in enumerate(all_students_scores, start=1): count = len(scores) avg = sum(scores)/count if count != 0 else 0 print(f"学生{idx}共有{count}个成绩,平均分为{avg:.2f}。")
修改说明
- 新增
all_students_scores列表存储所有学生的成绩,每个学生的成绩单独存为一个子列表 - 优化了异常捕获逻辑,只要输入非数字就会循环提示重新输入,不会出现连续输错直接崩溃的问题
- 去掉了重复的代码逻辑,用嵌套循环简化了录入流程
- 最后新增统计逻辑,遍历所有学生的成绩,计算数量和平均分后按要求输出
- 所有交互提示已翻译为中文,符合使用需求
内容的提问来源于stack exchange,提问作者codingnoob1004
相关产品推荐
相关产品推荐

