【发布时间】:2010-01-12 17:40:27
【问题描述】:
我似乎无法弄清楚为什么这是 python 中的无限循环??
for i in range(n):
j=1
while((i*j)<n):
j+=1
外部循环不应该执行 n 次吗?每次递增 j 直到等于 n div i?
【问题讨论】:
标签: python loops infinite-loop
我似乎无法弄清楚为什么这是 python 中的无限循环??
for i in range(n):
j=1
while((i*j)<n):
j+=1
外部循环不应该执行 n 次吗?每次递增 j 直到等于 n div i?
【问题讨论】:
标签: python loops infinite-loop
i 从0 开始,所以while 条件始终为真;详情请见range docs。
【讨论】:
您可以创建一个“跟踪”来显示变量的状态变化。
等等
您可以通过插入print 语句来证明您的跟踪是正确的。
如有疑问,请打印出来。
【讨论】:
i 从零开始,因此内部循环的条件始终为 0*j < n,这将始终为真。
【讨论】:
因为i的初始值为0。
【讨论】:
i 中的第一个值将是 0。0 乘以任何值都是 0。
【讨论】:
因为我是0!!并且 i*j=0
【讨论】:
range(n) 以 0 开头,而不是 1。 0 * j 将始终小于 n。
【讨论】:
第一次通过外循环时,内循环变成无限循环。 在那之后发生什么并不重要。没有“无限之后”。
【讨论】:
i is 0 rewrite you loop like
for i in range(1,n):
j=1
while((i*j)<n):
j+=1
使用此版本的 range 函数将创建一个从 1 而不是 0 开始的范围
【讨论】: