GESP四级真题双杀:列表映射法,一招打通字符串转换!

四季读书网 4 0
GESP四级真题双杀:列表映射法,一招打通字符串转换!

GESP四级真题双杀:列表映射法,一招打通字符串转换!

大家好,我是老马。

2026年3月和6月的GESP图形化四级考试,接连出现了两道看似不同、实则同源的题目——“凯撒密码”和“小杨的字符转换器”。很多考生走出考场才发现,这两道题的解法几乎是一个模子刻出来的。今天,我就用官方参考答案中的列表映射法,彻底拆解这两个高频考题,帮你抓住GESP四级“字符串处理”板块的核心命脉。

一、什么是字符串映射转换?

无论规则多么花哨,这类题的本质都是把一个字符串中的每个字符,按照特定规则变成另一个字符,最后将所有新字符拼接成结果。整个流程只有三步:

  1. 遍历字符串:从头到尾依次取出每个字符。
  2. 判断字符类型:根据规则确定当前字符属于哪一类(数字、字母、其他)。
  3. 执行映射:对每一类字符应用对应的转换规则,得到新字符。

在Scratch中,这三步的最佳实现工具就是列表——用列表存储映射关系,用“列表中第一个”积木查找位置,再用位置去另一张表或同一张表中取值。这就是官方参考答案的核心思路。

二、查表型映射:字符转换器(2026年6月)

GESP四级真题双杀:列表映射法,一招打通字符串转换!-第1张图片-四季读书网
GESP四级真题双杀:列表映射法,一招打通字符串转换!-第2张图片-四季读书网

【题目描述】

小杨有一串字符,他想玩一个有趣的转换游戏。规则如下:

  • 如果字符是数字 0 ~ 9,就把它变成对应的字母(0→a, 1→b, 2→c, …, 9→j);
  • 如果字符是字母 a ~ j(不区分大小写,例如 A 和 a 都算作 a),就把它变成对应的数字(a→0, b→1, c→2, …, j→9);
  • 其他字符(如 k~z 的字母、其他符号等)保持不变。

默认小猫角色和白色背景,请你帮小杨编写一个 Scratch 程序,完成这个转换并把结果存储在变量ans中。

【输入描述】

新建变量“s”,表示一个待转换的字符串。

如下图所示:

GESP四级真题双杀:列表映射法,一招打通字符串转换!-第3张图片-四季读书网

【输出描述】

新建变量“ans”,用于存储最终的结果,表示转换后的字符串。

如下图所示:

GESP四级真题双杀:列表映射法,一招打通字符串转换!-第4张图片-四季读书网

【样例解释】

  • 'a'是字母 a → 对应数字 0
  • 'B'视为字母 b → 对应数字 1
  • 'c'是字母 c → 对应数字 2
  • '9'是数字 9 → 对应字母 j
  • '8'是数字 8 → 对应字母 i
  • 最终得到 "012ji"

【输入样例】

s= "aBc98"

【输出样例】

ans= "012ji"

【输入样例】

s = "15#x"

【输出样例】

ans = "bf#x"

【注意事项】

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

规则回顾

  • 数字0~9 → 字母a~j(0→a, 1→b, …, 9→j)
  • 字母a~j(不区分大小写)→ 数字0~9(a→0, b→1, …, j→9)
  • 其他字符不变

官方解法:双列表交叉映射

准备两张表

  • 列表“字母表”:依次填入 a, b, c, d, e, f, g, h, i, j(10项)
  • 列表“数字表”:依次填入 0, 1, 2, 3, 4, 5, 6, 7, 8, 9(10项)

遍历处理

  1. 用“重复执行”配合“字符串长度”和“第几个字符”积木,依次取出 s 中的每个字符 ch
  2. 用“列表中第一个”积木在“字母表”中查找 ch。由于Scratch字符串比较不区分大小写,大写字母也能匹配到小写字母。
    • 如果找到(返回值 > 0),则用该位置作为索引,从“数字表”中取出对应的数字字符,追加到 ans
  3. 否则,用同样方法在“数字表”中查找 ch
    • 如果找到,则用该位置从“字母表”中取出对应的字母字符,追加到 ans
  4. 如果都不在表中,直接将 ch 原样追加到 ans

关键细节

  • 列表索引从1开始,因此字母 a 在字母表中是第1项,对应数字表第1项 0;字母 b 是第2项,对应数字表第2项 1……完美对齐。
  • 数字字符 '9' 在数字表中是第10项,对应字母表第10项 'j'

三、偏移型映射:凯撒密码(2026年3月)

GESP四级真题双杀:列表映射法,一招打通字符串转换!-第5张图片-四季读书网
GESP四级真题双杀:列表映射法,一招打通字符串转换!-第6张图片-四季读书网

【题目描述】

