Les exercices de cette page peuvent (doivent) être réservés à une
seconde lecture.
Les rationnels
Les exercices de cette page peuvent (doivent) être réservés à une
seconde lecture.
fractions
Le module fractions
est disponible par défaut en Python.
Voici quelques exemples d'utilisation de ce module :
from fractions import Fraction
##----- Tests et intercation -----##
print("Fraction 2/3 : ")
a = Fraction('2/3')
print(a)
print(a.numerator)
print(a.denominator)
print()
print("Avec deux entrées (2, 3) : ")
b = Fraction(2,3)
print(b)
print(b.numerator)
print(b.denominator)
print()
print("Avec 20/30 : ")
c = Fraction('20/30')
print(c)
print(c.numerator)
print(c.denominator)
On obtient :
Fraction 2/3 : 2/3 2 3 Avec deux entrées (2, 3) : 2/3 2 3 Avec 20/30 : 2/3 2 3
Un autre exemple :
from fractions import Fraction
##----- Tests et intercation -----##
a = Fraction('2/3')
b = Fraction('3/4')
print( a+b )
c = Fraction(input("Entrer un rationnel (sous la forme a/b) : "))
print(c)
On obtient :
17/12 Entrer un rationnel (sous la forme a/b) : 2/3 2/3
Créer un petit exerciseur concernant les opérations sur les rationnels :
a/b
)."Bonne réponse"
ou "Mauvaise réponse"
s'affiche alors avec le score.
from fractions import Fraction
from random import randint, choice
##----- Définitions des fonctions -----##
def fraction_au_hasard() :
# on tire le numérateur au hasard entre 0 et 100 :
n = randint(0,100)
# on tire le dénominateur au hasard entre 1 et 50 :
d = randint(1,50)
return Fraction(n,d)
def operation_au_hasard() :
# choix d'un opérateur au hasard parmi les 4 :
op = choice(['+', '-', '*', '/'])
return op
def resultat(q1, op, q2) :
"""
fonction de calcul du résultat.
"""
if op == '+' : return q1 + q2
elif op == '-' : return q1 - q2
elif op == '*' : return q1 * q2
elif op == '/' : return q1/q2
##----- Programme principal et interaction -----##
# compteur pour les questions et les bonnes réponses
# pour affichage du score :
compteur_questions = 0
compteur_OK = 0
# variable pour la question continuer/arrêter :
encore = True
while encore :
q1 = fraction_au_hasard()
q2 = fraction_au_hasard()
op = operation_au_hasard()
if op == '/' :
q = Fraction(input("Donner la forme irréductible de ({}){}({}).\n".format(q1, op, q2)))
else :
q = Fraction(input("Donner la forme irréductible de {}{}{}.\n".format(q1, op, q2)))
compteur_questions += 1
if q == resultat(q1, op, q2) :
compteur_OK += 1
print("Bonne réponse. {} sur {}.".format(compteur_OK, compteur_questions))
else :
print("Mauvaise réponse. {} sur {}.".format(compteur_OK, compteur_questions))
encore = int(input("Voulez vous continuer (taper 1) ou non (taper 0) ?"))
On définit un type Rationnel
(fichier ratio.py
) :
class Rationnel:
def __init__(self, numerateur = 0, denominateur = 1) :
self.num = numerateur
self.den = denominateur
def __str__(self):
if self.den == 1 :
return "{}".format(self.num)
else :
return "{}/{}".format(self.num, self.den)
La seule opération possible est l'affichage :
from ratio import Rationnel
##----- Tests et interaction -----##
a = Rationnel(2, 3)
print(a)
print(a.num)
print(a.den)
donne :
2/3 2 3
Définir des fonctions addition
, multiplication
,
soustraction
, division
, egalite
sur les fractions d'entiers utilisant la structure que l'on vient de
définir (placée dans un module).
from ratio import Rationnel
from math import gcd
##----- Définitions des fonctions -----##
def egalite(p, q) :
return p.num * q.den == p.den * q.num
def addition(p, q):
num = p.num * q.den + q.num * p.den
den = p.den * q.den
pgcd = gcd(num, den)
return Rationnel( num//pgcd, den//pgcd)
def soustraction(p, q):
num = p.num * q.den - q.num * p.den
den = p.den * q.den
pgcd = gcd(num, den)
return Rationnel( num//pgcd, den//pgcd)
def multiplication(p, q):
num = p.num * q.num
den = p.den * q.den
pgcd = gcd(num, den)
return Rationnel( num//pgcd, den//pgcd)
def division(p, q):
num = p.num * q.den
den = p.den * q.num
pgcd = gcd(num, den)
return Rationnel( num//pgcd, den//pgcd)
##----- Tests et interaction -----##
p = Rationnel()
q = Rationnel()
p.num = int(input("Entrer le numérateur du premier rationnel : "))
p.den = int(input("Entrer le dénominateur du premier rationnel : "))
q.num = int(input("Entrer le numérateur du second rationnel : "))
q.den = int(input("Entrer le dénominateur du second rationnel : "))
print("Addition : ")
print( addition(p,q) )
print("Soustraction : ")
print( soustraction(p,q) )
print("Multiplication : ")
print( multiplication(p,q) )
print("Division : ")
print( division(p,q) )
print("Egalité ? ")
print( egalite(p,q) )