Boucle python qui ne marche pas à cause d'un return
R.I.B.A.J
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
R.I.B.A.J Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
R.I.B.A.J Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je me permets de vous demander votre aide car je me tire les cheveux avec une boucle for qui paraît simple. La voici :
En fait le return "bloque" la boucle mais celle-ci ne calcule rien sans le return. Avec le return, j'ai au moins le premier terme.
Comment puis-je faire pour que mon programme me réponde pour chaque i, ma distance?
Je vous remercie d'avance pour votre retour qui me sera d'une grande aide.
Merci énormément
Je me permets de vous demander votre aide car je me tire les cheveux avec une boucle for qui paraît simple. La voici :
def distance_matrix(client, origins, destinations,mode):
for i in range(3):
A = format(feuille.cell_value(i, 0))
B = format(feuille.cell_value(i, 1))
params = {
"origins":A,
"destinations": B,
}
print "Départ:",A
print "Arrivé:",B
return client._get("/maps/api/distancematrix/json", params)
X_1=str(distance_matrix(client, "origins", "destinations","mode"))[70:80]
print X_1
En fait le return "bloque" la boucle mais celle-ci ne calcule rien sans le return. Avec le return, j'ai au moins le premier terme.
Comment puis-je faire pour que mon programme me réponde pour chaque i, ma distance?
Je vous remercie d'avance pour votre retour qui me sera d'une grande aide.
Merci énormément
1 réponse
-
Salut
peux-tu stp formater ton code correctement, tel que je le lis tu fais des appels recursifs (la fonction s'appelle elle-même)-
Salut dsy73, je te remercie avant tout car tu m'as aidé sur tous les sujets, tu es genial(e).
Et bien sur comme je l'ai écrit python ne donne rien. Voici le programme qui me donne le premier terme :
def distance_matrix(client, origins, destinations,mode):
for i in range (3):
A = format(feuille.cell_value(i, 0))
B = format(feuille.cell_value(i, 1))
params = {
"origins":A,
"destinations": B,
"mode":'driving',
"language" : 'fr-FR',
#"departure_time" :
}
return client._get("/maps/api/distancematrix/json", params)
print "Par la route"
X_1=str(distance_matrix(client, "origins", "destinations","mode",))[70:80]
print X_1
Je veux en effet les 3 premiers termes de mo.n programme
Encore mille fois merci pour ton aide,et celle des autres est bien entendu la bienvenue!! -
Tu mets les résultats de _get dans un tableau et tu retournes le tableau.
Mais il y a d'autres problèmes : paramètres inutiles, pb de performance, etc
Tu devrais revoir ton code en le simplifiant.
C'est l'API Directions de Google ?
Attention aux limites : 2 requêtes par seconde au max.
https://developers.google.com/maps/documentation/directions/start#Limits -
Merci pour ta réponse.
Oui c'est bien l'API de google. Il est vrai que je n'avais pas vu ce détail.
Quand tu dis "Tu mets les résultats de _get dans un tableau et tu retournes le tableau", peux tu m'expliquer mon erreur dans le formatage du code?
Les autres problèmes empêchent-ils de calculer les autres termes?
Merci encore dsy73 pour ta réactivité -
-
Salut dsy73,
Pour l'instant je l'ai simplifié tel que suit :
l=[]
i=3
def distance_matrix(client,i):
for j in range (i):
params = {
"origins":format(feuille.cell_value(j+2, 0)),
"destinations": format(feuille.cell_value(j+2, 1)),
"mode":'driving',
"language" : 'fr-FR',
}
time.sleep(1)
return client._get("/maps/api/distancematrix/json", params)
l.append(str(distance_matrix(i))[70:80])
print "Par la route"
print l
print str(distance_matrix(client,i))[70:80]
Pour l'instant, cela ne marche pas mais je ne désespère pas :)
Je te tiens au courant.
Merci pour ces petits indices !!
-