智能计价器-第14届蓝桥杯省赛Scratch中级组真题第5题

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

智能计价器,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第5题,题目要求编程创造智能计价器作品。玩家在输入公里数后,AI计价器会根据不同情况做出相应的处理并提示。

先来看看题目的要求吧。

一.题目说明

背景信息:

A城市的出租车计价:3公里以内13元,基本单价每公里2.3元(超过3公里的部分,不满1公里按照1公里收费),燃油附加费每运次1元。

例如:

3.2公里的打车费用:13+2.3+1=16.3

7.1公里的打车费用:13+2.3*5+1=25.5

编程实现:

智能计价器。

具体要求:

1). 点击绿旗,角色、背景如图所示(舞台下方出现询问框);

2). 如果输入的公里数小于等于0,智能计价器说:"数据有误,重新输入〞并在屏幕上显示2秒后,回到初始状态;

3). 如果输入的公里数大于0小于等于3,智能计价器说:"打车费:14元”并在屏幕上显示2秒后,回到初始状态;

4). 如果输入的公里数大于100,智能计价器说:"建议更换,交通工具"并在屏幕上显示2秒后,回到初始状态;

5). 如果输入的公里数大于0小于等于100,智能计价器说出打车费用并在屏幕上显示2秒后,回到初始状态;

例如:输入3.2.则打车费用为16.3元

6). 重复执行2)、3)、4)、5)步骤。

评判标准:

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

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

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

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

  • 25分:满足"具体要求"中的5);

  • 20分,满足"具体要求"中的6)。

二.思路分析

本题只有一个角色,就是智能计价器,如图所示:

角色也只有一个造型,如图:

题目描述的是日常生活中乘坐出租车的场景,根据输入的公里数来计算费用,一共分为如下4种情况:

  • 公里数 ≤ 0,提示“数据有误,重新输入”;

  • 0 < 公里数 ≤ 3,提示“打车费:14元”;

  • 3 < 公里 ≤ 100,提示具体的打车费;

  • 公里数 >100,提示“建议更换,交通工具”;

这是一个典型的条件结构,可以使用单分支指令“如果...那么”,也可以使用双分支指令“如果...那么...否则”。

除了让角色说出相应的提示信息,这里还需要在屏幕上显示同样的信息,这就要求我们自己创建角色,并绘制好相应的造型。

由于打车费是变化的,因此这里的难点是如何显示这些变化的数字,比如16.3,你有什么好方法吗?

关于这个问题,超平老师是这么想的,在比赛时,可以直接使用变量,然后将变量设置为大字显示即可,这样比较节省时间,效果也还不错。

如果要完全按照要求编程,我们可以通过克隆来实现,只是需要花费不少时间,感觉有些不划算,你觉得呢?

接下来,我们进入具体的编程实现环节。

三.编程实现

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

  • 创建文字角色

  • 计算打车费

  • 显示数字效果

1. 创建文字角色

由于题目并没有提供提示文字,所以需要考生自行创建,通常有两种思路,一是直接在智能计价器中修改并添加造型,二是单独创建文字角色并绘制相应造型。

相对来说,采取后者更加灵活,也更符合软件编程中提倡的单一职责。因此,我们创建一个文字角色,并绘制对应的4个造型,如图:

2. 计算打车费

智能计价器根据玩家输入的数字进行相应的处理,为了方便,我们分步讲解。

首先,先创建好两个变量“费用”和“造型”,分别表示打车费和文字角色要显示的造型编号。

绿旗点击时,进行初始化设置,在计价器角色中编写代码如下:

当公里数 <= 0时,提示“数据有误,重新输入”,编写对应代码如下:

当0 < 公里数 <= 3时,提示“打车费:14元”,其代码如下:

当 3 < 公里数  <= 100时,根据计价规则,计算出相应的费用,其代码如下:

在计算费用的时候,需要考虑几个细节:

1). 3公里以内的费用是14元,包括起步价13元和燃油附加费1元;

2). 超过3公里的每公里2.3元,所以需要减去3;

3). 不满1公里的按1公里计算,所以需要用"向上取整"指令,将小数转成整数;

当公里数 > 100时,提示“建议更换,交通工具”,其代码如下:

将上述代码组合起来,就可以得到完整的代码,如下:

这里增加了重复执行指令,这样就可以重复询问了。

对应的,文字角色需要根据变量"造型"的值,切换对应的造型,切换到文字角色,编写代码如下:

代码非常的简单,注意调整好角色的造型顺序,确保和变量值一一对应。

3. 显示数字效果

关于打车费的显示效果,在考试的时候,可以考虑直接将变量拖到对应位置,如图:

对应的,只需要在代码中增加如下指令即可: 

当然了,这种处理方式和题目要求还是有所差异的,接下来,超平老师就详细介绍一下完美的解决方案。

其思路是这样的,创建一个数字角色,包含11个造型,分别是0、1、2、3、4、5、6、7、8、9和小数点,然后根据费用变量的值克隆每一个字符,并依次显示出来。

