while迴圈

while顧名思義為「當」,也就是當某個條件成立時,便會執行一段程式碼;此判斷與執行的步驟會重複進行,直到該條件不符合時,才會終止迴圈。 語法則與if相似,也就是在while後面緊接一個判斷式和冒號,並以縮排來表示哪些程式碼是滿足while條件式後需要重複執行的。 讓我們直接看一個例子:

i = 0
while i < 10:
    print(i)
    i += 1
print('finish!')

我們可以觀察到 while 後面接了 i < 10 這個條件式,然後緊接著一個 :;其中第三行與第四行皆有 縮排 ,因此這兩行都是要重複執行的程式碼。 接下來我們一行一行解說程式碼在做什麼事:

  1. 第一行是初始化i為零
  2. 第二行開始判斷while迴圈的條件式,因爲0小於10,因此可以進入迴圈。
  3. 接著便執行一次有縮排的程式碼(第三行和第四行),印出 0 之後,i變成1。
  4. 當有縮排的程式碼都執行完時,便會回到第二行,再一次進行判斷。因為1還是小於10,因此可以進入迴圈,再一次執行第三行和第四行,印出 1 之後,i變成2。再一次回到第二行,因為2小於10...
  5. 如此重複進行,直到第10次迴圈結束時,i會變成10。此時當我們要再一次進行判斷時,因為10不小於10,條件不成立,便會終止迴圈。
  6. 終止迴圈後,就會從有縮排的程式碼的下一行開始繼續執行。因此印出了 finish!。 程式執行結果如下:
0
1
2
3
4
5
6
7
8
9
finish!

break

雖然我們因為想要重複執行一段程式碼而使用while迴圈,但有時候我們可能又會想要在某個時候突然跳出迴圈,該怎麼辦呢?這時候就要依靠 break 了! break 字面上的意思是「打斷」,在這裡就是「打斷迴圈」、「跳出迴圈」的意思,只要在while迴圈中,出現 break (自己獨立一行),就可以如我們所願跳出迴圈了,非常的直觀且容易。 那麼我們要如何在某個時候突然打斷迴圈呢?通常就會搭配前面學過的 if,在某個條件成立時,跳出迴圈。 讓我們來看一個例子:

i = 1
total = 0
while True:
    if i > 100:
        break
    total += i
    i += 1
print(total)
  1. 前兩行是初始化i和total
  2. 第三行開始判斷while迴圈的條件式,True 代表恆真,因此每一次都會進入迴圈,這個用法非常好用。
  3. 執行有縮排的程式碼(第四行到第七行),因為0沒有大於100,因此不會執行 break,接著將total加1,i變成2。
  4. 因為 while True 代表恆真,因此每一次都會進入迴圈,直到第101次進入迴圈時,因為101大於100,所以會執行if以下有縮排的程式碼,也就是 break,因而跳出迴圈。
  5. 終止迴圈後,就會從有縮排的程式碼的下一行開始繼續執行,因此印出total的值。

    值得注意的是,如果在 while 裡面又出現 if,那個 if 底下的區塊就必須有兩次縮排。第一個縮排是 while 造成的,第二個縮排則是 if 造成的。

continue

除了強制跳出迴圈,還有另一種可能的情形是,在某個時候我們不是想要終止迴圈,只是想要跳過現在的回合,並且讓迴圈繼續跑下去,這時候我們就需要 continue 來幫助我們了。 continue字面上的意思是「繼續」,在這裡除了「繼續執行迴圈」的意思,同時也代表跳過這個回合還沒執行完的程式碼,直接繼續進行下一次的判斷,一樣來看一個簡單的例子:

i = 1
while i <= 50:
    if i % 2 == 0:
        i += 1
        continue
    elif i % 3 == 0:
        i += 1
        continue
    print(i)
    i += 1
  1. 第一行初始化i為零
  2. 因為0比50小,所以會進入迴圈。
  3. 因為i除以2不餘0,i除以3也不餘0,因此會繼續執行迴圈中剩下的程式碼,印出 1,然後i變成2。
  4. 下一次進入迴圈時,因為2除以2餘0,因此會進入if的區塊,i變成3,然後執行 continue!意思就是程式並不會繼續執行後面的程式碼,而是會直接回到第二行繼續進行下一次的條件式判斷。
  5. 因為continue只是跳過一個回合,因此並不會中斷迴圈,直到第51次while條件式判斷51沒有小於等於50時,才會終止迴圈。 可以看出這段程式做的事情即是印出1~50內不是2也不是3的倍數的數字。

results matching ""

    No results matching ""