当前位置:首页>java>【第36期】21天养成编程习惯:Scratch刷题第08天

【第36期】21天养成编程习惯:Scratch刷题第08天

  • 2026-10-14 03:56:32
【第36期】21天养成编程习惯:Scratch刷题第08天

跟老马一起“升级打怪”学编程!

  • 涉及考试:计算机学会编程能力等级认证(GESP)、计算机学会编程培训师资认证(PTA)、电子学会等级考试
  • 活动内容:提供不同等级的真题供小朋友们选择练习
  • 备考建议:根据自己备考的等级选择相应题目(备考GESP四级的孩子可选择PTA的题目进行练习)
  • 附加价值:可作为白名单比赛的备考训练
  • 本月打卡:本月GESP_Scratch打卡题目

Day08:GESP一级2025.12_发射火箭

1. 准备工作

(1)删除默认小猫角色。

(2)添加角色Glow-1(作为倒计时指示器)、Rocketship(火箭)。

(3)为角色Glow-1添加两个造型Glow-2、Glow-3(模拟倒计时)。

(4)删除默认白色背景,添加背景Hill(发射场)和Moon(太空)。

2. 功能实现

(1)点击绿旗,背景换成Hill。

(2)点击绿旗,角色Rocketship的初始位置为(X=-50,Y=-120),初始方向为90°,初始大小为50,初始造型为rocketship-a。

(3)按下向左“←”键,x坐标减少5,按下向右 “→”键,x坐标增加5,此过程持续直到按下空格键为止。

(4)停止水平移动后,等待3秒,Rocketship以y坐标增加5的速度向上飞行,每移动一次切换下一个造型,飞行持续直到碰到舞台边缘。

(5)Rocketship碰到舞台边缘后,y坐标重置为-120,背景切换为Moon。

(6)点击绿旗,角色Glow-1的初始位置为舞台中心,初始方向为90°,初始大小为80,并处于隐藏状态。

(7)按下空格键后,Glow-1显示,并换为Glow-3造型。

(8)显示后,依次执行,等待1秒,切换为Glow-2造型,再等待1秒,切换为Glow-1造型,再等待1秒,隐藏角色。

注意事项:

  • 功能(1)全部写在背景代码区的【当绿旗被点击】积木下面。
  • 功能(2)(3)(4)(5)全部写在角色Rocketship代码区的【当绿旗被点击】积木下面。
  • 功能(6)(7)(8)写在角色Glow-1代码区的【当绿旗被点击】积木下面。

3. 设计思路与实现

(1)角色、舞台背景设置

a. 角色设置

删除默认小猫角色,添加角色Glow-1(作为倒计时指示器)、Rocketship(火箭)。

为角色Glow-1添加两个造型Glow-2、Glow-3(模拟倒计时)。

b. 舞台背景设置

删除默认白色背景,添加背景Hill(发射场)和Moon(太空)。

(2)脚本编写

编程题的功能实现有多种方案,标准答案所示参考程序仅是其中的一种,最终以是否完成题目要求的功能实现效果作为评分依据。

a. 角色:Rocketship

当绿旗被点击时:

  1. 开始:点击绿旗,也就是程序启动,就要执行后续的程序指令。
  2. 初始位置为(X=-50,Y=-120),初始方向为90°,初始大小为50,初始造型为rocketship-a。
  3. 重复执行直到按下空格键为止
    • 按下向左“←”键,x坐标减少5
    • 按下向右 “→”键,x坐标增加5
  4. 停止水平移动后,等待3秒。
  5. 重复执行直到碰到舞台边缘
    • y坐标增加5
    • 切换下一个造型
  6. y坐标重置为-120。
  7. 背景切换为Moon。

b. 角色:Glow-1

当绿旗被点击时:

  1. 开始:点击绿旗,也就是程序启动,就要执行后续的程序指令。
  2. 初始位置为舞台中心(X=0,Y=0),初始方向为90°,初始大小为80,并处于隐藏状态。
  3. 等待按下空格键。
  4. 按下空格键后,显示,并换为Glow-3造型。
  5. 等待1秒,切换为Glow-2造型。
  6. 再等待1秒,切换为Glow-1造型。
  7. 再等待1秒,隐藏角色。

c. 背景:

当绿旗被点击时:

  1. 开始:点击绿旗,也就是程序启动,就要执行后续的程序指令。
  2. 背景换成Hill

4. 评分标准

(1)点击绿旗,背景换成Hill。【2分】

(2)点击绿旗,角色Rocketship的初始位置为(X=-50,Y=-120),初始方向为90°,初始大小为50,初始造型为rocketship-a。【3分】

