消除字母-第14届蓝桥杯省赛Scratch中级组真题第6题

news2024/9/30 14:24:06

 [导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第141讲。

消除字母,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第6题,也是最后一题,题目要求编程创作消除字母游戏 。当玩家输入一个字母后,阿拉蕾将此字母和它的前两项与后两项字母说出,然后从字母表中删除这五个字母。

先来看看题目的要求吧。

一.题目说明

编程实现:

消除字母。

具体要求:

1). 点击绿旗,角色、背景如图所示(创建1个字母表,并存入26个字母);

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

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

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

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

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

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

评判标准:

  • 7分:满足"具体要求"中的1);

  • 10分:满足"具体要求"中的2);

  • 45分:满足"具体要求"中的3);

  • 15分:满足"具体要求"中的4);

  • 23分:满足"具体要求"中的5)。

二.思路分析

本题只有一个角色,就是阿拉蕾,如图所示:

本题中的角色本身并没有太多的功能,重点考察的是列表和算法,尤其是列表的增加、查找和删除等操作。

首先是往列表中插入26个大写字母,这个比较简单,通常有两种实现方法。

第一种方法是直接使用”将东西加入列表“指令,依次将A到Z的26个字母插入到列表中。

第二种方法是定义一个字符串,将值设为”ABCDEFGHIJKLMNOPQRSTUVWXYZ“,然后使用循环和字符串操作依次取出每个字符,再插入到列表中。

其次是删除相连的5个字母,这里的难点是如何处理临界点的字母,为了方便,我使用序号来表当前字母在列表中的编号,具体可以分成如下5种情况:

  • 2 < 序号 < 列表长度- 1:直接删除相连的5项,包括当前项、前两项和后两项;

  • 序号 = 1,删除列表的最后两项和列表的前3项;

  • 序号 = 2,删除列表的最后一项和列表的前4项;

  • 序号 = 列表长度,删除列表的最后3项和列表的前2项;

  • 序号 = 列表长度 - 1,删除列表的最后4项和列表的第一项;

常规思路,就是使用条件指令,判断当前序号,分别处理上述5种情形,这种做法相对比较好理解,只是代码繁琐,编写代码的时候需要格外细心,否则就很容易出错。

同时,需要注意的是,在Scratch编程中,一旦删除列表中的某一项,后面的列表项都会前移,利用这个特性,可以让代码写起来更简单。比如可以直接重复5次删除第8项,实际上删除的是第8、9、10、11和12这5项。

超平老师再给大家介绍一个更加巧妙的思路,当用户输入一个字母后,我们先找到连续的5个字母,将其保存到另外一个列表中(可以称之为临时列表),然后在字母表中找到临时列表中的字母并删除。

使用这种方法有如下3个好处:

1). 在查找连续字母时,可以借鉴循环列表的算法思想,可以一次性处理上述5种不同情形,代码非常简洁;

2). 在删除之前,阿拉蕾需要说一句话,有了临时列表,处理起来就特别简单了;

3). 删除5个连续字母,只需要短短几行代码就可以搞定;

是不是有点小期待呢,接下来,我们进入具体的编程实现环节。 

三.编程实现

根据题目描述和思路分析,我们可以分3步来编写程序:

  • 初始化字母表

  • 查找连续5个字母

  • 删除字母

1. 初始化字母表

先创建一个列表,将其命名为字母表,再创建一个变量”字母“,将其初始值设置为”ABCDEFGHIJKLMNOPQRSTUVWXYZ“,然后使用循环,将每个字符依次取出并存到列表中。

为了方便,我们使用自制积木来实现列表的初始化,创建自制积木并编写代码如下:

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

2. 查找连续5个字母

根据前面的思路分析,当输入一个字母表中的字母时,先搜索该字母的前两位,将其保存到临时列表中。

在向前查找的时候,有可能刚好是列表的第一项,此时需要将其设置为列表的最后一项,这部分的代码如下:

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

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

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

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

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

1). 此处使用了交换算法,需要借助一个临时变量;

2). 在Scratch中,列表作为整体使用的时候,是将列表中的每一项连接起来,因此我们也就不需要再循环逐个取出每个字母进行连接操作了;

将上述代码组合起来,并作为一个新的自制积木,代码如下:

如此一来,需要删除的5个字母就已经找到并存入到临时列表了。

