【问题描述】 从键盘中读入最多不超过50个学生的学生信息(包括空格隔开的姓名、学号、年龄信息,以学号从低到高排序) 【输入形式】 每次键盘读入最多不超过50个学生的学生信息: 第一行为学生人数; 后面每一行为空格隔开的学生学号、姓名、年龄,其中学号和年龄都是整数。 【输出形式】 分别以姓名顺序(从低到高)和年龄顺序(从低到高)将学生信息输出,每行输出一位学生的信息,其中学号占3位,姓名(英文)占6位,年龄占3位,均为右对齐。年龄相同时按姓名从低到高排序。两种顺序的输出结果用一行空行相隔。
时间: 2024-03-17 08:45:53 浏览: 150
好的,这是一个需要编写Python代码的问题,需要一定的编程基础才能完成。以下是一个可能的解决方案,供您参考:
```python
# 读入学生信息
n = int(input()) # 学生人数
students = []
for i in range(n):
info = input().split()
student = {'id': int(info[0]), 'name': info[1], 'age': int(info[2])}
students.append(student)
# 按学号从低到高排序
students.sort(key=lambda x: x['id'])
# 按姓名从低到高排序
students_by_name = sorted(students, key=lambda x: x['name'])
# 按年龄从低到高排序
students_by_age = sorted(students, key=lambda x: (x['age'], x['name']))
# 输出结果
for student in students_by_name:
print('{:3d} {:<6s} {:3d}'.format(student['id'], student['name'], student['age']))
print()
for student in students_by_age:
print('{:3d} {:<6s} {:3d}'.format(student['id'], student['name'], student['age']))
```
这段代码首先读入学生信息,然后按照要求分别排序并输出。在输出时使用了字符串格式化来让每一列占据固定的宽度并右对齐。
阅读全文