Problème Python liste de coordonées
TTVVP
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
looping -
looping -
Bonjour,
Je bloque sur un exercice Python.
On demande de considérer le déplacement d'un piéton a partir d'une liste ne contenant uniquement des 1 et des -1. On considère le piéton comme au centre d'un repère dont l'unité est la pas. Le piéton est supposé être à l'origine tourné vers le Nord. On dit que lorsque le piéton lit comme instruction 1 il tourne de 90° vers sa droite et fais un pas, lorsqu'il reçoit -1 il tourne de 90° vers sa gauche et fais un pas. L'algorithme doit renvoyer une liste des coordonnées des positions successives du piéton.
J'ai fais ça:
Seulement le problème est que Python n'accepte pas le fais qu'au début il y ait plus d'éléments dans la liste n que dans les listes x et y, il ne comprend pas que les listes x et y grandissent à chaque fois que la boucle est effectuée.
Merci par avance pour votre aide
Je bloque sur un exercice Python.
On demande de considérer le déplacement d'un piéton a partir d'une liste ne contenant uniquement des 1 et des -1. On considère le piéton comme au centre d'un repère dont l'unité est la pas. Le piéton est supposé être à l'origine tourné vers le Nord. On dit que lorsque le piéton lit comme instruction 1 il tourne de 90° vers sa droite et fais un pas, lorsqu'il reçoit -1 il tourne de 90° vers sa gauche et fais un pas. L'algorithme doit renvoyer une liste des coordonnées des positions successives du piéton.
J'ai fais ça:
def positions(n): x=[] y=[] L=[] x.append(0) y.append(0) if n[0] == 1: x.append(1) y.append(0) else: x.append(-1) y.append(0) for k in range (1,len(n)): if x[k] == x[k-1] and x[k]<x[k-1]: if n[k] == 1: x.append(x[k]) y.append(y[k]+1) else: x.append(x[k]) y.append(y[k]-1) else: if x[k] == x[k-1] and x[k]>x[k-1]: if n[k] == 1: x.append(x[k]) y.append(y[k]-1) else: x.append(x[k]) y.append(y[k]+1) else: if y[k] == y[k-1] and y[k]<y[k-1]: if n[k] == 1: x.append(x[k]+1) y.append(y[k]) else: x.append(x[k]-1) y.append(y[k]) else: if y[k] == y[k-1] and y[k]>y[k-1]: if n[k] == 1: x.append(x[k]-1) y.append(y[k]) else: x.append(x[k]+1) y.append(y[k]) for i in range (len(x)): L.append((x[k],y[k])) return L
Seulement le problème est que Python n'accepte pas le fais qu'au début il y ait plus d'éléments dans la liste n que dans les listes x et y, il ne comprend pas que les listes x et y grandissent à chaque fois que la boucle est effectuée.
Merci par avance pour votre aide
A voir également:
- Problème Python liste de coordonées
- Liste déroulante excel - Guide
- Coordonées gps - Guide
- Citizen code python avis - Accueil - Outils
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
1 réponse
Bonsoir.
Si python ne comprend pas, c'est que tu lui expliques mal :D
Tafonction est beaucoup trop complexe pour une chose aussi simple, le truc est qu'il faut établir des constantes permettant de simplifier la chose.
Et encore, on peut encore plus raccourcir ce code.
Si python ne comprend pas, c'est que tu lui expliques mal :D
Tafonction est beaucoup trop complexe pour une chose aussi simple, le truc est qu'il faut établir des constantes permettant de simplifier la chose.
N, E, S, O = range(4) DIRECTIONS = (N, S, E, O) PAS = { N:(0, 1), O:(-1, 0), S:(0, -1), E:(1, 0), } itineraire = (1, 1, 0, 0, 0, 0, -1, -1, 0) direction = N # dir. de départ pos = [(0, 0)] # x, y de départ for n in itineraire: direction += n if direction > 3 : direction = 0 pas = PAS[direction] pos_courante = pos[-1] pos_suivante = (pos_courante[0] + pas[0], pos_courante[1] + pas[1]) pos.append(pos_suivante) print('origine', pos[0]) for i, d in enumerate(itineraire) : print(d, pos[i+1])
Et encore, on peut encore plus raccourcir ce code.