python设计一个学生类stu,属性包括姓名、学号、成绩,方法包括show()输出学生信息; 设计一个班级管理类manage,属性包括保存学生对象的列表,方法包括addstu()实现添加学生信息、sortstu()按照学号或成绩排序(若学号或成绩相等则按输入顺序输出)、showclass()输出所有学生信息。 输入3名学生的信息以及排序条件,定义1个manage类对象manager及stu类对象,实现将学生信息进行升序排序并输出
时间: 2024-02-18 15:06:00 浏览: 18
好的,我来为您解答这个问题。
首先,我们需要定义一个学生类 `stu`,包含姓名、学号、成绩三个属性,并且有一个 `show()` 方法,可以输出学生的信息。代码如下:
```python
class stu:
def __init__(self, name, num, score):
self.name = name
self.num = num
self.score = score
def show(self):
print("姓名:%s,学号:%s,成绩:%s" % (self.name, self.num, self.score))
```
接下来,我们需要定义一个班级管理类 `manage`,其中包含一个学生列表 `stulist`,并且有 `addstu()`、`sortstu()` 和 `showclass()` 三个方法。其中,`addstu()` 可以添加学生信息到 `stulist` 中;`sortstu()` 可以按照学号或成绩排序,并且相同的情况下按照输入顺序输出;`showclass()` 可以输出所有学生的信息。代码如下:
```python
class manage:
def __init__(self):
self.stulist = []
def addstu(self, s):
self.stulist.append(s)
def sortstu(self, key):
if key == 'num':
self.stulist.sort(key=lambda x: x.num)
elif key == 'score':
self.stulist.sort(key=lambda x: x.score)
else:
print("无效的排序关键字!")
return
# 处理相同的情况下按照输入顺序输出的问题
num_dict = {}
for i, s in enumerate(self.stulist):
if s.num not in num_dict:
num_dict[s.num] = i
self.stulist.sort(key=lambda x: num_dict[x.num])
def showclass(self):
for s in self.stulist:
s.show()
```
最后,我们可以通过创建一个 `manage` 类的对象 `manager`,并且向其中添加三个 `stu` 类的对象,然后调用 `sortstu()` 方法进行排序,再调用 `showclass()` 方法输出所有学生的信息,即可实现题目要求。代码如下:
```python
manager = manage()
s1 = stu("张三", "001", 80)
s2 = stu("李四", "003", 90)
s3 = stu("王五", "002", 85)
manager.addstu(s1)
manager.addstu(s2)
manager.addstu(s3)
manager.sortstu('num') # 按照学号升序排序
# manager.sortstu('score') # 按照成绩升序排序
manager.showclass()
```
输出结果如下:
```
姓名:张三,学号:001,成绩:80
姓名:王五,学号:002,成绩:85
姓名:李四,学号:003,成绩:90
```
希望我的解答能够帮助到您!