十二界蓝桥杯青少年Python中级组省赛试题详解——编程题之二:排序

梁老师
梁老师 北京小升初老师~

0 人点赞了该文章 · 47 浏览





图片

  程序首先要解决的问题是如何把输入的字符串转为数值的列表。一般有两种方法:第一种,用字符串的split方法把字符串分割为一个个数的字符串列表后,再逐个转化为数值;第二种,在字符串的前后分别添加“[”和“]”后用eval函数转化。请看下面代码及执行结果。

图片

图片

  Python实现列表排序,默认提供两种方法:第一种是列表的sort方法,第二种是内置sorted函数。它们的区别是:第一种是在原列表上排序,即源列表的元素顺序可能改变了,不返回;第二种先克隆一个列表,在克隆的列表上排序,即源列表的元素顺序不改变,然后返回这个克隆列表。请看下面的代码和执行结果。

图片

图片

  list.sort和内置sorted还有两个可选参数key=None,reverse=False。对于一些数值性列表,要使用的是reverse(倒序)。默认是顺序的,如果要倒序,就要下面的形式调用。

图片

图片

  如果列表中是一些对象,例如是学生Student,假如每个学生有两个属性:学号(不重复正整数)和姓名,能否按学号顺序排序呢?

  当然可以,不过需要使用list.sort或sorted的key可选参数。key参数的值是一个函数(注意:不是字符串)。用法参考下面的代码。

图片

图片

  连续的正整数,就是相邻两个数之间的差恒为1。如果某个地方少了一个数,那么这个数的前后两个数相差就等于2。因此,把输入的字符串转为数值列表后,先排序,然后检测相邻两个数的差,发现是2,那么它们中间的那个数就是被删除的数了。

  程序代码:

图片

  运行结果:

图片

  连续的奇数,就是相邻的两个奇数之差恒为2。如果上题中是一组连续的奇数,误删了非头尾的一个奇数,又如何把它找出来呢?修改程序试试。

图片


添加 家长论坛微信 



发布于 2024-04-26 15:25

免责声明:

本文由 梁老师 原创发布于 家长帮 ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

暂无评论

广告
All Rights Reserved Powered BY WeCenter V4.1.0 © 2025 京ICP备20005761号-2