我正在浏览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/

10-16 02:24
查看更多