讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 8.1 計數循環 >

8.1 計數循環

第一種循環稱為計數循環。我們還聽過有人把它叫做 for 循環,因為很多語言(包括 Python)在程序中都使用 for 關鍵字來創建這種類型的循環。

下面就來嘗試使用計數循環的程序。在 IDLE 中使用 File(文件) > New(新建)命令打開一個新的文本編輯器窗口(就像寫第一個程序時一樣)。然後鍵入代碼清單 8-1 中的程序。

代碼清單 8-1 一個非常簡單的 for 循環

for looper in [1, 2, 3, 4, 5]:    print "hello"  

把它保存為 Loop1.py,運行這個程序(可以使用 Run(運行) > Run Module(運行模塊)菜單,也可以用快捷鍵 F5)。

你會看到這樣的結果:

>>> ================ RESTART ================>>>hellohellohellohellohello  

嘿,是不是有重複?雖然這裡只有一個 print 語句,但程序顯示了 5 次「hello」。這是怎麼做到的?第一行(for looper in [1, 2, 3, 4, 5]:)翻譯成我們的語言就表示。

1. 變量 looper 的值從 1 開始(所以 looper = 1)。

2. 對應列表中的每一個值,這個循環會把下一個指令塊中的所有工作完成一次。(列表就是中括號中的那些數)。

3. 每次執行循環時,變量 looper 會賦為這個列表中的下一個值。

第二行(print "hello")就是 Python 每次循環時要執行的代碼塊。for 循環需要一個代碼塊來告訴程序每次循環時做什麼。這個代碼塊(縮進的代碼部分)稱為循環體(body of the loop)。(還記得吧?上一章我們討論過縮進和代碼塊。)

術語箱

每次循環稱為一次迭代(iteration)。

下面來試試別的。這一次不再是每次都打印相同的東西,下面讓它每次循環時打印不同的東西。代碼清單 8-2 就會做這個工作。

代碼清單 8-2 每次 for 循環做不同的事情

for looper in [1, 2, 3, 4, 5]:    print looper  

把這個程序保存為 Loop2.py,並運行。

結果應該類似於:

>>> ================ RESTART ================>>>12345  

這一次不再打印 5 次「hello」了,它會打印變量 looper 的值。每次循環時,looper 會取列表中的下一個值。

失控的循環

卡特,我也遇到過同樣的問題!每一個程序員都曾經遭遇過失控的循環(也叫做無限循環)。任何時刻(甚至在失控循環中)要停止一個 Python 程序,只需要按下 CTRL-C,即按下 CTRL 鍵的同時再按下 C 鍵。以後你會發現這非常方便!遊戲和圖形程序通常都在一個循環中運行。這些程序需要不斷從鼠標、鍵盤或遊戲控制器得到輸入,然後處理這個輸入,並更新屏幕。開始寫這種程序時,我們會大量使用循環。所以你的某個程序很有可能會在某一點陷入循環,所以你要知道如何讓它脫身!

中括號做什麼用

你可能已經注意到,循環值的列表包圍在中括號裡。Python 就是利用中括號以及數之間的逗號來建立列表(list)。稍後就會學習列表(準確地講,是在第 12 章)。不過對現在來說,只要知道列表就是一種「容器」,可以用來存放一堆東西。在這裡,這些東西就是數,也就是每次循環迭代時 looper 所取的值。