CODEMONKEY 160-165邏輯與事件- “返回”小鎮
本節課中我們將遇到一個新的角色--可怕的烏鴉,我們將學習如何驅趕它們(一只,多只),我們將用前面學到的知識進行實踐練習。
學習目標:
使用新的語法調用帶有返回值的函數
在定義的函數內使用到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。
在烏鴉一直盯著【crow.watching()】的時候就不停地說話,直到把它嚇走,然后去收集香蕉。
第161關:使用 say函數來嚇走烏鴉吧,但是say一次烏鴉不一定會飛走,所以要使用until循環一直說,直到safe()函數返回yes。
第162關:這一關有兩只烏鴉,那么safe()函數只有在兩只烏鴉都沒有在監控的時候才返回yes(只要有一只烏鴉在監控就會返回 no)
還是跟之前的關卡一樣用until訓話嚇走烏鴉,再去拿到香蕉吧。
不過你會發現沒有得到三顆星星,提示用更簡短的代碼來取得星星。同學們還記得“and”、“or”嗎?來簡化一下safe()函數里的判斷語句吧。
第163關:自己根據上一關學習的知識,實現safe()函數,趕走兩只烏鴉,然后再用for循環挨個去拾取香蕉。
第164關:趕走三只烏鴉,其實很簡單,我們無非在safe()函數中,當三只烏鴉都不監控時返回yes即可,只不過比兩只多了一個條件而已。
第165關:我的天這么多只烏鴉,那么我們需要用到for循環,只要有一只烏鴉在監控就返回no,只有所有烏鴉都不監控才返回yes。
思考與練習:
1、思考:
2、完成本節對應的特技關卡:
答案
思考題答案:
本站內容未經許可,禁止任何網站及個人進行轉載。