为什么在Python中这是一个无限循环?
我搞不懂为什么这个在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
你可以创建一个“跟踪记录”,来显示变量的状态变化。
- n= 5; i= 0
- n= 5; i= 0; j= 1
- i*j < n -> 0 < 5: n= 5; i= 0; j= 2
- i*j < n -> 0 < 5: n= 5; i= 0; j= 3
- i*j < n -> 0 < 5: n= 5; i= 0; j= 4
- i*j < n -> 0 < 5: n= 5; i= 0; j= 5
- i*j < n -> 0 < 5: n= 5; i= 0; j= 6
等等。
你可以通过插入 print
语句来证明你的跟踪记录是正确的。
如果有疑问,就打印出来。
36
这里的 i
从 0
开始,所以 while
后面的条件总是成立,也就是说这个循环会一直执行下去。想了解更多,可以查看 range 的文档。