编写一个程序,输入全班学生N门课的成绩,分别用函数实现下列功能: (1)计算每个学生的平均分; (2)计算每门课的平均分。
时间: 2024-12-23 18:24:34 浏览: 3
首先,我们可以设计一个简单的数据结构来存储每个学生的成绩,比如字典`student_scores`,其中键是学生姓名,值是一个列表,包含各科成绩。接下来,我们创建两个函数,一个用于计算单个学生的平均分,另一个用于计算每门课的平均分。
```python
def input_student_scores(n):
student_scores = {}
for i in range(1, n+1):
name = input(f"请输入第{i}位同学的姓名:")
scores = []
for _ in range(i):
score = float(input(f"{name},请输入第{i}门课程的成绩:"))
scores.append(score)
student_scores[name] = scores
return student_scores
def calculate_student_avg(student_scores):
avg_scores = {}
for name, scores in student_scores.items():
avg = sum(scores) / len(scores)
avg_scores[name] = avg
return avg_scores
def calculate_subject_avg(student_scores):
subject_averages = {i: [] for i in range(1, len(next(iter(student_scores.values()))) + 1)}
for student, scores in student_scores.items():
for j, subject_score in enumerate(scores):
subject_averages[j].append(subject_score)
subject_results = {}
for subject, scores_list in subject_averages.items():
subject_results[subject] = sum(scores_list) / len(scores_list)
return subject_results
# 输入所有学生的成绩
n_students = int(input("请输入班级有多少名学生:"))
students_data = input_student_scores(n_students)
# 计算每个学生的平均分
student_avg = calculate_student_avg(students_data)
print("\n每个学生的平均成绩:", student_avg)
# 计算每门课的平均分
subject_avg = calculate_subject_avg(students_data)
print("\n每门课的平均成绩:", subject_avg)
```
当你运行这个程序,它将依次请求每位学生的姓名和每门课程的成绩,并随后计算他们的个人平均分以及每门课的平均分。
阅读全文