十二界蓝桥杯青少年Python中级组省赛试题详解——编程题之二:排序
程序首先要解决的问题是如何把输入的字符串转为数值的列表。一般有两种方法:第一种,用字符串的split方法把字符串分割为一个个数的字符串列表后,再逐个转化为数值;第二种,在字符串的前后分别添加“[”和“]”后用eval函数转化。请看下面代码及执行结果。
Python实现列表排序,默认提供两种方法:第一种是列表的sort方法,第二种是内置sorted函数。它们的区别是:第一种是在原列表上排序,即源列表的元素顺序可能改变了,不返回;第二种先克隆一个列表,在克隆的列表上排序,即源列表的元素顺序不改变,然后返回这个克隆列表。请看下面的代码和执行结果。
list.sort和内置sorted还有两个可选参数key=None,reverse=False。对于一些数值性列表,要使用的是reverse(倒序)。默认是顺序的,如果要倒序,就要下面的形式调用。
如果列表中是一些对象,例如是学生Student,假如每个学生有两个属性:学号(不重复正整数)和姓名,能否按学号顺序排序呢?
当然可以,不过需要使用list.sort或sorted的key可选参数。key参数的值是一个函数(注意:不是字符串)。用法参考下面的代码。
连续的正整数,就是相邻两个数之间的差恒为1。如果某个地方少了一个数,那么这个数的前后两个数相差就等于2。因此,把输入的字符串转为数值列表后,先排序,然后检测相邻两个数的差,发现是2,那么它们中间的那个数就是被删除的数了。
程序代码:
运行结果:
连续的奇数,就是相邻的两个奇数之差恒为2。如果上题中是一组连续的奇数,误删了非头尾的一个奇数,又如何把它找出来呢?修改程序试试。

添加 家长论坛微信
全部 0条评论