字符串排序-第13届蓝桥杯省赛Python真题精选

文摘   教育   2024-06-08 20:45   湖北  
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第82讲。

字符串排序,本题是2022年4月17日举办的第13届蓝桥杯青少组Python编程省赛真题编程部分第2题,13届一共举办了两次省赛,这是第一次省赛。题目要求将输入的多个英文单词按字典顺序排序输出。

先来看看题目的要求吧。

01
题目说明 

编程实现:

输入多个英文单词(单词都为小写字母),然后按字典顺序排序输出。

单词首字母相同时就比较第二个字母,以此类推。

输入描述:

输入多个由小写仪母组成的英文单词,单词之间以一个英文逗号隔开。

输出描述:

按字典顺序排序输出,且单词之间以一个英文逗号隔开

输入样例:

python, hello, world

输出样例:

hello, python, world
02
思路分析 

这是一道简单题,涉及的知识点包括输入输出,排序函数和字符串处理等。

很多同学看到字典序,不知道是什么意思,然后就卡住了,有点可惜了。
字典序到底是什么呢?
字典序,也称为词典序或字母顺序,是指按照字母或字符的自然顺序进行排列的方法。这种排序方式广泛应用于各种场景,比如字符串排序、数据结构排序和文件目录排序等。
在计算机中,字符通常使用ASCII码或Unicode码进行编码,因此字典序的比较实际上是基于这些编码值的比较。
具体的排序规则有如下3条:

1. 首字符优先

在比较两个字符串时,首先比较它们的第一个字符。如果第一个字符不同,则按照字符编码的顺序确定两个字符串的先后。

2. 逐字符比较

如果两个字符串的第一个字符相同,则继续比较后面的字符,直到找到不同的字符为止。然后根据该字符的编码值确定两个字符串的排序顺序。

3. 长度考虑

如果两个字符串在某个位置之前的所有字符都相同,但一个字符串是另一个字符串的前缀,则较短的字符串排在前面,例如,“apple”会排在“apples”前面。

对于英文单词而言,是按照ASCII码进行比较排序的,ACII码表如下:

本题中输入的三个单词为python, hello, world,它们的首字母不同,所以只需要比较一次,根据上图中的ASCII码表,h < p < w,所以排序结果为hello, python, world。
明白了什么是字典序,接下来需要考虑的是如何在编程中实现排序,难道还要自己编写代码?
完全不需要,由于排序是一个常见操作,因此Python内置了排序函数,有如下两个:
  • sort()方法
  • sorted()函数
二者都可以用于排序,但是在使用上有很大的区别,主要有如下3点:
1. 调用方式
sort()是列表对象的方法,必须由列表对象调用,如果是其它可迭代对象,需要转成列表再排序。
而sorted()是一个内置函数,可以对任何可迭代对象进行排序,比如列表、元组、字符串等。
2. 对数据的影响
sort() 是原地排序,也就是说,该方法会对原列表进行修改,不返回新的列表。
而orted()返回一个新的列表,原可迭代对象不受影响,保持不变。
3. 返回值
sort()方法返回值为 None,而sorted()函数返回排序后的新列表。

思路有了,接下来,我们就进入具体的编程实现环节

03
编程实现 
根据上面的思路分析,我们分别使用两种方法编写程序如下:
  • sort()方法
  • sorted()函数

1. sort()方法

使用sort()方法的代码如下:

2. sorted()函数

使用sorted()函数的代码如下:

至此,整个程序就全部完成了,你可以输入不同的数据来测试效果啦。

04
总结与思考 
本题代码在3行左右,涉及到的知识点包括:
  • 输入输出;

  • 排序函数;

  • 字符串相关函数;

本题代码少,非常简单,基本上也属于送分题,关键有两个,一是要深入理解什么是字典序,其排序规则是怎样的,而是熟练掌握字符串的相关函数。

有些同学因为不知道什么是字典序而放弃了这道题吗,是不是挺遗憾的。

所以说,我们在学习任何知识的时候,一定要注意基本概念的理解,要做到全面深入,而不是一知半解。

这里再补充两个说明,一是关于方法和函数的说法,在编程中,如果某个函数是属于对象的,通常称之为方法,其本质上仍然是函数。

二是Unicode和ASCII的区别和联系。

ASCII是一个包含128个字符的字符编码标准。它主要包括英文字母、数字和一些特殊符号,ASCII 码是最早的字符编码标准,只涵盖了有限的字符集。

Unicode是一个更大的字符编码标准,目的是包含全球范围内的所有字符。Unicode 包括了各种语言(包括中文)的字符、符号、标点以及其他特殊字符,总计支持数十万甚至更多不同字符。

Unicode 是 ASCII 的超集,包含了 ASCII 码中的字符,同时还包含了更多字符,让我们能够表示各种语言和符号。

超平老师给你留一道思考题,如果要按照字典序对输入的多个单词进行降序排序,该如何实现呢?

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以添加本人微信

另外,超平老师创建了一个蓝桥杯备考交流群,这是专门为老师和家长打造的免费社群,您可以与来自全国各地的老师、家长共同交流经验,分享学习心得。

超平老师也会给大家带来及时的赛事动态,备考攻略,真题资源分享,帮助各位更好备考第15届蓝桥杯赛事,力争取得优异的成绩。

扫码或长按加入微信群

超平的编程课
青少儿编程教育专家,中国人民大学硕士,大学讲师,曾任知名上市机构金牌讲师,16年编程教研经验。大耳猴少儿编程联合创始人,致力于通过编程教育提升孩子的逻辑思维、数学思维和计算思维,迎接AI时代。
 最新文章