在我尝试使用 python 解决的迷宫问题中,显示类型错误 int 对象在老鼠中不可下标

Posted

技术标签:

【中文标题】在我尝试使用 python 解决的迷宫问题中,显示类型错误 int 对象在老鼠中不可下标【英文标题】:Showing Type error int object is not subscriptable in the rat in a maze problem that I tried to solved using python 【发布时间】:2020-06-26 07:52:28 【问题描述】:

这是我在迷宫问题中解决老鼠的代码我正在尝试使用 canmoveforward 和 canmovedown 函数的逻辑,但出现类型错误,int object is not subscriptable 我不明白为什么它显示错误

puzzle=[[1,0,0,0],
   [1,1,0,1],
   [0,1,0,0],
   [0,1,1,1]]


sol=[[0,0,0,0],
 [0,0,0,0],
 [0,0,0,0],
 [0,0,0,0]]      
N=4;
def canforward(x,y,arr,N):
  if x==y==N:
    return False
  else:
    for i in range(x+1,N):
      if arr[i][y]==1:
        return True
      return False

def canmovedown(x,y,arr,N):
  if x==y==N:
    return False
  else:
    for i in range(y+1,N):
      if arr[x][i]==1:
        return True
      return False

 def runrat(x,y,arr):
    if x==y==N:
      print(sol)
      return True
    else:
      if canforward(x,y,arr,N):
        sol[x+1][y]=1
        if runrat(x+1,y,N):
          return True
      else:
        sol[x+1][y]=0
        return False
   elif canmovedown(x,y,arr,N):
       sol[x][y+1]=1
       if runrat(x,y+1,N):
          return True
       else:
          sol[x][y+1]=0
          return False
   else:
      return False


 runrat(0,0,puzzle)
 print(sol)

【问题讨论】:

分享错误 【参考方案1】:

你的缩进错了,runrat函数里面的条件级别是“if, else, elif”?请正确检查您的代码和网站。

【讨论】:

【参考方案2】:

清理缩进后:

N=4;
...
 def runrat(x,y,arr):
...
        if runrat(x+1,y,N):
...
       if runrat(x,y+1,N):

runrat 函数需要一个列表列表作为它的第三个参数arr,但您传递给它的是一个整数N。我相信这就是您收到“int object is not subscriptable”错误的原因。

【讨论】:

以上是关于在我尝试使用 python 解决的迷宫问题中,显示类型错误 int 对象在老鼠中不可下标的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会出现分段错误?我正在尝试解决迷宫问题中的老鼠

Python 解决一个简单的迷宫问题 在线等

在 C++ 中使用递归回溯迷宫

找出迷宫求解器的最佳解决方案,并带有动画输出

使用堆和队列数据结构解决迷宫问题

解决迷宫回溯