Python设计成绩管理系统

任务要求

任务描述

假设你正在为一个学校编写一个成绩管理小程序。用户将输入一系列学生的姓名和成绩,用逗号分隔。你需要将这些数据存储在列表中。接着,程序应该计算并输出平均分、最高分和最低分的学生姓名。如果有多个学生的成绩相同,输出他们的姓名,用逗号分隔。

测试例子说明

平台会对你编写的代码进行测试:

测试输入:Alice,85;Bob,90;Charlie,85;David,78; 预期输出: 平均分: 84.5 最高分: Bob 最低分: David

相关知识

你需要掌握:如何使用Python的数据结构、列表、循环、if-else语句。

输入异常检查

如果输入的用逗号分隔的数据包含最后一个空格,可以用以下语句检查:

  1. for student_data in data:
  2. if ',' not in student_data: # 检查输入是否包含逗号
  3. continue

最终代码

# 初始化列表

students_scores = [ ]

# 循环读入用户输入的学生数据

data = input().split(';')

#检查输入是否包含了逗号# hint: too much value to unpacked 是因为最后一个用;的空格也被读进来了

for student_data in data:

    if ',' not in student_data:

        continue

    name, score = student_data.split(',')

    students_scores.append((name, int(score)))  

#计算平均分

average_score = sum([score for _, score in students_scores]) / len(students_scores)

#查找最高分和最低分对应学生

max_score = max(students_scores, key=lambda x: x[1])[1]

min_score = min(students_scores, key=lambda x: x[1])[1]

#定义最高最低分对应学生名

max_score_students = [name for name, score in students_scores if score == max_score]

min_score_students = [name for name, score in students_scores if score == min_score]


########end of your code 输出结果#########

print(f"平均分: {average_score}")

print(f"最高分: {','.join(max_score_students)}")

print(f"最低分: {','.join(min_score_students)}")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值