用python设计一个考试成绩统计系统。共语文、数学和英语三个科目。考试人数不限(至少5人),每门科目的分数自行设置。要求: (1)统计每门科目的最高分、最低分和平均分 (2)每个学生分数最高的科目、分数最低的科目和总分
时间: 2024-03-14 16:46:00 浏览: 76
好的,我可以帮您设计一个考试成绩统计系统。以下是代码实现:
```python
# 定义科目和分数范围
subjects = ['语文', '数学', '英语']
score_range = (0, 100)
# 获取考试人数和成绩
def get_scores():
scores = []
while True:
try:
n = int(input('请输入考试人数:'))
if n < 5:
print('考试人数不能少于5人,请重新输入:')
else:
break
except:
print('输入的不是整数,请重新输入:')
for i in range(n):
name = input(f'请输入第{i+1}个学生的姓名:')
subject_scores = []
for subject in subjects:
while True:
try:
score = int(input(f'请输入{name}的{subject}成绩:'))
if score < score_range[0] or score > score_range[1]:
print(f'{subject}成绩应在{score_range[0]}和{score_range[1]}之间,请重新输入:')
else:
subject_scores.append(score)
break
except:
print('输入的不是整数,请重新输入:')
scores.append((name, subject_scores))
return scores
# 统计每个学生的最高分、最低分和总分
def student_stats(scores):
stats = []
for name, subject_scores in scores:
max_score = max(subject_scores)
min_score = min(subject_scores)
total_score = sum(subject_scores)
stats.append((name, max_score, min_score, total_score))
return stats
# 统计每门科目的最高分、最低分和平均分
def subject_stats(scores):
stats = []
for i, subject in enumerate(subjects):
subject_scores = [s[i] for _, s in scores]
max_score = max(subject_scores)
min_score = min(subject_scores)
avg_score = sum(subject_scores) / len(subject_scores)
stats.append((subject, max_score, min_score, avg_score))
return stats
# 输出统计结果
def print_stats(stats):
for s in stats:
print(s)
# 测试代码
scores = get_scores()
student_stats = student_stats(scores)
subject_stats = subject_stats(scores)
print('每个学生的最高分、最低分和总分:')
print_stats(student_stats)
print('每门科目的最高分、最低分和平均分:')
print_stats(subject_stats)
```
运行程序后,首先需要输入考试人数和每个学生的姓名和成绩。然后程序会自动计算每个学生的最高分、最低分和总分,以及每门科目的最高分、最低分和平均分,并输出统计结果。
注意,这个程序只是一个简单的示例,没有做任何的输入校验和异常处理。在实际应用中,需要根据具体情况添加相应的校验和异常处理代码,以确保输入的数据的正确性和程序的稳定性。
阅读全文