繁体   English   中英

python循环查询

[英]python looping inquiry

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的值最终已经被它满足。

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

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)所有变量和条件都在顶部

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

在此输入图像描述

第1行:i初始化为1

第2行:条件i <= 3为真,因此向下添加一行跟踪表

第3行:j初始化为1

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM