Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème affichage de script python sur mon php

    5 mai 2021 à 14:25:42

    Bonjour/bonsoir à tous et à toutes,

    J'ai un script python qui est un mini calculateur de trajet entre différente garnde ville. Sur mon site, il y a un formulaire pour rentrer deux valeur grâce à la méthode GET. C'est deux valeurs sont donc stocker dans des variables dans mon php afin d'executer mon script python qui à besoin de ces 2 valeurs. Tous fonctionne sur mon terminale cependant sur mon site une fois les deux infos envoyé aucun affichage du résultat de mon script. Pourrais-je avoir de l'aide svp merci !

    Voici mon formulaire + code php :

        <form action="index.php" method="GET">
        Ville de départ :<input type="text" name="depart" placeholder="Entrer une ville"><br/>
        Ville d'arrivée :<input type="text" name="arrive" placeholder="Entrer une ville">
        <p>
        <input type=submit value="Envoyer"></p>
        </form>
    
    
        <?php
      $depart = $_GET["depart"];
       $goal = $_GET["arrive"];
       $command = escapeshellcmd("python3 oui.py $depart $goal");
       echo $command;
       $output = shell_exec($command);
       echo $output;
        ?>

    Voici le code python :

    #!/usr/bin/var python
    import time
    import ast
    import sys
    #Version du code qui importe le dico depuis un fichier txt
    f = open ("DICO.txt", "r")
    DicoVoisins=[]
    contents = f.read()
    DicoVoisins = ast.literal_eval(contents)
    #On definit le contenu du fichier DICO.Txt en tant que dico.
    f.close()
    def executiondebuge(ledico,debut,fin):
        return trajetlepluscourt(ledico,debut,fin,[],{},{},debut)
    
    # trajetlepluscourt nous calcul depuis le dico les valeurs du trajet.
    # On utilise pour calculer le trajet le plus court l'algorithme de dijkstra on suppose que tout nos voisins ont une distance infinie et on est obligé de les découvir 1 a 1. Une fois qu'on passe a une autre ville la distance a la ville
    # d'avant est égal a 0 d'ou le dist[etape] = 0 (on garde biensur la valeur du trajet complet ) cela nous permet de ne pas nous retrouver a repasser sur la ville d'avant.
    #Le trajet changera si le code trouve un candidat a une distance plus courte
    #Des qu'on a tout visité on peut en utilisant la récursive une nouvelle étape qui est la plus proche.
    #Les liens des vidéos utilisées: https://www.youtube.com/watch?v=JPeCmKFrKio&ab_channel=%C3%80lad%C3%A9couvertedesgraphes
    def trajetlepluscourt(ledico,etape,fin,visites,dist,pere,depart):
        if etape == fin:
           return dist[fin], decouvrelesvilles(pere,depart,fin,[])
        if  len(visites) == 0 : dist[etape]=0
        for voisin in ledico[etape]:
            if voisin not in visites:
                dist_voisin = dist.get(voisin,float('inf'))
                candidat_dist = dist[etape] + ledico[etape][voisin]
                if candidat_dist < dist_voisin:
                    dist[voisin] = candidat_dist
                    pere[voisin] = etape
        visites.append(etape)
        non_visites = dict((s, dist.get(s,float('inf'))) for s in ledico if s not in visites)
        noeud_plus_proche = min(non_visites, key = non_visites.get)
        return trajetlepluscourt(ledico,noeud_plus_proche,fin,visites,dist,pere,depart)
    
    
    #decouvrelesvilles va decouvrir toutes les villes autour de notre ville de depart et va nous donner la liste des autres extremite de la ville pour trouver le chemin le plus court (Fonction récursive)
    def decouvrelesvilles(pere,depart,extremite,trajet):
        if extremite == depart:
            return [depart] + trajet
        else:
            return (decouvrelesvilles(pere, depart, pere[extremite], [extremite] + trajet))
    
    #Ici juste nos 2 imputs demandées pour definir le trajet / Pour le site web on aura 2 slide down en choix avec les villes du type : Je cherche a aller de [Choix1] a [Choix2]
    
    choixvillededepart=sys.argv[1]
    choixvillearrive=sys.argv[2]
    l3,ResultatFinal = executiondebuge(DicoVoisins,choixvillededepart,choixvillearrive)
    
    
    print(ResultatFinal)
    print("Le trajet est de:",l3,"Km")
    



    -
    Edité par YanisHaradi 5 mai 2021 à 14:26:54

    • Partager sur Facebook
    • Partager sur Twitter

    Problème affichage de script python sur mon php

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown