2015-09-05 60 views
1

所以我正在做循环,我发现了一些奇怪的东西。while循环和小于或等于符号(Python)

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

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

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

所以,你的代码做这个:

  1. count = 0count <= 5 - >Truecount += 1使得count = 1,打印1
  2. count = 1,count <= 5 - >Truecount += 1使得count = 2,打印2
  3. count = 2count <= 5 - >Truecount += 1使得count = 3,打印3
  4. count = 3,count <= 5 - >Truecount += 1使得count = 4,打印4
  5. count = 4count <= 5 - >Truecount += 1使得count = 5,打印5
  6. count = 5,count <= 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) 
+0

换句话说,如果您要在增量之前打印,您将得到不同的结果。 –

+0

我现在明白了。它仍然增加计数,即使计数是5,因为我用'<='这就是为什么6输出也是因为我先把count + = 1,所以当计数为5时,它增加了一个然后再次检查循环它转错误,所以它打破。 感谢所发生的事情的可视化! – Zion

2

这是简单,当计数等于五你加1,它变成6然后它被打印,你退出循环。

1

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

你加入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循环不同,必须知道上边界。