我正在阅读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是质数),但是我不明白为什么这不是行为。提前感谢帮助!
答案 0 :(得分:5)
您的困惑不是关于嵌套循环,而是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次。