J'essaie d'écrire un code qui résout un labyrinthe de base composé d'une liste de listes avec '#' symbolisant les murs, '.' sont des espaces libres, S est le début et E est la fin. Mon algorithme consiste à vérifier d'abord si l'espace à droite est libre, sinon il vérifie l'espace en haut, puis en bas et enfin à gauche. Je me rends également compte que cela crée un problème s'il y a une impasse, mais je m'en soucierai plus tard. Jusqu'à présent, j'ai un code qui imprime la liste et trouve la valeur d'index du point de départ qui est (2,0). Fondamentalement, ce que j'essaie de faire est de prendre cette valeur de départ comme argument pour ma fonction def résoudre, puis de parcourir mon algorithme tout en marquant les positions visitées comme «x» ... si cela a un sens. Lorsque j'exécute le code, j'obtiens
if maze [r + 1] [c] == '.':
NameError: le nom 'r' n'est pas défini
De plus, je n'arrive pas à imprimer correctement mon labyrinthe sur ce site, donc voici mon labyrinthe .
def main(): print_maze() start() solve(start()) print_maze() def print_maze(): for r in range(0,len(maze)): for c in range(0,len(maze)): print(maze[r][c], end='') print('') def start(): find_value = 'S' for r in range(0,len(maze)): for c in range (0,len(maze)): if find_value in maze[r][c]: return(r,c) break def solve(position): if maze[r+1][c] == '.': maze[r][c] = 'x' return (r,c) elif maze[r][c+1] == '.': maze[r][c] = 'x' return (r,c) elif maze[r][c-1] == '.': maze[r][c] = 'x' return (r,c) elif maze[r-1][c] == '.': maze[r][c] = 'x' return (r,c) else: print('Route Error') main()
3 Réponses :
L'erreur que vous rencontrez se produit car main
appelle résoudre
sans argument requis.
def solve(): start_point = start()
Depuis résoudre code> redéfinit
start_point
tout de suite, vous pouvez simplement supprimer cet argument requis:
def main(): print_maze() start() solve() # Error! Missing required arg print_maze()
Enfin, vous n'avez pas fourni de labyrinthe code > afin que quiconque essaie de vous aider au-delà de ce problème ne pourra pas
Merci, j'avais du mal à faire formater mon labyrinthe correctement sur ce site Web, alors j'ai fourni et un lien avec une image si cela aide.
Vous devez passer la valeur renvoyée par start ()
dans la fonction solve ()
car vous l'avez répertoriée comme argument. Vous pouvez ensuite supprimer la partie start_point =
de la fonction solve ()
.
def main(): print_maze() start = start() solve(start) print_maze()
Essayez de changer le format def slove, par exemple; == "X" = "x²"
Vous devez passer
start_point
àsove ()
car c'est un argument ou le supprimer comme argument et le laisser défini dans la fonction uniquement.