Python排序 -- 内附蓝桥题:错误票据,奖学金

news2025/1/16 7:46:43

排序

~~不定时更新🎃,上次更新:2023/02/28
在这里插入图片描述

🗡常用函数(方法)

1. list.sort() --> sort 是 list 的方法,会直接修改 list

举个栗子🌰

li = [2,3,1,5,4]
li.sort()
print(li) # [1, 2, 3, 4, 5]

2. sorted(iterable,key,reverse) --> 将可迭代对象进行排序,无法修改可迭代对象

举个栗子🌰

li = [2,3,1,5,4]
new = sorted(li)
print(li) # [2, 3, 1, 5, 4]
print(new) # [1, 2, 3, 4, 5]

🔴 sorted的参数 key --> 指定哪个元素排列举个栗子🌰

li = [[1,2,3],[5,6,7],[1,1,6]]
# 对每个列表的第一个元素进行排序(升序)
one = sorted(li,key=lambda x:x[0])# 结果为 [[1, 2, 3], [1, 1, 6], [5, 6, 7]]
print(one)
# 在第一个元素进行升序排序的基础上,对第二个元素进行升序排序
two = sorted(li,key=lambda x:(x[0],x[1])) # 结果为[[1, 1, 6], [1, 2, 3], [5, 6, 7]]
print(two)

🔵 sorted的参数 reverse–> 指定排列顺序,不设置默认为升序举个栗子🌰

li = [1,8,5,3,4]
# 默认升序
print(sorted(li)) # [1, 3, 4, 5, 8]
# 降序
print(sorted(li,reverse=True)) # [8, 5, 4, 3, 1]

⚫️ 补充:用 key 也可以实现降序效果,只需要将 x 映射为负数即可,举个栗子🌰 ****

li = [1,8,5,3,4]
# 降序
print(sorted(li,key = lambda x:-x)) # [8, 5, 4, 3, 1]

蓝桥例题1- 错误票据 🎫

题目描述

某涉密单位下发了某种票据,并要在年终全部收回。

每张票据有唯一的 ID 号。全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。

因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外一个 ID 重号。

你的任务是通过编程,找出断号的 ID 和重号的 ID

假设断号不可能发生在最大和最小号。

输入描述

输入描述

要求程序首先输入一个整数 N (N<100)表示后面数据行数。

接着读入 N 行数据。

每行数据长度不等,是用空格分开的若干个(不大于 100 个)正整数(不大于 1 0 5 10^5 105)。

输出描述

要求程序输出 1 行,含两个整数 m,n,用空格分隔。

其中,m 表示断号 IDn 表示重号 ID

输入输出样例

示例

输入

2
5 6 8 11 9
10 12 9

输出

7 9

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 64M

思路

  1. 通过 + 把列表进行拼接可以得到一个完整的列表
  2. 用 sorted 函数排序,得到一个有序的列表
  3. 如果前一个号 != 后一个号有两种情况:
    • 情况1:出现重号 --> 即 前一个号 == 后一个号
    • 情况2:出现断号 --> 即 前一个号 + 2 == 后一个号(实际上排除掉情况 1,就是情况 2)

代码

n = int(input())
li = []
for i in range(n):
  li += list(map(int,input().split()))

li = sorted(li)

for i in range(len(li)-1):
    if li[i]+1 != li[i+1]: # 断号/重号
        if li[i] == li[i+1]: # 重号
            n = li[i]
        else: # 断号
            m = li[i]+1

print(m,n)

蓝桥例题2 - 奖学金 💸

题目描述

某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5 名学生发奖学金。期末,每个学生都有 3 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。

任务:先根据输入的 3 门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前 5 名学生的学号和总分。注意,在前 5 名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:

7 279
5 279

这两行数据的含义是:总分最高的两个同学的学号依次是 7 号、5 号。这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和),但学号为 7 的学生语文成绩更高一些。如果你的前两名的输出数据是:

5 279
7 279

则按输出错误处理,不能得分。

输入描述

1 行为一个正整数 n(6≤n≤300),表示该校参加评选的学生人数。

2n+1 行,每行有 3 个用空格隔开的数字,每个数字都在 0100 之间。第 j 行的 3 个数字依次表示学号为 j−1 的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为 1 ~ n(恰好是输入数据的行号减 1)。

所给的数据都是正确的,不必检验。

输出描述

输出共有 5 行,每行是两个用空格隔开的正整数, 依次表示前 5 名学生的学号和总分。

输入输出样例

示例 1

输入

6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

输出

