作业1:Karel取报纸
你的首要任务是解决 Karel 世界中一个简单的故事问题。
世界说明如下:
1.上图中心的正方形区域表示Karel的房子,右侧中间缺口的部分表示房子的门;
2.门口前的蜂鸣器(蓝色正方形)表示报纸;
3.Karel初始位置:房子西北角,面向东方;
你需要解决的问题是让 Karel 去取报纸。即让 Karel 拿起位于门口外的报纸,然后返回其初始位置。这个练习很简单,旨在帮助您开始使用Karel编程。你需要完成的任务是编写指令序列,让 Karel 能够:
步骤1.移动至报纸所在位置;
步骤2.拾取报纸;
步骤3.返回初始起点;
编程思维:
1.函数分解:将任务拆分为可复用的函数;
2.代码抽象:通过函数封装重复逻辑,提高可读性和可维护性;
3.状态管理:确保 Karel 在每个步骤后保持正确的位置和方向;
尽管程序代码行数不多,但仍然值得练习分解思维。
在你的解决方案中,至少编写两个辅助函数:
1.用于实现步骤1的函数
2.用于实现步骤3的函数
🚀注意:函数名要见名知意;单词(当然也可以用拼音)之间用下划线连接;函数名要短。🕊
当然也可以为步骤2编写一个辅助函数,但由于拾取报纸(蜂鸣器)只是一行代码(Karel内置函数),因此在没有辅助函数的情况下执行此步骤也是可以的。
⏳开始你的编程之旅吧!
🔥逐步求精法🔥
🔥边开发边迭代测试🔥
函数 |
描述 |
函数 |
描述 |
move() |
向前移动一步 |
turn_left() |
向左转90度 |
pick_beeper() |
拾取当前位置的蜂鸣器 |
put_beeper() |
在当前位置放置蜂鸣器 |
front_is_clear() |
检查前方是否有墙 |
front_is_blocked() |
检查前方是否被墙挡住 |
left_is_clear() |
检查左侧是否有墙 |
left_is_blocked() |
检查左侧是否被墙挡住 |
right_is_clear() |
检查右侧是否有墙 |
right_is_blocked() |
检查右侧是否被墙挡住 |
beepers_present() |
检查当前位置是否有蜂鸣器 |
no_beepers_present() |
检查当前位置是否没有蜂鸣器 |
beepers_in_bag() |
检查背包中是否有蜂鸣器 |
no_beepers_in_bag() |
检查背包中是否没有蜂鸣器 |
facing_north() |
检查是否面向北方 |
not_facing_north() |
检查是否没有面向北方 |
facing_south() |
检查是否面向南方 |
not_facing_south() |
检查是否没有面向南方 |
facing_east() |
检查是否面向东方 |
not_facing_east() |
检查是否没有面向东方 |
facing_west() |
检查是否面向西方 |
not_facing_west() |
检查是否没有面向西方 |