我正在浏览Python文档,无法理解第4.4节中的内容
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
print(n, 'is a prime number')
我面临的主要问题是理解在这些循环的第一次迭代中(可能我不完全理解嵌套循环)分配给n和x的是什么,但是我假设在第一次迭代中,我们应该得到如下结果:
for 2(n) in range(2,10):
for 2(x) in range(2, 2(n)):
if 2 % 2 == 0
但这并没有发生(我知道2是一个素数),但我不明白为什么这不是发生的行为。提前感谢您的帮助!
最佳答案
您的困惑不在于嵌套循环,而在于range
函数。range(2, 2)
是一个空范围,因为它不包含终结点。
举例说明:list(range(3)) == [0, 1, 2]
。
注意:当遍历空范围时,不会发生任何事情。因此,例如,以下代码不会产生错误或打印任何内容:
for i in range(0):
print('Nothing here')
raise ValueError
因此,当
n
为2时,for循环for x in range(2, 2)
不执行任何操作。x
不接受值None
或任何其他值。如果您试图将空范围转换为list
,它只会返回[]
,即空的list
。for
循环对某些集合中的每个元素执行一次操作集。当集合为空或具有0个元素时,该操作集将执行0次。关于python - 解释Python文档第4.4节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55173812/