运行后,它不会打印任何内容:
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'
答案 0 :(得分:4)
if n==x
永远不会成立,因为内部循环仅针对从x
到2
的{{1}}值运行。
如果您需要检查内部循环是否已完成,请在n-1
之后使用else
。如果尚未执行for
,则会执行else
:
break
更加Pythonic的方法是将for n in range(2,100):
for x in range(2,n):
if n%x == 0:
break
else:
print n,'is a prime number'
与生成器表达式一起使用:
all
答案 1 :(得分:1)
简单的逻辑决定了这一点 - 剩余部分为0的任何东西都会脱离循环,任何模数值本身都是0
,所以你的else
块永远不会到达包含的if
{1}}将会运行。