用python编写一个程序,已有若干学生的数据,包括学号、姓名、成绩,要求输出这些学生的数据并计算出学生人数和平均成绩(要求将学生人数和总成绩用静态数据成员表示)。
时间: 2024-10-26 07:03:40 浏览: 34
在Python中,我们可以创建一个名为`Student`的类来存储每个学生的数据,并使用类变量作为静态数据成员来存储学生总数和总成绩。以下是一个简单的示例:
```python
class Student:
# 静态数据成员,初始化为0
student_count = 0
total_score = 0
def __init__(self, id, name, score):
self.id = id
self.name = name
self.score = score
# 每当创建一个新的实例时,增加学生数并累加分数
Student.student_count += 1
Student.total_score += score
@classmethod
def print_students(cls):
for student in cls.__subclasses__(): # 获取所有子类实例
print(f"学号:{student.id}, 姓名:{student.name}, 成绩:{student.score}")
@classmethod
def get_stats(cls):
if cls.student_count > 0: # 防止除以零错误
average_score = cls.total_score / cls.student_count
return f"学生人数:{cls.student_count}, 平均成绩:{average_score:.2f}"
else:
return "尚未添加学生数据"
# 示例使用
student1 = Student(1, '张三', 90)
student2 = Student(2, '李四', 85)
Student.print_students() # 输出所有学生信息
print(Student.get_stats()) # 输出学生人数和平均成绩
```
在这个例子中,我们定义了一个`Student`类,它有三个实例属性:id, name, 和 score。同时,我们还定义了两个类方法:`print_students`用于打印所有学生的信息,`get_stats`用于计算并返回学生人数和平均成绩。
注意,这里我们假设学生类可以有多个子类,因为`__subclasses__()`会获取所有的子类实例。如果只有一个标准的学生类,那么可以根据实际情况修改`print_students`方法来只显示当前类的实例。
阅读全文