projet de programmation (ISN) (python 3.4) - Python - Programmation
Marsh Posté le 06-01-2015 à 12:37:54
Encore faudrait-il poser une question ?
Marsh Posté le 07-01-2015 à 07:30:02
http://yves.noyer.perso.sfr.fr/Inf [...] rojet2.pdf
voila le projet
comment faire la méthode avec décalage?
Marsh Posté le 07-01-2015 à 11:09:29
Pourquoi ne pas étudier le code Python d'un projet similaire au tien ? Un exemple intéressant : https://github.com/caesar0301/treelib.
Marsh Posté le 07-01-2015 à 11:24:35
oui merci mais c'est les méthodes que je n'arrive pas vraiment à faire
Marsh Posté le 08-01-2015 à 13:01:21
Montre-nous ce que tu as fait pour que nous en discutions. Où en es-tu ?
Marsh Posté le 08-01-2015 à 15:08:52
ReplyMarsh Posté le 08-01-2015 à 17:45:53
Poste ton code dans un message : l'usage sur ce forum est de montrer un bout de code que d'autres pourront copier/coller pour en discuter la teneur. Les images que tu as postées ne permettent pas cela. Il existe des balises permettant d'encadrer le code dans le petit éditeur qui s'ouvre quand tu crées un nouveau message.
Marsh Posté le 09-01-2015 à 07:45:54
class SonOf: #nom du graphe
def __init__(self,name, father = None): #methode constructeur
self.name = name
self.father = None
class Leaf(SonOf): #classe Leaf herite de SonOf
def __init__(self,name,value,father = None):
SonOf.__init__(self,name,father = None) #on appelle explicitement le constructeur de SonOf
self.value = value
def display(self, decalage = 0):
print('la feuille {0} a pour valeur {1}'.format(self.name, self.value, decalage))
def __lt__(self,feuille_a_comparer): #comparer 2 feuille
if self.value < feuille_a_comparer.value:
return True
else :
return False
class Node(SonOf): #classe Node herite de SonOf
def __init__(self,name,sons=[],father=None): #sons=liste de fils
self.name = name
self.father = None
self.list_sons = self.Node
self.list_sons = self.Leaf
SonOf.__init__(self,name,father = None)
self.list_sons = sons
def add_son(self,s):
self.Leaf = s
self.Node = s
self.list_sons[s] = True
return "father.attribut = s" # ajoute le ls s a la liste des ls, indique le nouveau pere de s en modiant son attribut father
def remove_son(self,s,node):
try :
self.list_sons[node].remove(node,s)
except :
print('Error')
self.father[s] = None
def display(self,decalage=0): #affiche le nom du noeud + appel meth display
for e in self.list_sons():
print('fils {0} de {1}')
return self.display
class Tree(Node,Leaf): #héritage
def __init__(self,name,father=None,sons=[],value=None):
self.value=[]
self.value=None
self.sons=None
self.sons=[]
if value != None:
Leaf.__init__(self,name,value,father = None)
self.sons=[]
else:
Leaf.__init__(self,name,value,father = None)
self.value=None
def display(self,decalage=0):
Marsh Posté le 09-01-2015 à 21:25:47
Qu'appelles-tu "la méthode avec décalage" ? A quelle page du pdf cela correspond-il ?
Marsh Posté le 10-01-2015 à 15:00:47
Pour avoir n fois le caractère espace :
Code :
|
Marsh Posté le 11-01-2015 à 14:34:46
Je ne dois pas être clair... Je pensais à quelque chose comme :
Code :
|
Marsh Posté le 12-01-2015 à 14:16:13
comment faire cette méthode display question 4 de la classe Node "appelle recursivement la méthode display des descendants.
Le decalage est par defaut de 0 espacement vers la gauche, mais chaque appel interne augmente l’espacement de 1"
Les méthodes que j'ai faites semblent correctes ?
Marsh Posté le 12-01-2015 à 17:54:51
Non. En très gros l'idée est d'avoir une fonction Node.display() qui, en pseudo-code, ressemble à ça :
Code :
|
Si tu n'as jamais fait de programmation, ça peut te paraître difficile. Mais cette partie de l'exercice est très formatrice pour un débutant.
Marsh Posté le 13-01-2015 à 08:13:33
def display(self,decalage=0): #affiche le nom du noeud + appel meth display
res = ""
for Node in self.list_sons[Node]:
res += sons.leaf( decalage + 1 )
else:
res = Leaf.display( decalage )
return res
J'ai fait comme ça mais je crois que ce n'est pas bon
Marsh Posté le 13-01-2015 à 13:14:18
Sans entrer dans le détail, tu voulais sans doute écrire quelque chose comme :
Code :
|
Marsh Posté le 14-01-2015 à 07:50:13
oui voilà mais c'est écrit
- "local variable Node (defined in enclosing scope on l.30 referenced before assignment)
-undefined name 'a plusieurs fils'
-undefined name 'sons'
Marsh Posté le 14-01-2015 à 23:07:12
ag974 : je ne comprends ton dernier post. Est-ce là un message d'erreur renvoyé par Python quand tu exécutes ton code ? Tu sembles avoir copié/collé mon pseudo-code : ça ne peut pas marcher ainsi ! Je te laisse le réécrire en Python : fais une nouvelle proposition pour que je puisse t'aider.
Marsh Posté le 15-01-2015 à 07:20:45
def nodes(self):
return self.list_node.keys()
def display(self,decalage=0): #affiche le nom du noeud + appel meth display
res = ""
for node in self.list_sons[node]:
if node-a-plusieurs-fils:
res =+ sons.Leaf(decalage + 1)
else:
res = Leaf.display(decalage)
return res
je ne comprends pas 'node a plusieur fils'
Marsh Posté le 15-01-2015 à 16:24:38
vous pouvez mettre comment je devrai écrire sur python svp ^^
Marsh Posté le 05-01-2015 à 12:22:29
Bonjour je suis en CPGE scientifique et j'ai un projet à faire sur les arbres et héritage.
En étant en 2e année je souhaite m'améliorer dans l'informatique pour le concours sachant que ce n'est pas du tout mon point fort
j'espère avoir au plus vite une aide pour mon projet
Merci