Définir une classe Rationnel. Un objet rationnel présentera deux attributs entiers : numerateur et denominateur.
On devra pouvoir additionner, soustraire, multiplier, diviser deux rationnels.
- un code possible
from math import gcd
class Rationnel:
def __init__(self, numerateur, denominateur = 1):
self.numerateur = numerateur
self.denominateur = denominateur
def __add__(self, f):
num = self.numerateur * f.denominateur + f.numerateur * self.denominateur
den = self.denominateur * f.denominateur
num, den = num//gcd(num, den), den//gcd(num, den)
return Rationnel(num, den)
def __sub__(self, f):
num = self.numerateur * f.denominateur - f.numerateur * self.denominateur
den = self.denominateur * f.denominateur
num, den = num//gcd(num, den), den//gcd(num, den)
return Rationnel(num, den)
def __mul__(self, f):
num = self.numerateur * f.numerateur
den = self.denominateur * f.denominateur
num, den = num//gcd(num, den), den//gcd(num, den)
return Rationnel(num, den)
def __floordiv__(self, f):
num = self.numerateur * f.denominateur
den = self.denominateur * f.numerateur
num, den = num//gcd(num, den), den//gcd(num, den)
return Rationnel(num, den)
def __neg__(self):
return Rationnel(-self.numerateur, self.denominateur)
def __str__(self):
if self.numerateur == 0:
return str(self.numerateur)
else:
return str(self.numerateur) + '/' + str(self.denominateur)
p = Rationnel(2)
q = Rationnel(3,4)
print(p+q)
print(p-q)
print(q-p)
print(p*q)
print(p//q)
print( -Rationnel(2,3))
print( -Rationnel(-2,3))
print( -Rationnel(2,-3))
print( -Rationnel(2,3) + Rationnel(2,3) )