Bonjour,

J'ai écrit le petit algorithme ci-dessous qui permet de modéliser un graphe orienté simple :
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
import csv 
class Graphe(object):
        def __init__(self):
                self.sommet, self.succ = [], []            
        def ajouterSommet(self):
                nouv_som = str(input("Entrez un nom de sommet : "))
                if nouv_som in self.sommet:
                        print("Attention! Ce nom de sommet est deja dans la liste.")
                        nouv_som = str(input("Entrez un nouveau nom : "))
                        while nouv_som in self.sommet:
                                if nouv_som in self.sommet:
                                        print("Attention! Ce nom de sommet est deja dans la liste.")
                                        nouv_som = str(input("Entrez un nouveau nom : "))
                        self.sommet.append(nouv_som)
                        self.succ.append([])
                else:
                        self.sommet.append(nouv_som)
                        self.succ.append([])                                   
        def ajouterArc(self):
                ext_ini = str(input("Entrez le nom de l'extremite initiale : "))
                ext_fin = str(input("Entrez le nom de l'extremite finale : "))
                a = 0
                b = 0
                if ext_ini in self.sommet and ext_fin in self.sommet:                   
                        a = self.sommet.index(ext_ini)
                        b = self.sommet.index(ext_fin)
                elif not ext_ini in self.sommet and ext_fin in self.sommet:
                        self.sommet.append(ext_ini)
                        self.succ.append([])
                        a = self.sommet.index(ext_ini)
                        b = self.sommet.index(ext_fin)
                elif ext_ini in self.sommet and not ext_fin in self.sommet:
                        self.sommet.append(ext_fin)
                        self.succ.append([])
                        a = self.sommet.index(ext_ini)
                        b = self.sommet.index(ext_fin)
                else:
                        self.sommet.append(ext_ini)
                        self.sommet.append(ext_fin)
                        self.succ.append([])
                        self.succ.append([])
                        a = self.sommet.index(ext_ini)
                        b = self.sommet.index(ext_fin)
                if b in self.succ[a]:
                        print("Attention! Cette relation existe deja. Le doublon va etre enleve.")
                        self.succ[a].remove(b)
                self.succ[a].append(b)
 
        def affichageGraphe(self):
                print("Le(s) sommet(s) est\sont : " + str(self.sommet))
                print("Le(s) successeur(s) est\sont : " + str(self.succ))
Il fonctionne bien et je veux maintenant stocker le(s) graphe(s) créé(s) dans des fichiers au format csv de manière à permettre une édition éventuelle avec un tableur. Le(s) graphe(s) sera/seront stocké(s) de la façon suivante :
1. chaque ligne doit contenir la description d'un sommet ou d'un arc sur deux colonnes,
2. une ligne qui décrit un sommet doit contenir en première colonne le nom du graphe et en deuxième colonne le texte "-",
3. une ligne qui décrit un arc doit contenir en première colonne le nom de l'extrémité initiale de l'arc et dans la deuxième colonne le nom de l'extrémité finale de l'arc.

exemple :

a;- # premier sommet
b;- # deuxième sommet
c;- # troisième sommet
a;c # premier arc
b;a # deuxième arc
b;c # troisième arc

Je n'ai jamais travaillé avec des fichiers csv, et je n'ai aucune idée sur le(s) fonction(s) à ajouter. Pouvez-vous me suggérer des pistes, s'il vous plaît. D'avance je vous remercie.