Python while循环疑问:为何必须重置count才能正确输出每第三个奇数?
关于Python while循环计数逻辑的疑问
我的目标是用while循环输出2到19(包含)之间的每第三个连续奇数,预期输出为7、13、19。
经过尝试,我写出了能正常运行的代码:
i = 2 count = 0 while i <= 19: if (i%2 != 0): count += 1 if count == 3: print(i) count = 0 i += 1
但我原本以为以下代码也能正常运行,实际却不行:
i = 2 count = 0 while i <= 19: if (i%2 != 0): count += 1 if count == 3: print(i) i += 1
请问为何必须添加第9行的count = 0才能让代码正常运行?仅靠第2行的初始赋值为什么不够?
解答
核心问题出在计数的重置逻辑上:
- 初始的
count = 0只在程序启动时执行一次,之后不会自动变回0。 - 第二段代码里,当第一个符合要求的数(7)被找到后,
count已经变成3,后续再遇到奇数时,count会持续累加(变成4、5、6...),永远不会再等于3,自然无法触发后续的打印操作,也就输出不了13和19。 - 第一段代码中的
count = 0,是在每找到一个目标数后,把计数器重置为0,这样后续的奇数会重新从1开始计数。当再次数到第3个奇数时,就能触发打印逻辑,找到下一个目标数(13、19)。
举个具体的执行片段对比:
- 第二段代码流程:找到7 → count=3;下一个奇数9 → count=4;11→count=5;13→count=6,永远达不到count=3,所以不会打印13。
- 第一段代码流程:找到7 → count重置为0;下一个奇数9→count=1;11→count=2;13→count=3,触发打印,随后count再次重置为0,以此类推找到19。
内容的提问来源于stack exchange,提问作者amongthewildflowers
相关产品推荐
相关产品推荐

