先看第1.9题:
N = 0for i in range(-100, 100): N += i % 10print(N)很多人凭直觉认为正负抵消,结果是0。但Python中 a % b 的结果永远与除数同号(当b>0时,结果≥0)。所以 -1 % 10 = 9,-2 % 10 = 8……每10个连续整数对10取模的结果都是0到9的一个排列,和为45。从-100到99共200个数,恰好20个完整周期,总和为 20 × 45 = 900。这道题考的不是计算,而是你是否真正理解Python的模运算规则,它和C/C++、数学课本里的“余数”并不相同。
再看第1.10题:
for i in range(1, 5): if i % 3 == 0: break print(i, end="#")else: print("END")循环在i=3时触发break,于是else块被跳过。最终输出只有 1#2#。这里的关键是:Python的for-else结构中,else并不是“循环结束后执行”,而是“如果没有遇到break才执行”。这个语法常用于搜索场景,找到目标就break,没找到就走else。可惜,太多人把它当成普通if-else的延伸,一错再错。
这两道题之所以“坑”,是因为它们利用了经验惯性:老手用其他语言的直觉答题,新手靠模糊记忆蒙猜。而真正的编程能力,恰恰体现在对语言细节的精确把握上。小宇一开始也答错了,但通过手写推演+上机验证,立即理解和掌握了这两个知识点。
如果你也在陪孩子备考,不妨把这两题当作“试金石”:能讲清楚原理,才算真正过关。下一期,我们真正进入python2级学习当中,并使用真题来学习知识点。欢迎继续关注!