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 :

Oeuf ou poule pour Python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Par défaut Oeuf ou poule pour Python
    Bonjour, débutant en python je voudrais obtenir ceci :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #!/usr/bin/python3
    # coding: utf-8
     
    # Heure actuelle
    class Temps:
        def __init__(self):
            self.heure_actuelle = 11
     
     
    # Gestion de ma citerne
    class Citerne:
        def __init__(self):
            self.capacite_initiale = 100
            self.heure_lecture_capacite_initiale = 8
            self.capacite_mouillage1 = self.capacite_mouille(eponge1)  # Pour savoir la capacité de ma citerne quand je trempe mon éponge 1
            self.capacite_mouillage2 = self.capacite_mouille(eponge2)  # Pour savoir la capacité de ma citerne quand je trempe mon éponge 2
            self.capacite_actuelle = self.evaporation()
     
        def evaporation(self):
            return self.capacite_initiale - 2 * (temps.heure_actuelle - self.heure_lecture_capacite_initiale)
     
        def capacite_mouille(self, eponge):
            return self.capacite_initiale - 2 * (eponge.heure_mouillage - self.heure_lecture_capacite_initiale)
     
     
    # Gestion de mon éponge
    class Eponge:
        def __init__(self):
            self.heure_mouillage = 8
            self.seche = self.mouiller()
     
        def mouiller(self):
            if self.heure_mouillage > citerne.heure_lecture_capacite_initiale:
                return "mouillee"
            else:
                return "seche"
     
     
    # code
    temps = Temps()
    eponge1 = Eponge()  # trempée à 8h
    eponge1.heure_mouillage = 8
    eponge2 = Eponge()  # trempée à 10h
    eponge2.heure_mouillage = 10
    eponge2.seche = eponge2.mouiller()
    citerne = Citerne()
     
    print (citerne.capacite_initiale)
    print("Capacité lors du trempage de la 1ère éponge : ")
    print(citerne.capacite_mouillage1)
    print("Capacité lors du trempage de la 2ème éponge : ")
    print(citerne.capacite_mouillage2)
    print("Capacité actuelle : ")
    print(citerne.capacite_actuelle)
    print("L'éponge 1 est-elle sèche ? : ")
    print(eponge1.seche)
    print("L'éponge 1 est-elle sèche ? ")
    print(eponge2.seche)

    Je vois bien qu'il y a une référence circulaire mais je n'ai pas trouvé comment la résoudre et comment faire pour afficher :

    Capacité initiale :
    100
    Capacité lors du trempage de la 1ère éponge :
    100
    Capacité lors du trempage de la 2ème éponge :
    96
    Capacité actuelle :
    94
    L'éponge 1 est-elle sèche ? :
    seche
    L'éponge 1 est-elle sèche ?
    mouillee


    Comment faire ?

    En vous remerciant d'avance

  2. #2
    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,

    Une référence circulaire de quoi ? tu devrais mieux expliquer ton souci, car c'est pas bien compréhensible.

    Perso, je vois plusieurs problèmes, c'est que tu dois utiliser des variables globales quelque part, (temps,citerne, eponge) alors qu'en objet on essaie justement de ne pas les utiliser, parce qu'en l'état ton code ne fonctionne pas, donc j'imagine qu'il y a d'autres choses ailleurs dans ton code.

    Ensuite tes classes ne sont pas trop cohérentes, la citerne ne devrait pas savoir qui la vide, en gros, les éponges n'ont rien à faire là dedans, c'est les éponges qui doivent dire à la citerne de se vider de tant, en lui prenant du liquide (et encore), la citerne doit juste donner son niveau, se remplir, se vider, donc tout ce qui concerne son état, l'évaporation, pareil, cela ne la concerne pas directement la citerne, puisque c'est un facteur annexe qui affecte son état.

    Enfin, c'est comme ça que je vois la chose.

Discussions similaires

  1. [PayPal] api pour python
    Par anthyme dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 03/10/2006, 17h17
  2. y a-t-il un support de types génériques pour python ?
    Par silverhawk.os dans le forum Général Python
    Réponses: 15
    Dernier message: 24/03/2006, 18h23
  3. Librairie 7z Pour Python
    Par kedare dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2005, 15h49
  4. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51

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