这是一个无限循环吗?

jas*_*ams 0 python loops

我正在尝试编写一个程序,在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
Run Code Online (Sandbox Code Playgroud)

这似乎是一个无限循环,但这只是猜测,因为输出永远不会出现.如果是无限循环,为什么?

此外,我想知道是否有某种列表理解只能挑选素数?也许列表理解是更有效的方法?只有我还没弄清楚如何过滤素数.

任何帮助或评论都非常感谢.

Ant*_*Ant 6

while number > 2 and number < 10:
    for n in range(2, number):
        if number % n == 0:
            break
    else:
        primes_list.append(number)
    number += 1

>>> primes_list
[3, 5, 7]
>>> 
Run Code Online (Sandbox Code Playgroud)

这可能是你想到的.

请注意,第一个循环内的数字+ = 1是错误的