Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1440 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  projet de programmation (ISN) (python 3.4)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

projet de programmation (ISN) (python 3.4)

n°2247317
ag974
Posté le 05-01-2015 à 12:22:29  profilanswer
 

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 :D

mood
Publicité
Posté le 05-01-2015 à 12:22:29  profilanswer
 

n°2247426
ramnes
T fou, mec?
Posté le 06-01-2015 à 12:37:54  profilanswer
 

Encore faudrait-il poser une question ?


---------------
[VDS] Divers oldies PCI, Teensy 2 [ACH] Corsair Strafe, vieux claviers
n°2247534
ag974
Posté le 07-01-2015 à 07:30:02  profilanswer
 

http://yves.noyer.perso.sfr.fr/Inf [...] rojet2.pdf
voila le projet  
comment faire la méthode avec décalage?

n°2247560
suizokukan
Posté le 07-01-2015 à 11:09:29  profilanswer
 

Pourquoi ne pas étudier le code Python d'un projet similaire au tien ? Un exemple intéressant : https://github.com/caesar0301/treelib.


---------------
rule #1 : trust the python
n°2247562
ag974
Posté le 07-01-2015 à 11:24:35  profilanswer
 

oui merci mais c'est les méthodes que je n'arrive pas vraiment à faire

n°2247741
suizokukan
Posté le 08-01-2015 à 13:01:21  profilanswer
 

Montre-nous ce que tu as fait pour que nous en discutions. Où en es-tu ?


---------------
rule #1 : trust the python
n°2247754
ag974
Posté le 08-01-2015 à 15:08:52  profilanswer
 
n°2247774
suizokukan
Posté le 08-01-2015 à 17:45:53  profilanswer
 

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.


---------------
rule #1 : trust the python
n°2247796
ag974
Posté le 09-01-2015 à 07:45:54  profilanswer
 

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):

n°2247963
suizokukan
Posté le 09-01-2015 à 21:25:47  profilanswer
 

Qu'appelles-tu "la méthode avec décalage" ? A quelle page du pdf cela correspond-il ?


---------------
rule #1 : trust the python
mood
Publicité
Posté le 09-01-2015 à 21:25:47  profilanswer
 

n°2247991
ag974
Posté le 10-01-2015 à 11:15:44  profilanswer
 

page 2, question 2 pour la méthode display

n°2248001
suizokukan
Posté le 10-01-2015 à 15:00:47  profilanswer
 

Pour avoir n fois le caractère espace :

Code :
  1. shift = " "*n



---------------
rule #1 : trust the python
n°2248041
ag974
Posté le 11-01-2015 à 12:20:17  profilanswer
 

je dois mettre n en paramètre ?

n°2248051
suizokukan
Posté le 11-01-2015 à 14:34:46  profilanswer
 

Je ne dois pas être clair... Je pensais à quelque chose comme :
 

Code :
  1. def display(self, decalage = 0):
  2.      print(" "*decalage + 'la feuille {0} a pour valeur {1}'.format(self.name, self.value))


---------------
rule #1 : trust the python
n°2248150
ag974
Posté le 12-01-2015 à 13:25:02  profilanswer
 

ah d'accord c'est bon j'ai compris :) merci beaucoup ;)

n°2248157
ag974
Posté le 12-01-2015 à 14:16:13  profilanswer
 

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 ?

n°2248195
suizokukan
Posté le 12-01-2015 à 17:54:51  profilanswer
 

Non. En très gros l'idée est d'avoir une fonction Node.display() qui, en pseudo-code, ressemble à ça :

Code :
  1. res = ""
  2.   si le node courant n'a pas de fils :
  3.       res = leaf.display( decalage ), leaf étant le leaf du node courant
  4.   sinon :
  5.       pour chaque fils du node courant :
  6.           res += fils.leaf( decalage + 1 ), leaf étant le leaf du fils dans ta boucle
  7.   return res


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.


---------------
rule #1 : trust the python
n°2248215
ag974
Posté le 13-01-2015 à 08:13:33  profilanswer
 

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 :/

n°2248249
suizokukan
Posté le 13-01-2015 à 13:14:18  profilanswer
 

Sans entrer dans le détail, tu voulais sans doute écrire quelque chose comme :

Code :
  1. def display(self,decalage=0):
  2.     res = ""
  3.     for Node in self.list_sons[Node]:
  4.          if Node-a-plusieurs-fils:               # <<<<<<<<<<<<<<<
  5.             res += sons.leaf( decalage + 1 )
  6.         else:
  7.             res = Leaf.display( decalage )
  8.     return res


---------------
rule #1 : trust the python
n°2248303
ag974
Posté le 14-01-2015 à 07:50:13  profilanswer
 

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'

n°2248439
suizokukan
Posté le 14-01-2015 à 23:07:12  profilanswer
 

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.


Message édité par suizokukan le 15-01-2015 à 09:41:55

---------------
rule #1 : trust the python
n°2248448
ag974
Posté le 15-01-2015 à 07:20:45  profilanswer
 

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'

n°2248503
ag974
Posté le 15-01-2015 à 16:24:38  profilanswer
 

vous pouvez mettre comment je devrai écrire sur python svp ^^

n°2248667
ag974
Posté le 18-01-2015 à 08:35:58  profilanswer
 

c'st bon ce que j'ai fais ou pas ?

n°2249180
ag974
Posté le 23-01-2015 à 16:40:23  profilanswer
 

j'ai besoin d'aide svp !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  projet de programmation (ISN) (python 3.4)

 

Sujets relatifs
Problème avec tuple sur Python 3.4.1a l'aide pour un projet
[python] Generer image à partir de données texteAide pour programmation manette de jeu bluetooth arduino
Je débute et intéressé par la programmation Small Basic.besoin d'Aide : Python our programmer un mot de passe
Aide : Python our programmer un mot de passeSystem.TypeLoadException lors de la compilation d'un projet SmartDevic
Besoin d'aide pour un projetincorporer plusieurs variables dans du code python
Plus de sujets relatifs à : projet de programmation (ISN) (python 3.4)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR