讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 8.5 按步長計數 >

8.5 按步長計數

到目前為止,我們的計數循環都是每次迭代時計數增 1。如果希望循環按步長為 2 來計數該怎麼做?或者步長為 5 呢?或者 10 呢?還有,如果想反向計數,又該怎麼做呢?

range 函數可以有一個額外的參數,利用這個參數可以把步長從默認的 1 改為不同的值。

術語箱

參數(argument)就是使用類似 range 的函數時放在括號裡的值。我們說,向函數傳入了參數。有時也用形參(parameter)這個詞,如傳遞形參。我們將在第 13 章瞭解更多關於函數、參數和形參的內容。

我們想在交互模式中嘗試幾個循環。鍵入第一行時,由於末尾有冒號,IDLE 會自動為你縮進下一行,因為它知道 for 循環後面需要有一個代碼塊。完成這個代碼塊後,按兩次回車鍵。試試看:

>>> for i in range(1, 10, 2):print i13579  

這裡向 range 函數增加了第 3 個參數 2。現在循環按步長 2 計數。再來試一個:

>>> for i in range(5, 26, 5):print i510152025  

這是按步長 5 來循環的。反向計數呢?

>>> for i in range(10, 1, -1):print i1098765432  

range 函數中的第 3 個參數是負數時,循環會向下計數,而不是向上計數。應該記得,循環會從一個數開始,向上(或向下)直到(但不包括)第二個數,所以在最後一個例子中,我們只向下計數到 2,而不是 1。

可以利用這一點來建立一個倒計時的定時器程序。只需要再增加兩行代碼。在 IDLE 中打開一個新的編輯器窗口,鍵入代碼清單 8-6 中的程序。試著運行這個程序。

代碼清單 8-6 準備好了嗎?

先不用擔心這個程序裡還沒有講到的內容,比如說 importtimesleep。所有這些內容都會在後面的章節中講清楚。你只需要試著運行代碼清單 8-6 中的程序,看看它是怎麼工作的。這裡的關鍵是 range(10,0,-1) 部分,它會讓循環從 10 反向計數到 1。