运行此程序后,它不会打印任何内容:
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永远不会是真的,因为内部循环只运行xfrom 2to的值n-1。
如果您需要检查内部循环是否运行完成,else请在for自身之后使用。这将执行elseifbreak尚未执行:
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运行的地方。