Bases & algorithmique · 5 mondes · 15 étapes

Bases de la programmation

La grammaire du code, en Python, directement dans le navigateur.

Progression

0 %

0/15 étapes terminées

Avancé · 10 min de lecture

Erreurs et qualité du code

Lire un message d'erreur, déboguer, écrire pour les autres

1Définition

Une erreur Python n'est pas une punition, c'est un rapport : le type d'erreur, le message et la ligne. Savoir le lire, isoler le problème et écrire du code lisible constitue l'essentiel du métier au quotidien.

2Principes fondamentaux

01

Lire de bas en haut

La dernière ligne du traceback donne le type et le message ; juste au-dessus, la ligne fautive de ton code.

02

Réduire avant de corriger

Isole le plus petit code qui reproduit le problème : souvent, la cause apparaît d'elle-même.

03

Afficher pour comprendre

Un print bien placé (ou un débogueur) montre les valeurs réelles, rarement celles qu'on imagine.

04

Écrire pour le prochain lecteur

Noms explicites, fonctions courtes, quatre espaces, pas de code mort : les conventions PEP 8 existent pour ça.

3Exemples pratiques

Anatomie d'une erreur

Exemple
1Traceback (most recent call last):2  File "main.py", line 4, in <module>3    print(total / len(notes))4ZeroDivisionError: division by zero

Type : ZeroDivisionError. Cause : notes est vide. Correction : tester la liste avant de diviser.

Se protéger et vérifier

Exemple
1def moyenne(notes):2    if not notes:3        return 04    return sum(notes) / len(notes)5 6assert moyenne([10, 20]) == 157assert moyenne([]) == 08print("Tests OK")

Deux assert valent mieux qu'un long commentaire : ils échouent bruyamment si le comportement change.

4Erreurs courantes

Masquer l'erreur

À éviter

try:    traiter()except:    pass

À faire

try:    traiter()except ValueError as e:    print("Donnée invalide :", e)

Pourquoi : Un except nu avale tout, y compris les bugs que tu cherches.

Corriger au hasard

À éviter

# changer des lignes jusqu'à ce que ça marche

À faire

# lire l'erreur, formuler une hypothèse, la tester

Pourquoi : Sans hypothèse, une correction qui « marche » cache souvent le vrai problème.

5Subtilités à connaître

  • ◆try / except sert aux erreurs attendues (fichier absent, saisie invalide), pas à cacher des bugs de logique.
  • ◆Un environnement virtuel (python -m venv .venv) évite les conflits de bibliothèques entre projets.
  • ◆Un formateur automatique (Black, Ruff) met fin aux débats de style et rend les diffs lisibles.

6Techniques d'expert

Débogueur intégré

breakpoint() ouvre une console à l'endroit exact du code : tu inspectes les variables au lieu de les devinerr.

def moyenne(notes):    breakpoint()    return sum(notes) / len(notes)

Messages d'erreur utiles

Lève tes propres erreurs explicites : raise ValueError("niveau doit être positif"). Le futur toi te remerciera.

Petites fonctions, tests faciles

Une fonction sans effet de bord se teste en une ligne. C'est la porte d'entrée vers les tests automatisés.

7Sur le terrain

  • Les équipes exécutent formateur, linter et tests à chaque proposition de modification.
  • Les messages d'erreur soignés réduisent drastiquement le temps de support.
  • Les revues de code portent surtout sur la lisibilité : c'est elle qui coûte le plus cher à long terme.

8Vérifie ta compréhension

Question 1/3

Score 0

Où lire le type d'erreur dans un traceback ?

Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.