Un tableau de points du plan se représente naturellement par un…
Exercice de TD · niveau 2 · NSI (première), chapitre 4 — Les types construits · P-uplets, déballage et affectation multiple
Énoncé
Un tableau de points du plan se représente naturellement par un tableau de couples. Écrire barycentre(points) qui en renvoie le centre de gravité, sous forme de couple. Pourquoi le couple est-il ici le bon type, plutôt qu'un tableau de deux cases ?
Corrigé
def barycentre(points):
"""Centre de gravite d'un tableau non vide de couples (x, y).
Precondition : points est non vide, et chaque element est un couple
de nombres.
Postcondition : le resultat est un couple ; chaque coordonnee est comprise
entre le minimum et le maximum des coordonnees des points.
"""
assert len(points) > 0, "aucun point"
sx = 0
sy = 0
for x, y in points: # deballage a la volee : le coeur de l'exercice
sx = sx + x
sy = sy + y
return sx / len(points), sy / len(points)
La ligne for x, y in points est l'affectation multiple appliquée au parcours : à chaque tour, le couple courant est déballé en deux variables nommées. C'est plus lisible que p[0] et p[1], et l'on ne peut pas confondre l'abscisse et l'ordonnée.
Vérification.
assert barycentre([(0, 0), (2, 0), (0, 2)]) == (2 / 3, 2 / 3)
assert barycentre([(1, 1)]) == (1.0, 1.0)
assert barycentre([(0, 0), (4, 6)]) == (2.0, 3.0)
Le dernier cas est le milieu d'un segment, dont on connaît la réponse sans calcul : .
Pourquoi un couple, et non un tableau de deux cases. Parce qu'un point n'est pas une collection de deux nombres : c'est une valeur composite dont les deux composantes n'ont de sens qu'ensemble. Trois conséquences concrètes :
- on ne modifie pas la moitié d'un point. Le p-uplet l'interdit :
p[0] = 5lèveTypeError: 'tuple' object does not support item assignment; - l'ordre est fixé une fois pour toutes — abscisse, puis ordonnée — alors qu'un tableau suggère qu'on pourrait en ajouter une troisième ;
- et surtout, un couple pourra servir de clé de dictionnaire au chapitre 5, ce qu'un tableau ne peut pas.
L'immuabilité n'est pas une gêne, c'est une information : elle dit au lecteur que l'objet ne changera pas.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.