3. 删除字母

有了临时列表,删除字母的逻辑就非常简单了,每次取出临时列表中的第一项,再到字母表中找到该字母的编号,将其删除即可,同时将临时列表中的第一项删除即可。

将这个操作重复5次即可,对应的代码如下:

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

就这些了,至此,一个完美的删除字母游戏就创作完成了,赶紧体验并测试一下自己程序吧。

四.总结与思考

本题是中级组编程部分第6题,分数为100分,积木块数量70个左右,涉及到的知识点主要包括:

  • 列表操作,包括列表的插入、查找和删除;

  • Scratch问答指令;

  • 字符串操作,包括字符串遍历和连接操作;

  • 交换变量的编程技巧;

  • 使用自制积木简化代码;

  • 循环列表的算法思想及其实现;

这是中级组的第6题,作为压轴大题,题目难度不小,完成时间在35分钟左右。本作品的逻辑并不复杂,难点是如何处理5种不同的情形。

使用常规做法,分情况讨论,一步一步来处理,是大部分学生的解题思路,不过需要非常细心,代码会多一点,非常考验孩子的细心和耐心。

如果具备了算法思维,使用循环列表的思想,就可以极大地简化程序逻辑,代码量也大大减少。

这也是为什么很多人说编程的尽头是算法的原因了,的确如此,一旦具备了算法思维,你的代码也会变得更加简洁高效,这时你就能体会到所谓的算法之美了。

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

需要素材和源码的,可以移步至“超平的编程课”gzh,或者私信本人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows提权:利用MySQL数据库

目录 数据库提权的基本条件 MySQL UDF提权 什么是UDF UDF如何应用到提权 利用思路 MSF提权实战 MySQL 启动项提权 原理&#xff1a;通过MySQL数据库把木马写到Windows启动项中 Windows启动项位置 MSF提权利用实战 MySQL 反弹shell提权 数据库提权的基本条件 知道数据…

路径规划算法:基于鸟群优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于鸟群优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于鸟群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法鸟群…

Linux:centos:计划任务管理《at》

date 查看当前时间或管理时间 年-月-日 周几 时间 时间标准 如果想把他改成2024年6月1日12&#xff1a;30 使用 date 060112302024 06 6月 01 1日 1230 12&#xff1a;30 2024 2024年 使用at之前要安装他 有些用户没有安装的情况下 最好使…

死锁的成因和解决方案

死锁&#x1f512;的成因和解决方案&#x1f4d1; 锁是操作系统和程序语言中常用的同步机制&#xff0c;用于保证共享资源的互斥访问&#xff0c;防止多个线程或进程同时访问共享资源&#xff0c;导致数据不一致或程序崩溃。 死锁是我们在进行并发编程中需要时刻避免的一个问…

路径规划算法:基于引力搜索优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于引力搜索优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于引力搜索优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

iPhone遇到错误53该如何快速修复?

在所有手机中&#xff0c;iphone是出现问题较少的一款手机&#xff0c;但有时候用户会偶尔遇到一些系统问题。例如&#xff0c;错误53是许多用户常见反馈问题之一。如果你还得到错误53 今天小编的就分享如果iphone遇到系统错误53的解决办法。 当我们尝试通过iTunes工具来恢复或…

TDengine 时序数据的保留策略

“TDengine除vnode分片之外&#xff0c;还对时序数据按照时间段进行分区。每个数据文件只包含一个时间段的时序数据&#xff0c;时间段的长度由DB的配置参数days决定。这种按时间段分区的方法还便于高效实现数据的保留策略&#xff0c;只要数据文件超过规定的天数&#xff08;系…

win10 Mysql8.0以上重置初始密码

第一步&#xff1a;关闭Mysql服务 首先&#xff0c;确保自己已经关闭了Mysql的服务 net stop mysql 问题&#xff1a;关闭时报错 原因是&#xff1a;因为net start 服务名&#xff0c;启动的是win下注册的服务。此时&#xff0c;系统中并没有注册mysql到服务中。即当前路径下…

【社区图书馆】《深入理解高并发编程:JDK核心技术》读后感

作者简介 首先要隆重介绍的肯定是《深入理解高并发编程&#xff1a;JDK核心技术》的作者&#xff1a;冰河&#xff0c;作为互联网资深技术专家、数据库技术专家、分布式与微服务架构专家。他多年来一直致力于分布式系统架构、微服务、分布式数据库、分布式事务与大数据技术的研…

