Adloun

Le plus grand de trois nombres

Exercice de TD · niveau 2 · sciences numériques et technologie (seconde), chapitre 3 — Instructions conditionnelles · La structure if / elif / else

Énoncé

Écrire une fonction maximum(a, b, c) qui renvoie le plus grand des trois nombres, sans utiliser la fonction max.

  1. Proposer une première version par comparaisons successives.
  2. En proposer une seconde, utilisant une variable qui retient le maximum provisoire.
  3. Vérifier que les deux traitent correctement le cas où deux valeurs sont égales au maximum.

Corrigé

1. Par comparaisons successives :

def maximum(a, b, c):
    if a >= b and a >= c:
        return a
    elif b >= c:
        return b
    else:
        return c

2. Avec un maximum provisoire :

def maximum(a, b, c):
    m = a
    if b > m:
        m = b
    if c > m:
        m = c
    return m

3. Sur maximum(7, 7, 3), la première version renvoie a grâce aux inégalités larges >=. Avec des inégalités strictes (a > b and a > c, puis elif b > c), la première branche est refusée, mais la deuxième renvoie b — qui vaut aussi : le résultat reste juste. Une égalité au maximum ne change pas la valeur renvoyée, seulement la variable qui la porte ; on le vérifie de même sur maximum(7, 3, 7) (renvoie c) et maximum(3, 7, 7) (renvoie c). La seconde version renvoie m, resté égal à a : elle ne remplace m que sur une amélioration stricte, et un ex æquo n'en est pas une.

La seconde écriture est la plus importante des deux, parce qu'elle se généralise : c'est exactement le schéma du parcours d'une liste pour en chercher le maximum, que l'on retrouvera au chapitre 6. La première, elle, deviendrait inextricable avec quatre nombres.

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.