
每年考季我都会收到一大堆和Python考级相关的问题。问得最多的其实不是某个语法细节反而是一句特别朴素的一级到底考什么能不能不学turtle说实话把turtle画图拿掉之后一级剩下的内容更像一门真正要打地基的编程课——变量、数据类型、运算符、条件判断、循环、字符串和列表这些东西往后每一级都会反复出现。这篇文章就按我带学生复习的顺序把一级里不涉及turtle画图的知识点完整梳理一遍。不管你是准备考试的学生、陪考的家长还是自学Python半年想找个检验标准的人这份汇总都可以当一张地图来用。先说明一点不同考级机构的一级大纲会有细微差别但下面这些考点在绝大多数场合都能对上。1. 一级考什么先看清这张知识地图1.1 考试定位与题型分布Python等级考试的一级定位就是给零基础学员准备的入门关卡。它不会要求你写出多复杂的程序更多的是看你有没有理解“程序是顺序执行的”这件事以及能不能读懂简单代码的运行结果。常见题型会包括选择题、判断题、代码填空题和简单编程题编程题通常也就是让补全一两行代码或者写一个很短的小程序比如输入两个数求和、判断奇偶、循环输出数字这类级别。这里要特别提醒考生一级的内容边界比你想的小。我在教学中见过不少学生把精力花在函数定义、类、文件读写上结果考试根本不考白白浪费了时间。一级一般不涉及自定义函数不涉及类和对象不涉及文件操作不涉及异常处理也不要求掌握turtle画图。真正的大头集中在基础语法、输入输出、运算符、流程控制、字符串和列表这几块把这几块吃透一级基本就稳了。反过来如果连这些基本功都没练扎实哪怕turtle画图练得再花哨选择题和填空题一样会翻车。1.2 知识点权重与复习顺序虽然我不太建议完全按“押题”的方式复习但了解一下大概的权重确实能帮你分配时间。以我接触过的多套一级真题来看可以粗略参考下面这个比例知识块常见出题方向大约占比变量与数据类型变量命名、类型判断、类型转换15%输入输出print和input的各种用法15%运算符算术、比较、逻辑运算及优先级20%流程控制if条件判断、for循环、while循环25%字符串与列表索引、切片、增删改查、常用方法20%编程习惯与调试缩进、注释、报错信息识别5%复习顺序建议按“环境→变量→输入输出→运算符→条件→循环→字符串列表→综合练习”来走。这个顺序不是随便排的它基本符合写一个真实小程序的思维过程先有数据再处理数据然后根据判断重复处理最后把结果输出。我见过有些学生一上来就死磕复杂题目结果连input返回字符串这个点都没搞清楚做题全靠猜这种节奏最要不得。一级的复习核心是“基础重复三遍”同一个知识点用不同题型反复练比不断刷难题有效得多。2. 从安装环境说起一级考试的运行基础2.1 Python安装与IDLE使用复习Python一级第一步就是把Python环境装好。现在的安装包一般去官网下载稳定版就行Windows下安装时有一个特别容易忽略的动作勾选“Add Python to PATH”。如果不勾后面在命令行里敲python可能会直接报错这跟你程序写得好不好没关系纯粹是环境问题。考级机房里的考试系统通常已经配好了环境但你自己在家练习时如果装都不会装考场上遇到问题更慌。日常练习我一般建议直接用Python自带的IDLE不用急着上VS Code这类编辑器。原因很简单IDLE足够轻量自带“交互模式”和“脚本模式”两种状态。交互模式下看到提示符你输入一行它立刻执行一行非常适合验证小细节比如想知道7 // 2到底等于几敲一下回车就有结果。脚本模式则是写完整代码后按F5运行适合做练习题。很多一级考生在考场上会突然分不清该在哪里写代码其实记住一句话就好临时验证去交互模式完整答题去脚本模式。如果你已经装了VS Code也可以顺手配好Python插件这本身不是一级考点但良好的编辑体验会让日常练题舒服不少。不过没必要为了考级去折腾复杂的调试器把IDLE用熟练一级考试已经绰绰余。安装完成后我建议先跑一个最经典的“Hello World”确认print能正常输出再跑一个加法运算确认环境没有问题这才算真正准备好了。2.2 变量与命名规则变量在Python里更像是一个“名字标签”而不是一个需要提前申请容量的盒子。你写score 90相当于给整数90贴了个叫score的标签之后用score就能代表90。一级考试很喜欢考“变量重新赋值”和“变量类型由值决定”这两个点。比如a 10 a hello print(a)这段代码最终输出hello因为第二次赋值把a重新指向了字符串。有些学生在选择题里看到变量先存整数又存字符串会觉得是不是报错其实Python允许这种动态变化这也是它和C、Java这类静态语言最大的感官差异。变量命名的规则也是必考。变量名只能由字母、数字、下划线组成不能以数字开头不能是Python关键字比如if、for、while、print这些都不行。1st_place是错的first_place是对的class是错的class_name是对的。另外Python变量名区分大小写Name和name是两个完全不同的变量。这块没有太多技巧就是多写多判断练到看到非法命名能秒反应就过关了。2.3 注释与缩进注释用#开头写注释的目的是让人看懂代码程序执行时会自动跳过注释行。一级考试一般不让你写注释但判断题可能会问“注释会影响程序运行结果”答案是“不影响”。这里我想多说一句平时练习哪怕只是自己看也尽量养成写注释的习惯这个习惯在后续级别里会越来越重要。真正决定Python程序能不能跑起来的是缩进。Java和C用花括号表示代码块Python用缩进表示代码块。同样一段逻辑缩进层级错了程序要么直接报IndentationError要么虽然不报错但运行结果完全不对。一级考试特别喜欢在这上面挖坑。我见过一个很典型的题if 3 2: print(A) print(B) print(C)很多人会以为输出ABC实际上C没有缩进它在if外面所以一定输出结果是ABC没错但如果把C也缩进到if里面只要条件成立同样输出。一级不会故意把题出得很刁钻但缩进是默认要求代码填空题尤其注意补全内容后要和上下文对齐千万别凭感觉乱缩进。3. 数据类型搞懂print和input到底在干什么3.1 基本数据类型辨析一级要求掌握的数据类型不多主要是int整数、float浮点数、str字符串和bool布尔值。整数就是没有小数点的数浮点数就是带小数的数字符串是放在引号里的文本布尔值只有True和False两个取值。这里要特别提醒True和False首字母必须大写小写true会直接报错这是初学者特别容易踩的坑。想确认一个变量的类型可以用type()函数比如type(3)得到class int。考级里常出这样的选择题type(3.0)的结果是什么答案是float因为哪怕数值上3.0等于3它带着小数点类型就是浮点型。还有一个经典判断题type(123)是int对不对不对加了引号就是字符串哪怕里面的内容是数字。判断类型只跟写法有关不跟“长得像什么”有关这是一级非常核心的考点。3.2 input()永远返回字符串input()是考试重点中的重点几乎所有编程题都会用到它。你需要记住一条铁律不管用户在键盘上输入了什么input()拿到的结果一律是字符串。这就意味着如果你写age input(请输入年龄)然后想用age 1去算明年的年龄程序不会帮你做加法只会尝试把字符串和整数拼接结果直接报错。解决办法是先做类型转换age input(请输入年龄) age int(age) next_year age 1 print(next_year)或者更简洁地写成age int(input(请输入年龄))。一级考试会专门考“输入的两个数相加”这类题不少人忘了转换类型直接print(a b)结果变成了字符串拼接比如输入123和456输出的不是579而是123456。这个细节在备考阶段一定要反复练到条件反射看到input就先想类型转换。除了int()还需要掌握float()和str()。float(3.14)可以得到浮点数3.14str(100)可以得到字符串100。选择题经常给一串转换让你判断结果是什么类型只要记住一句话int转数字、float转小数、str转文本转换后能不能计算取决于最终到底是什么类型。3.3 print()输出的多种写法print()看起来简单实际能考的点比很多人想象的多。比如多个值一起输出用逗号分隔会自动加一个空格print(a, b)输出a b。如果你不想要这个空格可以用sep参数改成任意字符比如print(2024, 12, 31, sep-)输出2024-12-31。end参数则决定输出完以后追加什么默认是换行改成end就能让连续两个print输出在同一行。一级还会考格式化输出。老版本风格用%d、%s、%f占位比如name 小明 score 95 print(姓名%s成绩%d % (name, score))也可以使用字符串的.format()方法把占位符写成{}print(姓名{}成绩{}.format(name, score))关于f-string也就是写f姓名{name}这种形式现在的新版本Python完全支持但部分考级大纲可能还停留在旧题型里。我的建议是%格式和.format()一定要会因为真题里很容易出现f-string顺手学会也不吃亏只是别因为不熟悉旧写法而丢掉送分题。4. 运算符算术、比较、逻辑一起抓4.1 算术运算符与优先级Python的算术运算符有加、减-、乘*、除/、整除//、取余%、幂**。这里有几个一级高频易错点。第一/永远返回浮点数哪怕整除比如6 / 3的结果是3.0而不是3。第二//是整除向下取整7 // 2等于3这没问题但-7 // 2在Python里的结果是-4因为它是向下取整而不是向零取整很多人在这个负数的细节上丢过分。第三%是取余数7 % 2的结果是1。第四**是幂运算2 ** 3结果8。优先级方面有小括号先算括号里的然后算幂运算接着是乘除、整除、取余最后才是加减。同一级运算符从左往右算。考试常考这类式子print(2 3 * 4 ** 2)先算4 ** 2得16再算3 * 16得48最后加2结果是50。如果你不确定当下最稳妥的办法就是多写括号比如2 (3 * (4 ** 2))结果一样但代码意图更清楚。考试不会因为你写括号扣分反而能让阅卷人和你自己都少一点判断成本。4.2 比较运算符和“等于”的陷阱比较运算符包括、!、、、、它们的运行结果一定是布尔值也就是真或假。一级最爱考的一个点是“等号”。单个等号是赋值表示把右边的值放进左边的变量两个等号才是判断相等。有些选择题故意写if a 5:很多学生看不出问题实际上这行代码在Python里直接语法错误因为条件里不能赋值。字符串也能比较大小它是按照字符的编码顺序逐个比较的。比如a A是True因为小写字母a的编码大于大写字母A。遇到多个字符时会先比第一个字符如果相同再比第二个就像查字典一样。这个考点不算难但容易出现在判断题里你只要记住“字符串比较是有意义的不是在胡闹”就不会上当了。另外Python还支持链式比较比如3 5 10等价于3 5 and 5 10结果True这个写法如果你没接触过考到时会觉得新奇其实逻辑很简单。4.3 逻辑运算符与短路现象逻辑运算符有三个and与、or或、not非。and两边都是真结果才为真or只要一边为真结果就为真not直接取反。一张小小的真值表就能覆盖大部分考题表达式结果True and FalseFalseTrue or FalseTruenot TrueFalseFalse or TrueTrue这里有一个很经典的“短路”现象对于and如果左边已经是False右边的代码就不会执行对于or如果左边已经是True右边的代码就不会执行。考级里一般不会直接考“短路”这个名词但会在程序运行结果的题目里出现。比如a 5 print(a 10 and a / 0 1)虽然a / 0会报错但因为a 10是False后面根本不会执行所以程序不会报错直接输出False。如果没见过这个现象肯定以为这题出错了其实逻辑运算就是这么设计的。5. 流程控制if和循环是编程题的重头戏5.1 条件判断if / if-else / if-elif-else条件判断的核心语法是条件后面加冒号下一行缩进写要执行的代码。if后条件成立执行对应代码块不成立就跳过去看elif或else。需要注意elif不是随便写的它必须和前面的if配套而且整条分支结构里只会进入第一个满足条件的分支。比如score 85 if score 90: print(优秀) elif score 80: print(良好) elif score 60: print(及格) else: print(不及格)这段代码输出“良好”并不会继续判断后面score 60的情况。很多学生以为条件不满足第一个会继续比较后面所有分支其实只要命中一条后面全都不看了。条件判断里还有一个隐含考点什么值会被当作真在Python中0、空字符串、空列表[]、None会被当作False其他大多数值会被当作True。像if a:这个条件成立因为非空字符串是真if 0:不成立。这种写法看起来不像“比较”但在Python里非常常见一级如果考到不会太偏但你心里要有这根弦。5.2 for循环与range的区间for循环是一级编程题里出现频率最高的结构尤其是配合range()使用。range(n)表示从0到n-1的整数序列不包含n本身这就是“含头不含尾”规则。range(1, 101)表示1到100想要让循环累加1到100就写成total 0 for i in range(1, 101): total total i print(total)这里注意两点第一total必须在循环外面初始化如果放在循环里每轮都会被重置成0最后结果还是100第二循环变量i能取到1但取不到101所以想包含100就要写成101。range还可以接受第三个参数作为步长比如range(1, 10, 2)表示1、3、5、7、9。步长如果是负数可以倒着取数比如range(10, 0, -1)表示10到1。一级的填空题很喜欢让你判断range(5)到底能循环几次答案是5次因为生成0、1、2、3、4这5个数。5.3 while循环与break/continuewhile循环和if长得像都是条件加冒号加缩进但if只判断一次while会一直判断直到条件不成立。所以写while的时候一定要保证条件在某轮之后会变成False否则就成了死循环。下面这个程序输出1到5i 1 while i 5: print(i) i i 1里面i i 1是必不可少的。很多初学的人会漏掉这行然后发现程序像卡住了一样一直输出1那就是死循环了。考级中如果考while通常会考这种“计数循环”和“猜数游戏”的变形。break用于提前结束整个循环continue用于跳过本次循环的剩余代码直接进入下一轮。区分它们有一个很简单的方法break是“破门而出”continue是“跳过这一步但人还在循环里”。比如输出1到10里所有偶数for i in range(1, 11): if i % 2 ! 0: continue print(i)奇数直接continue跳过只有偶数才走print。一级不会考太深的嵌套但如果能理解这种情况循环题基本就不会丢分了。6. 字符串与列表考级里的数据容器6.1 字符串的索引、切片和方法字符串可以看作一串字符的序列从0开始编号也就是第一个字符的下标是0。s Python时s[0]是Ps[-1]是n负数下标表示从右往左数。切片s[0:2]取的是下标0到1的字符结果Py同样不包含结束下标对应的字符。这个“含头不含尾”的规则和range完全一致一级考生如果能把这个规则串起来记会发现好多题都在重复同一个逻辑。字符串还有一个特性是“不可变”也就是说不能直接通过s[0] J修改某个字符想改字符串只能重新生成一个新的字符串。常用方法里len(s)求长度s.upper()转大写s.lower()转小写s.find(th)查找子串位置找到返回下标找不到返回-1s.count(a)统计出现次数s.replace(a, b)做替换。这些方法不会改变原字符串而是返回新字符串这个细节也容易出判断题。6.2 列表的增删改查与可变特性列表用方括号表示比如nums [3, 1, 4, 1, 5]。它和字符串一样支持下标和切片但最大的不同是列表可变你可以直接修改某个位置的元素nums[0] 9。此外列表有一组非常常用的方法append()在末尾添加元素insert()在指定位置插入remove()删除第一个指定的值pop()删除指定位置的元素并返回它。判断一个列表题时关键就是看这些方法到底改了原列表还是返回新列表。对于数值型列表len()求元素个数sum()求和max()和min()求最大值和最小值。一级编程题里经常有“输入若干个数计算总和和平均值”这种需求。平均值直接用sum(nums) / len(nums)但要注意/运算结果是浮点数。列表的切片也能生成新列表比如nums[1:3]取第2到第3个元素但新列表和原列表互不影响。这块如果考选择题一般就是用“两个列表切片后是否相等”来设置陷阱。6.3 元组与字典认识但不深究不同考级大纲对元组和字典的要求不太一样。不少地方的一级考试只要求“认识元组和字典”或放到二级系统学习但基础概念最好还是提前知道。元组用小括号创建比如point (3, 4)它和列表最大的区别是不可变一旦创建就不能增删改元素。字典用花括号创建以键值对形式存数据比如student {name: 小明, age: 10}通过键访问值student[name]。考试如果涉及字典一般只会让你判断某个键是否存在、修改某个键对应的值不会出太复杂的遍历。我的建议是把元组当作“不能改的列表”把字典当作“按照名字查值的表”这两个类比记住就够了。不需要在一级阶段就死磕嵌套循环遍历字典这种偏二级的用法。7. 常见错误与考场避坑技巧7.1 高频语法错误与失分点速查带考级这几年我发现有些错误几乎每个班都要重复讲一遍。这里整理一个速查表照着自查比看十遍知识点都有效错误代码或写法问题原因正确写法if 3 2;用分号代替冒号if 3 2:print(“hello”)用了中文引号print(hello)for i in range(1,5)想取5对区间规则不熟range(1, 6)a b且a、b为input输入input返回字符串int(a) int(b)if a 5:把赋值当等号if a 5:while i 3:但循环里没改i死循环循环体内让i变化代码前半段4空格后半段3空格缩进不一致统一为4个空格除此之外还有一个特别隐蔽的坑变量名拼写前后不一致。比如定义时写了num后面用的时候写成nmu程序会报NameError因为Python根本不认识这个名字。考试时时间紧张手一抖就容易出现这种低级错误。我的经验是答题写代码时前面定义过什么变量就原样复制过去不要靠记忆重敲能省不少心。7.2 考场做题方法把脑子变成一台解释器选择题和填空题里有一类题是“请写出程序输出结果”这种题千万别用眼睛看一遍就填答案出错率极高。我教学生的方法是“变量跟踪法”在草稿纸上列一张小表把每个变量的值随着代码一行一行更新。比如看一个for循环就在纸上写下i每次变成什么、total每次变成什么。这样跑完代码最终结果自然出来比心算靠谱得多。答题顺序也有讲究。我一般建议先做选择题和判断题里那些“一眼能看出来”的基础题碰到复杂点的运行结果题先跳过等编程题做完再回头慢慢推。编程题不要一上来就在电脑里狂打代码先在草稿纸上写出伪代码输入是什么、用什么变量存、怎么处理、怎么输出。一级的编程题逻辑通常只有三四步一旦思路清楚了代码只是翻译工作。最后一定要记得在本地IDLE里跑一遍测试用题目给的样例输入验证很多人自己觉得写对了其实跑都没跑过很容易在语法细节上丢分。7.3 平时练习的三个建议最后分享一点带考经验。第一每天至少敲三行代码哪怕只是把例题原样敲一遍也比只看不敲有效因为考场上你需要的是手感和对报错的敏感度。第二每次运行时遇到报错不要急着删掉重写先读一读报错信息。SyntaxError是语法错误NameError是名字未定义TypeError是类型不匹配这些英文单词多读几遍慢慢就不怕了到了一级考场你已经比多数人稳。第三考前两周通过刷题来查漏补缺把错题对应的知识点标出来集中再过一遍而不是盲目刷新题。带过这么多轮学生我最深的感受是一级的难度不在于题目本身多难而在于很多人太轻视基础。turtle画图确实好玩但画图背后的语法支撑恰恰就是这篇文章里讲的无聊琐碎的部分。你把这些一点一点啃下来再去写turtle会发现顺畅得多。所以备考一级别嫌基础烦囫囵吞枣才是最大的敌人。