讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 8.8 跳出循環break 和 continue >

8.8 跳出循環break 和 continue

有時可能希望在中間離開循環,也就是 for 循環結束計數之前,或者 while 循環找到結束條件之前。有兩種方法來做到:可以用 continue 直接跳到循環的下一次迭代,或者用 break 完全中止循環。下面會更詳細地說明。

提前跳轉——continue

如果希望停止執行循環的當前迭代,提前跳到下一次迭代,你需要的就是一條 continue 語句。要說明這一點,最好的辦法就是看一個例子,請看代碼清單 8-9。

代碼清單 8-9 循環中使用 continue

for i in range (1, 6):    print    print 'i =', i,    print 'Hello, how',    if i == 3:continue    print 'are you today?'  

運行這個程序時,輸出如下:

>>> ================== RESTART ==================>>>i = 1 Hello, how are you today?i = 2 Hello, how are you today?i = 3 Hello, howi = 4 Hello, how are you today?i = 5 Hello, how are you today?  

注意,第 3 次循環時(i == 3),循環體沒有完成,它提前跳到了下一次迭代(i == 4)。這就是 continue 語句在起作用。在 while 循環中,continue 的作用也是一樣的。

跳出——break

如果我們想完全跳出循環——不再完成計數,或者放棄等待結束條件,該怎麼做呢?這個工作由 break 語句完成。

下面只改變代碼清單 8-9 中的第 6 行,把 continue 換成 break,再運行這個程序看看會發生什麼。

>>> ================== RESTART ==================>>>i = 1 Hello how are you today?i = 2 Hello how are you today?i = 3 Hello how  

這一次,循環不只是跳過第 3 次迭代的其餘部分,它會完全停止循環。這正是 break 的作用。在 while 循環中,break 的作用也一樣。

要指出的是,有些人認為使用 breakcontinue 並不好。就我個人來講,我不認為這樣不好,不過我自己確實很少使用這兩個語句。我想還是應該告訴你一些關於 breakcontinue 的內容,沒準以後你會用到。

你學到了什麼

在這一章,你學到了以下內容。

  • for 循環(也稱為計數循環)。

  • range 函數——計數循環的一個捷徑。

  • range 的不同步長大小。

  • while 循環(也稱為條件循環)。

  • continue 跳到下一次迭代。

  • break 跳出循環。

測試題

1. 下面的循環會運行多少次?

for i in range (1, 6):    print 'Hi, Warren'  

2. 下面的循環會運行多少次?每次循環時 i 的值是什麼?

for i in range (1, 6, 2):    print 'Hi, Warren'  

3. range(1, 8) 會給出一個怎樣的數字列表?

4. range(8) 會給出一個怎樣的數字列表?

5. range(2, 9, 2) 會給出一個怎樣的數字列表?

6. range(10, 0, -2) 會給出一個怎樣的數字列表?

7. 使用哪個關鍵字停止循環的當前迭代,提前跳到下一次迭代?

8. while 循環什麼時候結束?

動手試一試

1. 編寫一個程序,顯示一個乘法表。開始時要詢問用戶顯示哪個數的乘法表。輸出應該如下所示:

Which multiplication table would you like?5Here's your table:5 x 1 = 55 x 2 = 105 x 3 = 155 x 4 = 205 x 5 = 255 x 6 = 305 x 7 = 355 x 8 = 405 x 9 = 455 x 10 = 50  

2. 完成第 1 題的程序時你可能使用了 for 循環。大多數人都會這麼做。不過,可以再做個練習,試著用 while 循環完成同樣的工作。或者如果你在第 1 題中使用了 while 循環,現在可以試著用 for 循環來完成。

3. 向乘法表程序中再加點東西。詢問用戶想要的乘法表之後,再問問用戶希望最大乘到幾。輸出應當如下所示:

Which multiplication table would you like?7How high do you want to go?12Here's your table:7 x 1 = 77 x 2 = 147 x 3 = 217 x 4 = 287 x 5 = 357 x 6 = 427 x 7 = 497 x 8 = 567 x 9 = 637 x 10 = 707 x 11 = 777 x 12 = 84  

可以用 for 循環或者 while 循環的版本來完成,或者兩種做法都試試看。