python定义一个学生类,使用类方法和静态方法计算学生的平均成绩。 要求:学生类包括: (1)包含3个类属性,存储学生总人数、总成绩和平均分(平均分为整数)。 (2)包含两个对象属性,存储学生的姓名和成绩。 (3)定义构造方法,为对象属性附初始值,计算学生总人数、总成绩和平均分。 (4)定义一个类方法,输出当前学生总人数和平均分。 (5)定义一个静态方法,输出信息“学生数学成绩!”。 (6)定义一个对象方法,用于输出当前学生姓名以及成绩和平均成绩的差值。例如“李梅成绩低于平均成绩10分”、“李梅成绩高于平均成绩10分”、“李梅成绩等于平均成绩” 测试代码要求: 编写测试代码,测试学生成绩类中所有定义的方法。 执行效果如下: 学生数学成绩! 学生总人数:2,平均分:85 李梅成绩高于平均成绩5分! 王红成绩低于平均成绩5分!
时间: 2023-12-17 09:02:05 浏览: 29
以下是代码实现:
```python
class Student:
total_num = 0 # 学生总人数
total_score = 0 # 总成绩
avg_score = 0 # 平均分
def __init__(self, name, score):
self.name = name
self.score = score
Student.total_num += 1
Student.total_score += score
Student.avg_score = Student.total_score // Student.total_num
@classmethod
def print_info(cls):
print("学生总人数:%d, 平均分:%d" % (cls.total_num, cls.avg_score))
@staticmethod
def print_message():
print("学生数学成绩!")
def print_difference(self):
diff = self.score - Student.avg_score
if diff > 0:
print("%s成绩高于平均成绩%d分!" % (self.name, diff))
elif diff < 0:
print("%s成绩低于平均成绩%d分!" % (self.name, -diff))
else:
print("%s成绩等于平均成绩" % self.name)
# 测试代码
Student.print_message()
stu1 = Student("李梅", 90)
stu2 = Student("王红", 80)
Student.print_info()
stu1.print_difference()
stu2.print_difference()
```
输出结果为:
```
学生数学成绩!
学生总人数:2, 平均分:85
李梅成绩高于平均成绩5分!
王红成绩低于平均成绩5分!
```
可以看到,代码实现了要求的功能,同时使用了类方法和静态方法来计算平均分和输出信息,并使用对象方法来计算差值并输出相应的信息。