exercice - niveau avancé¶
On se propose d’écrire une classe pour représenter les polynômes :
avec un constructeur qui prend en argument les coefficients en commençant par les degrés les plus élevés ; ainsi par exemple
Polynomial()aussi bien quePolynomial(0)représentent le polynôme nul,Polynomial(3, 2, 1)représente , etPolynomial(3, 0, 1, 0, 0)représente
avec un attribut
degreepour accéder au degréavec une méthode
derivative()pour calculer le polynôme dérivéqui sait s’additionner, se multiplier et se comparer avec
==et qu’on peut appeler (autrement dit qui est un callable)
ce qui signifie qu’on peut écrire par exempleP = Polynomial(3, 2, 1) P(10) == 321
Note importante
Le système de correction automatique a besoin également que votre classe définisse son comportement vis-à-vis de repr() ; regardez les exemples pour voir la représentation choisie.
from corrections.cls_polynomial import exo_polynomial
exo_polynomial.example()# votre code
class Polynomial:
def __init__(self, *coefs):
...# correction
exo_polynomial.correction(Polynomial)# peut-être utile pour debugger ?
P00 = Polynomial()
P0 = Polynomial(0)
P1 = Polynomial(1)
P = Polynomial(3, 2, 1)
Q = Polynomial(1, 2)
R = Polynomial(3, 8, 5, 2)P0 == P00 == P0 * P1FalseP * Q == R---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[6], line 1
----> 1 P * Q == R
TypeError: unsupported operand type(s) for *: 'Polynomial' and 'Polynomial'P(10)---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[7], line 1
----> 1 P(10)
TypeError: 'Polynomial' object is not callable