我似乎无法弄清楚为什么这是python中的无限循环?
for i in range(n):
j=1
while((i*j)<n):
j+=1
外循环不应该n次。每次递增j直到等于n div i?
答案 0 :(得分:36)
i
从0
开始,因此while
条件始终为真;有关详细信息,请参阅range docs。
答案 1 :(得分:16)
您可以创建一个“跟踪”,显示变量的状态变化。
等
您可以通过插入print
语句来证明您的跟踪是正确的。
如有疑问,请将其打印出来。
答案 2 :(得分:12)
i
从零开始,因此内循环的条件总是0*j < n
,这将始终为真。
答案 3 :(得分:7)
因为i
的初始值为0。
答案 4 :(得分:4)
i
中的第一个值为0,任何值为0。
答案 5 :(得分:2)
答案 6 :(得分:2)
range(n)
从0
开始,而不是1
。 0 * j
始终小于n
。
答案 7 :(得分:1)
第一次通过外部循环时,内部循环变为无限循环。 之后会发生什么并不重要。没有“无限之后”。
答案 8 :(得分:0)
我是0重写你像
一样循环for i in range(1,n):
j=1
while((i*j)<n):
j+=1
使用此版本的范围函数将创建一个从1开始而不是0
的范围