首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无休止的while循环混乱

无休止的while循环混乱
EN

Stack Overflow用户
提问于 2013-03-28 12:40:46
回答 1查看 127关注 0票数 1

所以我试图在一个9x9的网格上规划一条路径,所以boardSize是9。while循环应该停止路径列表的长度是81或更多,那么当生物在7,5,目标在5,2,海拔为0时,为什么它可以达到3531的长度?是我的while循环出错了,还是你觉得它可能在别的地方?

代码语言:javascript
运行
复制
def planPath(self, creature, goal, board):
        print("in the path")      
        path = [board[creature.x][creature.y]]       
        while goal not in path or len(path) < self.boardSize ** 2:
            print("path length")
            print(len(path))
            nextPossible = {}
            for neighbor in path[-1].neighbors:
                if type(neighbor) is not Land.Water:
                    nextPossible[neighbor] = abs(neighbor.location[0] - goal.location[0]) + abs(neighbor.location[1] - goal.location[1]) + abs(neighbor.elevation - goal.elevation)      
            path.append(min(nextPossible, key=nextPossible.get))
        return path
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-28 15:32:55

您希望在路径长度达到棋盘上的正方形数量时结束while循环-在while循环中使用and而不是or,它将在以下两个表达式之一时结束:

代码语言:javascript
运行
复制
goal not in path

或者这个表达式:

代码语言:javascript
运行
复制
len(path) < self.boardSize ** 2

计算结果为False。使用or,只要其中一个表达式为真,循环就会继续运行。因此,您的修复代码将是:

代码语言:javascript
运行
复制
def planPath(self, creature, goal, board):
        print("in the path")      
        path = [board[creature.x][creature.y]]       
        while goal not in path and len(path) < self.boardSize ** 2:
            print("path length")
            print(len(path))
            nextPossible = {}
            for neighbor in path[-1].neighbors:
                if type(neighbor) is not Land.Water:
                    nextPossible[neighbor] = abs(neighbor.location[0] - goal.location[0]) + abs(neighbor.location[1] - goal.location[1]) + abs(neighbor.elevation - goal.elevation)      
            path.append(min(nextPossible, key=nextPossible.get))
        return path
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15674410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档