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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    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 : 4 064
    Par défaut
    Est-ce que l'exécution du code indique une erreur ou est-ce lié à des difficultés algorithmiques ?

  3. #3
    Membre averti
    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
    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 confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    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 : 4 064
    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.

  5. #5
    Membre averti
    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
    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 confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    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 : 4 064
    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.

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 837
    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 837
    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]

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