1.选择走向,比如右-下-左-上,并且将走过的那个点lst.append存储到lst中 2.通过continue结束本次余下条件的判断,并使用lst[-1]坐标点判断下次的走向 3.将走过的坐标对应的值改为2,这样无路可走时可以原路返回 maze=[[1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 1, 0, 1, 0, 1, 1, 1, 1], [1, 1, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 0, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 1, 1, 1, 1, 0, 1, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1]] start=(1,1) end=(7,7) xy=start lst=[] lst.append(xy) while lst:#lst存储走过的坐标,当lst不为空有下面几种处理方式 xy=lst[-1] x, y = xy if (x,y)==end:#如果坐标和终点一致,说明到达终点 print('到达终点',lst) break if maze[x][y+1]==0:#向右 lst.append((x,y+1)) maze[x][y+1]=2 continue#结束本次循环,以该点再次判断走向 if maze[x+1][y]==0:#向下 lst.append((x+1,y)) maze[x + 1][y] =2 continue if maze[x][y-1]==0:#向左 lst.append((x,y-1)) maze[x][y-1] =2 continue if maze[x-1][y]==0:#向上 lst.append((x-1,y)) maze[x - 1][y] =2 continue else: lst.pop() #说明前后左右都走不了,就退回上个坐标点 else: print('此路不通') #当lst不为空则说明回到了原点(1,1),并且把原点给pop掉了
最后运行结果: