On dispose des fonctions Python suivantes déjà enregistrées dans un fichier :
def somme(a, b):
return a+b
def produit(a, b):
return a*b
def quotient(a, b):
return a/b
def difference(a, b):
return a-b
On on se trouve devant un ordinateur dont le clavier est esquinté : les touches [+], [*], [-], [/] ne fonctionnent plus. Il nous faut donc traduire toute expression algébrique à l'aide des fonctions ci-dessus.
x
désignant une variable de type nombre, écrire sous
une forme algébrique plus « classique » les expressions
suivantes :
produit(somme(produit(2, x), 3), difference(produit(3, x), 4))
quotient(somme(produit(3, x), -4), somme(produit(5, x), 3) )
Réciproquement, écrire les expressions suivantes sous une forme semblable à celles qui précédent :
- $3x^2-5x+2$
- $(3x+4)(5x-1)$
- $(3x+4)(5x-1) + 2$
- $\frac{3x+4}{5x-1}$
- Du programme vers l'expression algébrique
- De l'expression algébrique vers le programme
- Autocorrection
- Pour allèger
- $(2x+3) \times (3x-4) $
- $\frac{3x-4}{5x+3}$
somme(somme(produit(3, produit(x, x)), produit(-5, x)), 2)
produit(somme(produit(3, x), 4), somme(produit(5, x), -1))
somme(produit(somme(produit(3, x), 4), somme(produit(5, x), -1)), 2)
quotient(somme(produit(3, x), 4), somme(produit(5, x), -1))
L'objectif est bien sûr de faire travailler la lecture d'expression algébrique.
On pourra poursuivre à l'aide d'un test de « plausibilité » de réussite :
On fera toutefois attention, comme d'habitude, à la comparaison faisant
intervenir des quotients puisque dans ce cas, on passe à une comparaison
sur des flottants. On pourra dans ce cas utiliser la
fonction isclose()
du module math
.
L'écriture d'une somme à trois termes devient vite lourde puisqu'il faut écrire
somme(somme(a,b),c)
. Cela peut amener à un travail sur somme(somme(a,b),c)
et somme(a, somme(b,c))
puis amener à une fonction permettant l'écriture
somme(a,b,c)
.
def somme(*termes):
s = 0
for x in termes:
s += x
return s
print( somme(1,2,3) )