1-3:for迴圈
迴圈,會重複執行相同的程式碼來進行工作,執行次數可以一開始就做設定,每次在重複相同指令時,其迴圈變數都會增減一個固定數量,一直到條件滿足為止。我們先用for迴圈來舉例說明。
在這個練習中,我們在print( )括弧中加上一些參數和字元,來設定它的輸出格式。如果加上end=” , “參數,表示每次輸出不要自動換行,只在後面加逗號,下次輸出會在逗號後面接續下去。
print( )中加”\n”字元,表示自動換行一行,加三個“\n”字元,表示自動換行三行。適當做這樣的設定,會讓程式輸出結果比較好閱讀。
第2行for的敘述,表示對 i 這個迴圈變數而言,它是在range(6)範圍之中從0到5的整數。每執行完一次第3行縮排的print(i,end=”,” )指令,就是跑1次迴圈,總共要跑6次迴圈,這6次依序先把0、1、2、3、4、5分別指定給變數 i ,然後把它的值印出來。
第6行for敘述的範圍,變成range(1,6),就是從1到5的整數1、2、3、4、5。
第10行for敘述的範圍,變成range(1,6,2),就是從1到5每差2取一個整數,得到1、3、5。
for迴圈最普遍的用途,就是累加一系列相關的數據。日常所見最簡單的累加像1加到5,這數據少到甚至可以直接print(1+2+3+4+5),但如果從1累加到100甚至1000,這樣就行不通了。我們先看看下圖第14行到第20行,這是累加計算的程式碼,看起來好像更麻煩。
但我們注意到從第15到19行,它們有些動作是重複的。它們都是從變數summ裡面先把舊值取出來,加上一個新的數據後,存到summ裡面去,下次再取用,而每次加上的新數據,都比前一次的數據大 1 。
這就可以用第23、24行的for迴圈來代替了。因為新加的數據每次都比前一次大 1 ,我們就可以用 i 迴圈變數來代替這些新數據,它是範圍在range(1,6)的5個整數,依序被取出。每次summ的舊累加值加上新數據後,將這新的累加值存進summ裡面,再進行下一次迴圈。
上面第25行程式碼,試著將它縮排4個空格後再執行,看看結果有甚麼不同,並想辦法解釋原因。
程式碼中的range(1,6),如果改成range(1,101),就會讓我們聯想到德國數學家高斯的故事了,只不過他小時候是用肉眼找對稱再相乘,現在電腦裡面的運算大多是快速計算加法所得。
圖1-3-3:高斯和他弟子黎曼所在的哥廷根大學,是歐洲數學重鎮。當時流傳一句話:「想學好你的數學嗎?打起你的背包,到哥廷根去。」