TNSI : TD Classe Fraction⚓︎
On se donne la classe Frac
suivante (à compléter) :
class Frac:
def __init__(self, ...etc...):
# ... à compléter ...
- Compléter le constructeur
__init__()
de sorte qu'il reçoive en entrée deux arguments (en plus deself
) : le numérateurnum
(par défautnum=1
) et le dénominateurdenom
(par défautdenom=1
) - Créer une méthode magique
__repr__()
qui représente la fraction de l'instance couranteself
dans un Terminal, sous la formenum/denom
-
Créer une méthode
pgcd()
récursive qui renvoie le pgcd (plus grand commun diviseur) du numérateurnum
et du dénominateurdenom
Rappel Si et sont deux entiers tels que . Alors :pgcd(a,b) = pgcd(b, a-b)
pgcd(a,0) = a
-
En déduire une méthode
simp()
qui simplifie la fraction de l'instance couranteself
-
Créer une méthode
est_entier()
qui renvoie un booléen :True
, si la fraction de l'instance couranteself
tombe juste (c'est un nombre entier, par exemple )False
, sinon
-
Créer une méthode magique
__eq__()
qui teste l'égalité de deux fractions.
Cette méthode renvoie donc un booléen:True
lorsque les deux fractions sont égalesFalse
sinon : lorsque les deux fractions NE sont PAS égales
Remarque Les deux syntaxes des méthodes magiques doivent donc fonctionner pour cette méthode précise, lorsquefractionGauche
etfractionDroite
sont deux instances de la classeFraction
:- ou bien
fractionGauche.__eq__(fractionDroite)
- ou bien
fractionGauche == fractionDroite
-
Créer une méthode magique
__ge__()
qui teste si la fractionGauche est supérieure ou égale ( ) à fractionDroite.
Cette méthode renvoie donc un booléen:True
lorsque fractionGauche fractionDroiteFalse
sinon
Remarque Les deux syntaxes des méthodes magiques doivent donc fonctionner pour cette méthode précise, lorsquefractionGauche
etfractionDroite
sont deux instances de la classeFraction
:- ou bien
fractionGauche.__ge__(fractionDroite)
- ou bien
fractionGauche >= fractionDroite
-
Créer une méthode magique
__gt__()
qui teste si la fractionGauche est strictement supérieure ( ) à la fractionDroite.
Cette méthode renvoie donc un booléen:True
lorsque fractionGauche fractionDroiteFalse
sinon
Remarque Les deux syntaxes des méthodes magiques doivent donc fonctionner pour cette méthode précise, lorsquefractionGauche
etfractionDroite
sont deux instances de la classeFraction
:- ou bien
fractionGauche.__gt__(fractionDroite)
- ou bien
fractionGauche > fractionDroite
-
Créer une méthode magique
__le__()
qui teste si la fractionGauche est inférieure ou égale ( ) à la fractionDroite.
Cette méthode renvoie donc un booléen:True
lorsque fractionGauche fractionDroiteFalse
sinon
Remarque Les deux syntaxes des méthodes magiques doivent donc fonctionner pour cette méthode précise, lorsquefractionGauche
etfractionDroite
sont deux instances de la classeFraction
:- ou bien
fractionGauche.__le__(fractionDroite)
- ou bien
fractionGauche <= fractionDroite
-
Créer une méthode magique
__lt__()
qui teste si la fractionGauche est strictement inférieure ( ) à la fractionDroite.
Cette méthode renvoie donc un booléen:True
lorsque fractionGauche fractionDroiteFalse
sinon
Remarque Les deux syntaxes des méthodes magiques doivent donc fonctionner pour cette méthode précise, lorsquefractionGauche
etfractionDroite
sont deux instances de la classeFraction
:- ou bien
fractionGauche.__lt__(fractionDroite)
- ou bien
fractionGauche < fractionDroite
-
Créer une méthode magique
__add__()
qui ajoute deux fractions. Cette méthode magique renvoie donc un object, préalablement simplifié, de classe Fraction - Créer une méthode magique
__sub__()
qui soustrait deux fractions. Cette méthode magique renvoie donc un object, préalablement simplifié, de classe Fraction. - Créer une méthode magique
__mul__()
qui multiplie deux fractions. Cette méthode magique renvoie donc un object, préalablement simplifié, de classe Fraction. - Créer une méthode magique
__truediv__()
qui divise deux fractions. Cette méthode magique renvoie donc un object, préalablement simplifié, de classe Fraction.