sciences numériques et technologie (seconde) · Chapitre 3 · Exercice de TD
Le else qui a changé de patron
Instructions conditionnelles · Indentation et conditions imbriquées · niveau 2
Énoncé
Ce programme doit afficher "trop grand" uniquement pour les nombres strictement supérieurs à . Il ne le fait pas.
n = 50
if n > 0:
if n > 100:
print("trop grand")
else:
print("trop grand")
- Donner l'affichage pour
n = 50,n = 150etn = -7. - Expliquer l'erreur et corriger.
Corrigé
1. Pour n = 50 : rien. Pour n = 150 : trop grand. Pour n = -7 : trop grand — alors que n'a rien d'un grand nombre.
2. Le else est rattaché au mauvais if. Par son indentation, il est aligné sur if n > 0: : il traite donc le cas des nombres négatifs ou nuls, et non celui des nombres inférieurs à .
Le rattachement se lit uniquement au décalage. Pour obtenir le comportement voulu, la structure entière est d'ailleurs inutile :
n = -7
if n > 100:
print("trop grand")
La leçon dépasse la correction : le programme fautif ne provoque aucune erreur. Il s'exécute, affiche quelque chose de plausible, et ne se trahit que sur les valeurs négatives. Un test sur un seul jeu de données bien choisi ne l'aurait pas révélé.
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
- 14 autres exercices corrigés dans ce chapitre, et 23 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, le premier QCM, 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.