大家好!我是老张,来自北京西城区。这个寒假我和孩子一起开启了一项新挑战,系统学习Python,目标是通过全国青少年编程等级考试(Python四级)。我们计划用15–20篇博客,全程记录这段学习旅程:包括错题分析、学习资源整理和心得反思等等。如果你也在陪孩子准备编程考级,欢迎关注并交流!如需我整理的习题材料,也欢迎私信(正在逐步归档中)。
今日学习回顾
昨晚,我让孩子做了一份我亲手整理的Python一级选择题练习卷。这份卷子去掉了一级的图形绘制部分,因为四级不考图形部分,共11道题。我将其全部打印出来,让孩子在模拟真实考试环境完成。
结果超出预期!孩子虽然在小学学过Python,但近一年没有碰,我以为会忘得差不多。没想到他不仅思路清晰,还答对了9道题,正确率约82%,达到了python一级水平。
我们一起坐下来逐题分析错题原因。发现两个错误并非粗心,而是知识盲区:
- f-string 格式化字符串:孩子完全没学过这个语法,这是python3.6的新语法,很多老教材不讲;
range()循环结束后变量 i 的取值:对python循环变量的作用域和最终状态理解模糊,python语言也和其它语言行为不同。
针对这两个点,我立刻做了简明讲解,并配合小例子演示,对比 f"{a+b}" 和 "{a+b}" 的区别,孩子很快理解了这两个知识点。
错题如下,不清楚大家是否能做对:
第6题:f-string 的陷阱
下面的Python代码执行时,如果先输入 10 回车,再输入 20 回车,其输出是( )。
N = input("第一个数:")M = input("第二个数:")print(f"int(N+M)={int(N+M)}")
A. 30=30B. 1020=1020C. int(N+M)=1020D. 错误提示
第8题:range() 的“隐形”变量
下面Python代码执行后的输出是( )。
tnt = 0for i in range(100): tnt += 1print(tnt, i)
A. 99 99B. 100 99C. 99 100D. 100 100
答案与解析
第6题答案:C. int(N+M)=1020
input() 返回的是字符串,N="10",M="20"; N+M 是字符串拼接 → "1020"; int(N+M) → int("1020") → 1020; f-string 中 {} 内表达式被求值,外层文本原样保留。
输出:int(N+M)=1020
第8题答案:B. 100 99
range(100) 生成 0 到 99,共100次循环; tnt 每次加1,最终为100;循环结束后,i 保留最后一次赋值,即99; Python中for循环变量在循环后依然存在。
下一步计划
根据艾宾浩斯遗忘曲线的规律,新接触或容易出错的知识点,若能在24小时内及时复习,并在此后几天内通过不同形式反复强化,记忆效果会显著提升。考虑到全国青少年编程等级考试(Python一级)只包含选择题、判断题和编程题这三种题型,我们的练习也将严格对标考试结构。今天完成了选择题,明天就切换为判断题。我已专门整理了一套题目,重点覆盖孩子刚刚出错的两个知识点:range(start, stop, step) 的取值边界细节,以及 f字符串的正确使用场景。接下来还会穿插简短的编程题,帮助他在真实代码中理解概念,把模糊印象转化为清晰掌握。
下一期,我们将带来Python一级判断题的实战复盘,继续聚焦基础但易错的核心语法。如果你也对这些考题感兴趣,欢迎私信留言,我会在备考过程中陆续整理分享!