本帖最后由 老大不小 于 2009-12-13 21:26 编辑
使用if-else完成机器人跨栏程序的分析过程(前面已经学习了if;if-else):
1、用一纸做的箭头在黑板上画出的图上模拟机器人跨栏动作,让学生观察规律;重复几次之后,学生总结出:机器人的右边靠着墙走就可以了。我在黑板上简写为“靠右走”
2、分析“靠右走”其实是两个方面,一是靠右,如果右边有空,得向右边的墙靠近;二是如果前面有空,得向前走。从而引出right_is_clear()和front_is_clear()
3、跨四个栏实际上只需要分析跨一个栏的动作即可,所以在把跨第一个栏的五个点按顺序标出来;现在我们要写一段程序,这段程序会让机器人无论处于哪个点都会做出正确的动作;那么我们一个一个点来分析,分析结合第2步的右边为空和前面为空这两种情况来进行
关键点 |
右边为空 |
前面为空 |
机器人下一步动作 |
① |
× |
√ |
前进 |
②⑤ |
× |
× |
左转 |
③④ |
√ |
√ |
右转 |
那我们根据表格来写程序,首先要处理右边为空的情况(③④)(为什么要先处理右边为空的情况?因为要先靠右)
接下来要看右边不为空的情况,从表中可以看出右边不为空还有两种情况,前面为空和前面不为空,说明接下来要判断前面是否为空
如果 右边为空 右转
否则 如果 前面为空
前进
否则
左转
然后把中文翻译为代码
if right_is_clear(): you()
elif front_is_clear():
move()
else:
turn_left()
|