高考志愿排序(python)

题目:

我国的高考志愿投档是严格按照高考分数从高到低的顺序排列,排列的规则如下:

首先按照总分降序排列;

当总分相同时,再按照语文分数降序排序;

当语文分数也相同时,再按照数学分数降序排序;

当数学分数也相同时,再按照英语分数降序排序。

所有分数都相同时,再按照录入的顺序排列。

这样,每个考生的位序都是唯一的。


现在给定n(10≤n≤1000)个人的有关信息,按照上述规则排序之后,输出最前面的m(1≤m≤n)个人的序号。

输入: 

10 5
73 71 72
68 70 63
74 78 63
73 66 68
61 61 61
63 79 79
70 71 76
69 61 61
71 62 66
78 69 64  

输出:

6 7 1 3 10 

解题思路:

这题难点就在于如何实现分数的排序 ,我们当然可以像C一样开个for循环一个一个去比,但是那也太麻烦了点,这里介绍lambda函数使用方法。

这里定义一个函数名custom_sort函数,先确定排序方式然后在lambda函数中调用它,具体源码如下:

def custom_sort(student):
    return (-sum(student), -student[0], -student[1], -student[2])


n, m = map(int, input().split())
scores = []
for i in range(n):
    score = list(map(int, input().split()))
    scores.append((i + 1, score))
sorted_scores = sorted(scores, key=lambda x: custom_sort(x[1]))
for i in range(m):
    print(sorted_scores[i][0], end=" ")

或者也可以这么写

def custom_sort(student):
    return (sum(student), student[0], student[1], student[2])


n, m = map(int, input().split())
scores = []
for i in range(n):
    score = list(map(int, input().split()))
    scores.append((i + 1, score))
sorted_scores = sorted(scores, key=lambda x: custom_sort(x[1]), reverse=True)
for i in range(m):
    print(sorted_scores[i][0], end=" ")

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
高考志愿填报过程中,使用Python进行分析和决策是可行的。通过Python编程,你可以编写程序来获取各个学校的录取分数线和专业信息,并根据自己的分数情况进行匹配和选择。 首先,你可以使用Python编写程序来获取各个学校的招生信息。可以通过爬虫技术从官方网站或其他可靠的教育平台上获取学校录取分数线、位次等相关信息。爬取的数据可以存储在数据库或文件中,方便后续分析和比较。 然后,你可以通过编写Python程序来分析和比较不同学校的录取信息。可以根据自己的高考分数,与各个学校的录取分数线进行对比,判断自己是否有可能被录取。同时,还可以参考各校专业录取的平均分、位次等信息,根据自己的兴趣和优势进行合理的选择。 另外,你也可以使用Python编写程序来进行志愿填报的优化和推荐。可以根据自己的兴趣、专业要求、就业前景等因素,对不同学校和专业进行评估和排序,从而给出合理的填报建议。 总之,使用Python进行高考志愿填报的分析和决策是一种便捷有效的方法。通过编写程序来获取和分析学校录取信息,可以帮助你更好地了解各个学校和专业的情况,并做出合理的选择。希望对你的高考志愿填报有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [利用Python爬取各大高校信息并可视化分析,让你填志愿选学校不再迷茫](https://blog.csdn.net/yunyun889901/article/details/118219667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值