Aller au contenu

Chapitre 0 - Entraînement : Révisions Python


Chaque fonction contient un bug. Identifier le type de bug, l'expliquer et proposer une correction.

a.

def maximum(tab):
maxi = 0
for val in tab:
if val > maxi:
maxi = val
return maxi

b.

def inverser_liste(tab):
for i in range(len(tab)):
tab[i], tab[len(tab) - 1 - i] = tab[len(tab) - 1 - i], tab[i]
return tab

c.

def moyenne_notes(notes):
somme = 0
for i in range(1, len(notes)):
somme += notes[i]
return somme / len(notes)
Solution

a. Bug logique : maxi = 0 échoue si tous les nombres sont négatifs (ex : maximum([-3, -1, -5]) renvoie 0). Correction : maxi = tab[0] et commencer la boucle à l'index 1, ou utiliser float('-inf').

b. Bug logique : la boucle parcourt tout le tableau, donc chaque échange est effectué deux fois, annulant l'inversion. Correction : boucler seulement sur la première moitié : range(len(tab) // 2).

c. Bug « off-by-one » : range(1, ...) saute le premier élément notes[0]. Correction : range(len(notes)) ou simplement sum(notes).