Skip to content

Ellipses

But de l'exercice

Cette semaine il suffit simplement d'écrire une classe Ellipse avec les attributs suivants:

  • big_base
  • half_big_base
  • small_base
  • half_small_base
  • perimeter
  • area

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:

Math for perimeter

(Pour l'exercice, l'approximation sera suffisante.)

Le calcul de l'air d'une ellipse est simple: aire

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:

Solution

Voir la solution