为什么这是python中的无限循环?

Mat*_*ips 7 python loops infinite-loop

我似乎无法弄清楚为什么这是python中的无限循环?

for i in range(n):
    j=1
    while((i*j)<n):
       j+=1
Run Code Online (Sandbox Code Playgroud)

不应该外循环去n次.每次递增j直到等于n div i?

Mic*_*zyk 36

i开始于0,所以while条件始终为真; 有关详细信息,请参阅范围文档.


S.L*_*ott 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语句来证明您的跟踪是正确的.

如有疑问,请将其打印出来.

  • "如果有疑问,请将其打印出来". (8认同)

sth*_*sth 12

i从零开始,所以内循环的条件总是如此0*j < n,这总是正确的.


mob*_*mob 7

因为初始值i是0.