学员需要设计一个学员信息表,并在主函数中读取输入,根据输入的内容作出相应的动作。 输入共有4种,格式如下: A <姓名> <分数>,向信息表的末尾添加一条记录,内容为<姓名> <分数>,分数均为整数。 注意:如果表中已有同一个人的记录,那就只更新分数。 R <姓名>,删除表中指定姓名的条目,不存在则不做处理。 P,按照<姓名> <分数>的格式打印整个信息表,每条记录占1行。如果表为空,则输出一行[空]。 S,将整个信息表的数据按照分数的降序排序。 注意 :为了保证排序结果稳定,输入的数据保证不会有两条记录有相同的分数。 每种格式的输入占一行,测试有多行输入。详细见测试说明。 测试说明 测试输入: A 小明 89 A 小张 91 A 小李 67 P R 小李 S P 预期输出: 小明 89 小张 91 小李 67 小张 91 小明 89
时间: 2024-02-15 13:02:12 浏览: 111
好的,这是一个学员信息管理系统的问题,我可以帮你解答。以下是代码实现:
```python
def add_record(name, score, records):
"""
向记录表中添加一条记录,如果记录已存在则更新分数
"""
for i in range(len(records)):
if records[i][0] == name:
records[i][1] = score
return
records.append([name, score])
def remove_record(name, records):
"""
从记录表中删除指定姓名的记录
"""
for i in range(len(records)):
if records[i][0] == name:
del records[i]
return
def print_records(records):
"""
按照<姓名> <分数>的格式打印整个信息表
"""
if len(records) == 0:
print('[空]')
else:
for record in records:
print(record[0], record[1])
def sort_records(records):
"""
按照分数的降序排序
"""
records.sort(key=lambda x: x[1], reverse=True)
def main():
records = []
while True:
try:
command = input().strip().split()
if command[0] == 'A':
add_record(command[1], int(command[2]), records)
elif command[0] == 'R':
remove_record(command[1], records)
elif command[0] == 'P':
print_records(records)
elif command[0] == 'S':
sort_records(records)
except:
break
if __name__ == '__main__':
main()
```
你可以运行这段代码,输入测试样例中的内容,即可得到预期的输出。
阅读全文