6 265
4 264
3 258
2 244
1 237

示例 2

输入

8
80 89 89
88 98 78
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

输出

8 265
2 264
6 264
1 258
5 258

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路

  1. 将 1 个学生的总分,学号,语数英成绩存在一个列表中
  2. 通过 sorted 中的 key 参数 和 reverse 参数 使得可以按照总分排序降序,总分相同,语文排序降序
  3. 为什么不用排学号?由于学号一开始是升序的,所以在排序中,必然也会尽量保证其升序的性质,也就是说,总分相同和语文成绩相同的学生,学号小的必然在前,因为学号保持了其有序性。

代码

n = int(input())
li = []
for i in range(n):
    x,y,z = map(int,input().split())
    Sum = x + y + z # 总分
    li.append([i+1,Sum,x,y,z]) # 添加五元组

li = sorted(li,key=lambda x:(x[1],x[2]),reverse=True) # 总分排序降序,总分相同,语文排序降序

for i in range(5):
    print(li[i][0],li[i][1])

如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

New Bing怼人、说谎、PUA,ChatGPT已经开始胡言乱语了

最近&#xff0c;来自大洋彼岸那头的ChatGPT科技浪潮席卷而来&#xff0c;微软将chatGPT整合搜索引擎Bing开启内测后&#xff0c;数百万用户蜂拥而至&#xff0c;都想试试这个「百事通」。 赶鸭子上架&#xff0c;“翻车”了&#xff1f; 但短短上线十几天&#xff0c;嵌入了…

5个开源的Java项目快速开发脚手架

概览 &#xff1a; GunspigRuoYiJeecg-bootiBase4J 一、Guns 推荐指数 &#xff1a;⭐⭐⭐⭐⭐ 简介 采用主流框架 &#xff1a; 基于 Spring Boot2.0版本开发&#xff0c;并且支持 Spring Cloud Alibaba 微服务。功能齐全 &#xff1a;包含系统管理&#xff0c;代码生成&a…

python线程池【ThreadPoolExecutor()】批量获取博客园标题数据

转载&#xff1a;蚂蚁学python 网址&#xff1a;【【2021最新版】Python 并发编程实战&#xff0c;用多线程、多进程、多协程加速程序运行】 https://www.bilibili.com/video/BV1bK411A7tV/?p8&share_sourcecopy_web&vd_sourced0ef3d08fdeef1740bab49cdb3e96467实战案…

SpringMVC 面试题

1、什么是SpringMVC&#xff1f; SpringMVC是一个基于Java的实现了MVC设计模式的“请求驱动型”的轻量级WEB框架&#xff0c;通过把model&#xff0c;view&#xff0c;controller 分离&#xff0c;将web层进行职责的解耦&#xff0c;把复杂的web应用分成逻辑清晰的几个部分&am…

Arduino-PWM调光

PWM调光实验什么是PWM&#xff1f;PWM是&#xff08;Pulse Width Modulation&#xff09;的简称&#xff0c;中文我们说这是脉冲宽度调制。脉冲宽度调制是一种模拟控制方式&#xff0c;根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置&#xff0c;来实现晶体管或MOS管导通…

react 函数式组件的hooks

目录 useState useEffect useCallback useMemo useRef useContext useReducer 自定义hooks useState 函数式组件的状态 &#xff0c;格式&#xff1a; const [value,setValue] useState( {xxxx} ) console.log([value, setValue])打印一下可以看到&#xff1a; value…

腾讯安全与锐捷网络战略合作,威胁情报能力“被集成”

2月28日&#xff0c;腾讯安全和锐捷网络在北京联合举办“威胁情报”战略合作发布会。双方发布了一款集成了腾讯安全威胁情报的新一代防火墙&#xff0c;并举办战略合作签约仪式。会上&#xff0c;锐捷网络安全产品事业部总经理项小升、腾讯安全总经理陈龙代表双方签署战略合作协…

taobao.user.avatar.get

&#xffe5;开放平台基础API不需用户授权 根据混淆nick查询用户头像 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 点击获取key和secret 请求参数 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey,…

MyBatis中#{}和${}的区别

目录 前言 1、处理参数的方式不同 2、${}的优点 3、SQL注入问题 4、like查询问题 前言 #{}和${}都可以在MyBatis中用来动态地接收参数&#xff0c;但二者在本质上还是有很大的区别。 1、处理参数的方式不同 ${} &#xff1a;预编译处理 MyBatis在处理#{}时&#xff0c…

【Android】全局加载框的使用

