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 :

NamedTuple dans une Classe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Avril 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2005
    Messages : 120
    Par défaut NamedTuple dans une Classe
    Bonjour,
    j'ai l'erreur de ;
    e = Etudiants()

    aussi : je voudrais mettre le input de sexe et programme des valeurs aleatoire
    sexe de 0 a 1

    et programme : de 1 jusqua 400
    jai essayer
    e.sexe=random.randint(2)
    e.programme =random.randint(1,400,1)
    et sa na pas marcher
    meme si on utilise manuellement la liste affiche ;
    (0, <class '__main__.StructEtudiants'>)


    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
     
     
    from collections import namedtuple
     
    Etudiants = namedtuple("StructEtudiants", ["nom", "prenom", "sexe", "Dnaissance", "programme"])
     
    def informationetudiant():
        e = Etudiants(nom=input("veuillez saisir le nom?"),prenom=input("veuillez saisir le prenom?"),sexe=input("veuillez saisir le sexe?"),Dnaissance=input("veuillez saisir la date de naissance?"),programme=input("veuillez saisir le programme?"))
        return e
     
     
    def uneclasse():
        l=[]
        n=int(input("veuillez saisir le nombre des etudiants?"))
        for i in range(n):
            e=informationetudiant()
            l.append(e)
        return l
     
     
    print(uneclasse())

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 746
    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 746
    Par défaut
    Salut,

    Citation Envoyé par NapsterVB Voir le message
    j'ai l'erreur de ;
    e = Etudiants()
    Avant d'utiliser namedtuple vous avez quand même un peu lu la documentation pour savoir que c'est un tuple... Donc une séquence que vous ne pouvez pas modifier après l'avoir créer.
    Donc e = Etudiants(...) ne fonctionnera qu'en lui passant les paramètres saisis.
    Ce qui demande une réorganisation mineure de votre code (que vous êtes à même d'effectuer si vous comprenez un peu ce qu'est un tuple).

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

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 : 4 062
    Par défaut
    Bonsoir,

    Tant qu'à faire autant utiliser toute la puissance de cette collection,

    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
    from collections import namedtuple
     
     
    ASK = "veuillez saisir {} ? "
    Etudiant = namedtuple("StructEtudiant", ["nom", "prenom", "sexe", "Dnaissance", "programme"]) # sans s
     
    def create_student():
        responses = []
        for field in Etudiant._fields:
            response = input(ASK.format(field))
            responses.append(response)
        return Etudiant._make(responses)
     
     
    print(create_student()) # pour voir votre structure
    La méthode _make est très pratique pour construire à partir d'une séquence.

    Bonne continuation...

  4. #4
    Membre très actif

    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
    Billets dans le blog
    1
    Par défaut
    Salut.

    Et pour les plus fainéants (comme moi) return Etudiant(*responses)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/07/2005, 23h10
  2. classe dans une classe ?
    Par tut dans le forum UML
    Réponses: 23
    Dernier message: 25/06/2004, 15h00
  3. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15
  4. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42

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