循环里的 continue print 为什么略过了前面的几个值?


i = 0
while i < 7:
     print(i)
     if i == 3:
        continue
     i += 1

运行上面的代码,“ 3 ”一直往下打印,直到停止程序。为什么把 “0、1、2"略过去了?

结果不应该是
0
1
2
3
3
3
3
然后一直3吗?
就是死循环了。

前面的0 1 2肯定也是打印了的,只不过打印的太快了,被顶走了,你没看到。
要不然你可以加一个time.sleep(1)观察一下

你这是个死循环,前面个输出被刷掉了。终端显示的数量有限。
你单步调试一下就知道了。

【以下回答由 GPT 生成】

答案:

在上述代码中,当i的值等于3时,continue语句会导致程序跳过当前循环,并继续执行下一次循环。问题出在continue语句的位置上。

在这段代码中,continue语句位于if条件判断的后面,也就是在i += 1语句之前。因此,当i的值等于3时,会先执行print(i)语句,然后执行i += 1语句,最后再执行continue语句。由于continue语句会导致下一次循环的执行,所以i += 1的效果相当于被跳过了,导致循环变量i的值陷入了死循环,无法递增。

为了解决这个问题,只需要将continue语句放在i += 1语句的前面即可。这样,当i的值等于3时,先执行continue语句,然后再执行i += 1语句,从而使得循环变量i的值能够正常递增。

修复后的代码如下所示:

i = 0
while i < 7:
    if i == 3:
        continue
    print(i)
    i += 1


【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

再在 pycharm 里运行代码,这次有:0、1、2。真是奇怪啊,在 pycharm 我多次运行这段代码,看了又看,就是没有 0、1、2。重开机后,有了!