(3)按下向左“←”键,x坐标减少5,按下向右 “→”键,x坐标增加5,此过程持续直到按下空格键为止。【5分】

(4)停止水平移动后,等待3秒,Rocketship以y坐标增加5的速度向上飞行,每移动一次切换下一个造型,飞行持续直到碰到舞台边缘。【3分】

(5)Rocketship碰到舞台边缘后,y坐标重置为-120,背景切换为Moon。【1分】

(6)点击绿旗,角色Glow-1的初始位置为舞台中心,初始方向为90°,初始大小为80,并处于隐藏状态。【3分】

(7)按下空格键后,Glow-1显示,并换为Glow-3造型。【3分】

(8)显示后,依次执行,等待1秒,切换为Glow-2造型,再等待1秒,切换为Glow-1造型,再等待1秒,隐藏角色。【5分】


Day08:GESP二级2025.12_手机电量大挑战

【题目描述】

小杨的手机就像一个聪明的小助手,当电量变化时,它会用不同的方式来提醒我们:

  • 当电量非常低(不超过10%),它会显示一个大写字母 R,就像在说:“快给我充电吧!(Red警告色)”
  • 当电量有点低(超过10%但不超过20%),它会显示一个大写字母 L,意思是“电量有点Low啦!”
  • 当电量比较充足(超过20%),它就会直接显示具体的数字,比如直接显示50,表示还有50%的电量。

默认小猫角色和白色背景,编写程序,模仿小杨手机的这个功能。根据电量百分比的数字,输出手机应该显示的信息存入变量中。

【输入描述】

新建变量“”,表示电量百分比,范围是1到100之间的整数。

如下图所示:

【输出描述】

新建变量“”用于存储最后的结果。

如下图所示:

【输入样例】

x = 10

【输出样例】

ans = R

【输入样例】

x = 99

【输出样例】

ans = 99

【注意事项】

  1. 变量名的拼写(包括大小写)要和题目完全一致。
  2. 输入变量直接赋值即可,无需使用“询问并等待”积木块。
  3. 输出结果存放在对应变量中即可,无需使用“说…”或“说…,2秒”积木块。

【参考答案】

【测试用例】

【测试用例1】

输入:x = 87输出:ans = 87

【测试用例2】

输入:x = 20输出:ans = L

【测试用例3】

输入:x = 3输出:ans = R

【测试用例4】

输入:x = 60输出:ans = 60

【测试用例5】

输入:x = 15输出:ans = L

Day08:GESP三级2024.09_美丽数字

【题目描述】

小杨有若干正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是7的倍数。

默认小猫角色和白色背景,编写程序请你帮小杨挑选出这些美丽数字并用#连接起来。

【输入描述】

新建列表“数据”用于存储若干正整数。

如下图所示:

【输出描述】

新建变量“result”用于存储小杨认为的美丽数字,并用#把这些美丽数字连接起来。

如下图所示:

【输入样例】

数据 = [7,52,103]

【输出样例】

result = 7#52

【输入样例】

数据 = [350,643,250,17]

【输出样例】

result = 250

【注意事项】

  1. 变量名的拼写(包括大小写)要和题目完全一致。
  2. 输出结果存放在对应变量中即可,无需使用“说…”或“说…,2秒”积木块。
  3. 列表直接用“+”功能赋值进行测试即可,无需写代码赋值。

【参考答案】

依据题面描述的要求,需要取出列表中的每个数字,然后将各个位数加起来,并且判断是否是7的倍数如果是,则拼接到result中。首先是设定重复执行来遍历列表内容,重复执行内部将j设置为当前的一个数字,例如第2次j=52,再设置重复执行将5和2相加结果使用m存储起来,下方如果判断m是否是7的倍数,如果是还要考虑一个细节,如果是第一个数字是直接拼接的,后面的是需要先拼接一个#再拼接数字,所以分情况,如果为空直接拼接,否则#加数字,即可实现题面所描述的要求,求得正确结果。

【测试用例】

【测试用例1】

输入:数据 = [574, 511, 504, 679, 392]输出:result = 511#392

【测试用例2】

输入:数据 = [21, 140, 623, 336, 546, 266, 553, 329, 301, 518]输出:result = 266#329#518

【测试用例3】

输入:数据 = [350, 280, 252, 504, 700]输出:result = 700

【测试用例4】

输入:数据 = [539, 301, 126, 210, 588, 665, 98, 392, 581, 133, 7]输出:result = 588#392#581#133#7

【测试用例5】

输入:数据 = [686, 637, 392, 609, 168, 7, 546, 518, 448, 343, 70]输出:result = 392#7#518#70

Day08:GESP四级2025.09_数组清零

【题目描述】

