我的目标是创建一个程序,在屏幕上打印它可以找到的所有素数,但我有这个问题,while循环只运行一次,而不是永远重复。
def isPrime(num):
if num < 2:
return False
if num == 2:
return True
if num % 2 == 0:
return False
i = 3
while i * i <= num:
if num % i == 0:
return False
i += 2
x = 1
while True:
x += 1
if isPrime(x):
print (x)
我也尝试在代码的最后添加print("You can see this.")
,然后运行,但只运行一次。
我确定这是一个常见的错误,因为Python对缩进非常严格,但是你能帮助我发现它吗?提前谢谢。
答案 0 :(得分:2)
i +=2
缩进太深,内循环永不退出。
应该阅读
while i * i <= num:
if num % i == 0:
return False
i += 2
否则i
永远不会增加,循环会继续打开和继续。
答案 1 :(得分:2)
最后一个循环之后和之外,你需要return True
。否则函数结束而不显式返回任何内容,因此它隐式返回None
,它被解释为false。