Bonjour je propose le code suivant (si j'ai bien compris le problème)
- Afin de ne pas avoir gérer des index de list pour retrouver les sommets, je te propose d'utiliser un dictionnaire.
- Les successeurs d'un sommet sont placés sur une liste
- L 'orientation est donnée par le fait que la liste des successeurs "partent" du sommet.
Cela donne dans ton exemple :
self.sommets={'a': ['c'], 'c': [], 'b': ['a', 'c']}
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
| import csv
class Graphe(object):
def __init__(self):
self.sommets={} # Les sommets sont dans un dictionnaire
def ajouterSommet(self,nouv_som=False):
nouv_som = raw_input("Entrez un nom de sommet : ")
if nouv_som in self.sommets:
print "Attention! Ce nom de sommet est deja dans la liste."
self.ajouterSommet()
else:
self.sommets[nouv_som]=[] # Chaque sommet contient une liste de successeurs
def ajouterArc(self):
ext_ini =raw_input("Entrez le nom de l'extremite initiale : ")
ext_fin = raw_input("Entrez le nom de l'extremite finale : ")
if ext_ini not in self.sommets:
print "Attention ! Le sommet initial n'existe pas"
elif ext_fin not in self.sommets:
print "Attention ! Le sommet final n'existe pas"
elif ext_fin in self.sommets[ext_ini]:
print "Attention ! Cette relation existe deja"
elif ext_fin==ext_ini :
print "Attention ! creation de boucle"
else :
print "rajout de ",ext_ini,ext_fin
self.sommets[ext_ini].append(ext_fin) # Rajout du successeur dans la liste
def affichageGraphe(self):
print("Le(s) sommet(s) est\sont : " + str(self.sommets))
def writeCsv(self):
fw=open('some.csv', 'wb')
writer = csv.writer(fw,delimiter=';')
for sommet in self.sommets :
ligne=[sommet,"-"]
writer.writerow(ligne)
for ext_ini in self.sommets :
for ext_fin in self.sommets[ext_ini]:
ligne=[ext_ini,ext_fin]
writer.writerow(ligne)
g=Graphe()
g.ajouterSommet()
g.ajouterSommet()
g.ajouterSommet()
g.ajouterArc()
g.ajouterArc()
g.ajouterArc()
g.affichageGraphe()
g.writeCsv() |
Partager