如何使用数组实现录入任意数量学生并计算其平均分?
用Python列表实现多学生成绩录入与平均分计算
你可以通过Python的列表(对应你说的数组)来存储任意数量学生的信息,同时灵活处理每个学生的分数录入。下面是改进后的代码,支持自定义学生数量,且每个学生的分数数量也可以任意设置:
# 获取要录入的学生总数 student_count = int(input("请输入学生数量: ")) # 创建列表存储所有学生的信息 students = [] for _ in range(student_count): name = input("\n请输入学生姓名: ") # 录入分数,支持任意数量(用空格分隔多个分数) scores_str = input("请输入该学生的分数(空格分隔): ") # 将输入的字符串转换为整数列表 scores = list(map(int, scores_str.split())) # 计算平均分,避免无分数时除以0的错误 avg_score = sum(scores) / len(scores) if scores else 0.0 # 将当前学生的姓名、分数、平均分存入字典,再添加到总列表中 students.append({ "name": name, "scores": scores, "average": avg_score }) # 输出所有学生的平均分结果 print("\n=== 学生平均分统计 ===") for student in students: # 格式化输出,保留两位小数更直观 print(f"你好,{student['name']}。你的平均分是: {student['average']:.2f}")
关键改进点说明:
- 多学生存储:用
students列表统一管理所有学生数据,每个列表元素是一个字典,清晰记录学生的姓名、分数列表和平均分。 - 任意分数数量:不再固定3个分数,通过
split()分割输入的字符串,自动转换为分数列表,支持录入任意数量的分数。 - 容错处理:添加了
if scores else 0.0的判断,避免学生没有录入分数时出现除以0的运行错误。 - 扩展性强:后续如果需要对学生数据进行排序、筛选(比如找出平均分大于80的学生),直接操作
students列表即可。
内容的提问来源于stack exchange,提问作者mcmong23
相关产品推荐
相关产品推荐

