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.
- Écrire une fonction
est_triangle(a, b, c)qui renvoieTruesi 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). - Écrire une fonction
nature(a, b, c)qui renvoie"impossible","équilatéral","isocèle"ou"quelconque". - 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.