筛选数据-第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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java判断字符串当中是否有中文符号(不是中文名称,是符号)

public static void main(String[] args) throws ParseException, IOException, URISyntaxException {// 测试示例String testString1 "Hello,test!";String testString2 "This is a test.";boolean result1 containsChineseSymbols(testStr…

别再为创业失败找借口了!否则你永远无法创业成功!2024适合上班族的创业,2024个人创业做什么

每当聊起创业,很多人嘴上都很积极,行动都很低迷,事后就开始找各种理由开始否定创业这个路,要么就是大环境不好,要么就是行业太差,还有就是竞争太多,反正不会是自己的能力太差。 其实创业没有你想…

Redis中的Java客户端

一、Jedis Jedis是一个Java实现的Redis客户端连接工具。 Jedis使用非常简单,直接引入依赖。基于默认参数的Jedis连接池,初始化连接池类(使用默认连接池参数)JedisPool,获取一个Jedis连接Jedis jedisjp.getResource()…

从 PDF 删除PDF 页面的 10 大工具

PDF 文件是全世界几乎每个人最常用的页面之一。借助 PDF 文件,您可以通过任何在线或离线媒体轻松共享信息。但是,如果您想编辑这些 PDF 文件,那么这个过程就很难改变,因为保持文件的原始形式和质量很重要。应该注意的是&#xff0…

c++类程序设计题1

#include<iostream> #include<string> using namespace std;class cube{public ://设置长void setM(int m){M_l m;}int getl(){return M_l;}//设置宽void setr(int r){M_r r;}int get(){return M_r;}//设置高void setm(int m){M_m m;}int getm(){return M_m;}//…

解锁营销新高度:幽灵鲨CRM推广平台线索对接功能详解

数字营销时代&#xff0c;线索对接是推动业务增长的关键。你是否为线索分布在不同的平台而来回切换&#xff1f;你是否为无法及时联系客户而错失商机&#xff1f;幽灵鲨CRM系统作为一款领先的客户关系管理解决方案&#xff0c;不仅实现了对主流推广平台的全面对接&#xff0c;更…

大模型机器人发展史:从VoxPoser、RT2到斯坦福Mobile ALOHA、Google机器人

前言 23年7月&#xff0c;我在朋友圈评估Google的RT2说道&#xff1a; “大模型正在革新一切领域啊&#xff0c;超帅&#xff0c;通过大模型不仅能理解“人话”&#xff0c;还能对“人话”进行推理&#xff0c;并转变为机器人能理解的指令&#xff0c;从而分阶段完成任务。回…

数据分析概述2(详细介绍机器学习

目录 1.名词解释&#xff1a;1.1算法和模型1.2参数和超参数 2.基础算法&#xff1a;3.高级算法&#xff1a;4.数据准备5.常用python包小结&#xff1a; 1.名词解释&#xff1a; 1.1算法和模型 算法&#xff1a;用于训练模型的方法&#xff0c;分为有监督学习、无监督学习、半…

Qt应用开发(安卓篇)——Linux下Qt15.5.2配置Android

目录 一、前言 二、Qt安装 三&#xff1a;JDK安装 四&#xff1a;安装SDK&#xff0c;NDK 五、其他事项 六、新建项目 一、前言 看网上教程&#xff0c;多数是windows环境下的&#xff0c;配置也很简单&#xff0c;想不到自己配置的时候却遇到很多问题&#xff0c;传了一…

POI:对Word的基本操作

1 向word中写入文本并设置样式 package com.example;import org.apache.poi.xwpf.usermodel.*;import java.io.File; import java.io.FileOutputStream;/*** Author&#xff1a;xiexu* Date&#xff1a;2024/1/12 23:54*/ public class WriteWord {static String PATH "…

半小时实现GPT纯血鸿蒙版

仅需半小时&#xff0c;即可实现纯血鸿蒙版本的ChatGPT&#xff01; 废话少说&#xff0c;先看效果图&#xff1a; 如上图所示&#xff0c;这个小Demo实现了AI智能问答。靠右加粗的文本是用户点击底部提交按钮后出现的&#xff1b;后面靠左对齐的普通文本是来自AI的回答内容。当…

CS5569 typec转HDMI 8k60hz单转带pd快充方案

集睿致远/ASL的CS5269是一款低成本、低功耗的半导体器件&#xff0c;通过USBType-C连接器将DisplayPort信号转换为HDMI 2.1。 这款创新的基于USBType-C的DisplayPort接收器具有高性能DSC解码器&#xff0c;集成的HDMI2.1发射器专门针对USBType-C到HDMI2.1转换器而设计&#xf…

运用java开发OpenCV

获取适当的 OpenCV 从版本 2.4.4 开始&#xff0c;OpenCV 包含桌面 Java 绑定。 下载 获取它的最简单方法是从 OpenCV SourceForge 存储库下载版本 2.4.4 或更高版本的相应软件包。 注意 Windows 用户可以在包内的文件夹中找到 Java 开发所需的预构建文件。对于其他操作系…

RK3568驱动指南|第十二篇 GPIO子系统-第133章 GPIO操作函数实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

【Arco】表格自定义信息布局

效果 <template><!-- 表格 --><a-table :data"data" style"margin-top: 30px" :bordered"false"><template #columns><a-table-columntitle"商品信息":header-cell-style"{ paddingLeft: 30px }&qu…

MySQL夯实之路-存储引擎深入浅出

innoDB Mysql4.1以后的版本将表的数据和索引放在单独的文件中 采用mvcc来支持高并发&#xff0c;实现了四个标准的隔离级别&#xff0c;默认为可重复读&#xff0c;并且通过间隙锁&#xff08;next-key locking&#xff09;策略防止幻读&#xff08;查询的行中的间隙也会锁定…

Centos7安装K8S

Centos7安装K8S 安装过程中没有出现的错误可以往下 根据以前一些博主写的博客&#xff0c;在小阳翻了不下几十篇博客之后&#xff0c;我果断是放弃了&#xff0c;于是找到了官网地址&#xff0c;然后也有坑 1. 关闭防火墙 systemctl stop firewalld systemctl disable firew…

ssm基于Javaweb的网上奶茶店系统的设计与实现论文

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

助力工业园区作业违规行为检测预警,基于YOLOv8【n/s/m/l/x】全系列参数模型开发构建工业园区场景下作业人员违规行为检测识别系统

在很多工业园区生产作业场景下保障合规合法进行作业生产操作&#xff0c;对于保护工人生命安全降低安全隐患有着非常重要的作用&#xff0c;但是往往在实际的作业生产中&#xff0c;因为一个安全观念的淡薄或者是粗心大意&#xff0c;对于纪律约束等意思薄弱&#xff0c;导致在…

宝塔安装redis并且远程连接redis教程

第一步&#xff1a;搜索redis并安装 第二步&#xff1a;在防火墙添加端口6379 第三步&#xff1a;查看宝塔防火墙是否开启了6379端口 firewall-cmd --zonepublic --list-ports 很显然并没有开启 第四步&#xff1a;开启防火墙的6379端口 firewall-cmd --zonepublic --add-po…