hack
Étincelle
0 XP / 250
M7 · Python expressleçon 5/5 · 9 min

Lire une erreur + le réflexe Claude

TypeError, KeyError, IndentationError : apprendre à lire une traceback de bas en haut, puis déléguer le fix.

🧠 Concept — Une erreur n'est pas un échec, c'est un message

Quand un script plante, Python affiche une traceback : le chemin qui a mené à l'erreur. Règle d'or absolue : on la lit DE BAS EN HAUT.

  • Dernière ligne : le type d'erreur et son message. C'est 80 % du diagnostic.
  • Juste au-dessus : la ligne de code exacte qui a planté, avec son numéro.
  • Le reste : le chemin d'appels pour y arriver (utile seulement si le bas ne suffit pas).

Voyons les 3 erreurs que tu croiseras le plus souvent — provoquées exprès pour que tu les reconnaisses.

Erreur n°1 : TypeError — mélanger texte et nombre

kwh = "42.5"          # piège : c'est du TEXTE (guillemets), pas un nombre
total = kwh + 10

# Traceback (most recent call last):
#   File "analyse.py", line 2, in <module>
#     total = kwh + 10
# TypeError: can only concatenate str (not "int") to str
#
# Lecture de bas en haut : "je ne peux pas additionner du texte et un
# nombre" → ligne 2 → kwh est une chaîne. Fix : total = float(kwh) + 10
# Cas réel : les CSV mal exportés livrent les kWh en texte. Classique.

Erreur n°2 : KeyError — la clé n'existe pas

session = {"station": "Vélizy 2", "kwh": 18.2}
print(session["duree_min"])

# Traceback (most recent call last):
#   File "analyse.py", line 2, in <module>
#     print(session["duree_min"])
# KeyError: 'duree_min'
#
# Lecture : la clé 'duree_min' n'existe pas dans ce dictionnaire.
# Soit une faute de frappe ("duree_minutes" ?), soit la donnée manque
# vraiment (session tronquée dans l'export). Vérifie : print(session.keys())

Erreur n°3 : IndentationError — le décalage cassé

for s in sessions:
print(s["station"])

#   File "analyse.py", line 2
#     print(s["station"])
#     ^
# IndentationError: expected an indented block after 'for' statement on line 1
#
# Lecture : après un for (ou un if, ou un def), Python EXIGE un bloc
# décalé. Arrive tout le temps en copiant-collant du code depuis Slack
# ou Notion : les espaces se perdent en route.

💡 Réflexe pro — Le réflexe Claude : colle tout, demande « explique et corrige »

Tu n'as PAS à débugger seul. Le réflexe pro en 3 gestes :

  1. Copie le code complet (pas juste la ligne suspecte) ;
  2. Copie la traceback complète (pas juste la dernière ligne) ;
  3. Colle les deux à Claude avec : « Explique-moi cette erreur simplement, puis corrige le script. Dis-moi ce que tu as changé et pourquoi. »

Le « dis-moi ce que tu as changé » est crucial : c'est comme ça que tu apprends au lieu de juste consommer le fix. Au troisième KeyError, tu le corrigeras toi-même avant Claude.

🎮 Mini-jeu : associe chaque symptôme à son erreur

Un collègue te lit la dernière ligne de sa traceback. Range chaque symptôme sous le bon type d'erreur — c'est le diagnostic express que tu feras en vrai.

🛠️ À toi de jouer — 🛠️ Provoque, lis, délègue

Le meilleur moyen de dédramatiser les erreurs : en provoquer une exprès et la résoudre avec la méthode. Lance le prompt ci-dessous.

Ton point de départ
Écris un court script Python d'analyse de sessions de charge Electra qui contient UNE erreur volontaire (au choix : TypeError, KeyError ou IndentationError), sans me dire laquelle. Exécute-le et montre-moi la traceback complète. Attends que je te propose mon diagnostic (type d'erreur + ligne + cause) en lisant la traceback de bas en haut. Ensuite seulement, valide ou corrige mon diagnostic, puis répare le script en m'expliquant le fix.

Checklist de validation