我正在做this教程。
基本上我的问题是,在front_is_clear为false之后,它会运行jump_over_hurdle并停止。
from my_lib import *
while front_is_clear():
move()
if not front_is_clear():
jump_over_hurdle()
我怎样才能让它回到
while front_is_clear():
move()
此外,我希望程序在达到目标后结束。所以我需要实现一些..
if at_goal():
done()
答案 0 :(得分:2)
只需使用另一个while循环
from my_lib import *
# well, maybe not `not at_goal()` since it only check it after
# the below code finish running, it would be better to use `while True`
# and find a better way to implement the at_goal()
while not at_goal():
while front_is_clear():
move()
if not front_is_clear():
jump_over_hurdle()
done()
答案 1 :(得分:0)
不需要嵌套循环。在原始代码中,while循环对于if-check是多余的;如果您move
重复while front_is_clear
,那么当然在循环结束后front_is_clear
不会出现这种情况(或者它会继续循环)。
真的,我们想要做的是重复
while not at_goal():
if front_is_clear():
move()
else:
jump_over_hurdle()
done()
这也避免了在进入下一个障碍的过程中达到目标的原始代码的问题,因为我们会检查我们是否在每一步之后都进入了目标(无论是移动还是跳跃。)