从键盘输入多行文本,格式如下: 学生端名称,姓名,班级名称,学生 ID,注册时间 姜涛,姜涛,,20092212232,2011-11-4 9:06:56 任超,任超,,20092212239,2011-11-4 9:06:56 杨阳,杨阳,,20092212302,2011-11-4 9:06:54 都英健,都英健,,20092212229,2011-11-4 9:07:04 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到Student类中作为类的私有属性。创建一个Student类型的对象数组,对学号进行升序排序并输出。
时间: 2023-09-11 09:06:58 浏览: 107
好的,我可以帮您解决这个问题。
首先,我们可以定义一个Student类,作为学生信息的数据模型,代码如下:
```python
class Student:
def __init__(self, name, id, date):
self.name = name
self.id = id
self.date = date
```
然后,我们可以编写一个函数,从多行文本中提取学生信息,封装成Student对象,并将这些对象存放在一个列表中,代码如下:
```python
def extract_students(text):
students = []
lines = text.split('\n')
for line in lines:
if line.strip() == '':
continue
fields = line.split(',')
name = fields[1]
id = fields[3]
date = fields[4]
student = Student(name, id, date)
students.append(student)
return students
```
接着,我们可以编写一个函数,对学生信息按照学号升序排序,并输出排序结果,代码如下:
```python
def sort_students(students):
students.sort(key=lambda s: s.id)
for student in students:
print(f'{student.id},{student.name},{student.date}')
```
最后,我们可以编写一个主函数,从用户输入中读取多行文本,调用上述函数进行处理,完整代码如下:
```python
class Student:
def __init__(self, name, id, date):
self.name = name
self.id = id
self.date = date
def extract_students(text):
students = []
lines = text.split('\n')
for line in lines:
if line.strip() == '':
continue
fields = line.split(',')
name = fields[1]
id = fields[3]
date = fields[4]
student = Student(name, id, date)
students.append(student)
return students
def sort_students(students):
students.sort(key=lambda s: s.id)
for student in students:
print(f'{student.id},{student.name},{student.date}')
def main():
text = input('请输入多行文本:')
students = extract_students(text)
sort_students(students)
if __name__ == '__main__':
main()
```
运行以上代码,您可以输入多行文本,程序将会输出按照学号升序排序后的学生信息。
阅读全文