Python迷宫代码报错AttributeError:int对象无maze属性求排查
问题分析与解决
错误原因
你遇到的AttributeError: 'int' object has no attribute 'maze',核心是代码逻辑错误引发的连锁问题,尤其是valid函数判断顺序错误,以及move、marked函数的移动逻辑完全不符合迷宫路径查找规则,递归过程中出现变量类型或索引异常。
代码问题拆解
valid函数判断顺序错误
当前先访问maze[x][y]再判断坐标范围,当x/y超出迷宫索引时会触发错误,同时缺少x/y≥0的判断,负数索引会取反向元素,违背迷宫逻辑。move函数移动逻辑错误
仅按x自增→x超界才y自增的单一方向移动,完全不符合迷宫路径查找(需尝试上下左右四个方向)的规则。marked函数逻辑混乱
函数名标注为路径标记,但实际执行错误的移动操作,导致递归逻辑彻底混乱。
修正后的代码
以下是采用深度优先搜索(DFS)的修复版代码,实现标准迷宫路径查找:
def valid(n, maze, x, y): # 先判断坐标合法性,再检查是否可通行 return 0 <= x < n and 0 <= y < n and maze[x][y] == 1 def dfs(n, maze, x, y, path): # 到达终点,输出路径 if x == n-1 and y == n-1: path.append((x, y)) print("找到路径:", path) return True # 当前坐标合法,标记为已走过(避免重复访问) if valid(n, maze, x, y): path.append((x, y)) maze[x][y] = 2 # 尝试四个方向:下、右、上、左 if dfs(n, maze, x+1, y, path) or dfs(n, maze, x, y+1, path) or dfs(n, maze, x-1, y, path) or dfs(n, maze, x, y-1, path): return True # 回溯:取消标记,返回上一层 path.pop() maze[x][y] = 1 return False maze = [[1, 0, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0], [1, 1, 1, 1]] n = 4 if not dfs(n, maze, 0, 0, []): print("没有找到路径")
代码说明
valid函数:优先校验坐标是否在迷宫边界内,再判断是否为可通行格子(值为1)。dfs函数:通过递归尝试四个方向的移动,每走到合法格子就标记为已访问(设为2);若某方向走不通则回溯,取消标记并返回上一层。- 示例迷宫的输出路径为:
[(0, 0), (1, 0), (1, 1), (2, 1), (3, 1), (3, 2), (3, 3)]
内容的提问来源于stack exchange,提问作者Kamini Das
相关产品推荐
相关产品推荐

