CODEMONKEY 151-159逻辑与事件- “返回”小镇

【142-150关】CodeMonkey返回函数【上】

本节课我们将回顾两个比较重要的知识点:1、带有返回值的函数比如rotten()、sleeping()、playing()这些都是已经为我们定义好的;2、自定义函数。现在我们将开始学习如何定义一个带有返回值的函数。

学习目标:

学习并练习定义带有返回值的函数。

回顾带有参数的函数function(argument)的

知识讲解:

我们已经在前面的课程中学习了函数的返回值,比如sleeping(),如果老虎睡着了返回yes,否则返回no。我也学会了定义函数(如goto()),但是我们没有告诉这些函数返回任何值。今天我们将学习如何编写一个带有返回值的函数。这需要用到return关键字,return语句允许函数指定返回值,返回给调用函数的代码。

伪代码示例:

function 发烧了吗= (体温) ->

    if 体温> 37.2

         return yes

    else

         return no

实战闯关:

第151关:自定义函数example()函数使用return关键字返回yes或者no。

如右侧代码,返回的是banana.rotten(),那么我们观察香蕉并没有腐烂,所以return返回的结果就是no。

我们再看主程序,如果example()返回真,那么去收集,否则转个圈。因此我们就需要稍作修改,让example()饭回一个yes。也就是说,如果香蕉没有腐烂就去收集,否则转个圈。

【142-150关】CodeMonkey返回函数【上】

第152关:自定义函数返回值都是由return来决定的,因此我们定义的时候一定要想清楚。

【142-150关】CodeMonkey返回函数【上】

这一关我们根据之前的经验,就是用for循环,然后判断香蕉有没有腐烂,然后决定去不去收集。我们再看右侧代码,这里调用 yummy() 函数来判断 b 是不是美味的,b是作为参数传入的,因此这个函数就需要在香蕉没有腐烂时返回yes,否则返回no。还有一点就是,如果香蕉不美味就别过去了。

第153关:小猴要拿到香蕉必须先去休息区,回复体力,这样才不会被大猩猩砸晕,因此我们需要完善右侧程序,调用healthy()函数,如果健康就返回yes,只有这个时候才可以出发,不然就要继续休息了。

【142-150关】CodeMonkey返回函数【上】

第154关:当小猴的体力小于70,injured()函数返回yes。体力等于100那么healthy()函数返回yes。

【151-159关】CodeMonkey返回函数【上】

这一关我们之前挑战过,只不过本关我们要使用定义好的两个函数来完成,使程序更简洁。思路还是:for循环去收集香蕉,如果小猴的体力小于70就返回休息区恢复体力直到100再继续去收集。注意:本关在for循环内有判断语句,里面还有until循环,层级比较多,注意代码的缩进。

第155关:这一关需要做的就是修复自定义函数healthy()

【151-159关】CodeMonkey返回函数【上】

右侧代码已经提示主程序是没有问题的,如下图

【151-159关】CodeMonkey返回函数【上】

看一下主程序部分,先去休息区,在healthy()返回yes之前一直休息,然后前往草丛,去收集香蕉。我们很容易猜到让healthy()在体力等于100时返回yes对吧。再看healthy()函数,他用了一个大于号,那么health()大于多少跟等于100是一样的效果呢(体力上限100),试试看。

第156关:我们之前学习过带参数的函数,就是使用一个()里面传入参数。

【151-159关】CodeMonkey返回函数【上】

小猴只有等到安全了才能去取香蕉,对于本关来说小猴只有等老虎睡着或者在玩耍的时候才能去收集香蕉。

【151-159关】CodeMonkey返回函数【上】

再看右侧代码,主程序直到safeFrom函数返回yes才能去收集香蕉。那么这个safeFrom什么时候返回yes?就是a(也就是传入的对象tiger)睡着或者玩耍时返回yes,那么完善这个带参数函数,即可顺利过关了。

第157关:这一关多了一个熊,小猴要拿到香蕉必须等到老虎和熊都安全时才能出发。

【151-159关】CodeMonkey返回函数【上】

再看右侧的程序,提示主程序是正确的。

【151-159关】CodeMonkey返回函数【上】

这里until循环停止的条件就是safeFrom(tiger) and safeFrom(bear)我们看到调用的是同一个函数safeFrom()但是参数不同,分别表示tiger安全、bear安全。那么我们需要修复这个函数,返回的就是传入的对象在睡觉或者在玩耍。

第158关:我们从本关可以看到,bananas[0]是腐烂的香蕉,bananas[1]是好香蕉。

【151-159关】CodeMonkey返回函数【上】

我们的工作就是自己完成两个函数的定义,并给出正确的返回,如右侧代码所示:

【151-159关】CodeMonkey返回函数【上】

因为我们知道bananas[0]是腐烂的,所以不能去收集,那么if条件里的函数negative()就要返回no,同理positive()函数要返回yes。检查一下这两个函数返回的结果对吗?

第159关:在一个函数 function 里面,所有写在返回 return 指令后面的内容都不会被执行。

【151-159关】CodeMonkey返回函数【上】

我们运行一下,发现小猴没有去拾取香蕉,因为foo()函数返回了no,虽然再最后return yes,但是在return no后不会被执行。那么就把不正确的那个返回注释掉吧。

答案:

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】

【151-159关】CodeMonkey返回函数【上】