我想写挑选出质数的范围为3〜9。这里的程序是我的代码:这是一个无限循环吗?
primes_list = []
number = 3
while number > 2 and number < 10:
for n in range(2, number):
if number % n == 0:
break
number += 1
else:
primes_list.append(number)
print primes_list
这似乎是一个无限循环,但是这只是一个猜测,因为输出永远出现。如果它是一个无限循环,为什么?
另外我想知道是否有某种列表理解只能挑出素数?也许列表解析是更有效的方法?只有我没有弄清楚如何过滤素数。
任何帮助或评论深表感谢。
您的压痕看起来'if'和'else'之间的错。他们应该处于同一水平。编辑:忽视此评论。我立场纠正。 – Gareth
是的,你'number + = 1'是错位的。试着看看会发生什么。 – fredtantini
@Gareth'for'循环可以采用'else'子句,如果循环提前退出(例如,使用'break',而不是用尽可迭代),则执行'else'子句。 – chepner