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   -
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 :

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

A voir également:

1 réponse

dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485
 
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)
-1
R.I.B.A.J Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   1
 
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!!
0
dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485 > R.I.B.A.J Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
R.I.B.A.J Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   1 > dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention  
 
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é
0
dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485 > R.I.B.A.J Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
Je n'ai pas vu d'erreur d'indentation sur le code à priori.

Une fois que tu auras simplifier ton code, enlever ce qui est inutile, tu pourras mieux lire ton code et tu verras sans doute plus facilement pourquoi tu n'obtiens pas ce que tu souhaites.
0
R.I.B.A.J Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   1 > dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 !!
0