NSI (première) · Chapitre 4 · Exercice de TD
Un tableau de points du plan se représente naturellement par un…
Les types construits · P-uplets, déballage et affectation multiple · niveau 2
É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.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.