Boucle python qui ne marche pas à cause d'un return

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

1 réponse

  1. Contributeur
    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
    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
    2. @dsy73Merci 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
    3. Contributeur
      @R.I.B.A.JJe 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
    4. @dsy73Salut 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