设计一个程序统计某个班全体学生3门课的考试成 绩。要求能输入学生人数,并按编号从小到大的 顺序依次输入学生的成绩,再统计出每门课程的 全班总分、平均分及每个考生所有考试的总分和 平均分。
时间: 2024-12-25 14:37:07 浏览: 5
设计这样的程序,我们可以考虑以下几个步骤:
1. 首先,创建一个`Student`类,它包含三个属性:学号(ID),以及对应三门课程的成绩列表。
```python
class Student:
def __init__(self, id):
self.id = id
self.grades = [0] * 3
def add_grade(self, course_id, grade):
if 0 <= course_id < 3:
self.grades[course_id] = grade
def total_score(self):
return sum(self.grades)
def average_score(self):
return sum(self.grades) / len(self.grades)
```
2. 创建一个`Class`类,用于存储学生信息并处理输入和输出操作。
```python
class Class:
def __init__(self):
self.students = []
def input_students(self, num_students):
for _ in range(num_students):
id = int(input("请输入学生学号: "))
grades = []
for _ in range(3):
course_id = int(input(f"请输入第{(_+1)}门课程的成绩: "))
grades.append(course_id)
student = Student(id)
student.add_grade(*grades)
self.students.append(student)
def calculate_scores(self):
print("\n课程成绩汇总:")
for i in range(3):
total = sum([student.grades[i] for student in self.students])
avg = total / len(self.students)
print(f"第{i+1}门课程: 总分 {total}, 平均分 {avg}")
print("\n每位学生的总分和平均分:")
for student in sorted(self.students, key=lambda s: s.id):
total = student.total_score()
avg = student.average_score()
print(f"学生{student.id}: 总分 {total}, 平均分 {avg}")
```
3. 主函数调用上述功能:
```python
def main():
num_students = int(input("请输入班级学生总数: "))
class_obj = Class()
class_obj.input_students(num_students)
class_obj.calculate_scores()
if __name__ == "__main__":
main()
```
阅读全文