Adloun

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] = 5 lève TypeError: '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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →