看来这道题python部分没有题解,那我就来做第一个吃螃蟹的人
总体思路:
1、确定计划面试名额
2、对所有报名人进行排序:
这里是这道题的重点难点:如何按照 报名号升序+成绩降序 进行排序?
list1.sort(key=lambda x: (-x[1],x[0]))
对这一步:
(1)key=:sort()方法中,key参数的要求是必须传入一个函数,告诉sort对什么内容进行排序
(2)-x[1]:正--代表升序(从小到大),负--代表降序(从大到小)
(参考:https://www.nowcoder.com/discuss/837282375934476288?sourceSSR=users)
3、根据面试名额,在已经排序后的报名表list1中,找出最后一位可以参加面试的报名人的成绩(自测案例中为88)
4、接下来就简单了,目前到这一步我们已经知道分数线,并对报名表进行了排序,只要取出每一位报名人的成绩与分数线进行比较就可以得到通过面试测试,可以参加面试的人的信息和个数
num,jnt = input().split(' ') # 接收 报名人数 和 计划录取人数
# 第一步
cnt = int(int(jnt)*1.5) # 确定面试名额
list1 = []
while True:
try:
idx,score = input().split(' ') # 获取每个人的报名号和成绩,并以空格分割
list1.append((int(idx),int(score))) # 将报名号和成绩转化为整数型添加进list1列表
except:
break
# 第二步
list1.sort(key= lambda x: (-x[1],x[0])) # 对list1中每个元素(每个人的报名号和成绩组成的元组),以成绩降序(-x[1])报名号升序(x[0])进行排序
# 第三步
line = list1[cnt-1][1] # 确定面试分数线(计划录取4人,就取出列表第4位(索引为4-1=3)报名人的成绩
# 第四步
list2 = []
num = 0 # 初始化统计面试人数
for i in list1: # 对已经排序后的list1,取出每一位报名人的信息(报名号,成绩)
if i[1] >= line: # 判断:如果报名人的成绩在面试分数线及以上
num += 1 # 面试人数+1
list2.append(i) # 将报名人添加进待面试名单
# 打印结果
print(line,num) # 打印分数线和面试人数
for i in list2: # 循环取出待面试名单中的报名人信息
print(i[0],i[1]) # 打印报名人的报名号和成绩

京公网安备 11010502036488号