首页 > 试题广场 >

成绩排名 (20)

[编程题]成绩排名 (20)
  • 热度指数:3893 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入描述:
每个测试输入包含1个测试用例,格式为

第1行:正整数n
第2行:第1个学生的姓名 学号 成绩
第3行:第2个学生的姓名 学号 成绩
... ... ...
第n+1行:第n个学生的姓名 学号 成绩

其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。


输出描述:
对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。
示例1

输入

3<br/>Joe Math990112 89<br/>Mike CS991301 100<br/>Mary EE990830 95

输出

Mike CS991301<br/>Joe Math990112

python 解法:

a, arr = int(input()), []
for i in range(a):
    arr.append(input().split())
arr.sort(key=lambda c: int(c[2]))
print(arr[-1][0] + " " + arr[-1][1])
print(arr[0][0] + " " + arr[0][1])
发表于 2017-10-11 09:21:26 回复(0)
student_num = int(input())
name_id = {}
grade = []

for i in range(student_num):
    # 列表information将每一行输入的数据以空格为分隔存储
    information = input().split()
    # 字典name_id以成绩为键,姓名和学号为值存储数据
    name_id[int(information[2])] = information[0] + ' ' + information[1]

for key in name_id.keys():
    # 列表grade存储成绩
    grade.append(key)

print(name_id[max(grade)])
print(name_id[min(grade)])

发表于 2017-09-25 23:52:32 回复(0)