while循环并且小于或等于符号(Python)

时间:2015-09-05 20:21:34

标签: python python-3.x while-loop

所以我在做while循环,我发现了一些奇怪的东西。

count = 0

while count <= 5:
    count += 1
    print(count)

输出:

1
2
3
4
5
6

并不是我不理解while循环。这是怎么计数打印到六个?只有当count小于或等于5时才打印count

和6井超过5.为什么会这样?

我知道我能做到

count = 0

    while count != 5:
        count += 1
        print(count)

但我只想了解为什么<=以奇怪的方式行事?

5 个答案:

答案 0 :(得分:5)

<=没有什么奇怪的;您的循环条件允许最多的数字,包括 5。但是你增加count然后打印它,这样你最后会打印6

因为count = 5满足您的循环条件,然后您添加一个以使其6并打印。下一次循环count <= 5不再是真的,只有然后循环结束。

所以你的代码会这样做:

  1. count = 0count <= 5 - &gt; Truecount += 1制作count = 1,打印1
  2. count = 1count <= 5 - &gt; Truecount += 1制作count = 2,打印2
  3. count = 2count <= 5 - &gt; Truecount += 1制作count = 3,打印3
  4. count = 3count <= 5 - &gt; Truecount += 1制作count = 4,打印4
  5. count = 4count <= 5 - &gt; Truecount += 1制作count = 5,打印5
  6. count = 5count <= 5 - &gt; Truecount += 1制作count = 6,打印6
  7. count = 6count <= 5 - &gt; False,结束循环。
  8. 您可以在打印后递增计数器

    while count <= 5:
        print(count)
        count += 1
    

    或者您可以使用<仅允许数字小于而不是5

    while count < 5:
        count += 1
        print(count)
    

答案 1 :(得分:2)

当计数等于5加1时很简单,它变为6然后打印出来并退出循环。

答案 2 :(得分:1)

您的问题不在于<=如何运作。

在打印之前,您要向count添加1,因此当count等于5时,您再添加1,因此打印6。

答案 3 :(得分:1)

让我们来看看代码,看看发生了什么。

注意:如果您的代码正在做一些您不希望它做的事情,那么这是一个很好的做法。

count = 0

while count <= 5:
    count += 1
    print(count)

count从0开始

count = 0

while count <= 5: # count = 0. Is 0 <= 5? Yes. Run the code.
    count += 1
    print(count)

增加计数,使它现在等于1.打印它。

while count <= 5: # count = 1. Is 1 <= 5? Yes. Run the code.
    count += 1
    print(count)

增量。打印。重复。

让我们继续讨论引起问题的有趣案例。

while count <= 5: # count = 5. Is 5 <= 5? Yes. Run the code.
    count += 1
    print(count)

在这种情况下,count仍然满足不等式,因此代码运行。

会发生什么?

count,即5,递增,因此输出6。

既然我希望你理解为什么存在这个问题,那么让我们来探索替代方案及其优点,缺点和产出。

让我们从您的代码开始。

count = 0

while count <= 5:
    count += 1
    print(count)

优点:不打印0

缺点:打印6

如果我们删除=符号会怎样?

count = 0

while count < 5:
    count += 1
    print(count)

输出:

1
2
3
4
5

优点:你想做什么

缺点:您必须从0开始而不是1

如果我们按您的建议执行操作并将<符号替换为!符号会怎样?

count = 0

while count != 5:
    count += 1
    print(count)

输出:

1
2
3
4
5

优点:你想做什么

缺点:脆弱。如果你改变了你的增量,使它增加了一个像3之类的数字,那么终点将被意外跳过,代码将继续永远运行。最好使用不平等

如果我们想要开始成为第一个显示的数字怎么办?好吧,要做到这一点,我们必须在更改之前打印出当前的数字,这意味着我们必须翻转事件的顺序。

count = 1 # Change the first number so it's what we want displayed first.

while count <= 5:
    print(count)
    count += 1

输出:

1
2
3
4
5

优点:你想要什么,并从第一个显示的数字而不是它下面开始。

缺点:如果你想坚持while循环,这是可行的方法,但在这种情况下有更好的方法。

在这种情况下,你增加数字然后用它们执行操作的情况下,使用for loop更合乎逻辑,http://example.com/activate?email=name@example.com&activationCode=e7870fadcf79c39584dca1fc33c47ef9是为这样的实例设计的。

for count in range(1,5):
    print(count)

输出:

1
2
3
4
5

优点:您想要什么,更容易阅读,更容易编写,不太可能导致基于放置的错误。

缺点:与while循环不同,必须知道上边界。

答案 4 :(得分:0)

为清楚起见,我将给出两种情况并进行具体说明:

a=0
while (a<4):
  a=a+1
  print(a)

输出为1,2,3,4

变量a = 0应该满足while循环的条件(a <4)才能继续执行。

计算

a = a + 1并将其保存在现在为1的循环内存中。 因此,作为print(a)的结果,输出的数字1不会为0。 为了在循环内再次迭代;数字1(已在a <4条件下检查了保存在第一个循环的内存中的数字)。这是真的;像以前一样继续执行。

a = a + 1计算并保存到现在为2的循环内存中。 然后输出数字2 并保存在第二个循环的内存中,然后针对a <4)进行检查。这是真的;像以前一样继续执行。

a = a + 1计算并保存在循环内存中,该循环现在为3。 然后输出数字3 并将其保存在第三个循环的内存中,然后对a <4)进行检查。这是真的;像以前一样继续执行。

a = a + 1计算并保存在循环内存中,该内存现在为4。 然后,即使应满足条件a <4,也输出数字4。原因是,在满足先前条件3 <4之后,我一直停留在循环内,而现在我进入循环后,语句的执行是不可避免的,它将保留到输出4。现在将数字4保存在根据a <4)检查第四个循环的内存。这是错误的,执行从此处停止。

对于相反的情况,这种情况是可以接受和理解的

a=0
while (a<4):
  print(a)
  a=a+1

输出为0、1、2、3

变量a = 0应该满足while循环的条件(a <4)才能继续执行。

首先执行打印语句,并且在第一个循环的内存中由a产生的第一个值是0。因此输出0。 然后计算a = a + 1并将其保存在循环的内存中,该内存将变为1而不是0。 为了在循环内再次迭代;数字1(已在a <4条件下检查了保存在第一个循环的内存中的数字)。这是真的;像以前一样继续执行。

将执行print语句,并且第二个循环的内存中a所产生的值现在为1。因此输出1。 然后计算a = a + 1并将其保存在现在为2的循环内存中。 为了在循环内再次迭代;数字2(已保存在第二个循环的内存中,将根据a <4条件进行检查)。这是真的;像以前一样继续执行。

执行print语句,并且在第三循环的内存中由a表示的值现在为2。因此输出2。 然后计算a = a + 1并将其保存在现在为3的循环内存中。 为了在循环内再次迭代;数字3(已在a <4条件下检查了保存在第三个循环的内存中的数字)。这是真的;像以前一样继续执行。

首先执行打印语句,并且在第四循环的内存中由a表示的值现在为3。因此输出3。 然后计算a = a + 1并将其保存在现在为4的循环内存中。 为了在循环内再次迭代;数字4(已在a <4条件下检查了保存在第四循环内存中的数字)。这是错误的;执行停止。