codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

这节课我们将介绍一个在条件语句中非常有用的工具,逻辑运算符, 具体来说,我们将学习“and”(逻辑与)操作符。  

学习目标

继续练习until循环的使用

学习使用逻辑运算“and”

函数、“and”运算符的综合使用

知识讲解

and 逻辑与,可以理解为并且的意思.

我们之前学习的until循环只有一个条件,今天呢我们还会遇到具有两个条件的until循环,也就意味着只有计算机等待两个条件都为真的时候才会停止执行until里的代码,继续执行后面的程序。

比如我们过马路的时候,发现对面是红灯,此时还有车辆经过,我们知道此时必须等待,不能过马路。过了一小会儿,马路上没有车了,但是对面还是红灯,我们能过马路吗?同样的问题,如果我们发现是绿灯,但是还是有车在经过,我们是不是也不能走啊。所以过马路需要同时满足两个条件:

1、对面是绿灯 yes

2、马路上没有车辆在穿行 yes

我们用程序就可以这么写了,使用and将两个条件连接起来

until road.clear and light.green

    wait()

cross road

我们把过马路这些情况整理成一个表格看一下:

绿灯
马路上没有车 绿灯and马路上没有车
no no     no
no
yes no
yes
no
no
yes
yes
yes

我们可以总结出,只有and运算符前后两个条件都是真,程序才会往后执行。

实战闯关:

第120关:糟了,请小心, 有只白老虎出现了 ! 你还记得之前学习的一直等待直到小猫睡着吗?这一关我们要等待老虎睡着了再去吃掉香蕉(可以用step,也可以用goto函数)

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

第121关:“刚碰到一只老虎,这怎么又碰到一头大熊啊,这也太不走运了吧,我还是继续等它睡着了吧,不然我就要成为这头熊的食物了。”修改一下这个程序中的错误,让小猴吃到香蕉吧。

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

第122关:有三根香蕉,还是老办法用for循环,然后我们再观察一下,每次吃到香蕉是不是都要从大白熊面前经过啊,那么我们可不能鲁莽,一定要每次等它睡着了再能行动。根据思路完成代码调试(DEBUG)

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

第123关:这次前面有两个家伙,要想吃掉香蕉必须等他们都睡着了才行啊。好吧,只能等,记住一定要都睡着了,用程序就是:一直等待直到老虎睡着并且(我们本节的新知识,逻辑与”and“)白熊也睡着,再去吃掉香蕉。

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

第124关:这一关提示与上一关是完全一样的,不过在右侧多了好几行代码,我们来看一看,还给了一个提示,检查所有的判断语句。

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

检查一下代码,并运行,你会发现这两个判断都没有问题,那么为什么要给这么一个提示呢?那是为了让我们充分理解逻辑与(“and”)的用法,因为运行后你会发现,只有跟熊说了“Good night, bear!”并且跟老虎说了“Sweet dreams, tiger!”,循环才能结束,最后才说“I've waited enough!”。从我们要达到的目的来看,这些程序并没有什么实际作用,因此我们理解了用意后就可以大胆的删除没用的程序,让小后去吃掉香蕉吧。

第125关:本关香蕉都在上方,因此只需要小猴等到老虎和熊都睡着了,就可以大胆的过去吃掉所有的香蕉了。

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

126关:我们的山羊朋友也来了,我们不仅要保护好小猴也不要让山羊被吃掉喔!思路:用for循环来吃掉所有香蕉,每次都先等待老虎和熊都睡着,然后再根据香蕉的颜色来指定谁过去吃掉,本关就能顺利通过了。

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

第127关:这一关我们通过定义一个waitForSafety()函数来执行等待,然后通过for循环挨个吃掉香蕉,因为每次都要从老虎与熊前面经过,所以在吃掉香蕉之间记得调用函数等待它们都睡着,再行动。

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

只需要完善waitForSafety()函数即可过关。

第128关:这一关看起来有点复杂,因为有山羊还有被冰冻的香蕉。

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

那么我们还是按照以往的经验,先理一下思路:

首先有多个香蕉,那么必然要使用for循环挨个去吃,然而香蕉有冰冻的,所以我们要接着判断香蕉是不是冰冻的,是的话就让山羊过去,别急哦,等熊跟老虎都睡着再出发。最后让小猴等老虎熊都睡着再去吃掉。

伪代码如下

for b in bananas

    如果香蕉是冰冻的

        等待直到它们都睡着

        山羊前去撞破冰块

    等待直到它们都睡着

    小猴去吃掉

答案:

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧

codemonkey少儿编程【112-1119】逻辑与事件-“布尔逻辑”歌剧