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 avec l'utilisation de la fonction print [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut problème avec l'utilisation de la fonction print
    Bonjour,
    Je débute avec python...
    Pour commencer j'ai fait un exercice complet de création d'une classe Fraction(a,b) qui affiche a / b qui la simplifie, qui additionne etc ..
    si je code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Frac1 = Fraction(18, 4)
    print( Frac1 )
    print( Frac1.Simplifie() )
    j'obtiens :
    -> 18 / 4
    -> 9 / 2
    mais j'aimerais afficher : 18 / 4 = 9 / 2
    donc je code :
    print(Frac1 + " =" + Fract1.Simplifie() ) mais cela ne marche pas !!!
    Où dois-je regarder ? dans la "concaténation" du print, dans le __add__ ou le __str__ de ma classe ?

    merci d'avance pour vos réponses

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

    print(Frac1, "=", Fract1.Simplifie() ) devrait le faire.
    Le '+' ajoute des objets de type semblables (pas un nombre et une chaine de caractères).

    Et dans les tutos. vous avez des exercices corrigés...

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

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    Merci en effet ca marche, dans les tutos je n'est pas trouvé la façon de présenter que je souhaite.
    cependant le retour de ma méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        def __str__(self) :
        # Surcharge de la conversion en chaine de caractères
            if self.den == 1 : return "%d" % self.num
            return "%d / %d" % (self.num, self.den)
    ne retourne pas une chaine de caractère ? qui devrais pouvoir se concaténer avec le '=' dans un print ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par jef_bay Voir le message
    ne retourne pas une chaine de caractère ? qui devrais pouvoir se concaténer avec le '=' dans un print ?
    Quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> class Z:
    ...    def __init__(self, a, b):
    ...        self.a = a
    ...        self.b = b
    ...    def __str__(self):
    ...        return '%d / %d' % (self.a, self.b)
    ...
    >>> print(Z(1,2), '***', Z(3,4))
    1 / 2 *** 3 / 4
    >>>
    donc je ne peux que constater que çà fait ce que ça dit.

    Après, vous ne devriez pas sortir le nez de votre tuto. avant d'être suffisamment confiant sur ce que Python fait et ce que vous attendiez qu'il fasse... Car l'intérêt d'un tuto. est aussi d'apprendre à relire les âneries qu'on a écrit (on en fait tous!) pour apprendre à les corriger...
    Ce qui passe par un certain apprentissage dans la description du problème à résoudre...

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

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par jef_bay Voir le message
    Où dois-je regarder ? dans la "concaténation" du print, dans le __add__ ou le __str__ de ma classe ?
    Le "+" du print est la concaténation de deux chaines, chaines issues du __str__ de ta classe. Le "__add__" utilisé est donc celui de l'objet "str" et non celui de ta classe
    Typiquement si tu définis un __add__ cela te permettra d'additionner deux fractions (ou bien aussi une faction et autre chose comme un int, à toi alors de gérer le cas). Et si tu veux les afficher, cela passera alors par __str__.

    Citation Envoyé par jef_bay Voir le message
    dans les tutos je n'ai pas trouvé la façon de présenter que je souhaite.
    Un tuto ne te donne qu'un exemple. A toi de le comprendre pour ensuite pouvoir créer ensuite ta propre solution

    Citation Envoyé par jef_bay Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def __str__(self) :
    	# Surcharge de la conversion en chaine de caractères
    	if self.den == 1 : return "%d" % self.num
    	return "%d / %d" % (self.num, self.den)
    ne retourne pas une chaine de caractère ? qui devrais pouvoir se concaténer avec le '=' dans un print ?
    Si, tout à fait.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Problème avec l'utilisation de la fonction dataset
    Par sohoney dans le forum MATLAB
    Réponses: 1
    Dernier message: 11/01/2013, 16h21
  2. Réponses: 3
    Dernier message: 19/12/2009, 11h49
  3. Réponses: 3
    Dernier message: 07/05/2008, 13h30
  4. problème avec l'utilisation d'une fonction
    Par mcspawn dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 15h39
  5. Problème avec l'utilisation de la fonction clock
    Par Matgic95 dans le forum C++Builder
    Réponses: 13
    Dernier message: 09/05/2005, 19h27

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