Adloun

Reconnaître un triangle

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

Énoncé

Trois longueurs a, b, c sont données.

  1. Écrire une fonction est_triangle(a, b, c) qui renvoie True si les trois longueurs peuvent être les côtés d'un triangle (inégalité triangulaire : chaque côté est plus petit que la somme des deux autres).
  2. Écrire une fonction nature(a, b, c) qui renvoie "impossible", "équilatéral", "isocèle" ou "quelconque".
  3. Tester sur , , et .

Corrigé

1.

def est_triangle(a, b, c):
    return a < b + c and b < a + c and c < a + b

Les trois inégalités sont nécessaires : il ne suffit pas de tester le plus grand côté si l'on ne sait pas lequel c'est.

2.

def nature(a, b, c):
    if not est_triangle(a, b, c):
        return "impossible"
    elif a == b and b == c:
        return "équilatéral"
    elif a == b or b == c or a == c:
        return "isocèle"
    else:
        return "quelconque"

3.

print(nature(3, 4, 5))   # quelconque
print(nature(2, 2, 2))   # équilatéral
print(nature(5, 5, 8))   # isocèle
print(nature(1, 2, 9))   # impossible

L'ordre des tests est ici encore décisif, et pour deux raisons. Il faut écarter le cas impossible en premier, sinon serait déclaré quelconque. Et il faut tester équilatéral avant isocèle : un triangle équilatéral vérifie aussi a == b, il serait donc classé isocèle si l'on inversait les deux branches.

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.