单词频次-第12届蓝桥杯选拔赛Python真题精选

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

单词频次,本题是2020年10月25日举办的第12届蓝桥杯青少组Python编程选拔赛真题,题目要求编程统计给定一段文章中某个单词出现的次数。

先来看看题目的要求吧。

一.题目说明

编程实现:

给定一个单词及一段文章,请你输出这个单词在文章中一共出现的次数,和单词第一次出现时首字母位于文章中的位置(文章中第一个字符位置为0,第二个字符位置为1,字符包含空格)。

注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须是文章中独立的单词,不能是某个单词中的一部分。

例如:to 和tomato 不能匹配。

输入描述:

第1行为一个字符串,其中只含字母,表示给定单词(1 ≤ 字符串长度 ≤ 10)

第2行为一个字符串,其中只含字母和空格,表示给定的文章(1 ≤ 文章长度 ≤ 100000)

输出描述:

如果在文章中找到给定单词这输出两个整数,分别是单词在文章中出现的次数和第一次出现的位置,两个整数之间用一个空格隔开。如果单词在文章中没有出现,则直接输出一个整数-1。

样例输入:

To

to be or not to be is a question

样例输出:

2 0

评判标准:

  • 7分:能正确输出一组数据:

  • 7分:能正确输出两组数据:

  • 7分.能正确输出三组数据:

  • 7分:能正确输出四组数据;

  • 7分:能正确输出五组数据。

二.思路分析

这是一道简单的字符串运算题,考查的知识点包括字符串和列表的常见用法。

本题没有复杂的逻辑,只需要按照题目要求分布解决即可,基本上可以分成如下4步:

  • 统一转换大小写

  • 将文章转成列表

  • 在列表中统计单词的次数

  • 计算单词第一次出现的位置

根据题目的描述,在匹配单词时不区分大小写,因此需要先将单词和文章统一转成大写(或者小写)。

在指定字符串中查找某个单词,可以使用两种方法,一是直接使用字符串的find()方法,二是将字符串的单词拆分并保存到列表中再进行查找,因为列表处理起来更方便。

要统计某个单词出现的次数,可以直接使用列表的count()方法,如下:

list.count(obj)

相应的,如果出现次数 > 0,就需要找到单词第一次出现的位置,我们可以使用index()方法,如下:

ist.index(x[, start[, end]])

其中,x表示查找的对象,start和end都是可选的,分别表示查找的起始位置和结束位置。

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

三.编程实现

根据上面的思路分析,我们编写代码如下:

代码比较简单,说明两点:

1). 这里将单词和文章都转成大写,你也可以使用lower()转成小写;

2). 对于位置的计算,默认设置为-1,表示没找到,如果单词出现了,则使用index()获取其位置并更新。

当然,Python还支持if...else的单行写法,也可以将判断代码简化如下:

至此,整个程序就全部完成了,你也可以输入不同的单词和文章来测试效果了。

四.总结与思考

本题代码在10行左右,涉及到的知识点包括:

  • 输入输出;

  • 字符串的大小写转换;

  • 字符串转换为列表;

  • 列表的常见方法;

本题难度一般,关键是要掌握字符串和列表的常见方法,否则就有些无从下手了。

实际上,在真正的编程中,字符串和列表出现的频率是非常高的,为此,Python提供了大量好用的函数和方法,一定要多加练习,并做到灵活运用。

超平老师给你留一道思考题,如果直接使用字符串的查找方法,代码又该如何编写呢?

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

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

需要源码的,可以移步至“超平的编程课”gzh。

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值