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、完成本节对应的特技关卡:
答案
思考题答案:
本站内容未经许可,禁止任何网站及个人进行转载。