1.
while x < 3:
print("x的当前值为%d" % x)
y = 0
while y < 3:
print("y的当前值为%d" % y)
print("内层循环")
y += 1
print("y的累加值为%d" % y)
print("外层循环")
x += 1
print("x的累加值为%d" % x)
执行结果如下: (嵌套的内循环计数器在外循环内部)
第1次完整循环
x当前值 = 0
y当前值 = 0
内层循环
y累加值 = 1
y当前值 = 1
内层循环
y累加值 = 2
y当前值 = 2
内层循环
y累加值 = 3
外层循环
x累加值 = 1
第2次完整循环
x当前值 = 1
y当前值 = 0
内层循环
y累加值 = 1
y当前值 = 1
内层循环
y累加值 = 2
y当前值 = 2
内层循环
y累加值 = 3
外层循环
x累加值 = 2
第3次完整循环
x当前值 = 2
y当前值 = 0
内层循环
y累加值 = 1
y当前值 = 1
内层循环
y累加值 = 2
y当前值 = 2
内层循环
y累加值 = 3
外层循环
x累加值 = 3
不再满足条件
2.
x = 0
y = 0
while x < 3:
print("x当前值 = %d" % x)
while y < 3:
print("y当前值 = %d" % y)
print("内层循环")
y += 1
print("y累加值 = %d" % y)
print("外层循环")
x += 1
print("x累加值 = %d" % x)
执行结果如下: (嵌套的内循环计数器在外面)
第1次完整循环
x当前值 = 0
y当前值 = 0
内层循环
y累加值 = 1
y当前值 = 1
内层循环
y累加值 = 2
y当前值 = 2
内层循环
y累加值 = 3
外层循环
x累加值 = 1
第2次完整循环
x当前值 = 1
外层循环
x累加值 = 2
第3次完整循环
x当前值 = 2
外层循环
x累加值 = 3
为什么会出现这种差异呢? 看了视频, 老师只告诉这种差异存在, 自己也分析了执行流程, 但那是从结果分析原因, 总觉得对其中原理有点迷糊.
有什么更明确清晰的理解方法吗? 像python代码从上到下, 从左到右, LEGB原则?
本质区别在于
y = 0
一句出现的位置,如果y = 0出现在外层循环外部那么y只会在外层循环开始前初始化为0,如果y = 0出现在外层循环内、内层循环前,那么y会在每次内层循环开始前都初始化为0。