消除字母-第14届蓝桥杯省赛Scratch中级组真题第6题
2023-05-29 20:31:31
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第141讲。
消除字母,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第6题,也是最后一题,题目要求编程创作消除字母游戏 。当玩家输入一个字母后,阿拉蕾将此字母和它的前两项与后两项字母说出,然后从字母表中删除这五个字母。先来看看题目的要求吧。

2). 等待1秒,阿拉蕾说:"请输入一个字母",舞台下方出现询问框;

3). 当在询问框中输入一个字母表中存在的字母,等待1秒,阿拉蕾将此字母和它的前两项与后两项字母说出,然后从字母表中删除这五个字母;(列表第一项的前一项是列表的最后一项,列表最后一项的后一项是列表的第一项);
例如:输入C,阿拉蕾说:"删除ABCDE 后",列表中的这五个字母删除

例如:再输入F,阿拉蕾说:"删除YZFGH" 后,列表中的这五个字母删除

4). 当在询问框中输入一个字母表中不存在的字母后,阿拉蕾说:“输入错误”;

5). 重复执行2)、3)、4)步骤,当字母表中的字母不足5个时,程序结束。
评判标准:

本题中的角色本身并没有太多的功能,重点考察的是列表和算法,尤其是列表的增加、查找和删除等操作。首先是往列表中插入26个大写字母,这个比较简单,通常有两种实现方法。第一种方法是直接使用”将东西加入列表“指令,依次将A到Z的26个字母插入到列表中。
第二种方法是定义一个字符串,将值设为”ABCDEFGHIJKLMNOPQRSTUVWXYZ“,然后使用循环和字符串操作依次取出每个字符,再插入到列表中。其次是删除相连的5个字母,这里的难点是如何处理临界点的字母,为了方便,我使用序号来表当前字母在列表中的编号,具体可以分成如下5种情况:

执行代码,效果如图所示:

2. 查找连续5个字母
根据前面的思路分析,当输入一个字母表中的字母时,先搜索该字母的前两位,将其保存到临时列表中。
在向前查找的时候,有可能刚好是列表的第一项,此时需要将其设置为列表的最后一项,这部分的代码如下:

然后,我们将当前项对应的字母加入到临时列表中,代码如下:

同理,在查找下一项的时候,有可能是列表的最后一项,此时需要将其设置为列表的第一项,其代码如下:

如此一来,我们就可以找到要删除的5个字母了,不过需要注意它们的顺序,比如输入字母C,执行上述代码,临时列表中的字母为:

实际上,此时阿拉蕾说的是“删除ABCDE”,所以在说话的时候,需要将前面两个字符的顺序对调一下,代码如下:

代码比较简单,说明两点:
1). 此处使用了交换算法,需要借助一个临时变量;
2). 在Scratch中,列表作为整体使用的时候,是将列表中的每一项连接起来,因此我们也就不需要再循环逐个取出每个字母进行连接操作了;
将上述代码组合起来,并作为一个新的自制积木,代码如下:

如此一来,需要删除的5个字母就已经找到并存入到临时列表了。
3. 删除字母
有了临时列表,删除字母的逻辑就非常简单了,每次取出临时列表中的第一项,再到字母表中找到该字母的编号,将其删除即可,同时将临时列表中的第一项删除即可。
将这个操作重复5次即可,对应的代码如下:

根据题目的要求,使用上面的自制积木和核心代码,编写主程序如下:

就这些了,至此,一个完美的删除字母游戏就创作完成了,赶紧体验并测试一下自己程序吧。
一.题目说明
编程实现: 消除字母。 具体要求: 1). 点击绿旗,角色、背景如图所示(创建1个字母表,并存入26个字母);




- 7分:满足"具体要求"中的1);
- 10分:满足"具体要求"中的2);
- 45分:满足"具体要求"中的3);
- 15分:满足"具体要求"中的4);
- 23分:满足"具体要求"中的5)。
二.效果预览
在编程之前,先来看一下作品的完整效果吧:三.思路分析
本题只有一个角色,就是阿拉蕾,如图所示:
- 2 < 序号 < 列表长度- 1:直接删除相连的5项,包括当前项、前两项和后两项;
- 序号 = 1,删除列表的最后两项和列表的前3项;
- 序号 = 2,删除列表的最后一项和列表的前4项;
- 序号 = 列表长度,删除列表的最后3项和列表的前2项;
- 序号 = 列表长度 - 1,删除列表的最后4项和列表的第一项;
四.编程实现
根据题目描述和思路分析,我们可以分3步来编写程序:- 初始化字母表
- 查找连续5个字母
- 删除字母










五.总结与思考
本题是中级组编程部分第6题,分数为100分,积木块数量70个左右,涉及到的知识点主要包括:- 列表操作,包括列表的插入、查找和删除;
- Scratch问答指令;
- 字符串操作,包括字符串遍历和连接操作;
- 交换变量的编程技巧;
- 使用自制积木简化代码;
- 循环列表的算法思想及其实现;
微信扫码关注
抖音扫码关注