python循环查询

时间:2012-10-25 16:22:13

标签: python loops while-loop

i= 1
while (i<=3):
    print("i",i)
    j=1
    while (j<3):
        print("j",j)
        j=j+1
    i=i+1
print("Done!")

现在我在想?为什么输出不是: I1 J1 J2 I2 I3

而是: I1 J1 J2 I2 J1 J2 I3 J1 J2

为什么最右边的while循环不断重复,即使最终已经满足j的值。

2 个答案:

答案 0 :(得分:2)

那是因为。您正在外部while循环中重新初始化j1。因此,每次外循环开始时,内循环将运行两次。

while (i<=3):
    print("i",i)
    j=1 <-- This re-initializes the value of `j`
    while (j<3):
        print("j",j)
        j=j+1
    i=i+1

答案 1 :(得分:0)

最好通过使用跟踪表

来解释

1)所有变量和条件都在顶部

布局

2)每次变量/条件发生变化时,你都会向下走一行并进入表格

enter image description here

第1行:i初始化为1

第2行:条件i&lt; = 3为True,因此向跟踪表添加一行

第3行:j初始化为1

第4-8行,内部while循环运行,直到j <3变为假

发生的事情是out while循环运行一次,在它上面遇到另一个缩进的while循环,它必须在我下一次递增之前运行它。

算法复杂性的一个副作用或有趣点是内部while循环将运行其外部while循环运行的次数。这是按N * N的顺序。你可以从真值表中看到这是真的。内部同时运行三次(实际上不是n次而是N-1),因为j在它到达第三次迭代之前停止。