小杨最近在图书馆发现了一本关于密码学的有趣书籍,里面介绍了一种古老的密码——凯撒密码。这种密码很简单:每个字母都按照字母表的顺序往后移动固定位数。比如移动3位,A就变成D,B变成E,C变成F……到了Z之后又回到A,Z就变成了C。

小杨现在得到了三行重要的信息:

  1. 第一行:已知的原始消息(明文)
  2. 第二行:已知的加密后的消息(密文),它是用凯撒密码对第一行加密得到的
  3. 第三行:需要解密的密文,它和前面使用了相同的移动位数

默认小猫角色和白色背景,请你帮助小杨,先根据前两行计算出字母移动了多少位,然后用这个规律破解第三行的密文,找到原始消息并把结果存储在变量中。

【输入描述】

新建变量“”,表示已知的明文(全大写字母)

新建变量“”,表示对应的密文(全大写字母)

新建变量“”,表示需要破解的密文(全大写字母)

如下图所示:

GESP四级真题双杀:列表映射法,一招打通字符串转换!-第7张图片-四季读书网

【输出描述】

新建变量“”,用于存储最终的结果,表示破解后的明文。

如下图所示:

GESP四级真题双杀:列表映射法,一招打通字符串转换!-第8张图片-四季读书网

【输入样例】

str1 = ABCDEFGVWXYZstr2 = DEFGHIJYZABCstr = WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ

【输出样例】

ans  = THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG

【样例解释】

从前两行可以看出:

  • A → D(向后移动3位)
  • B → E(向后移动3位)
  • 以此类推

所以移动位数是3。对第三行密文,我们把每个字母向前移动3位:

  • W向前移动3位变成T
  • K向前移动3位变成H
  • 以此类推

最终得到:"THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG"

【输入样例】

str1 = ABCstr2 = DEFstr = JRRG

【输出样例】

ans = GOOD

【注意事项】

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

规则回顾

  • 每个大写字母向后移动固定位数(循环,Z→A)
  • 已知一组明密文对(str1, str2),求偏移量
  • 用相同偏移量解密另一段密文(str)

官方解法:单列表偏移映射

准备一张表

  • 列表“字母表”:依次填入 A, B, C, ..., Z(26项,全大写)

第一步:求偏移量

  1. 取 str1 的第一个字符和 str2 的第一个字符。
  2. 用“列表中第一个”在字母表中分别找到它们的位置 pos1 和 pos2
  3. 偏移量 offset = pos2 - pos1(若结果为负数则加26)。例如 A 在位置1,D 在位置4,偏移量 = 3。

第二步:解密 str

  1. 初始化 ans 为空字符串。
  2. 遍历 str 的每个字符 ch
    • 用“列表中第一个”在字母表中找到 ch 的位置 pos
    • 计算解密后的位置:newPos = pos - offset
    • 如果 newPos < 1,则 newPos = newPos + 26(循环到字母表末尾)。
    • 从字母表中取出第 newPos 项,追加到 ans

关键细节

  • 解密是加密的逆操作:加密时向后移,解密时向前移,所以用减法。
  • 循环处理只在边界发生(当 pos - offset 小于1时加26)。

四、两种方法的本质联系

步骤
字符转换器(查表型)
凯撒密码(偏移型)
建表
两张表(字母表、数字表)
一张表(字母表)
遍历
重复执行 + 取字符
重复执行 + 取字符
查位置
“列表中第一个”在表中查找
“列表中第一个”在表中查找
映射
用位置去另一张表取对应项
用位置加减偏移量(取模)后回同一张表
拼接
变量累积
变量累积

核心框架完全一致:建表 → 遍历 → 查位置 → 映射 → 拼接。

五、掌握通用框架,一通百通

无论题目如何变化,只要遵循这个框架,就能快速搭建程序:

  1. 建表:根据映射规则创建1~2张列表。
  2. 遍历:用“重复执行”逐个取出字符。
  3. 查位置:用“列表中第一个”找到字符在表中的位置。
  4. 映射
    • 查表型:用位置去另一张表取值。
    • 偏移型:用位置加减偏移量(注意循环)后回同一张表取值。
  5. 拼接:将映射结果追加到 ans

考场三提醒

  • 列表索引从1开始,不是0。
  • Scratch字符串比较不区分大小写,但“列表中第一个”查找时大小写字母都能匹配。
  • 变量名必须与题目完全一致(sansstr1str2str)。

掌握了这个通用框架,无论是字母镜像、反向映射还是混合规则,你都能从容应对。这就是GESP四级“字符串映射转换”类题目的终极解法。


青少年编程竞赛交流

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

GESP四级真题双杀:列表映射法,一招打通字符串转换!-第9张图片-四季读书网

抱歉,评论功能暂时关闭!