循環變量與其他變量一樣。它沒有任何特殊之處,只是對應一個值的名字而已。將這個變量用作循環計數器也是可以的。
之前我們說過,要使用能夠描述變量用途的變量名。正是這個原因,我們在前一個例子中選擇了 looper
這個名字。不過,有時可以有些例外,循環變量就屬於這種例外。這是因為,編程中有一個慣例(應該記得,慣例就是表示通用的做法),通常使用字母 i
、j
、k
等作為循環變量。
從前的美好時光
為什麼用 i、j 和 k 循環?
這是因為早先的程序員一直用程序來計算數學問題,而數中 a、b、c 和 x、y、z 已經有其他用途。另外,在當時一種流的編程語言中,變量 i、j 和 k 總是整數,不能把它們創建為何其他類型。由於循環計數器總是整數,所以程序員總是選 i、j 和 k 來作為循環計數器,這也成為了一種通用的做法。
由於很多人都使用 i
、j
、k
作為循環變量,程序員在程序中也習慣了這種做法。當然也可以用其他名字作為循環變量(就像前面的例子中一樣),不過,除了作為循環變量,i
、j
、k
不應當有其他用途。
如果採用這個慣例,程序就會像這樣:
for i in range (1, 5): print i, "times 8 =", i * 8
它的用法完全相同。(你可以試試看!)
為循環變量選擇什麼名字屬於風格問題。風格(style)就是你的程序看上去怎麼樣,而與程序能不能正常工作無關。不過,如果與其他程序員採用相同的風格,你的程序就會更易讀、更易於理解,也更易於調試。同時,你也會更加習慣這種風格,能夠更輕鬆地讀懂其他人的程序。
range
簡寫
不一定非得為 range
提供兩個數(像在代碼清單 8-5 中那樣),可以只提供一個數:
for i in range (5):
這與寫作:
for i in range (0, 5):
完全相同,同樣會提供以下數字列表:[0, 1, 2, 3, 4]
。
實際上,大多數程序員都從 0 開始循環而不是從 1 開始。如果使用 range(5)
,會得到循環的 5 次迭代,這很容易記住。只是需要知道,第一次循環時 i
將等於 0 而不是 1,而最後一次循環時,它將等於 4 而不是 5。
從前的美好時光
為什麼大多數程序員從 0 而不是 1 開始循環呢?
是這樣的,從前,有些人堅持從 1 開始,有些人則堅持從 0 開始。他們對於哪一種做法更好有過激烈的爭論。最終,堅持從 0 開始的人勝利了。
所以就出現了現在的情況,如今大多數人都從 0 開始循環,不過你可以根據自己的喜好選擇任何一種做法。只是要記住,需要調整上界來得到正確的迭代次數。
嗯,卡特,你已經發現字符串的一些規律了。字符串就像一個字符列表,我們已經學過:計數循環使用列表來完成迭代。這說明,也可以利用一個字符串來循環。字符串中的每個字符對應循環中的一次迭代。所以,如果打印循環變量(在這個例子中卡特把他的循環變量取名為 letter
),就會打印出這個字符串中的所有字母,一次打印一個字母。因為每個 print
語句都會換行,所以每個字母分別打印在單獨的一行上。
你可以像卡特一樣,多做一些嘗試,這是一種很好的學習方法!