You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python迷宫代码报错AttributeError:int对象无maze属性求排查

问题分析与解决

错误原因

你遇到的AttributeError: 'int' object has no attribute 'maze',核心是代码逻辑错误引发的连锁问题,尤其是valid函数判断顺序错误,以及move、marked函数的移动逻辑完全不符合迷宫路径查找规则,递归过程中出现变量类型或索引异常。

代码问题拆解

  1. valid函数判断顺序错误
    当前先访问maze[x][y]再判断坐标范围,当x/y超出迷宫索引时会触发错误,同时缺少x/y≥0的判断,负数索引会取反向元素,违背迷宫逻辑。
  2. move函数移动逻辑错误
    仅按x自增→x超界才y自增的单一方向移动,完全不符合迷宫路径查找(需尝试上下左右四个方向)的规则。
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:01:35