while 循环不断经过柜台?
While loop keeps going past counter?
我只是想写一个简单的循环来给我一个素数列表。我不明白为什么当计数达到设定值时循环不停止。
def factors(n):
f = []
for i in range(1,n+1):
if n%i == 0:
f.append(i)
return(f)
primes = []
count = 0
while count < 10:
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
print(count)
计数达到 169,事实上,生成的列表中有 169 个质数,但我希望它停止在某个数字,这样我就不必四处寻找,比如说,第 501 个素数。
我尝试了另一种方法,但还是发生了同样的事情。我的猜测是 count 和 for j in range(1,1000) 相互干扰。
primes = []
count = 0
while True:
if count < 10:
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
else:
break
这是因为你的while循环里面有一个for循环。所以它总是 运行 来自 range(1,1000).
如果您希望它在达到计数时退出,您需要删除 while 并在计数时中断
primes = []
count = 0
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
if count >= 10:
break
print(count)
或移除 for
primes = []
count = 0
j = 0
while count < 10:
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
j += 1
print(count)
我只是想写一个简单的循环来给我一个素数列表。我不明白为什么当计数达到设定值时循环不停止。
def factors(n):
f = []
for i in range(1,n+1):
if n%i == 0:
f.append(i)
return(f)
primes = []
count = 0
while count < 10:
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
print(count)
计数达到 169,事实上,生成的列表中有 169 个质数,但我希望它停止在某个数字,这样我就不必四处寻找,比如说,第 501 个素数。
我尝试了另一种方法,但还是发生了同样的事情。我的猜测是 count 和 for j in range(1,1000) 相互干扰。
primes = []
count = 0
while True:
if count < 10:
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
else:
break
这是因为你的while循环里面有一个for循环。所以它总是 运行 来自 range(1,1000).
如果您希望它在达到计数时退出,您需要删除 while 并在计数时中断
primes = []
count = 0
for j in range(1,1000):
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
if count >= 10:
break
print(count)
或移除 for
primes = []
count = 0
j = 0
while count < 10:
k = factors(j)
if len(k) <= 2:
primes.append(j)
count += 1
j += 1
print(count)