CODEMONKEY 160-165邏輯與事件- “返回”小鎮

【142-150關】CodeMonkey返回函數【上】


本節課中我們將遇到一個新的角色--可怕的烏鴉,我們將學習如何驅趕它們(一只,多只),我們將用前面學到的知識進行實踐練習。

學習目標:

使用新的語法調用帶有返回值的函數

在定義的函數內使用到for循環的操作

知識講解:

1、通常我們會在函數的末尾使用return。在這種情況下,函數無論如何都會完成運行。然而,有些時候return會讓函數在某個地方停止,而不是必須放到結尾,讓程序都執行完。

我們來通過一個例子體驗一下:從你的書包或書架上取出5本書,然后把一個卡片塞進任意一本書里。接著我們將這五本書按照隨意的順序摞起來,我們需要從這5本書里找到卡片。

我們的尋找方式是不是:從第一本開始找,找不到就繼續看下一本,如果找到那么就停止。如果用偽代碼寫出來就是這樣:

inwhichbook = () ->

for b in books

if b.hascard

return b.name

return "none"

這里在結尾處也有一個return,想一想什么時候才會執行這行代碼?對,那就是你不遵守規則,并沒有把卡片塞進任意一本書中。

2、下面這兩種代碼寫法都是正確的,效果一樣,但是明顯第二種寫法更簡潔。

(1)if not crows[0].watching() and not crows[1].watching() and not crows[2].watching()

return yes

else

return no

(2)return not crows[0].watching() and not crows[1].watching() and not crows[2].watching()

實戰闖關:

第160關:這一關又來了一個新朋友,烏鴉(crow),為了拿到香蕉我們必須把它嚇走,還記得怎么嚇走老鼠嗎?對,就是用say。

【160-165關】CodeMonkey返回函數【下】

在烏鴉一直盯著【crow.watching()】的時候就不停地說話,直到把它嚇走,然后去收集香蕉。

第161關:使用 say函數來嚇走烏鴉吧,但是say一次烏鴉不一定會飛走,所以要使用until循環一直說,直到safe()函數返回yes。

【160-165關】CodeMonkey返回函數【下】

第162關:這一關有兩只烏鴉,那么safe()函數只有在兩只烏鴉都沒有在監控的時候才返回yes(只要有一只烏鴉在監控就會返回 no)

【160-165關】CodeMonkey返回函數【下】

還是跟之前的關卡一樣用until訓話嚇走烏鴉,再去拿到香蕉吧。

不過你會發現沒有得到三顆星星,提示用更簡短的代碼來取得星星。同學們還記得“and”、“or”嗎?來簡化一下safe()函數里的判斷語句吧。

第163關:自己根據上一關學習的知識,實現safe()函數,趕走兩只烏鴉,然后再用for循環挨個去拾取香蕉。

【160-165關】CodeMonkey返回函數【下】

第164關:趕走三只烏鴉,其實很簡單,我們無非在safe()函數中,當三只烏鴉都不監控時返回yes即可,只不過比兩只多了一個條件而已。

【160-165關】CodeMonkey返回函數【下】

第165關:我的天這么多只烏鴉,那么我們需要用到for循環,只要有一只烏鴉在監控就返回no,只有所有烏鴉都不監控才返回yes。

【160-165關】CodeMonkey返回函數【下】

思考與練習:

1、思考:

【160-165關】CodeMonkey返回函數【下】

2、完成本節對應的特技關卡:

【160-165關】CodeMonkey返回函數【下】

答案

【160-165關】CodeMonkey返回函數【下】

【160-165關】CodeMonkey返回函數【下】

【160-165關】CodeMonkey返回函數【下】

【160-165關】CodeMonkey返回函數【下】

【160-165關】CodeMonkey返回函數【下】

【160-165關】CodeMonkey返回函數【下】

思考題答案:

【160-165關】CodeMonkey返回函數【下】


本站內容未經許可,禁止任何網站及個人進行轉載。