有時可能希望在中間離開循環,也就是 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
的作用也一樣。
要指出的是,有些人認為使用 break
和 continue
並不好。就我個人來講,我不認為這樣不好,不過我自己確實很少使用這兩個語句。我想還是應該告訴你一些關於 break
和 continue
的內容,沒準以後你會用到。
你學到了什麼
在這一章,你學到了以下內容。
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
循環的版本來完成,或者兩種做法都試試看。