第6章 for循環
- 2021 年 2 月 28 日
- 筆記
- CodeMonkey
目標
- 掌握for循環的使用方法
- 理解for循環的嵌套
在第3章中,我們學習了times循環。times循環可以讓一段程式碼重複執行指定的次數。
本章我們將學習另一種循環結構——for循環。它同樣能讓一段程式碼重複執行,但無需指定重複的次數。
那這段程式碼會重複執行多少次呢?還記得上一章中學習的數組嗎,for循環中的數組裡有多少個對象,程式碼就會重複執行多少次。
下面讓我們開始本章的學習。
for循環
首先來看for循環的格式:
for element in array
….待重複執行的程式碼
是不是沒有看明白?哈哈,沒關係,我來解釋一下你就清楚了。
以上for循環結構的意思是:對於數組(array)里的每一個元素(element),都執行一次「待重複執行的程式碼」。也就是說,數組裡有多少個元素,就重複執行多少次下面的程式碼。
看了上述文字你也許還是感覺很蒙,那就讓我們通過下面這個關卡來切實體驗一下for循環的用法吧。
這是我為times循環那一章節所設計的一個關卡,它同樣可以使用for循環來解決。
此關卡中有4隻香蕉,它們共同組成了一個bananas數組。這4隻香蕉都是這個數組裡的元素,分別使用bananas[0],bananas[1],bananas[2]和bananas[3]來指代它們。
如果使用for循環,那麼這一關的解法如下:
for b in bananas
….turnTo b
….step distanceTo b
注意,以上程式碼中的.僅用來表示空格,測試運行時請不要輸入。
根據上述所介紹的for循環結構用法,因為bananas數組裡有4個元素,所以循環會被執行4次。每一次循環時,都會依次從數組中取一個元素,將它賦值給b。
為了更深入的理解,我們在這裡將上述for循環展開,可以得到如下的程式碼:
b = bananas[0]
turnTo b
step distanceTo b
b = bananas[1]
turnTo b
step distanceTo b
b = bananas[2]
turnTo b
step distanceTo b
b = bananas[3]
turnTo b
step distanceTo b
怎麼樣,看了以上展開的程式碼之後,for循環是不是更容易理解了?
為了測試你是不是真的理解了for循環的用法,我們來做如下一個測試。
請在瀏覽器里輸入 //t.im/hnwf , 可是直接點擊下方的圖片,以打開這一測試關卡。
很明顯,面對如此多的香蕉,肯定是不能一隻只地去收集了,那樣太機械了,操作起來也不現實。所以,for循環這個時候就派上大用場了。
希望你能順利通關!
for的嵌套
還有一點需要注意,for循環是可以嵌套的。
什麼是嵌套呢?你有沒有見過俄羅斯套娃,或者是象牙球雕?
對,for循環的嵌套就是指,在一個for循環的裡面,仍然是for循環。下面請看一下for循環的兩層嵌套:
for a in arrayA
….for b in arrayB
……..待重複執行的程式碼段一
….待重複執行的程式碼段二
以上即是一個兩層的for循環,可以看到,在最外層的for循環裡面,包含了另一個for循環。
若將以上程式碼展開,可以得到以下程式碼:
a = arrayA[0]
b = arrayB[0]
程式碼段一
b = arrayB[1]
程式碼段一
b = arrayB[2]
程式碼段一
…. # 直到內層的for循環結束
程式碼段二
a = arrayA[1]
b = arrayB[0]
程式碼段一
b = arrayB[1]
程式碼段一
b = arrayB[2]
程式碼段一
…. # 直到內層的for循環結束
程式碼段二
…. # 直到外層的for循環結束
測試一下你是不是真正地理解了for的嵌套,請問,假設arrayA數組中有3個元素,arrayB數組中有5個元素,那麼,在這個兩層嵌套中,程式碼段一一共被執行了多少次?程式碼段二呢?
公布答案啦,程式碼段一一共被執行了3×5=15次,程式碼段二一共被執行了3次。
怎麼樣,你答對了嗎?如果你的答案不正確,請再仔細思考一會兒。
75關即需要使用到for的嵌套結構,你也可以使用它來自測。
好了,for循環的內容就這麼多了,課後作業趕緊做起來吧!
作業
- 故事模式61 – 75關
- 進階模式6-1 – 6-15關
注意,一定保證要所有關卡都拿到三顆星。
小結
- for循環跟times循環一樣,也可以用來重複執行某一段程式碼。
- for循環無需手動指定循環次數,具體循環次數由其中的數組元素個數決定。
- for循環是可以被嵌套的,即for循環的內部,仍然可以是for循環。其實,times循環也是可以被嵌套的。