第一種循環稱為計數循環。我們還聽過有人把它叫做 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
所取的值。