项目需求 在网络加载中使用网络加载框&#xff0c;在请求数据或者其他耗时操作的时候&#xff0c;显示加载框&#xff0c;当数据返回之后或者操作完成的时候加载框取消。 效果如下&#xff1a; 需求实现 使用一个开源库【Gloading】实现 项目地址链接: Gloading 1.引入依赖…

umi 中如何使用 px2rem 插件做rem适配

umi 中如何使用 px2rem 插件做rem适配在umi的src下面创建两个文件app.ts和document.ejs下载lib-flexible和postcss-px2rem-exclude在.umirc.ts文件中进行配置和postcss-px2rem-exclude的引入在app.ts文件中引入lib-flexible如果px2rem配置无法生效&#xff0c;那么我们就要在do…

Javascript的API基本内容(五)

一、js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。 比如&#xff1a;变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型&#xff0c; 定义了一套操作HTML文档的API BOM 浏览器对象模型&#xff0c;定义了一套操作浏览器窗口的API 二、loc…

JavaScript从零开始 学习记录(二)

前言 寒假花了大气力去整理公众号&#xff0c;因而一些任务没有完成&#xff0c;但没有关系&#xff0c;毕竟计划赶不上变化&#xff0c;接着学习&#xff0c;争取早日开发油猴脚本 笔记范围 从这节视频到那节视频结束 课程目标 能够知道为什么要有数组能够创建数组能够获…

“来源可靠、程序规范、要素合规”与“四性”

《从技术可行性的视角看电子档案的“四性”》一文中已经明确&#xff0c;笔者认为的电子档案“四性”是指“真实性、完整性、可用性和安全性”。而《从特斯拉“刹车失灵”事件看电子档案的法定要求》一文中&#xff0c;笔者对于“来源可靠、程序规范、要素合规”的解读如下&…

Qt基础之三十:百万级任务并发处理

在实际的开发过程中,经常会遇到要处理大量任务场景,比如说压缩文件夹中的所有文件、对文件夹中的所有文件加密、上传文件夹中的所有文件到ftp等等。这里说百万级并不夸张,理论上文件夹中有任意多个文件都是可以的。 本文以压缩文件夹中的100万张jpg图片为例,压缩工具使用的…

外卖扫码点餐系统源码 后台管理端+商家端+门店端+小程序用户端源码

外卖点餐 堂食点餐 扫码点餐 本套扫码点餐系统源码基于java语言开发&#xff0c;移动端原生小程序&#xff0c;SaaS模式。代码完整&#xff0c;带部署调试视频。 系统由总后台管理端商家端门店端小程序用户端组成&#xff0c;支持扫码点单、计费结账、出菜上菜、菜品管理、菜…

【办公类-19-02】办公中的思考——Python批量制作word文本框的名字小标签,用A4word打印(植物角、家长会、值日生)

背景需求&#xff1a; 2月28日去小班带班&#xff0c;看到班主任制作了一些小手印花束作为家长会的家长座位提示&#xff0c;上面贴着“”圆形白色的幼儿名字贴”。 我立刻想起了制作的过程——在word中插入文本框&#xff0c;然后复制无数个文本框&#xff0c;摆好位置&#…

【AI绘画】绝美春天插画,人人都是插画师

春天&#xff0c;自然界重新苏醒&#xff0c;生机勃勃&#xff0c;百花争艳&#xff0c;万籁俱寂。一切都被新的生命活力所染上。春风拂面&#xff0c;一股清新的空气流过&#xff0c;仿佛带着一种神秘的力量&#xff0c;让人心旷神怡&#xff0c;心情舒畅、轻松愉悦。 突然&a…

549、RocketMQ详细入门教程系列 -【消息队列之 RocketMQ(三)】 2023.02.28

目录一、Spring 整合 RocketMQ1.1 消息生产者1.2 消息消费者1.3 Spring 配置文件1.4 运行实例程序二、参考链接一、Spring 整合 RocketMQ 不同于 RabbitMQ、ActiveMQ、Kafka 等消息中间件&#xff0c;Spring 社区已经通过多种方式提供了对这些中间件产品集成&#xff0c;例如通…

WebRTC Opus编码器的创建与参数细节分析( sdp -> native )

这几天在做一些WebRTC音频改进方面的调查工作&#xff0c;在阅读Chromium源码的过程中&#xff0c;就顺便记录下来&#xff0c;便于日后回顾。本文基于Chromium 85源码分析&#xff0c;由于Chromium的快速发展&#xff0c;很有可能不适合于跨度太大的Chromium版本。大家知道Opu…