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 :

classe en python


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut classe en python
    Bonjour,

    j'ai besoin de l'aide pour cette exercice j'ai tenté un code mais je ne pense pas que c'est dèja ça pour un début

    définir la classe Queue puis en tester des instances pour simuler plusieurs queues aux caisses du supermarché le plus proche

    il s'agit de créer (au moins) deux instances de Queue, d'y ajouter quelques clients avec la méthode push(), puis de les faire passer en caisse :

    les prétextes du genre « je n'ai que ça, est-ce que je peux passer tout de suite » seront ignorés
    en important le module random (cf. section 9.1), on peut utiliser la fonction choice() pour que ce soit le hasard qui détermine la queue à activer…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from random import choice
     
    class Queue (stack) :
    	def __init__(self) : self.stack = []
    	def push(self, client1) : self.stack.append(client1)
    	def push(self, client2) : self.stack.append(client2)
    	def push(self, client3) : self.stack.append(client3)
    	def pop(self) : return self.stack.choice()

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 911
    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 911
    Points : 7 294
    Points
    7 294
    Par défaut
    Ça ressemblerait plus à ci-dessous, car je ne vois pas pourquoi de multiples implantations de la méthode push dans votre classe.
    Je ne comprend pas non plus la méthode pop et ce qu'elle doit faire, car dans votre contexte, c'est le 1er de la queue qui devrait virer de la stack, non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from random import choice
     
    class Queue:
        def __init__(self):
            self.stack = []
        def push(self, client):
            self.stack.append(client)

  3. #3
    Expert éminent

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

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

    Première chose, si tu veux que l'on s'intéresse à ton code évite ce compactage disgracieux et surtout inutile, ton code sera transformé en bytecode où plus rien de ta littérature n'existera.

    Deuxième chose, lorsque tu définis trois fonctions ayant le même nom push() comment penses-tu y accéder après ?

    Troisième chose, la méthode pop me réfère à la méthode du même nom des list et est censée oter de la liste l'objet retourné. la tienne ne fait aucun des deux, elle retourne une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> l = [1, 5, 8]
    >>> from random import choice
    >>> l.choice()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'list' object has no attribute 'choice'

    Voici ma lecture de ton exercice:

    Créer quelques files de caisse.
    Faire passer les clients dans un ordre aléatoire de caisse.

    NB: Pas l'ordre aléatoire d'une caisse mais des caisses

    exemple:
    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
     
    from random import choice
    class Queue:
        def __init__(self):
            # la queue d'une caisse est un buffer (tampon) pas un stack (pile)
            self.buffer = []
     
        def push(self):
            self.buffer.append("client %s" % str(len(self.buffer)+1))
     
        def pop(self):
            return self.buffer.pop(0)
     
    caisses = []
    for i in range(5):
        caisses.append(Queue())
        for j in range(5):
            caisses[i].push()
     
    for k in range(10):
        c = choice([0, 1, 2, 3, 4])
        print("caisse: %s, %s" % (c, caisses[c].pop()))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    caisse: 2, client 1
    caisse: 4, client 1
    caisse: 4, client 2
    caisse: 3, client 1
    caisse: 1, client 1
    caisse: 1, client 2
    caisse: 0, client 1
    caisse: 2, client 2
    caisse: 2, client 3
    caisse: 0, client 2

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    ah oui daccord, mais comment on va utiliser choice ??

    car pour exemple d'un client qui dit je n'ai que ça, est-ce que je peux passer tout de suite on doit ignoré ?

    q = Queue() ; q.stack
    q.push('je n'ai que ça, est-ce que je peux passer tout de suite') ; q.stack
    q.size()

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    salut,

    Deuxième chose, lorsque tu définis trois fonctions ayant le même nom push() comment penses-tu y accéder après ?

    oui c'est vrai, en effet, je viens de commencer ce cours de classe, donc j'ai un peu du mal à comprendre facilement :s

    Voici ma lecture de ton exercice:

    Créer quelques files de caisse.
    Faire passer les clients dans un ordre aléatoire de caisse.

    NB: Pas l'ordre aléatoire d'une caisse mais des caisses

    exemple:
    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
     
    from random import choice
    class Queue:
        def __init__(self):
            # la queue d'une caisse est un buffer (tampon) pas un stack (pile)     #
            self.buffer = []
     
        def push(self):
            self.buffer.append("client %s" % str(len(self.buffer)+1))   # je ne comprend pas cette ligne 
     
        def pop(self):
            return self.buffer.pop(0)   
    #cette partie aussi je ne la comprend pas :s 
    caisses = []
    for i in range(5):
        caisses.append(Queue())
        for j in range(5):
            caisses[i].push()
     
    for k in range(10):
        c = choice([0, 1, 2, 3, 4])
        print("caisse: %s, %s" % (c, caisses[c].pop()))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    caisse: 2, client 1
    caisse: 4, client 1
    caisse: 4, client 2
    caisse: 3, client 1
    caisse: 1, client 1
    caisse: 1, client 2
    caisse: 0, client 1
    caisse: 2, client 2
    caisse: 2, client 3
    caisse: 0, client 2
    merci pour l'aide

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

Discussions similaires

  1. Commencer avec les classes en Python
    Par Ismatus1 dans le forum Linux
    Réponses: 1
    Dernier message: 16/11/2011, 19h39
  2. AttributeError: class 'org.python.modules.os'
    Par capello123 dans le forum Général Python
    Réponses: 1
    Dernier message: 10/12/2007, 17h06
  3. Definition d'une classe python dans plusieurs fichiers
    Par wfargo dans le forum Général Python
    Réponses: 3
    Dernier message: 05/12/2006, 23h03
  4. variable de classe en Python
    Par Thierry Chappuis dans le forum Général Python
    Réponses: 5
    Dernier message: 09/02/2006, 22h06
  5. approche objet en python...associer des classes.
    Par preacher_man dans le forum Général Python
    Réponses: 9
    Dernier message: 06/01/2006, 15h21

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