第6章 for循環

目標

  • 掌握for循環的使用方法
  • 理解for循環的嵌套

在第3章中,我們學習了times循環。times循環可以讓一段程式碼重複執行指定的次數。

本章我們將學習另一種循環結構——for循環。它同樣能讓一段程式碼重複執行,但無需指定重複的次數。

那這段程式碼會重複執行多少次呢?還記得上一章中學習的數組嗎,for循環中的數組裡有多少個對象,程式碼就會重複執行多少次。

下面讓我們開始本章的學習。

for循環

首先來看for循環的格式:

for element in array

….待重複執行的程式碼

是不是沒有看明白?哈哈,沒關係,我來解釋一下你就清楚了。

以上for循環結構的意思是:對於數組(array)里的每一個元素(element),都執行一次「待重複執行的程式碼」。也就是說,數組裡有多少個元素,就重複執行多少次下面的程式碼。

看了上述文字你也許還是感覺很蒙,那就讓我們通過下面這個關卡來切實體驗一下for循環的用法吧。

challenges_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 , 可是直接點擊下方的圖片,以打開這一測試關卡。

test_for

很明顯,面對如此多的香蕉,肯定是不能一隻只地去收集了,那樣太機械了,操作起來也不現實。所以,for循環這個時候就派上大用場了。

希望你能順利通關!

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循環也是可以被嵌套的。