
最近身边不少家长和学生在问GESP Python三级的事。2024年12月那次认证考试刚过去不久网上题目信息比较零散很多人拿着回忆版题目却找不到靠谱解析。这篇文章我就以备考者和教学辅导的双重视角把这次三级考试的核心考点、典型真题思路、易错点和备考路线完整梳理一遍。不管你是准备下一次考试的学生还是带考级的老师都能从中拿到可以直接用的东西。先说说为什么三级是个关键节点。GESP青少年编程能力等级认证一共八级三级恰好是“会用”和“会写”的分水岭。一二级的重点是语法正确、能跑通简单程序到了三级开始真正考察算法思维和代码组织能力——数组、字符串处理、简单排序查找、进制转换这些硬核内容全部登场。很多孩子一级二级轻松过关到三级突然卡住就是思维方式没转过来。1. 先搞懂三级到底考什么——考试定位与知识版图先帮没接触过GESP的朋友建立个基本认知。GESP全称青少年编程能力等级认证由中国计算机学会CCF主办分图形化、Python、C三个方向每个方向独立认证。Python方向一共八级一年有四次考试机会分别在3月、6月、9月、12月。2024年12月这次就是当年最后一次认证。三级考试的核心定位只有一句话从“能写代码”过渡到“能设计代码”。这句话怎么理解举个例子一级二级考的是“给你一个任务你能不能用学过的语句实现”三级考的是“给你一个问题你能不能自己设计出解决步骤并且用代码高效地表达出来”。也就是说重点从语法记忆转向了逻辑设计。具体到知识范围官方大纲里三级主要涵盖以下几块进制与编码二进制、八进制、十六进制之间的相互转换ASCII码的基本规律。注意不只是会算还要理解进制在计算机存储中的含义。一维数组与简单二维数组数组的定义、遍历、查找、插入删除思想。二级对数组的要求只是“认识”三级要求“熟练运用数组解决问题”。字符串处理进阶字符串切片、查找子串、split拆分、join拼接、大小写转换、遍历字符并统计。三级开始出现需要综合处理字符串的题目。函数这是三级新增的重头戏。函数的定义、参数传递、返回值、局部变量与全局变量的区别。Function思维是三级和二级最大的分水岭。基础算法枚举法暴力枚举所有可能、选择排序、冒泡排序、顺序查找、二分查找。不要求掌握复杂算法但要求能理解排序查找的每一步逻辑。代码阅读与调试给一段代码判断输出结果或指出错误。对比一下二级就能发现差别二级的数组题一般是“输出某个位置的数”三级的数组题变成了“统计、筛选、排序后输出”。二级的函数只需要“知道怎么调用”三级必须“自己设计函数封装功能”。这就像学做饭二级是照着菜谱做三级是给你食材自己设计菜谱。2. 题型分布与分值结构——2024年12月这次考试的整体面貌先说考试形式。三级考试全部机考满分100分考试时间90分钟。题型分为两部分题型题量分值占比单选题15题2分/题共30分30%判断题10题2分/题共20分20%编程题3题共50分通常15152050%这个分值布局很有深意客观题占了50分编程题占了一半。也就是说就算编程题没全部做出来只要客观题稳扎稳打通过也不是难事三级合格线一般是60分。但反过来如果只盯着编程题而忽视了客观题里的基础概念很容易翻车。2024年12月这次考试从我接触到的考生反馈来看整体出题风格偏“稳中有变”。选择题和判断题考察的知识点没有超出大纲范围但出题角度比以往更灵活不会直接问你“下面哪个是合法变量名”而是给你一段代码上下文问变量作用范围或者输出结果。编程题方面三道题分别侧重不同方向。第一道偏基础输入输出和简单计算属于送分题第二道开始上难度涉及数组或字符串的遍历和处理第三道压轴题是一道综合性算法题需要结合排序或枚举思想。这个难度梯度设计得很合理基础薄弱的能把第一题做出来拿15分能力强的可以冲击满分。我整理了这次考试的知识点出现频率知识点出现题型频率进制转换选择、判断高字符串方法选择、编程很高数组遍历与统计选择、编程很高函数定义与调用选择、编程高排序选择/冒泡选择、编程中循环嵌套编程高全局变量与局部变量选择中ASCII与字符处理选择中看到没字符串和数组几乎是必考且重点考的。这两个板块掌握不好三级基本没戏。3. 编程题深度复盘——三道题的思路拆解与代码实现这一节是全文的核心。我把这次考试的编程题按“题目要求分析→算法思路→参考代码→关键点总结”的顺序完整拆解。需要说明的是下面题目是我结合多位考生回忆和考纲要求整理出的代表性版本核心考察点与真题一致。3.1 第一道编程题统计字符出现次数题目要求回忆还原版输入一行长度不超过1000的字符串可能包含空格统计其中每个英文字母出现的次数按字母顺序输出出现次数不为0的字母及其次数。大小写不区分统一按大写输出。这道题考察的核心是字符串遍历、字符判断、列表或字典计数、格式化输出。拿到这种题不要急着写代码先在草稿纸上想清楚两件事用什么数据结构存“字母→次数”的映射关系统计完后怎么按字母顺序输出大部分学生第一反应是用字典——字母做键次数做值。这个思路没错但我更推荐基础不够扎实的学生用一个长度为26的列表来计数因为题目中明确说了是英文字母范围固定用列表下标对应字母序号逻辑更直观也不会踩字典遍历顺序的坑。参考代码s input().strip() cnt [0] * 26 # 下标0代表A25代表Z for ch in s: if ch.isalpha(): idx ord(ch.upper()) - ord(A) cnt[idx] 1 for i in range(26): if cnt[i] 0: print(chr(ord(A) i), cnt[i])这道题的关键点有三个isalpha()方法判断字符是否为字母。有些同学用ch a and ch z也能做但要注意大小写都要判断用isalpha()更省事。大小写统一。题目说“不区分大小写”所以统计前先ch.upper()转成大写。这一步漏掉的话同一个字母会被统计成两个键。ord()和chr()的使用。ord(A)是65chr(65)是A。下标i加上ord(A)就是对应字母的ASCII码。不少同学在这个地方卡壳建议考前把这两个函数的关系彻底搞懂。这道题的实际得分率据考生反馈大概在七成左右丢分原因高度集中在字符串里包含空格导致输入读取不完整以及没统一大小写。机考的输入读取要特别注意如果一行字符串里可能有空格用input()没问题它默认读一整行但要注意结尾不能有多余换行干扰。提示我强烈建议平时练习时多试几组边界输入比如空字符串、全部是数字的字符串、混合大小写的长句子。这些边界情况正是考试挖坑的高发区。3.2 第二道编程题数组元素筛选与重组题目要求输入一个正整数n然后输入n个整数存入数组。请将数组中所有的偶数按原相对顺序输出再将所有的奇数按原相对顺序输出奇数与偶数之间用空格分隔。简单来说输入5个数[3, 8, 2, 7, 4]先输出所有偶数8 2 4再输出所有奇数3 7。这道题看起来简单但它是典型的“伸手就能做但做全对不容易”的题目。考察点包