def _pgcd(a, b): if b == 0: return a else: return _pgcd(b, a%b) class Fraction: """Classe permettant de représenter des fractions. Permet de faire des calculs exactes.""" def __init__(self, n, d): """Constructeur de la fraction.""" self.n = n self.d = d self._simplifier() def _simplifier(self): """Simplifie le numérateur et dénominateur de la fraction.""" n = self.n d = self.d p = _pgcd(n, d) n = n // p d = d // p if d < 0: d = -d n = -n self.n = n self.d = d def numerateur(self): """Renvoie le numérateur de la fraction.""" return self.n def denominateur(self): """Renvoie le dénominateur de la fraction.""" return self.d def __repr__(self): """Pour l'affichage dans la console.""" return f"Fraction({self.numerateur()}, {self.denominateur()})" def __str__(self): """Renvoie un texte de la forme 'n/d' ou 'n' si f est un entier.""" n = self.numerateur() d = self.denominateur() if ...: return str(n) else: return f"{n} / {d}" def decimal(self): """Renvoie la valeur décimale, approchée si nécessaire, de la fraction f.""" return ... def est_entier(self): """Renvoie un booléen indiquant si f est égale à un nombre entier ou pas.""" return ... def inverse(self): """Renvoie une fraction irreductible égale à l'inverse de f et dont le dénominateur est positif.""" n = self.numerateur() d = self.denominateur() return Fraction(..., ...) def oppose(self): """Renvoie une fraction irreductible égale à l'inverse de f et dont le dénominateur est positif.""" ... def __add__(self, other): """Renvoie une fraction irreductible égale à f1 + other et dont le dénominateur est positif.""" a = self.numerateur() b = self.denominateur() c = other.numerateur() d = other.denominateur() return Fraction(..., ...) def __sub__(self, other): """Renvoie une fraction irreductible égale à f1 - other et dont le dénominateur est positif.""" ... def __mul__(self, other): """Renvoie une fraction irreductible égale à f1 * other et dont le dénominateur est positif.""" ... def __truediv__(self, other): """Renvoie une fraction irreductible égale à f1 : other et dont le dénominateur est positif.""" ... def __eq__(self, other): """Renvoie un booléen équivalent à f1 = other.""" ... def __lt__(self, other): """Renvoie un booléen équivalent à f1 < other.""" ... def __le__(self, other): """Renvoie un booléen équivalent à f1 <= other.""" return ... def puissance(self, k): """Renvoie une fraction égale à f^k.""" ...