天津网站建设方案报价,wordpress mu 博客群,产品如何做网站地图,潍坊做网站的公司[导读]#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成#xff0c;后续会不定期解读蓝桥杯真题#xff0c;这是Scratch蓝桥杯真题解析第164讲。
第15届蓝桥杯第3次STEMA测评已于2023年12月17日落下帷幕#xff0c;编程题一共有6题#xff0c;分别如下超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成后续会不定期解读蓝桥杯真题这是Scratch蓝桥杯真题解析第164讲。
第15届蓝桥杯第3次STEMA测评已于2023年12月17日落下帷幕编程题一共有6题分别如下 多变的太阳 转动的风车 六花阵图 变色游戏 筛选数据 消失的水母
筛选数据本题是2023年12月17日举行的第15届蓝桥STEMA测评Scratch编程初/中级组编程第3题题目要求编程对数据的一串数据按要求进行筛选。将用户输入的8个正整数中的偶数加入列表1并求和再将列表1中各位数字和为偶数的数字加入列表2并获取最大值。
先来看看题目的要求吧。
一.题目说明
背景信息
偶数能被2整除的数。
各位上的数字之和一个整数各个数位上的数字相加的结果。
例如2314各位上的数字分别为2、3、1、4各位上的数字之和为2 3 1 4 10。
编程实现
筛选数据。
具体要求
1). 每次点击绿旗熊猫说“输入8个正整数”同时在舞台下方显示输入框输入的正整数之间用一个空格隔开列表1和2为空如图所示
例如输入10 26 17 18 24 31 48 52 2). 输入完成后如果输入的数中没有偶数程序结束如果有就把偶数保存到列表1中如图所示; 3). 熊猫说出列表1中所有数的和如图所示 4). 然后在列表2中呈现列表1中所有各位上的数字之和为偶数的数按照列表1的顺序如图所示如果没有满足要求的数程序结束 5). 最后熊猫说出列表2中最大的数如图所示。 评判标准 8分满足具体要求中的1 20分满足具体要求中的2 12分满足具体要求中的3 30分满足具体要求中的4 10分满足具体要求中的5。
二.思路分析
本题只有1个熊猫角色如图所示 而且熊猫只负责说出结果没有其它的效果因此本题是一个典型的算法题考查的是列表处理和数学运算。
根据题目的描述我们可以将整个过程分成如下5个核心功能 字符串拆分 奇偶数判断 列表求和 统计数字各位数字和 求最大数
这里的关键是第一步后面所有的程序都是在这个基础上进行的。通过询问框获取用户输入的数字串然后将每个数字提取出来并存入列表这是一个常见的需求场景在历届蓝桥比赛中出现过多次比如 《魔法师盖城墙-第11届蓝桥杯Scratch国赛真题第4题 《数字与图形-第13届蓝桥杯Scratch国赛真题第5题》
字符串拆分的核心思想就是遍历整个字符串依次取出每一个字符并进行连接当遇到空格时得到一个数字加入列表然后再进行下一个数字的连接直到取出所有的数字具体的细节这里就不再展开了。
一旦解决了第一步后面的相对就容易一些了主要就是对列表的操作和处理了基本上就是结合循环和变量对列表进行遍历然后对每个数字进行判断和处理。
由于代码比较多超平老师强烈建议采用函数的编程思想使用自制积木来组织代码从而简化代码的逻辑和结构。
思路有了接下来我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析我们分7步来编写程序 准备工作 字符串拆分 构造列表1 列表1求和 构造列表2 计算列表2最大值 主程序
1. 准备工作
准备工作比较简单先创建好两个列表分别命名为“1”和“2”然后在绿旗下清空两个列表在熊猫角色中编写代码如下 2. 字符串拆分
接下来是熊猫询问并等待用户输入用户输入的数字会保存到“回答”指令中如图 这是一个字符串我们要逐个取出每个字符通常需要结合循环和变量其基本框架如下 这段代码的作用是依次取出回答中的数字串逐个进行连接并保存到数字中其中变量”数字“表示要获取的单个数字变量i是计数器。
这当然是不够的在循环的过程中如果字符是空格就应该将其加入列表中同时将”数字“变量设置为空增加判断代码如下 强调两点
1). 将“数字”变量设置为空直接删除默认的数字0即可
2). 在判断字符等于空的时候需要打一个空格。
执行代码结果如下 已经将各个数字拆分开了但是最后一个数字52并没有加入列表原因很简单52后面没有空格针对这种情况需要在循环结束后再单独”数字“变量的值加入列表如图 这样一来就可以确保所有的数字都可以加入列表。
但是需要注意的是这段代码只适用于标准输入即数字之间只有一个空格结尾也不能有空格不过题目没有特别要求可以不用考虑非标准输入。
本着严谨的态度我们还是对非标准输入进行探讨和处理如果输入的是如下内容 其中10和26、17和18、24和31之间各有两个空格52后面还有一个额外的空格列表中的数据就是这个样子的 这显然是不对的所以在向列表中插入数字的时候还需要判断数字不为空这又该如何判断呢
“数字”变量的值可能是一个空格也可能是多个空格其实有一个巧妙的办法就是使用大于指令如果变量的值都是空格无论空格的数量是多少它都是不大于0的。
所以只需要在插入列表之前增加如下代码 再次查看列表效果如下 有了这个判断就相当于增加了一层保险再也不用担心多个空格的问题了。
3. 构造列表1
字符串拆分已经完美实现了现在只剩下最后一步了上面的代码是将所有的数字加入列表1。根据题目的要求还需要过滤一下只有偶数才加入列表1因此在插入之前再增加一个条件就可以了。
为了方便我们将上面这部分代码使用自制积木来实现代码如下 代码中标红的部分就是用来判断偶数的如此一来关键的第一步就彻底处理好了。
4. 列表1求和
这一步相对比较简单一般来说有两种处理方式 在构造列表时同步进行每插入一个偶数就累加一次 构造列表后单独处理使用循环累加
相对来说前者代码更少为了方便讲解我这里采取第二种方法同时将其定义成一个自制积木代码如下 简单说明两点
1). 这里的变量和用来表示总和需要将初始值设为0
2). 这里再次使用了i变量这是可以的不过要重新初始化为1。
5. 构造列表2
在构造列表2时需要对列表中1中的每个数字进行各位数字求和因此我们可以分两步来实现 对给定数字进行各位求和 对列表1中的数字逐个判断
为了简化代码我们使用自制积木来组织代码先来实现第一步定义自制积木如下 代码不多说明两点
1). 在Scratch中数字可以直接作为字符串来处理结合循环可以取出数字中的每一位数字
2). 由于Scratch中的自制积木没有返回值所以这里将各位上数字的和保存到变量”各位数字和“中。
有了这个自制积木接下来就可以对列表1进行循环处理了其代码如下 强调一点由于在循环的过程中又调用了自制积木相当于是循环中嵌套循环因此需要使用两个计数器变量一个是i一个是j。
执行完这段代码就可以将列表1中满足条件的数字加入到列表2了。
6. 计算列表2最大值
这和前面求和的情况类似有同步和分开处理两种方式为了方便这里仍然分开处理将其定义成一个自制积木代码如下 简单说明两点
1). 获取最大值就是一个逐步比较的过程如果当前项比最大值则更新最大值直到循环结束。
2). 由于所有的数字都是正整数所以可以将最大值设置为0
7. 主程序
所有的自制积木都定义好了只需要按照题目的要求进行组装即可代码如下 代码比较简单强调一点就是如果列表1和列表2为空时要提前终止代码。
至此整个作品就创作好了是时候来测试程序的功能了测试时需要多来几组数据确保程序的正确性。
四.总结与思考
本题是初/中级组编程部分第5题分数为80分积木块数量100个左右涉及到的知识点主要包括 Scratch问答指令 循环编程 条件编程包括单分支和双分支 变量的使用 列表的运算 字符串的运算及处理
这是初级组最后一题难度较大完成时间25分钟左右难点在于如何将数字串进行拆分获取其中的每一个数字。
从最近几次STEMA测评真题的题目来看对字符串和列表的考查越来越多了也越来越难了这需要引起我们的重视。
对于本题而言有三个核心知识必须要熟练掌握 如何对字符串进行拆分和遍历 列表的运算和遍历 使用自制积木来组织代码简化程序结构
实际上字符串和列表的处理也是代码编程的基础和重点一旦熟练掌握这些数据结构的常见处理和算法对后续代码编程的学习非常有帮助。
超平老师给你留一道思考题对于字符串为空的判断你还有其它方法吗
如果你觉得文章对你有帮助别忘了点赞和转发予人玫瑰手有余香
需要素材和源码的可以移步至“超平的编程课”gzh。