小杨有一个装着数字的小篮子(列表),里面放着  个非负数字(比如 ,)。他的任务是通过一系列“魔法操作”,把篮子里所有数字都变成 0。

每次操作需要按照以下步骤进行:

(1)找最大的数字:在篮子里找到最大的数字。如果有多个相同的最大值,选位置最靠后面的那个(比如从上往下数,选最下边的)。

(2)找最小的非零数字:在篮子里所有还不是零的数字中,找到最小的那个。

(3)施展魔法:把第一步找到的最大数字,替换为该数字减去第二步找到的最小数字。

默认小猫角色,白色背景,请你帮助小杨计算出一共需要多少次这样的“魔法操作”,才能让所有数字都变成 0。

举个例子: →  →  →  →  →  →  →  一共7次。

【输入描述】

新建列表“”,用于存储篮子中的数据。

如下图所示:

【输出描述】

新建变量“”,用于存储最后的结果。

如下图所示:

【输入样例】

data = [2, 3, 4]

【输出样例】

ans = 7

【输入样例】

data = [1, 3, 2, 2, 5]

【输出样例】

ans = 13

【注意事项】

1、 变量名的拼写(包括大小写)要和题目完全一致。

2、 输出结果存放在对应变量中即可,无需使用“说…”或“说…,2秒”积木块

3、 列表直接用“+”功能赋值进行测试即可,无需写代码赋值。

【参考答案】

其他测试用例

【测试用例1】

输入:data = [8, 2, 13, 9, 2, 10]输出:ans = 28

【测试用例2】

输入:data = [9, 3, 14, 5, 12]输出:ans = 23

【测试用例3】

输入:data = [3, 6, 7, 8, 10, 1]输出:ans = 35

【测试用例4】

输入:data = [5, 15, 13, 5, 4, 15]输出:ans = 27

【测试用例5】

输入:data = [13, 4, 4, 2, 10]输出:ans = 21

Day08:PTA第06届_谁考了第K名

【题目描述】

在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第名学生的学号和成绩。

【输入描述】

两个列表【学号】和【成绩】,分别存储学生的学号(整数)和成绩(整数)并按照索引一一对应。

一个整数【  】, 学生的人数 。

如下图所示:

【输出描述】

第  名学生的学号和成绩,中间用空格分隔,存储在变量【  】中。

如下图所示:

【输入样例】

32004001 672004002 902004003 612004004 682004005 73

【输出样例】

2004004 68

【参考答案】

其他测试用例

【测试用例1】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407', '200408', '200409', '200410']},{'成绩': [71, 81, 86, 50, 84, 55, 60, 45, 46, 90]},{'k': 10}输出:{'result': '200408 45'}

【测试用例2】

输入:{'学号': ['200401', '200402', '200403']},{'成绩': [48, 75, 52]},{'k': 1}输出:{'result': '200402 75'}

【测试用例3】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407']},{'成绩': [85, 48, 52, 43, 97, 45, 68]},{'k': 4}输出:{'result': '200403 52'}

【测试用例4】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405']},{'成绩': [80, 41, 49, 90, 82]},{'k': 2}输出:{'result': '200405 82'}

【测试用例5】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407', '200408', '200409', '200410', '200411', '200412', '200413']},{'成绩': [87, 56, 92, 40, 64, 96, 55, 94, 75, 45, 74, 98, 95]},{'k': 5}输出:{'result': '200403 92'}

【测试用例6】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407', '200408', '200409']},{'成绩': [73, 64, 78, 49, 83, 87, 68, 60, 93]},{'k': 3}输出:{'result': '200405 83'}

【测试用例7】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407', '200408']},{'成绩': [49, 61, 58, 80, 96, 92, 60, 85]},{'k': 8}输出:{'result': '200401 49'}

【测试用例8】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407', '200408', '200409', '200410', '200411', '200412']},{'成绩': [62, 60, 52, 78, 45, 68, 65, 41, 98, 61, 86, 47]},{'k': 12}输出:{'result': '200408 41'}

【测试用例9】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407', '200408', '200409', '200410', '200411', '200412', '200413', '200414', '200415']},{'成绩': [73, 79, 89, 61, 100, 47, 74, 83, 44, 64, 42, 96, 59, 46, 63]},{'k': 15}输出:{'result': '200411 42'}

【测试用例10】

输入:{'学号': ['200401', '200402', '200403', '200404', '200405', '200406', '200407', '200408', '200409', '200410', '200411']},{'成绩': [54, 65, 41, 53, 46, 40, 80, 71, 91, 73, 70]},{'k': 7}输出:{'result': '200401 54'}

青少年编程竞赛交流

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章