Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Trouver un bug pas à pas

Après cette leçon: Je peux trouver un bug en vérifiant une chose à la fois.

Leçon de 50 minAucune commande

Trois cafés, un total faux

Une cliente écrit au service client. Elle a commandé trois paquets de café à 8,50 €.

Son panier affiche 8,50 € au lieu de 25,50 €. Le ticket arrive sur votre bureau.

Vous pourriez changer des lignes au hasard. Une développeuse expérimentée fait autrement : elle vérifie une chose à la fois.

À la fin de cette leçon

Remarque

Je peux trouver un bug en vérifiant une chose à la fois.

Mots clés

MotCe que ça veut direExemple
Bugune erreur dans le code qui donne un mauvais résultat
Débogagela recherche et la correction d'un bug
Trace d'erreurle message que Python affiche quand il s'arrêteTraceback
printune ligne qui affiche une valeur pendant l'exécutionprint("total :", total)
Hypothèseune idée sur la cause, que vous vérifiez
Couper en deuxvérifier au milieu pour savoir quelle moitié est fautive

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Lisez l'erreur en commençant par la fin

Quand Python s'arrête, il affiche une trace d'erreur. Elle paraît longue, mais elle se lit simplement.

La dernière ligne donne le type d'erreur et la raison. Lisez-la en premier.

Juste au-dessus, vous trouvez le fichier et le numéro de la ligne où tout s'est arrêté. Allez directement à cette ligne.

Exemple : une trace d'erreur ligne à ligne

Ce que Python afficheCe que cela veut dire
Traceback (most recent call last):Début de la trace des appels
File "main.py", line 6, in <module>La ligne qui a appelé la fonction
File "main.py", line 2, in prix_avec_remiseLa ligne où tout s'est arrêté
TypeError: unsupported operand type(s) for //: 'str' and 'int'La raison : on divise du texte. Lisez-la en premier.

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Essayez : provoquez l'erreur, puis corrigez-la

Code: python
def prix_avec_remise(prix, remise):
    return prix - prix * remise // 100

# Le prix arrive d'un formulaire web, donc sous forme de texte.
prix = "2400"
print(prix_avec_remise(prix, 10))

# Exécutez et lisez la dernière ligne de l'erreur.
# Puis corrigez : int("2400") transforme le texte en nombre.

Un print montre ce que contient une variable

Certains bugs ne provoquent aucune erreur. Le programme tourne, mais le résultat est faux.

Posez alors une hypothèse : « je pense que cette variable est fausse ». Ajoutez un print juste après le calcul pour voir sa valeur.

Comparez ce qui s'affiche avec ce que vous attendiez. Un écart vous montre où chercher.

Essayez : la paie de la semaine

Code: python
def salaire_semaine(heures, taux):
    # Taux horaire en centimes. Au-delà de 35 h, l'heure est payée 25 % de plus.
    normales = heures
    sup = heures - 35
    if sup < 0:
        sup = 0
    print("normales :", normales, "sup :", sup)
    return normales * taux + sup * taux * 125 // 100

# 38 heures à 12 € de l'heure : on attend 35 x 1200 + 3 x 1500 = 46500.
print(salaire_semaine(38, 1200))

# Lisez ce qu'affiche le print. Quelle valeur est fausse ?
# Corrigez le calcul de normales, puis exécutez de nouveau.

Coupez le problème en deux

Un programme fait souvent plusieurs étapes. Lire une commande, la nettoyer, calculer, afficher.

Si le résultat final est faux, ne regardez pas les quatre étapes au hasard. Vérifiez la valeur au milieu, après la deuxième étape.

Si elle est juste, le bug est dans la seconde moitié. Sinon, il est dans la première. Recommencez avec la moitié fautive.

Exemple : le panier de trois cafés

Où vous vérifiezCe que vous voyezCe que vous en concluez
Après la lecture du panierprix 850, quantite 3Les données sont justes
Au milieu, après le calcultotal = 850Faux : le bug est avant
Dans la boucle, ligne par lignetotal repart de 0Le bug est trouvé

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une erreur fréquente

Attention

Beaucoup changent plusieurs lignes à la fois en espérant que cela marche. Si le bug disparaît, vous ne savez pas quelle ligne l'a corrigé. Si un autre apparaît, vous ne savez pas d'où il vient. Changez une seule chose, puis testez.

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.