You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:42:08