Corriger un programme
Exercice de TD · niveau 2 · enseignement scientifique (terminale), chapitre 11 — De la machine de Turing à l'intelligence artificielle
Énoncé
Ce programme doit compter le nombre de valeurs strictement positives d'une liste.
def compte(liste): <br> n = 0 <br> for i in range(len(liste) - 1): <br> if liste[i] >= 0: <br> n = 1 <br> return n
1. Que renvoie-t-il sur [3, -1, 5, 0, 7] ? Quelle est la bonne réponse ? 2. Identifier les trois fautes. 3. Écrire la version corrigée. 4. Proposer trois cas de test.
Corrigé
1. La boucle va de l'indice à l'indice : elle n'examine pas le final. Elle teste (vrai, prend la valeur ), (faux), (vrai, reprend la valeur ), (vrai, ). Le programme renvoie . La bonne réponse est : les valeurs strictement positives sont , et .
2. Faute a : range(len(liste) - 1) oublie le dernier élément ; il faut range(len(liste)). Faute b : le test >= 0 accepte le zéro, alors que l'énoncé demande les valeurs strictement positives ; il faut > 0. Faute c : n = 1 écrase le compteur au lieu de l'incrémenter ; il faut n = n + 1.
3.
def compte(liste): <br> n = 0 <br> for i in range(len(liste)): <br> if liste[i] > 0: <br> n = n + 1 <br> return n
4. [3, -1, 5, 0, 7] doit donner ; [] doit donner (liste vide) ; [-2, -8] doit donner (aucune valeur positive). Le troisième cas vérifie la faute b, le deuxième vérifie qu'aucune erreur d'exécution ne se produit sur une liste vide. Un bon jeu de tests vise les cas limites, pas les cas ordinaires.
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.