首先,创建角色并绘制造型,如图所示:

需要注意都是,每个造型的名字和字符要一一对应,比如0的名字就是“0”,小数点的名字就是“.”。

切换到数字角色,绿旗点击时,将角色隐藏起来,代码如下:

当需要显示费用的时候,发送一个广播消息给数字角色,在智能计价器中增加代码如下:

对应的,数字角色在接收到广播消息后,就可以根据变量“费用”的值,依次取出每一个字符,进行克隆显示即可,在数字角色中编写代码如下:

这里使用了字符串运算指令,结合循环和变量,将“费用”中的字符依次取出,然后切换到对应造型,然后克隆数字。

重点强调两点:

1). 由于小数点比较小,所以如果是小数点,只向右移动了5步,数字则统一移动10步;

2). 在Scratch中,切换造型指令可以使用变量,当使用变量的时候,优先考虑的是造型名称,其次才是造型编号,这也是前面要求造型名称和字符要一一对应的原因;

对应的,每个克隆体要显示2秒,然后删除,继续编写代码如下:

之所以要等待2秒后删除,是因为提示信息显示的时间是2秒。

至此,一个完美的智能计价器作品就创作完成了,你可以体验一下AI的厉害吧

四.总结与思考

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

  • 创建角色及绘制造型;

  • Scratch问答指令;

  • 运算指令,包括逻辑运算、算式运算、比较运算和字符串运算;

  • 多分支条件的实现;

  • 数字显示的编程技巧;

  • 字符串的遍历操作;

这是中级组的第5题,题目有一定的难度,完成时间在20分钟左右。本作品的逻辑并不复杂,难点是如何显示数字效果。

针对题目的要求,在考试的时候,超平老师建议直接使用变量的大字显示模式,这么做可能会扣掉几分,但是可以节省很多时间,如果所有的题目都做完了,回头再优化,这也是一种考试策略。

本题中介绍的数字显示技巧几乎可以用于所有的游戏创作中,常规的做法就是直接使用变量显示,如果要用一些漂亮的数字图片来显示,就可以使用这种编程技巧,效果非常好。

最后还是留两个思考题:

1). 在上面的代码中,我使用的是单分支条件指令,如果使用双分支条件指令,代码该如何编写呢,你可以尝试一下,看看哪种写法更简单。

2). 由于每公里是2.3元,在计算的时候可能会出现多位小数,如何确保任何时候最多只保留两位小数呢,你知道该怎么实现吗?

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

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

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

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

相关文章

信号处理与分析-卷积的性质与推导

目录 一、引言 二、信号分析中的卷积 1. 什么是卷积 2. 卷积的性质 3. 卷积的应用 三、离散卷积 1. 离散卷积的定义 2. 离散卷积的计算 3. 离散卷积的性质 四、连续卷积 五、卷积的实际应用 六、总结 一、引言 在信号处理中&#xff0c;卷积是一种非常重要的数学运…

2023年05月小结

5月一晃即将过去&#xff0c;先看看5月份都写了哪些文章&#xff1a; 往期推荐 国内手机号如何注册Google账号 Python中的布尔类型以及布尔值介绍 Python中深拷贝与浅拷贝介绍 Python中的集合介绍 Python中的字典学习笔记 Python学习历程-元组的基本操作回顾 记录我的Python学习…

STM32F103C8T6+2.4寸SPI TFT触摸屏代码+标准库 项目开发

目录 模块清单&#xff1a; 模块介绍&#xff1a; 1&#xff1a;STM32F103C8T6 2&#xff1a;2.4寸SPI TFT触摸屏 项目结果展示 2.4寸 TFT SPI显示触摸屏 2.4寸 SPI TFT 显示触摸屏代码下载链接&#xff1a; (1条消息) 2.4寸SPITFT显示触摸屏资源-CSDN文库 模块清单&#x…

低资源方面级情感分析研究综述

文章目录 前言1. 引言2. 问题定义、数据集和评价指标2.1 问题定义2.2 任务定义2.3 常用数据集 3. 方面级情感分析的方法3.1 **方面词抽取**3.1.1 基于无监督学习的方法3.1.1.1 基于规则的方面词抽取3.1.1.2 基于统计的方面词抽取 3.1.2 基于有监督浅层模型的方法3.1.3 基于有监…

Golang每日一练(leetDay0075) 打家劫舍II、最短回文串

目录 213. 打家劫舍 II House Robber ii &#x1f31f;&#x1f31f; 214. 最短回文串 Shortest Palindrome &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C…

mysql加强小结 203446

数据库三范式: 什么是范式 规则:想要设计一个好的关系,必须要满足一定的约束条件,有几个等级,一级比一级高 ​ 解决什么问题:让数据库设计更加简洁,结构更加清晰,否则容易造成数据冗余 数据库有哪些范式? ​ 数据库有七大范式,常用的只有三个范式 **第一范式:**业务上属…

