筛选数据-第15届蓝桥第三次STEMA测评Scratch真题精选

[导读]:超平老师的《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。

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

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

相关文章

大数据之谷歌文件系统论文 GFS The Google File System

原文地址 谷歌文件系统论文 摘要 我们设计并实现了Google文件系统,这是一个面向大规模分布式数据密集型应用的可扩展分布式文件系统。 它在廉价的通用硬件上运行,提供了容错性,并向大量客户端提供高聚合性能。 尽管与先前的分布式文件系统…

2023 我的编程之旅——路人贾‘ω‘

哈喽!大家好,我是路人贾😁~今天不读论文也不讲算法,来聊点有意思的! 这是我第100篇博文,我翻了几遍草稿箱的库存,正纠结选哪篇时,一抬头看见了这个活动,眼前瞬间一亮——…

高防服务器、高防 IP 和高防 CDN 之间有什么区别?

网络运营人员最头痛的是什么? 网络攻击无疑名列前茅。一旦企业遭受网络攻击,所面临的损失可能是无法估量的。那么,如何有效地抵御网络攻击呢? 高防 IP、高防 CDN 和高防服务器是当前主流的防御手段。那何为“高防”呢&#xff1…

【深度学习每日小知识】Overfitting 过拟合

过拟合是机器学习(ML)中的常见问题,是指模型过于复杂,泛化能力较差的场景。当模型在有限数量的数据上进行训练,并且学习了特定于该特定数据集的模式,而不是适用于新的、看不见的数据的一般模式时&#xff0…

tkinter控件中文显示为unicode编码的解决办法

一、背景 最近使用python tkinter编写界面应用时,发现按钮的中文名称在windows上显示正常,但是在linux上显示为中文的unicode编码;文本输入框也是,输入中文输时,text控件上也显示为unicode编码,如下图所示…

4.4 媒资管理模块 - 分布式任务处理介绍、视频处理技术方案

媒资管理模块 - 视频处理 文章目录 媒资管理模块 - 视频处理一、视频转码1.1 视频转码介绍1.2 FFmpeg 基本使用1.2.1 下载安装配置1.2.2 转码测试 1.3 工具类1.3.1 VideoUtil1.3.2 Mp4VideoUtil1.3.3 测试工具类 二、分布式任务处理2.1 分布式任务调度2.2 XXL-JOB 配置执行器 中…

智能雾化壁炉设计,新时代科技与美学的完美结合

智能雾化壁炉设计,新时代科技与美学的完美结合 随着科技的不断创新,智能雾化壁炉设计成为家居设计领域的一颗耀眼明珠。它的出现不仅改变了传统壁炉的概念,更为我们带来了全新的视觉和感官体验。下面让我们一起探索智能雾化壁炉设计的优势和特…

activiti流程图+动态表单

使用技术 jeecg-bootactivitivue3form-create 简单效果展示 流程图绘制 审批人配置 动态表单配置 流程审批 流程审批记录 填写表单信息 源码地址 后台:https://gitee.com/houshixin/jmg-boot前端:https://gitee.com/houshixin/jmg-ui

从技术走向管理

管理是可以通过后天的学习掌握的一项技能,但同时管理这条路每个人走的都不一样,因为没有一个固定的标准而且前面的路有很多未知和不确定性,所以不同的人对管理的理解、定义以及怎么做管理都会有不同的想法、做法。 很多一线的技术人员通常都…

深入理解Lock Support

第1章:引言 大家好,我是小黑,今天咱们要聊聊Lock Support。Lock Support是Java并发编程的一块基石,它提供了一种非常底层的线程阻塞和唤醒机制,是许多高级同步工具的基础。 为什么要关注Lock Support?线程…

【Databend】行列转化:数据透视和逆透视

文章目录 数据准备数据透视数据逆透视总结 数据准备 学生学科得分等级测试数据如下: drop table if exists fact_suject_data; create table if not exists fact_suject_data (student_id int null comment 编号,subject_level varchar null comment …

Nginx多虚拟主机配置

最近写公司项目,需要和前端小伙伴对接,但是有时候只是后端的一个bug,也不好意思一直让前端小伙伴帮忙起服务,所以想着直接拿测试包在本地起一个前端环境,这样后续开发比较方便;因为公司项目有好几个&#x…

CMake HelloWorld

(一)CMake使用 CMake使用 1.注释# 这是一个CMakeLists.txt文件cmake_minimum_required(VERSION 3.10)2.add_executable 定义工程会生成一个可执行程序add_executable(可执行程序名 源文件名称)# 样式1:add_executable(app add.c div.c main.c mult.c su…

C语言从入门到实战——数据在内存中的存储方式

数据在内存中的存储方式 前言1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端2.2 为什么有大小端2.3 练习2.3.1 练习12.3.2 练习22.3.3 练习32.3.4 练习42.3.5 练习52.3.6 练习6 3. 浮点数在内存中的存储3.1 练习3.2 浮点数的存储3.2.1 浮点数存的过程3.2.2…

生态茶园建设方案——福建蜂窝物联

一、项目背景 为了进一步提高茶产业集约化、产业化发展水平,充分运用物联网、互联网等高新技术为产业赋能,加速推动安溪茶产业转型升级,县政府决定在安溪县推进“安溪智慧生态茶园项目”,并以茶叶重镇感德镇实施“安溪智慧生态茶园…

EVA-CLIP: Improved Training Techniques for CLIP at Scale论文解读

文章目录 前言一、摘要二、引言三、贡献四、模型方法五、论文链接总结 前言 最近,我一直在搞多模态大模型相关工作,也深知CLIP结构重要性,而EVA-CLIP论文是在CLIP模型基础上进行了一系列trick,实现优越CLIP模型的方法&#xff0c…

SAP SQVI制作报表及SE93创建事务代码

在平时的项目中,财务想查询所有的凭证明细,SAP的查询凭证FB03不能满足需求,所以用SQVI制作一个简易的查询报表。 1、打开SQVI,填写自开发报表的名称“ZFB03”,点击“创建”,输入自开发报表的名称“凭证明细…

【AIGC】Controlnet:基于扩散模型的文生图的可控性

前言 controlnet可以让stable diffusion的生图变得可控。 文章连接:https://arxiv.org/pdf/2302.05543.pdf 摘要 冻结了stable diffusion的预训练模型并重用它的预训练编码层神经网络结构与零初始化卷积层连接,从零开始逐渐增加参数,并确…

Matlab:toposort

语法: n toposort(G) %调用toposort函数,对有向图G进行拓扑排序,并将排序结果存储在变量n中 n toposort(G,Order,algorithm) [n,H] toposort(___) %使用了两个输出参数的形式来调用toposort函数。除了返回排序结果n外&am…

数字集成电路VLSI复习笔记

逻辑门符号 Inverter CMOS NAND Gate CMOS NOR Gate MOS Capacitor nmos cutoff Linear Saturation Channel Charge Carrier velocity nMOS Linear I-V nMOS Saturation I-V Summary nMOS Operation pMOS Operation Inverter Step Response Delay Definitions 3-input NAND Ca…