2016-02-10 98 views
2
for i in range(2): 
    for j in range(2): 
     print(i, j, end='') 

嘿家伙,所以我只是有问题,理解这个嵌套循环的概念。 运行程序时的输出是:0 00 11 01 1嵌套循环输出混淆

我不知道为什么输出是这样。任何人都可以一步一步解释执行这个命令的顺序吗?

由于

回答

0

你有两个循环的程序。一个是外部的,另一个是内部循环。 所以这就是代码的工作方式。所有下面的代码 首先被执行

for i in range(2): 

这使值0在我。 现在它进入内部循环。因此,执行以下代码

for j in range(2): 

这会将值0置于j中。 现在下面的代码执行

print(i,j,end='') 

这给出的输出作为i和j都具有0值。

0 0 

在编程语言内循环首先完成。 所以,下面的代码将再次执行

for j in range(2): 

这将设置j的值为1

现在j是1,我仍然是0 所以输出如下

0 00 1 

(注:第一个0 0是前一个输出)

现在下面的代码完成

for j in range(2): 

它以j的值1结束,因为范围(2)表示值将从0开始到1。

现在执行下面的代码。

for i in range(2): 

和i值将成为1

现在内循环将再次运行。

for j in range(2): 

这将再次集合的J值为0,并在接下来的迭代1.

所以最终的输出看起来像

0 00 11 01 1 
0

I = 0和j = 0

它将打印0 0,这里端是 '',意味着没有空间

现在I = 0和j = 1

它将打印0 00 1

现在I = 1 J = 0

它将打印0 00 11 0

现在我= 1和j = 1

将打印0 00 11 01 1

0

请问你的输出帮助这个轻微的格式化:

0 00 11 01 1 ==> 0 0 | 0 1 | 1 0 | 1 1 
        i j i j i j i j 
+0

这实际上清理得很好。但是我仍然有一个试图理解为什么第二次运行它的问题1 1 |而不是| 0 1 | – jjyj

+0

从“i”循环开始,i是0,然后我们做什么在“i”循环内,这是j循环,j从0开始,并且我们在j循环中做什么是打印,现在我们执行j循环的下一步(j为1)和打印。现在j循环完成了,所以退出到i循环,我是1,现在我们做j循环..等 –

+0

也许它有助于将每个循环的身体想象成一个黑盒子,所以外面循环说我要在黑盒子里做两次(一次是i = 0,一次是i = 1),每次黑盒子都会完成任何事情。 –

0

如下修改代码,它会删除混乱:

>>> for i in range(2): 
    for j in range(2): 
     print(i, j, sep='', end=' ') 


00 01 10 11