【1++的C++初阶】之模板

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C初阶】 文章目录 一&#xff0c;浅谈模板二&#xff0c;函数模板三&#xff0c;类模板 一&#xff0c;浅谈模板 在前面的文章【【1的C初阶】之C入门篇1】中我们对函数重载有了一定的认识&a…

Linux网络服务:SSH远程访问及控制2

目录 一、理论 1.构建密钥对验证的SSH体系 2.TCP Wrappers访问控制 二、实验 1.ecdsa免密连接 2.rsa免密连接 一、理论 1.构建密钥对验证的SSH体系 &#xff08;1&#xff09;免密连接原理 ① 手动添加客户端的公钥到服务端 ② 服务端收到客户端的公钥后使用客户端公钥…

手机充电宝电子充气泵方案

该充气泵产品方案的运行原理是通过电动机将电能转化为机械能&#xff0c;带动电机做往复运动&#xff0c;从而产生大量压缩空气&#xff0c;达到快速充气的效果。该充气泵可用于气垫床、汽车轮胎、自行车轮胎、足球、游泳圈等各类充气物品。产品设计以人性化为主&#xff0c;简…

jQuery其他方法及插件使用

1. 拷贝对象 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…

学习c语言中的几道习题(小有难度)!

有兴趣的朋友可以看着题目自己做做&#xff0c;最后在和答案对比&#xff01;相信能力会有所提升的。我现在只是刚刚开始学习c语言&#xff0c;如果有什么说的不对的地方&#xff0c;网路过的大佬&#xff0c;及时予以指正。多谢&#xff01; 1、函数判断闰年 实现函数判断yea…

flowable的流程任务统计sql(续)

继续之前的文章&#xff0c;我们这里还需要进行按月统计&#xff0c;同时为了适应jeecg的图形显示&#xff0c;所以做了一些调整如下&#xff1a; 1、按月统计任务数量 select DATE_FORMAT(c.days, %Y%m) months, count(num) num from (SELECT DATE_FORMAT(START_TIME_, %Y-%m…

Niagara—— Events and Event Handlers

目录 一&#xff0c;Events 二&#xff0c;Event Handlers 多数情况下&#xff0c;系统中的发射器需相互交互&#xff0c;才能创建所需效果&#xff1b;意味着&#xff0c;一发射器生成数据&#xff0c;另一发射器监听该数据&#xff0c;以执行相应行为&#xff1b;在Niagar…

CentOS 系统上安装 Jenkins

#######################注意我这里安装jenkins版本要求实际是要安装jdk11版本的~~~我一开始弄错了 您可以按照以下步骤在 CentOS 上安装 JDK&#xff1a; 1. 首先&#xff0c;打开终端并使用 yum 命令更新系统软件包列表。输入以下命令来执行此操作&#xff1a; sudo yu…

TimSort——最快的排序算法

TimSort——最快的排序算法 排序算法是每个程序员绕不开的课题&#xff0c;无论是大学课程还是日常工作&#xff0c;都离不开排序算法。常见的排序算法有&#xff1a;冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、基数排序等。下面是这些算法性能的概…

【源码解析】EasyExcel导入导出源码解析

EasyExcel介绍 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存&#xff0c;poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题&#xff0c;但POI还是有一些缺陷&#xff0c;比如07版Excel解压缩以及解压后存储都…

动态规划-分割回文串 II

动态规划-分割回文串 II 1 题目描述2 示例2.1 示例 1&#xff1a;2.2 示例 2&#xff1a;2.3 示例 3&#xff1a;2.4 提示&#xff1a; 3 解题思路和方法3.1 解题思路3.1.1 确定状态3.1.2 转移方程3.1.3 初始条件和边界情况3.1.4 计算顺序3.1.5 回文串的判断方法 3.2 算法代码实…

华为OD机试真题B卷 Java 实现【最长子字符串的长度】

一、题目描述 给你一个字符串s,字符串s首尾相连组成一个环形,请你在环形中找出‘o’字符出现了偶数次最长子字符串的长度。 二、输入描述 输入一串小写字母组成的字符串。 三、输出描述 输出一个整数。 四、解题思路 题目要求在给定的环形字符串中找出字符’o’出现了…

软件测试之-测试用例写作规范

软件测试用例得出软件测试用例的内容&#xff0c;其次&#xff0c;按照软件测试写作方法&#xff0c;落实到文档中&#xff0c;两者是形式和内容的关系&#xff0c;好的测试用例不仅方便自己和别人查看&#xff0c;而且能帮助设计的时候考虑的更周。 一个好的测试用例必须包含…

STL-queue和priority_queue的模拟实现

回顾 对于STL&#xff0c;我们已经知道了vector和list&#xff0c;而它们是STL中被称为六大组件之一的容器&#xff0c;我们还学习了模拟实现stack&#xff0c;而stack在STL中被称为六大组件之一的适配器&#xff0c;今天&#xff0c;我们来学习queue的模拟实现和priority_que…