python 代码怎么写 新学期开学之后,迎来了一年一度的奖学金评比。作为负责任的班助,大奔决心帮助他们班的班长算成绩。已知大奔他们班有n个人(1<=n<=150),大奔要做的就是找出这n个人里面成绩第k名的同学,并记录下他的学号以及成绩。 输入格式: 第一行有两个整数,学生的人数n(1≤n≤150)和求第k名学生的k(1≤k≤n)。 其后有n行数据,每行包括一个学号和一个成绩,中间用一个空格分隔。 输出格式: 输出第k名学生的学号和成绩,中间用空格分隔。 输入样例: 5 3 90788001 67.8 90788002 90.3 90788003 61 90788004 68.4 90788005 73.9 输出样例: 90788004 68.4
时间: 2023-06-24 15:03:19 浏览: 100
可以使用Python的列表和排序函数来解决这个问题。首先,将输入的学生信息存储在一个列表中,然后按照成绩从高到低进行排序,最后输出第k个学生的学号和成绩即可。下面是示范代码:
```python
n, k = map(int, input().split())
students = []
for i in range(n):
sid, score = input().split()
students.append((sid, float(score)))
students.sort(key=lambda x: x[1], reverse=True)
print(students[k-1][0], students[k-1][1])
```
解释一下代码:
首先,读取输入的n和k,这里使用`map`函数将输入的字符串转换成整数。
然后,定义一个空的列表`students`,用于存储学生信息。使用`for`循环读取n行输入,每行输入包括一个学号和一个成绩,将它们存储为一个元组`(sid, score)`,然后将这个元组添加到`students`列表中。
接下来,使用列表的`sort`方法,按照元组的第二个元素(即成绩)进行排序,`key`参数指定了按照元组的第二个元素进行排序。`reverse=True`表示按照降序排列。
最后,输出第k个学生的学号和成绩,注意要将k减去1,因为列表的索引是从0开始的。
阅读全文