2015-09-05 98 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循環不同,必須知道上邊界。