IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Code qui plante, calcul de chemins


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Code qui plante, calcul de chemins
    Bonjour et merci par avance à celles et ceux qui m'aideront
    je souhaite calculer tous les chemins possibles entre deux stations dans le cadre d'un projet.
    mon code python plante pour une ou plusieurs raisons que je ne comprends pas.
    je vous soumets le code pour critique. Merci pour vos explications.
    je suis parti sur une recherche type taboo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    # matrice adjacentre = determine les liens entre les stations
    relation=[
    [0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0],[1,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0],[0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0],
    [0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0],
    [0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0],
    [0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0],
    [0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0],
    [0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0],
    [0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0],
    [0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1],
    [0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0],
    [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0]]
     
    # print(relation[0][3])
     
    # taille du réseau
    taille=len(relation)
    taille=int(taille)
     
    print("Le réseau comporte",taille,"stations")
     
    # saisie du sommet de départ
    depart=input("Saisie du sommet de départ:")
    depart=int(depart)
     
    #saisie du sommet d'arrivée
    arrivee=input("Saisie du sommet d'arriveé:")
    arrivee=int(arrivee)
     
    # mémorisation du parcours
    parcours=[taille]
     
    # initialisation des sommets à 0 car aucun sommet n'a été exploré
    exploration=["non"]*taille
     
    def explorer(position,profondeur):
        # sauvegarde du chemin
        parcours[profondeur]=position
     
        # si la position correspond au sommet d'arrivée
        if position==arrivee:
            for i in range(0,taille):
                print(parcours[i],end="")
     
        # sinon la position ne correspond pas au sommet d'arrivee donc on marque le sommet comme exploré
        exploration[position]="oui"
     
        # on explore les autres chemins
        for i in range(0,taille):
            if(relation[position][i]==0 or exploration[i]=="non"):
                explorer(i,profondeur+1)
     
        # on marque la position comme non visitée
        exploration[position]="non"
     
    # lancement de l'exploration avec le départ et profondeur de 0
    explorer(depart,0)

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Est-ce que l'exécution du code indique une erreur ou est-ce lié à des difficultés algorithmiques ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 12
    Points : 9
    Points
    9
    Par défaut message d'erreur
    voici le message d'erreur qui s'affiche :

    >>> (executing file "parcours-taboo.py")
    Le réseau comporte 16 stations
    Saisie du sommet de départ:1
    Saisie du sommet d'arriveé:10
    Traceback (most recent call last):
      File "F:\TIPE-julien\parcours-taboo.py", line 59, in <module>
        explorer(depart,0)
      File "F:\TIPE-julien\parcours-taboo.py", line 53, in explorer
        explorer(i,profondeur+1)
      File "F:\TIPE-julien\parcours-taboo.py", line 40, in explorer
        parcours[profondeur]=position
    IndexError: list assignment index out of range

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Si la variable profondeur prend une valeur supérieure à la longueur-1 (car l'index commence à 0) de la liste parcours, tu auras cette erreur.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 12
    Points : 9
    Points
    9
    Par défaut je ne comprends pas
    Merci pour cette info mais je ne comprends pas. il n'y a à aucun moment un pb avec la profondeur. elle débute à 0 et est ensuite incrémentée de +1
    merci pour le retour

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Oui sauf erreur de ma part, la taille de parcours semble être de 1, ce qui implique comme seule solution d'index, la valeur 0.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par thierry1967 Voir le message
    elle débute à 0 et est ensuite incrémentée de +1
    Incrémente ta profondeur de +1 un assez grand nombre de fois et elle dépassera fatalement à un moment donné la taille de ton tableau "position".
    Tu devrais afficher sa valeur en ligne 39

    Accessoirement tu as True et False plus adaptées que "oui" et "non" pour flaguer un truc...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 12
    Points : 9
    Points
    9
    Par défaut cela ne fonctionne pas
    j'ai intégré l'affichage de position mais toujours une erreur

    >>> (executing file "parcours-taboo.py")
    Le réseau comporte 16 stations
    Saisie du sommet de départ:1
    Saisie du sommet d'arriveé:10
    1
    Traceback (most recent call last):
      File "F:\TIPE-julien\parcours-taboo.py", line 60, in <module>
        explorer(depart,0)
      File "F:\TIPE-julien\parcours-taboo.py", line 54, in explorer
        explorer(i,profondeur+1)
      File "F:\TIPE-julien\parcours-taboo.py", line 40, in explorer
        parcours[profondeur]=position
    IndexError: list assignment index out of range
    
    >>>

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thierry1967 Voir le message
    j'ai intégré l'affichage de position mais toujours une erreur
    1
    Ca veut dire que "parcours" est soit un tableau d'un seul élément ; soit pas un tableau du tout.

    Citation Envoyé par thierry1967 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # mémorisation du parcours
    parcours=[taille]
    Ben oui, "parcours" est bien une liste n'ayant qu'un seul élément (indicé [0]) donc demander parcours[1] produit un IndexError.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Oui sauf erreur de ma part, la taille de parcours semble être de 1, ce qui implique comme seule solution d'index, la valeur 0.
    Je me permets de citer à nouveau mes dires...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 12
    Points : 9
    Points
    9
    Par défaut compris ?
    avec parcours[taille] je souhaitais créer une liste contenant autant d’éléments que la taille du réseau.
    ensuite au fur et à mesure du déroulement du programme, mémoriser le chemin des sommets parcourus via parcours[0], parcours[1], parcours[2] ... jusqu'à l'arrivée puis afficher le chemin (tous les parcours[]) lorsque l'arrivée est atteinte.
    Démarche fausse ?
    merci pour votre aide et désolé de en pas comprendre toutes les finesses de python

  12. #12
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    avec parcours[taille] je souhaitais créer une liste contenant autant d’éléments que la taille du réseau.
    Ce n'est pas comme cela qu'on crée une liste de taille précise...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parcours = [0 for i in range(n)]
    où n est la taille de la liste, 0 représentant l'élément que tu souhaites insérés n fois.
    Tu peux remplacer n et 0 à ta convenance et selon tes besoins.

    désolé de en pas comprendre toutes les finesses de python
    Ce n'est pas une finesse mais une base. Es-tu cherché comment créer une liste de n éléments ?

    Quelques solutions,
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par thierry1967 Voir le message
    avec parcours[taille] je souhaitais créer une liste contenant autant d’éléments que la taille du réseau.
    Soit vous créez une liste assez grande comme vous le faites ligne suivante avec exploration=["non"]*taille, soit vous créez une liste vide à laquelle vous ajoutez les éléments visités via .append.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thierry1967 Voir le message
    je souhaitais créer une liste contenant autant d’éléments que la taille du réseau... désolé de en pas comprendre toutes les finesses de python
    Citation Envoyé par thierry1967 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # mémorisation du parcours
    parcours=[taille]
     
    # initialisation des sommets à 0 car aucun sommet n'a été exploré
    exploration=["non"]*taille
    Ce n'est pas une question de "compréhension des finesses Python" mais d'analogie et de déduction. Si tu as créé un tableau nommé "exploration" contenant n items avec une certaine syntaxe ; et que tu désires créer un tableau nommé "parcours" contenant lui aussi n (ou m) items, il est évident que la syntaxe de création sera analogue.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Trop bête
    ... je vais m'améliorer ... merci à vous tous. J'essaie ce soir et regarde si tout cela fonctionne.

Discussions similaires

  1. Code qui plante en fonction du pc
    Par nanou2183 dans le forum VBA Word
    Réponses: 1
    Dernier message: 07/09/2010, 09h54
  2. Script de calcul qui plante depuis passage du serveur sur VMware
    Par Compass dans le forum EPM (Hyperion)
    Réponses: 1
    Dernier message: 11/03/2010, 12h21
  3. [XL-2003] code d'erreur qui plante excel
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/07/2009, 16h45
  4. Code qui plante uniquement au rechargement d'une page
    Par scade dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/04/2008, 08h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo