成绩表中查找排名第k的学生

给定一个成绩表和整数k,需要设计算法找出排名倒数第k的学生信息。输入包括学生的姓名和成绩,输出为第k名学生的姓名及成绩,成绩保留一位小数。例如,对于5个学生,k=3的情况,输出为'小蓝'。
摘要由CSDN通过智能技术生成

给定一个长度为n的成绩表(成绩表中包含学生的姓名、成绩),以及一个整数k,请设计一个算法求出成绩表从小到大排序后的第k个学生的姓名、成绩(成绩保留到小数点后1位),并列则全部输出。

输入描述:

第一行两个正整数,n和k 然后后n行,每行两个整数,分别代表每个学生的姓名和成绩

输出描述:

所有排名倒数第k的学生信息,多个学生时按其输入时的顺序输出,中间以,分隔。
输入样例:

5 3
小红 87.2
小白 92
小橙 99.3
小绿 87
小蓝 89

输出样例: 小蓝

import sys

input_data = sys.stdin.read().strip().split('\n')
n, k = map(int, input_data[0].split())
students = []
for i in range(1, n+1):
    name, score = input_data[i].split()
    students.append((name, round(float(score), 1)))
students_sorted = sorted(students, key=lambda x: x[1])
kth_score = students_sorted[k-1][1]
result = [name for name, score in students_sorted if score == kth_score]
print(",".join(result))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值