有人可以解释(一步一步)为什么Python(3.6)为下面的循环打印3?
n=0
for x in range(0, 2):
for y in range(x, 2):
n+=1
print(n)
难道不是2吗?
first step:
upper for loop: (0, 2), lower loop (0, 2), n=0+1=1
second step:
upper for loop: (1, 2), lower loop (1, 2), n=1+1=2
no third step, as (2, 2) is not executed
那么" 3"来自?
由于
答案 0 :(得分:2)
您没有执行内部循环迭代;外循环的第一次迭代导致内循环迭代两次:
range(0, 2)
,x = 0
,
range(x == 0, 2)
,y = 0
:n = 1
range(x == 0, 2)
,y = 1
:n = 2
range(x == 0, 2)
结束。range(0, 2)
,x = 1
,
range(x == 1, 2)
,y = 1
:n = 3
range(x == 1, 2)
结束。range(0, 2)
结束。调试器已经明确了这一点,但您还可以添加更多print()
次调用,以使更明显的事情发生:
>>> n=0
>>> for x in range(0, 2):
... print('x =', x)
... for y in range(x, 2):
... print(' y =', y)
... n+=1
... print(' n =', n)
...
x = 0
y = 0
n = 1
y = 1
n = 2
x = 1
y = 1
n = 3
答案 1 :(得分:0)
对于x=0
和x=1
,内循环运行两次。 range()
不包含最终整数。
因此对于x=0
,内部循环遍历y=0
和y=1
,对于x=1
,它仅迭代y=1
。
所以有3个增量。
如果您使用print
声明,则可以看到这种情况:
n=0
for x in range(0, 2):
print('x = {}'.format(x))
for y in range(x, 2):
print('y = {}'.format(y))
n+=1
print('n = {}'.format(n))