Python嵌套range循环代码中,为何n的输出从3而非2开始?
为什么循环输出中n从3开始而非2?
咱们先把代码和对应的输出明确列出来,再一步步拆解逻辑:
你的代码
for n in range(2,5): for x in range(2,n): print(n,x)
实际输出
3 2 4 2 4 3
(注:如果你的输出是一行的3 2 4 2 4 3,只是因为print语句用了end=' '之类的参数让输出不换行,核心逻辑是一致的)
问题的关键在于Python中range()函数的左闭右开规则,以及内层循环的执行条件:
- 外层循环
range(2,5)会生成序列[2, 3, 4],所以n会依次取2、3、4三个值。 - 内层循环
for x in range(2, n)的执行逻辑:- 当n=2时,
range(2,2)是一个空序列(因为range只包含起始值,不包含结束值,当起始值等于结束值时,没有元素)。内层循环没有可遍历的元素,所以print(n,x)完全不会执行,自然看不到n=2的输出。 - 当n=3时,
range(2,3)生成[2],内层循环执行1次,x=2,打印3 2。 - 当n=4时,
range(2,4)生成[2,3],内层循环执行2次:x=2时打印4 2,x=3时打印4 3。
- 当n=2时,
所以只有当n≥3时,内层循环才有元素可以遍历,才会触发打印,这就是你看到输出里n从3开始的原因。
内容的提问来源于stack exchange,提问作者Amir Jadhav
相关产品推荐
相关产品推荐

