迷宫问题,为什么压入起点后,运行后说是空栈

moze=[
        [1,1,1,1,1,1,1,1,1,1],
        [1,0,0,1,0,0,0,1,0,1],
        [1,0,0,1,0,0,0,1,0,1],
        [1,0,0,0,0,1,1,0,0,1],
        [1,0,1,1,1,0,0,0,0,1],
        [1,0,0,0,1,0,0,0,0,1],
        [1,0,1,0,0,0,1,0,0,1],
        [1,0,1,1,1,0,1,1,0,1],
        [1,1,0,0,0,0,0,0,0,1],
        [1,1,1,1,1,1,1,1,1,1]
      ]
dirs = [
    lambda x,y:(x+1,y),
    lambda x,y:(x-1,y),
    lambda x,y:(x,y-1),
    lambda x,y:(x,y+1)
]
#输入一次xy,输出四个结果


def moze_path(x1,y1,x2,y2):
    stack = []
    stack.append((x1,y1))
    while(len(stack)>0):
        curNode = stack[-1]#当前位置 现在的x和y
        #curNode 是一个长度为2的元组
        # 上下左右:x-1,y:x+1,y;x,y-1;x,y+1;
        if curNode[0] == x2 and curNode[1] == y2:
            #走到终点
            for p in stack:
                print(p)
            return True
        for dir in dirs:
            nextNode = dir(curNode[0],curNode[1])
            #curNode[0]为x坐标     curNode[1]为y坐标
            # 如果下一节点能走
            if moze[nextNode[0]][nextNode[1]] == 0:
                #变化后的位置---nextNode[0]][nextNode[1]
                stack.append(nextNode)
                moze[nextNode[0]][nextNode[1]] = 2 #2表示已经走过
                break

            else:
                moze[nextNode[0]][nextNode[1]] = 2
                stack.pop()
                #栈顶出栈
    else:
        print("没有路")
        return False

moze_path(1,1,8,8)

运行结果:

IndexError: pop from empty list


你好,你这个迷宫没有路出去,能走的补数少于不能走的补数,将其做一个异常处理即可正确

moze=[
        [1,1,1,1,1,1,1,1,1,1],
        [1,0,0,1,0,0,0,1,0,1],
        [1,0,0,1,0,0,0,1,0,1],
        [1,0,0,0,0,1,1,0,0,1],
        [1,0,1,1,1,0,0,0,0,1],
        [1,0,0,0,1,0,0,0,0,1],
        [1,0,1,0,0,0,1,0,0,1],
        [1,0,1,1,1,0,1,1,0,1],
        [1,1,0,0,0,0,0,0,0,1],
        [1,1,1,1,1,1,1,1,1,1]
      ]
dirs = [
    lambda x,y:(x+1,y),
    lambda x,y:(x-1,y),
    lambda x,y:(x,y-1),
    lambda x,y:(x,y+1)
]
#输入一次xy,输出四个结果
 
def moze_path(x1,y1,x2,y2):
    stack = []
    stack.append((x1,y1))
    while(len(stack)>0):
        curNode = stack[-1]#当前位置 现在的x和y
        #curNode 是一个长度为2的元组
        # 上下左右:x-1,y:x+1,y;x,y-1;x,y+1;
        if curNode[0] == x2 and curNode[1] == y2:
            #走到终点
            for p in stack:
                print(p)
            return True
        for dir in dirs:
            nextNode = dir(curNode[0],curNode[1])
            #curNode[0]为x坐标     curNode[1]为y坐标
            # 如果下一节点能走
            if moze[nextNode[0]][nextNode[1]] == 0:
                #变化后的位置---nextNode[0]][nextNode[1]
                stack.append(nextNode)
                moze[nextNode[0]][nextNode[1]] = 2 #2表示已经走过
                break
            else:
                moze[nextNode[0]][nextNode[1]] = 2
                stack.pop()
                #栈顶出栈
    else:
        print("没有路")
        return False
moze_path(1,1,8,8)
 

img