运行此程序后,它不会打印任何内容:
for n in range(2,100):
for x in range(2,n):
if n%x == 0:
break
else:
if n==x:
print n,'is a prime number'
运行此程序后,它不会打印任何内容:
for n in range(2,100):
for x in range(2,n):
if n%x == 0:
break
else:
if n==x:
print n,'is a prime number'
if n==x
永远不会是真的,因为内部循环只运行x
from 2
to的值n-1
。
如果您需要检查内部循环是否运行完成,else
请在for
自身之后使用。这将执行else
ifbreak
尚未执行:
for n in range(2,100):
for x in range(2,n):
if n%x == 0:
break
else:
print n,'is a prime number'
一种更 Pythonic 的方法是使用all
生成器表达式:
for n in range(2,100):
if all(n%x != 0 for x in range(2,n)):
print n,'is a prime number'
简单的逻辑说明了这一点 - 余数为 0 的任何内容都将跳出循环,并且任何模本身的值都将为0
,因此您的else
块将永远不会到达包含if
运行的地方。