当前位置:首页>python>寒假Python四级备考日记(5):一级两道题,两个“反直觉”的Python真相

寒假Python四级备考日记(5):一级两道题,两个“反直觉”的Python真相

  • 2026-08-25 17:00:20
寒假Python四级备考日记(5):一级两道题,两个“反直觉”的Python真相
大家好,我是小宇爸爸。昨天我们留了两道题,不少读者留言说“第一反应就错了”。今天就来揭晓答案,并系统拆解背后的知识点——它们看似是考一级,实则触及Python语言设计的底层逻辑。

先看第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级学习当中,并使用真题来学习知识点。欢迎继续关注!

最新文章

随机文章