首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在代码变假后返回到代码的开头?

如何在代码变假后返回到代码的开头?
EN

Stack Overflow用户
提问于 2014-11-08 18:22:04
回答 2查看 146关注 0票数 1

我正在做教程。

基本上,我的问题是,在front_is_clear为false之后,它运行jump_over_hurdle并停止。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from my_lib import *

while front_is_clear():
    move()

if not front_is_clear():
    jump_over_hurdle()

我怎么才能让它回到过去

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while front_is_clear():
    move()

此外,我希望这个项目一旦达到目标就结束。所以我需要如何实现..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if at_goal():
    done()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-08 18:29:37

只需使用另一个while循环,如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()
票数 2
EN

Stack Overflow用户

发布于 2014-11-08 18:55:39

没有必要使用嵌套循环。在原始代码中,while循环与if -check是冗余的;如果您重复执行move while front_is_clear,那么当然不会出现循环结束后的front_is_clear (否则它会继续循环)的情况。

实际上,我们想要做的是反复移动或跳跃,直到我们达到目标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while not at_goal():
    if front_is_clear():
        move()
    else:
        jump_over_hurdle()
done()

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26824289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文