为什么在循环更改输出的同时此语句序列

时间:2018-10-30 17:45:10

标签: python-3.x

代码如下:

.then

此代码的输出是:

i = 1
while i < 6:
  print(i)
  i += 1

当我更改语句顺序时:

0
1
2
3
4
5

现在输出不同

i = 0
while i < 6:
  i += 1
  print(i)

在第一个中,包括0,但不包括6;在第二个中,排除0,但包括6。是什么原因?

2 个答案:

答案 0 :(得分:0)

在第二个中排除0,因为您在打印i之前先增加了它的值。 同样,case2中包含6,因为当i = 5时,在循环内,在打印i的值之前将其递增到6

答案 1 :(得分:0)

在Python中,就像在大多数语言中一样,执行会逐行向下移动到程序中。在这种情况下,while循环会导致执行从循环结束处循环返回到i < 6的顶部,但执行仍会在循环中从上到下进行。

然后,在第一种情况下,while循环会执行以下操作:

while i < 6:
    increment the value of i
    print out the current value of i

此循环的第一次迭代以i=0开始,但是在打印之前{strong> 递增,因此打印的第一个值是i。 / p>

此循环的最后一次迭代以1开始(因为如果i=5循环未运行),但是如上所述,i=6在打印之前就增加了,因此最后一个值打印为i

第二种情况,6循环会做:

while

因此,在第一次迭代中,while i < 6: print out the current value of i increment the value of i i开始,然后打印(打印0),然后将0递增到{{1} }。

在上一次迭代中,i(由于与上述相同的原因-如果在迭代1的开始时,迭代将不运行)。打印i=5(打印i=6),然后递增i5现在为6,因此循环不会再次运行。


最重要的是,在i循环中,循环的运行条件在每次迭代中都要进行一次精确检查:即在迭代运行之前(或不进行)。因此,如果条件为真,则无论此期间条件检查的值发生什么,整个迭代都会继续进行。仅在当前迭代完成后才再次检查这些值(我们到达循环的底部,然后循环回到顶部)。

对于所有循环,情况并非如此;例如,do-while loop在迭代运行后后检查其条件,因此i循环将始终至少运行一次。