[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第26讲。
字符串处理,本题是2020年6月20日举办的第11届蓝桥杯青少组Python编程省赛真题,题目要求编程实现字符串处理,如果该字符串以er,ly或者ing后缀结尾的,则删除该字符串后缀的字符串,否则原样输出。
先来看看题目的要求吧。
一.题目说明
时间限制:4000Ms
内存限制:589824K3
编程实现:
输入一个字符串,如果该字符串以er,ly或者ing后缀结尾的,则删除该字符串后缀的字符串,否则将原字符串输出。
输入描述:
输入一个字符串
输出描述:
输出删除后的字符或原字符串
样例输入:
driver
样例输出:
driv
评分标准:
-
10分:能正确输出一组数据;
-
10分:能正确输出两组数据;
-
10分:能正确输出三组数据;
-
20分:能正确输出四组数据。
二.思路分析
这是一道和字符串操作相关的题目,考查的知识点主要包括字符串的截取运算。
根据题目描述,字符串后缀有如下3种情况:
-
er
-
ly
-
ing
所以,我们需要获取字符串的最后两个或三个字符,这不就是字符串截取操作么。
在Python编程中,提供了大量的字符串运算符,如图:
很显然,[:]运算符正是解决本题的关键,通常称作字符串截取运算。
该运算符有两个参数,其用法如下:
字符串[start : end]
在使用的时候,注意以下几点:
-
遵循左闭右开原则,即包含start,不包含end,典型的虎头蛇尾特性;
-
end必须比start大,否则得到的是空字符串;
-
可以使用负索引,当索引为-1时,表示最后一个字符;
-
可以省略start,表示从第一个字符开始截取;
-
可以省略end,表示截取从start开始后所有的字符;
有了[:]这个强大的运算符工具,代码就变得非常简单了,接下来,我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析,我们直接编写程序如下:
代码比较简单,说明3点:
1). s[-2:],start = 2,end省略了,其意思是指从倒数第二个字符串开始往后截取,这样就可以获取字符串最末尾两个字符构成的子串了;
2). s[:-2],start省略了,end = -2,其意思是从第一个字符开始截取,一直到倒数第二个字符截止,不包括倒数第二个字符,这样就可以去掉字符串的最后两个字符了;
3). 在使用[start:end]截取的时候,start和end可以省略,但是冒号不能省略。
测试程序,输入driver,效果如下:
输入friendly,效果如下:
输入feeling,效果如下:
输入python,效果如下:
测试程序的时候,需要将各种情况都测试一遍。至此,整个程序就全部完成了,你也可以输入不同的日期来测试效果。
四.总结与思考
本题的分数为50分,代码在8行左右,涉及到的知识点包括:
-
基本的输入输出;
-
字符串运算符,尤其是截取运算符;
-
多分支条件语句;
作为省赛的第一题,难度一般,基本上属于送分题,关键是要熟练掌握字符串的基本运算。如果不使用[:]运算符的话,就需要结合循环来逐个处理字符串了,代码相对要麻烦一些。
需要注意的是,在Python编程中,列表有一个超级好用的切片操作,如下:
list[start: stop: step]
而字符串也可以当作列表来操作,所以字符串也支持切片操作。这就意味着,对于字符串,可以正向截取,也可以反向截取,非常的强大。
你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄
需要源码的,可以移步至“超平的编程课”gzh。