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

问题描述 投票:1回答:5

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

count = 0

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

输出:

1
2
3
4
5
6

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

而且6是超过5.为什么会这样?

我知道我能做到

count = 0

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

但我只是想明白为什么把<=表现得很奇怪?

python python-3.x while-loop
5个回答
5
投票

<=没什么奇怪的;你的循环条件允许数字达到并包括5。但你增加count然后打印它,所以你将打印6最后。

这是因为count = 5满足你的循环条件,然后你添加一个使它成为6和打印。下一次通过循环count <= 5不再是真的,只有循环结束。

所以你的代码执行此操作:

  1. count = 0count <= 5 - > Truecount += 1制作count = 1,打印1
  2. count = 1count <= 5 - > Truecount += 1制作count = 2,打印2
  3. count = 2count <= 5 - > Truecount += 1制作count = 3,打印3
  4. count = 3count <= 5 - > Truecount += 1制作count = 4,打印4
  5. count = 4count <= 5 - > Truecount += 1制作count = 5,打印5
  6. count = 5count <= 5 - > Truecount += 1制作count = 6,打印6
  7. count = 6count <= 5 - > False,结束循环。

您可以在打印后递增计数器:

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

或者你可以使用<只允许小于5的数字:

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

2
投票

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


1
投票

你的问题不是关于<=如何运作。

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


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更合乎逻辑,for count in range(1,5): print(count) 是为像这样的实例设计的。

1
2
3
4
5

输出:

while

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

缺点:与a=0 while (a<4): a=a+1 print(a) 循环不同,必须知道上边界。


0
投票

To make things clear i will show the two scenarios with concrete explanation:

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

输出将是1,2,3,4

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

计算a = a + 1并将其保存在现在为1的循环的存储器中。因此,作为打印(a)的结果,数字1将不输出0。为了在循环内再次迭代;数字1(保存在第一个循环的内存中,根据a <4条件)进行检查。哪个是真的;像以前一样继续执行。

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

a = a + 1计算并保存在循环的存储器中,现在为3.然后输出数字3并保存在第三循环的存储器中,然后在a <4)之后检查。哪个是真的;像以前一样继续执行。

a = a + 1计算并保存在现在为4的循环的存储器中。然后输出数字4,即使应满足条件a <4。原因是,在满足之前的条件3 <4之后我已经陷入循环内部并且现在在我进入循环之后,语句的执行是不可避免的,这将保持输出4.数字4现在保存在第四个循环的存储器,根据a <4)检查。这是假的,执行在这里停止。

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

qazxswpoi

输出为0,1,2,3

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

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

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

执行打印语句,并且由第三循环的存储器中的a创建的值现在是2.因此输出2。然后计算a = a + 1并保存在现在为3的循环的存储器中。为了在循环内再次迭代;数字3(保存在第三个循环的存储器中,根据a <4条件)进行检查。哪个是真的;像以前一样继续执行。

首先执行打印语句,并且由第四循环的存储器中的a创建的值现在是3.因此输出3。然后a = a + 1被计算并保存在循环的存储器中,现在是4.为了在循环内再次迭代;数字4(保存在第四个循环的存储器中,根据a <4条件)进行检查。这是假的;执行停止。

© www.soinside.com 2019 - 2024. All rights reserved.