为什么在Python中这是一个无限循环?

7 投票
9 回答
2861 浏览
提问于 2025-04-15 17:56

我搞不懂为什么这个在Python里会变成无限循环??

for i in range(n):
    j=1
    while((i*j)<n):
       j+=1

外层循环不是应该执行n次吗?每次把j加1,直到j等于n除以i吗?

9 个回答

12

i 从零开始,所以内层循环的条件总是 0*j < n,这个条件永远都成立。

16

你可以创建一个“跟踪记录”,来显示变量的状态变化。

  1. n= 5; i= 0
  2. n= 5; i= 0; j= 1
  3. i*j < n -> 0 < 5: n= 5; i= 0; j= 2
  4. i*j < n -> 0 < 5: n= 5; i= 0; j= 3
  5. i*j < n -> 0 < 5: n= 5; i= 0; j= 4
  6. i*j < n -> 0 < 5: n= 5; i= 0; j= 5
  7. i*j < n -> 0 < 5: n= 5; i= 0; j= 6

等等。

你可以通过插入 print 语句来证明你的跟踪记录是正确的。

如果有疑问,就打印出来。

36

这里的 i0 开始,所以 while 后面的条件总是成立,也就是说这个循环会一直执行下去。想了解更多,可以查看 range 的文档

撰写回答