解释Python文档第4.4节

时间:2019-03-15 00:11:58

标签: python python-3.x

我正在阅读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是质数),但是我不明白为什么这不是行为。提前感谢帮助!

1 个答案:

答案 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次。