【P41】JMeter 简单控制器(Simple Controller)

文章目录 一、简单控制器&#xff08;Simple Controller&#xff09;参数说明二、测试计划设计 一、简单控制器&#xff08;Simple Controller&#xff09;参数说明 该组件&#xff0c;是一个占位符&#xff0c;用于脚本模块化管理&#xff0c;无任何逻辑作用&#xff0c;也不…

0604嵌套路由与路由传参-react路由-react

文章目录 1 嵌套路由1.1 使用1.2 总结 2 路由传参2.1 示例准备2.1 传递params参数2.2 传递search参数2.3 传递state参数2.4 路由参数总结 结语 1 嵌套路由 1.1 使用 示例效果如下图1.1-1所示&#xff1a; 该示例代码其他部分和上一篇相同&#xff0c;这里主要讲解下嵌套路由的…

CVPR2023 I NeRF-Supervised Deep Stereo:不需要任何ground-truth数据

论文题目:NeRF-Supervised Deep Stereo 作者:Fabio Tosi ;Alessio Tonioni; Daniele De Gregorio等人 作者机构:University of Bologna(博洛尼亚大学);Google Inc(全球最大的搜索引擎之一);Eyecan.ai(韩国专注于开发眼动追踪技术的公司) 在公众号「3D视觉工坊」后台回复「…

老电脑重生:深度剖析各部件的羁绊关系

目录 引言&#xff1a; 正文&#xff1a; 主板&#xff1a; CPU 参数&#xff1a; 分类 接口 intel CPU升级推荐 AMD CPU升级推荐 CPU散热器&#xff1a; 内存条 硬盘 独立显卡 电源 机箱 总结 引言&#xff1a; 在科技日新月异的时代&#xff0c;我们与…

【从零到Offer】- HashMap与HashSet

​ HashMap与HashSet是我们日常最常使用的两个集合类。在实现上&#xff0c;两者也有很大的相似性。HashSet基本就是对HashMap的一个简单包装。 ​ 为了更好的理解Hash结构的实现原理&#xff0c;从而更好的指导我们的代码使用&#xff0c;本文就主要对HashMap的实现及设计做分…

Java并发体系-第二阶段-锁与同步-[3](仅做了解吧不好理解)

synchronized保证三大特性 synchronized保证原子性的原理 对num;增加同步代码块后&#xff0c;保证同一时间只有一个线程操作num;。就不会出现安全问题。 synchronized保证可见性的原理 synchronized保证可见性的原理&#xff0c;执行synchronized时&#xff0c;会对应lock…

下载STM32固件库

不想找的可直接输入下面的网址 https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html 官网下载的慢&#xff0c;阿里云链接 STM32固件 https://www.aliyundrive.com/s/e2Q3j19Bnkv 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开…

【UE】不规则物体外轮廓发光

效果 按下2键显示鼠标&#xff0c;将鼠标移动到指定的物体身上然后按下ctrl键就会使得指定物体高亮显示。 步骤 1. 创建一个材质并打开 材质域设置为后期处理 可混合位置改为“色调映射前” 添加如下节点&#xff1a; 2. 打开玩家控制的蓝图&#xff0c;添加如下节点 3. 场景…

新手装sql

windows sever 安装完了得装个sql&#xff0c;我也不会&#xff0c;按网上找到的资料&#xff0c;一步一步试吧 到这个地址去下载SQL Server https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 谁能救救我&#xff0c;全是英文&#xff0c;都看不懂&#xff0…

sentinel持久化

sentinel规则推送模式 原始模式 在sentinel源码中是不支持规则持久化的&#xff0c;一旦sentinel服务宕机&#xff0c;匹配的所有规则将彻底消失。在上篇博客中展示了sentinel的源码流程图&#xff0c;在sentinel dashboard新增一条流控规则&#xff08;或者其他规则&#xf…

Boost开发指南-1.3date_time

date_time date_time库勇敢地面对了这个挑战&#xff0c;并成功地解决了大部分问题。它是一个非常全面且灵活的日期时间库&#xff0c;基于我们日常使用的公历&#xff08;即格里高利历)&#xff0c;可以提供时间相关的各种所需功能&#xff0c;如精确定义的时间点、时间段和时…