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 :

Problème classe et listes


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut Problème classe et listes
    Bonsoir ,

    J'aurai besoin d'aide
    Je souhaite créer une classe "etudiant" avec nom , prenom , date de naissance .. et une liste de notes que l'utilisateur doit saisir lui même et ensuite tout afficher y compris la liste de notes .

    Mon problème est pour afficher la liste .
    Si quelqu'un à une idée .. je vous mets ou j'en suis

    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
    class etudiant:
            def __init__(self,nom="kj",prenom="jj",j=1,m=2,a=1998,note=[]):
                    self.nom=nom
                    self.prenom=prenom
                    self.j=j
                    self.m=m
                    self.a=a
                    self.note=[]
     
            def saisie(self):
                    self.nom=str(input("entrez nom "))
                    self.prenom=str(input("entrez prenom"))
                    self.j=int(input("entrez jour"))
                    self.m=int(input("entrez mois"))
                    self.a=int(input("entrez annee"))
     
     
            def note(self):   
                    x=int(input("entrez le nombres de valeurs"))
                    notee=[]
                    for i in range (1,x+1):
                            n=int(input("entrez une valeur"))
                            notee.append(n)
     
     
     
            def affiche(self):
                    print(self.nom , self.prenom , self.j,"/",self.m,"/",self.a )
     
     
     
    e=etudiant()
    e.saisie()
    e.note()
    e.affiche()
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Lyly321 Voir le message
    Mon problème est pour afficher la liste .
    Si vous avez une liste de nombres L = [ 1, 2, 3, 4, 5 ] comment feriez vous pour en afficher une valeur par ligne?

    ligne 34: çà doit planter avec un message du genre TypeError: 'list' object is not callable car vous "surchargez" ligne 8 l'attribut "note" par la liste vide plutôt que de laisser appeler la méthode "note" définie ligne 18...
    Donc vous avez déjà un problème pour saisir cette liste...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut
    bonsoir ,

    Quand j'essaye d'enlever les "[]" a self.note=[] j'ai AttributeError: 'etudiant' object has no attribute 'note'
    Puis si j'ajoute print(self.note) sa m'affiche seulement "[]" et pas la liste avec les valeurs que j'ai saisie manuellement lors de l'exécution du programme

    Merci

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ce que l'on veut te dire est que les méthodes (fonctions des classes) sont vues aussi comme des attributs de cette classe et dans ce cas ci de l'instance.

    Dans __init__ remplace self.note=[] par self.note() et observe le résultat.

    Dans la méthode note() le nom notee sera supprimé aussitôt que la fonction aura été exécutée. Tu dois en garder une référence avec self

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    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 : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    J'ajoute quelques petites informations,


    1. Les classes doivent être nommées avec une majuscule donc Etudiant.
    2. Les variables doivent être des mots, qui représentent ce que vous faîtes, et non une simple lettre non représentative.
    3. Une fonction dans 95% des cas doit retourner quelque chose (utilisation du mot clé return)


    Bonne continuation...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    4. le nom d'une fonction devrait contenir un verbe

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut
    Bonjour ,

    J''ai donc essayer de mettre "self.note()" mais un message "invalide sintax" pour les parenthèses s'affiche ( je travaille sur idle).
    J'ai ajouter " return notee" a ma fonction "note" mais toujours rien , ma liste s'affiche toujours comme sa "[]"

    En plus de ce problème , j'avais créer une classe "date" et j'aimerai savoir si il est possible de faire appel dans ma classe etudiant pour éviter de remettre self.j , self.m...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class date:
            def __init__(self,j=0,m=1,a=2):
                    self.j=j
                    self.m=m
                    self.a=a
     
            def saisir(self):
                    self.j=int(input("entrez le jour"))
                    self.m=int(input("entrez le mois"))
                    self.a=int(input("entrez l'année"))
     
            def afficher(self):
                    print ( self.j , "/",self.m,"/",self.a)


    Merci à vous pour votre aide

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Lyly321 Voir le message
    J''ai donc essayer de mettre "self.note()" mais un message "invalide sintax" pour les parenthèses s'affiche ( je travaille sur idle).
    J'ai ajouter " return notee" a ma fonction "note" mais toujours rien , ma liste s'affiche toujours comme sa "[]"
    Si vous ne montrez pas le code correspondant, autant discuter du sexe des anges...

    Citation Envoyé par Lyly321 Voir le message
    En plus de ce problème , j'avais créer une classe "date" et j'aimerai savoir si il est possible de faire appel dans ma classe etudiant pour éviter de remettre self.j , self.m...
    Oui c'est possible mais ce que vous devez raconter c'est plutôt vos difficultés à le faire fonctionner.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut
    Le code est sur le premier msg.
    Je n'arrive juste pas à afficher ma liste que j'ai saisie avec la fonction note .
    J'ai tout essayer mais rien

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Lyly321 Voir le message
    Le code est sur le premier msg.
    Je n'arrive juste pas à afficher ma liste que j'ai saisie avec la fonction note .
    Le code de votre premier message plante avant d'essayer d'afficher quoi que ce soit et la méthode affiche n'essaie même pas d'afficher les notes... Et un certain nombre de suggestions vous ont été faites pour corriger cela...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé de faire tout ce que vous avez dit mais ça ne marche toujours pas. J'ai modifié un peu mon programme :

    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
    class Etudiant:
            def __init__(self,nom="kj",prenom="jj",j=1,m=2,a=565,note=[]):
                    self.nom=nom
                    self.prenom=prenom
                    self.j=j
                    self.m=m
                    self.a=a
                    self.note()
     
            def saisie(self):
                    self.nom=str(input("entrez nom "))
                    self.prenom=str(input("entrez prenom"))
                    self.j=int(input("entrez jour"))
                    self.m=int(input("entrez mois"))
                    self.a=int(input("entrez annee"))
     
     
            def note(self):   
                    x=int(input("entrez le nombres de valeurs"))
                    notee=[]
                    for i in range (1,x+1):
                            n=int(input("entrez une valeur"))
                            notee.append(n)
                    return notee
     
     
            def affiche(self):
                    print(self.nom , self.prenom , self.j,"/",self.m,"/",self.a )
                    print (self.notee)
     
     
     
    e=Etudiant()
    e.saisie()
    e.note()
    e.affiche()
    Et j’obtiens :

    entrez le nombres de valeurs1
    entrez une valeur15
    entrez nom sol
    entrez prenomtoto
    entrez jour3
    entrez mois9
    entrez annee1998
    entrez le nombres de valeurs1
    entrez une valeur15
    sol toto 3 / 9 / 1998
    Traceback (most recent call last):
      File "C:\Users\top\Desktop\point.py", line 54, in <module>
        e.affiche()
      File "C:\Users\top\Desktop\point.py", line 47, in affiche
        print (self.notee)
    AttributeError: 'Etudiant' object has no attribute 'notee'
    >>>

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Lyly321 Voir le message
    J'ai essayer de faire tout ce que vous avez dit mais sa marche toujours pas
    Relisez la dernière ligne de la réponse de VinsS...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut
    " Dans la méthode note() le nom notee sera supprimé aussitôt que la fonction aura été exécutée. Tu dois en garder une référence avec self "

    J'ai pas très bien compris ..
    Dois je mettre : def note(self,notee): ?
    J'arrive vraiment pas .. -__-

    Merci quand même de votre aide

  14. #14
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Non, comme cela t'a été précisé, soit tu stockes ta liste dans le corps de ta méthode dans un attribut de ta classe, soit tu retournes ta liste directement.

    Mais comme tu as du mal rien qu'à comprendre les fondamentaux du modèle objet, le mieux est tout de même de suivre un bon didacticiel, et developpez.com en fournit justement concernant ce sujet.
    Le temps ronge l'amour comme l'acide.

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut
    C'est bon j'ai réussi à afficher ma liste
    Merci à tous pour votre aide

Discussions similaires

  1. [Débutant] Problème suppression élément List(of classe)
    Par GuillaumeNcy dans le forum VB.NET
    Réponses: 7
    Dernier message: 17/04/2014, 14h03
  2. STL Problème avec une liste d'instances de class
    Par BruceBoc dans le forum SL & STL
    Réponses: 12
    Dernier message: 16/02/2007, 14h12
  3. problème classe et fonction
    Par zmatz dans le forum C++
    Réponses: 14
    Dernier message: 19/10/2005, 21h46
  4. [STL]Problème itérateur avec list
    Par Fiquet dans le forum SL & STL
    Réponses: 7
    Dernier message: 03/10/2005, 17h54

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