如何在代码变为false后返回代码的开头?

时间:2014-11-09 02:22:04

标签: python loops while-loop

我正在做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()

2 个答案:

答案 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()

这也避免了在进入下一个障碍的过程中达到目标的原始代码的问题,因为我们会检查我们是否在每一步之后都进入了目标(无论是移动还是跳跃。)