输入 5 个学生的学号和每位学生 3 门功课的成绩,输出: 1) 每个学生的平均分; 2) 每门功课的平均分; 3) 找出每门功课中的最高分和最低分,以及它所对应的 学生的学号; 4) 找出所有 15 个分数中的最高分和最低分,以及它所 对应的课程名; 5) 平均分方差
时间: 2024-02-17 22:04:30 浏览: 48
好的,让我来帮你解决这个问题。首先,我需要确认一下输入格式,每个学生的学号和成绩是怎样输入的?
假设输入格式为:每个学生的学号和成绩之间用空格分隔,不同学生之间用换行符分隔。每个学生的成绩排列顺序为:语文、数学和英语。
那么,以下是解决方案:
```python
# 输入数据
data = []
for i in range(5):
line = input()
items = line.split()
sid = items[0]
scores = list(map(int, items[1:]))
data.append((sid, scores))
# 计算每个学生的平均分
avg_scores = []
for sid, scores in data:
avg_score = sum(scores) / len(scores)
avg_scores.append((sid, avg_score))
print("每个学生的平均分:")
for sid, avg_score in avg_scores:
print(f"{sid}: {avg_score:.2f}")
# 计算每门功课的平均分
avg_course_scores = []
for i in range(3):
course_scores = [scores[i] for sid, scores in data]
avg_course_score = sum(course_scores) / len(course_scores)
avg_course_scores.append(avg_course_score)
print("每门功课的平均分:")
print(f"语文: {avg_course_scores[0]:.2f}")
print(f"数学: {avg_course_scores[1]:.2f}")
print(f"英语: {avg_course_scores[2]:.2f}")
# 找出每门功课中的最高分和最低分,以及它所对应的学生的学号
min_scores = [100, 100, 100]
max_scores = [0, 0, 0]
min_sid = ["", "", ""]
max_sid = ["", "", ""]
for sid, scores in data:
for i in range(3):
if scores[i] < min_scores[i]:
min_scores[i] = scores[i]
min_sid[i] = sid
if scores[i] > max_scores[i]:
max_scores[i] = scores[i]
max_sid[i] = sid
print("每门功课中的最高分和最低分,以及它所对应的学生的学号:")
print(f"语文:最低分 {min_scores[0]}({min_sid[0]}),最高分 {max_scores[0]}({max_sid[0]})")
print(f"数学:最低分 {min_scores[1]}({min_sid[1]}),最高分 {max_scores[1]}({max_sid[1]})")
print(f"英语:最低分 {min_scores[2]}({min_sid[2]}),最高分 {max_scores[2]}({max_sid[2]})")
# 找出所有 15 个分数中的最高分和最低分,以及它所对应的课程名
course_names = ["语文", "数学", "英语"]
min_score = 100
max_score = 0
min_course_name = ""
max_course_name = ""
for i in range(3):
if min_scores[i] < min_score:
min_score = min_scores[i]
min_course_name = course_names[i]
if max_scores[i] > max_score:
max_score = max_scores[i]
max_course_name = course_names[i]
print("所有 15 个分数中的最高分和最低分,以及它所对应的课程名:")
print(f"最低分 {min_score}({min_course_name}),最高分 {max_score}({max_course_name})")
# 计算平均分方差
avg_scores = [avg_score for sid, avg_score in avg_scores]
mean = sum(avg_scores) / len(avg_scores)
variance = sum([(s - mean)**2 for s in avg_scores]) / len(avg_scores)
print("平均分方差:")
print(f"{variance:.2f}")
```
希望这个解决方案能够帮到你!
阅读全文