Ellipses¶
But de l'exercice¶
Cette semaine il suffit simplement d'écrire une classe Ellipse avec les attributs suivants:
big_basehalf_big_basesmall_basehalf_small_baseperimeterarea
Et voila le script de tests unitaires: test_ellipse.py
Un peu de math¶
Soit une ellipse de demi-grand axe a et de demi-petit axe b.
Calcul du périmètre d'une ellipse:

(Pour l'exercice, l'approximation sera suffisante.)
Le calcul de l'air d'une ellipse est simple:
Exercice de base¶
Simplement écrire une classe Ellipse dans un fichier Ellipse.py .
Cette classe doit avoir une représentation en string qui soit jolie.
>>> e = Ellipse(2, 1) # big_base, then small_base
>>> e
Ellipse(2, 1)
>>> e.big_base
2
>>> e.half_big_base
1
>>> e.small_base
1
>>> e.perimeter
4.967294132898051
>>> e.area
1.5707963267948966
Par default, si elles ne sont pas données, les bases de l'ellipse doivent être initialisées à 1.
Par exemple:
>>> e = Ellipse()
>>> e
Ellipse(1, 1)
Bonus numéro 1¶
Faire en sorte que les attibuts soient tous à jour lorque l'on change une base de l'ellipse.
>>> e = Ellipse(2, 1)
>>> e.big_base
2
>>> e.big_base = 4
>>> e.big_base
4
>>> e.half_big_base
1
>>> e.area
3.141592653589793
Bonus numéro 2¶
Faire en sorte que l'on puisse aussi changer les demi bases de l'ellipse, mais que l'on ne puisse pas changer ni son aire ni son périmètre.
Dans ce cas, il faudra lever une exception de type AttributeError.
>>> e = Ellipse
>>> e.area = 12
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "ellipse.py", line 16, in area
AttributeError: can't set attribute
Bonus numéro 3¶
Faire en sorte que les bases de l'ellipse ne puissent pas être mises à une valeur négative. Il faudra lever une exception de type ValueError.
>>> e = Ellipse()
>>> e.big_base = -1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "ellipse.py", line 27, in big_axe
raise ValueError("Base cannot be negative")
ValueError: Base cannot be negative
Aide¶
Si vraiment vous êtes bloqué.e.s, vous pouvez regarder ces articles:
- Creating a class
- String representation of a class
- math things
- Making an auto-updating attribute
- Raising exceptions