{ "cells": [ { "cell_type": "markdown", "id": "cca567eb", "metadata": {}, "source": [ "# Exercices : comprendre et corriger les erreurs Python\n", "\n", "**NSI**\n", "\n", "## Consignes\n", "\n", "Pour chaque erreur ci-dessous :\n", "1. **Exécute** la cellule de code buggée et observe le message d'erreur (le *traceback*).\n", "2. **Lis** l'explication de l'erreur.\n", "3. **Corrige** le code dans la cellule prévue à cet effet, puis exécute-la pour vérifier qu'elle fonctionne sans erreur.\n", "\n", "---" ] }, { "cell_type": "markdown", "id": "f2e2d231", "metadata": {}, "source": [ "## 1. `AssertionError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "L'instruction `assert condition` vérifie qu'une condition est vraie. Si la condition est **fausse**, Python lève une `AssertionError`. On utilise souvent `assert` pour vérifier qu'un résultat est correct (tests, vérifications internes)." ] }, { "cell_type": "markdown", "id": "89bc8f52", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "23a34f84", "metadata": {}, "outputs": [], "source": [ "def moyenne(notes):\n", " return sum(notes) / len(notes)\n", "\n", "notes = [12, 15, 8]\n", "resultat = moyenne(notes)\n", "\n", "# On veut vérifier que la moyenne calculée est bien correcte\n", "assert resultat == 12\n", "print(\"Moyenne correcte :\", resultat)\n" ] }, { "cell_type": "markdown", "id": "0421cac8", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "d863a732", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "8910c696", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "c5fc603a", "metadata": {}, "source": [ "## 2. `ZeroDivisionError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand on essaie de **diviser un nombre par zéro**, ce qui est mathématiquement impossible." ] }, { "cell_type": "markdown", "id": "eacfb7db", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "75bd0c9b", "metadata": {}, "outputs": [], "source": [ "notes = []\n", "\n", "moyenne = sum(notes) / len(notes)\n", "print(\"La moyenne est :\", moyenne)\n" ] }, { "cell_type": "markdown", "id": "bbe0c929", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "45a467c9", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "1d62fdb3", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "2422bfc4", "metadata": {}, "source": [ "## 3. `NameError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand on utilise le nom d'une **variable qui n'existe pas** (souvent à cause d'une faute de frappe, ou parce qu'elle n'a pas été définie avant)." ] }, { "cell_type": "markdown", "id": "84eb6681", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "3dc63498", "metadata": {}, "outputs": [], "source": [ "prenom = \"Alice\"\n", "\n", "print(\"Bonjour \" + prenon)\n" ] }, { "cell_type": "markdown", "id": "3c906899", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "a66d56c7", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "4cea9308", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "07041b38", "metadata": {}, "source": [ "## 4. `TypeError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand une opération est appliquée à des **types incompatibles**, par exemple additionner une chaîne de caractères et un entier avec `+`." ] }, { "cell_type": "markdown", "id": "84a3cfe9", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "bcbaa81f", "metadata": {}, "outputs": [], "source": [ "age = 15\n", "message = \"J'ai \" + age + \" ans\"\n", "print(message)\n" ] }, { "cell_type": "markdown", "id": "e4527a19", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "113d30e2", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "5065274a", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "d925cb81", "metadata": {}, "source": [ "## 5. `ValueError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand une fonction reçoit un argument du **bon type** mais avec une **valeur qu'elle ne peut pas traiter**, par exemple convertir en entier une chaîne qui ne représente pas un nombre." ] }, { "cell_type": "markdown", "id": "2cd32895", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "a30322fe", "metadata": {}, "outputs": [], "source": [ "texte = \"12a\"\n", "nombre = int(texte)\n", "print(\"Le nombre est :\", nombre)\n" ] }, { "cell_type": "markdown", "id": "ad15bc02", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "50d6d980", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "eebdda72", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "919e8669", "metadata": {}, "source": [ "## 6. `IndexError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand on accède à un **indice qui n'existe pas** dans une liste (ou une chaîne, un tuple...). Rappel : dans une liste de taille *n*, les indices valides vont de `0` à `n-1`." ] }, { "cell_type": "markdown", "id": "f089dfdb", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "30c7f8b6", "metadata": {}, "outputs": [], "source": [ "liste = [1, 2, 3]\n", "\n", "print(\"Dernier élément :\", liste[3])\n" ] }, { "cell_type": "markdown", "id": "ce15933e", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "77722fdb", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "4fda78dd", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "4baa385e", "metadata": {}, "source": [ "## 7. `KeyError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand on essaie d'accéder à une **clé qui n'existe pas** dans un dictionnaire." ] }, { "cell_type": "markdown", "id": "d781ae7b", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "f2171a02", "metadata": {}, "outputs": [], "source": [ "eleve = {\"nom\": \"Dupont\", \"prenom\": \"Marie\"}\n", "\n", "print(\"Âge :\", eleve[\"age\"])\n" ] }, { "cell_type": "markdown", "id": "7841203d", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "cad0a696", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "2cbf63d9", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "a8e72e75", "metadata": {}, "source": [ "## 8. `FileNotFoundError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand on essaie d'ouvrir un fichier qui **n'existe pas** à l'emplacement indiqué (nom mal orthographié, mauvais dossier...)." ] }, { "cell_type": "markdown", "id": "f362ea3e", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "2788251c", "metadata": {}, "outputs": [], "source": [ "with open(\"notes_eleves.txt\", \"r\") as f:\n", " contenu = f.read()\n", "\n", "print(contenu)\n" ] }, { "cell_type": "markdown", "id": "3313dbcb", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "79780304", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "056e9589", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "bcde7253", "metadata": {}, "source": [ "## 9. `ImportError / ModuleNotFoundError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand on essaie d'importer un **module qui n'existe pas** (nom mal orthographié) ou qui n'est pas installé." ] }, { "cell_type": "markdown", "id": "75e89c87", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "61c158f3", "metadata": {}, "outputs": [], "source": [ "import maths\n", "\n", "resultat = maths.sqrt(16)\n", "print(resultat)\n" ] }, { "cell_type": "markdown", "id": "7a6dda22", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "e5b6f3f6", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "d2740099", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "4968d927", "metadata": {}, "source": [ "## 10. `SyntaxError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand le code **ne respecte pas la grammaire** du langage Python (par exemple un `:` oublié). Le code ne s'exécute même pas : l'erreur est détectée avant le lancement du programme." ] }, { "cell_type": "markdown", "id": "f69e2847", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "ccbc2c32", "metadata": {}, "outputs": [], "source": [ "def carre(x)\n", " return x * x\n", "\n", "print(carre(4))\n" ] }, { "cell_type": "markdown", "id": "f81fd6ee", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "b8c8a29e", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "3915ab65", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "bd70f345", "metadata": {}, "source": [ "## 11. `IndentationError`\n", "\n", "**Quand cette erreur apparaît ?**\n", "\n", "Elle survient quand l'**indentation** (les espaces en début de ligne) n'est pas cohérente. En Python, l'indentation définit les blocs de code (corps d'une fonction, d'une boucle, d'un `if`...)." ] }, { "cell_type": "markdown", "id": "c07435df", "metadata": {}, "source": [ "**Code buggé — exécute cette cellule et lis le message d'erreur :**" ] }, { "cell_type": "code", "execution_count": null, "id": "b633d9e6", "metadata": {}, "outputs": [], "source": [ "def cube(x):\n", "return x ** 3\n", "\n", "print(cube(3))\n" ] }, { "cell_type": "markdown", "id": "ec2289b4", "metadata": {}, "source": [ "**À toi de corriger le code ci-dessous 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "ac2f7d20", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "293f6c8d", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "43f2a07a", "metadata": {}, "source": [ "## Exercice final : à toi de jouer !\n", "\n", "Pour chacun des 3 codes suivants :\n", "1. **Exécute** le code et observe l'erreur obtenue.\n", "2. **Identifie** le type d'erreur (écris-le dans la cellule de réponse).\n", "3. **Corrige** le code.\n", "\n", "Cette fois, l'explication n'est pas donnée à l'avance : c'est à toi de trouver !" ] }, { "cell_type": "markdown", "id": "b78c0f56", "metadata": {}, "source": [ "### Code 1" ] }, { "cell_type": "code", "execution_count": null, "id": "cab5aa81", "metadata": {}, "outputs": [], "source": [ "notes = \"15,20,18\"\n", "\n", "moyenne = sum(notes) / len(notes)\n", "print(\"Moyenne :\", moyenne)\n" ] }, { "cell_type": "markdown", "id": "adbd56d8", "metadata": {}, "source": [ "**Type d'erreur identifié :** *(écris ici le nom de l'erreur)*\n", "\n", "**Explication :** *(pourquoi cette erreur se produit-elle ?)*" ] }, { "cell_type": "markdown", "id": "965ecd6b", "metadata": {}, "source": [ "**Code corrigé 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "28b5337e", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "964dcb03", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "69ff50c5", "metadata": {}, "source": [ "### Code 2" ] }, { "cell_type": "code", "execution_count": null, "id": "96c9d0a1", "metadata": {}, "outputs": [], "source": [ "def afficher_eleve(eleve):\n", " print(eleve[\"nom\"], eleve[\"age\"])\n", "\n", "martin = {\"nom\": \"Martin\"}\n", "afficher_eleve(martin)\n" ] }, { "cell_type": "markdown", "id": "722591de", "metadata": {}, "source": [ "**Type d'erreur identifié :** *(écris ici le nom de l'erreur)*\n", "\n", "**Explication :** *(pourquoi cette erreur se produit-elle ?)*" ] }, { "cell_type": "markdown", "id": "d32e4f53", "metadata": {}, "source": [ "**Code corrigé 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "421cb0ce", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "a7885457", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "6ec7b3fa", "metadata": {}, "source": [ "### Code 3" ] }, { "cell_type": "code", "execution_count": null, "id": "91b1193f", "metadata": {}, "outputs": [], "source": [ "liste = [1, 2, 3, 4, 5]\n", "indice = len(liste)\n", "\n", "print(\"Dernier élément :\", liste[indice])\n" ] }, { "cell_type": "markdown", "id": "8cc0124b", "metadata": {}, "source": [ "**Type d'erreur identifié :** *(écris ici le nom de l'erreur)*\n", "\n", "**Explication :** *(pourquoi cette erreur se produit-elle ?)*" ] }, { "cell_type": "markdown", "id": "0209ad42", "metadata": {}, "source": [ "**Code corrigé 👇**" ] }, { "cell_type": "code", "execution_count": null, "id": "7475da3b", "metadata": {}, "outputs": [], "source": [ "# Écris ici ta version corrigée\n" ] }, { "cell_type": "markdown", "id": "dbd94e09", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "id": "eae5043a", "metadata": {}, "source": [ "## Récapitulatif\n", "\n", "| Erreur | Cause typique |\n", "|---|---|\n", "| `AssertionError` | Une condition testée par `assert` est fausse |\n", "| `ZeroDivisionError` | Division par zéro |\n", "| `NameError` | Variable non définie ou mal orthographiée |\n", "| `TypeError` | Opération entre types incompatibles |\n", "| `ValueError` | Bon type mais valeur incorrecte (ex : conversion impossible) |\n", "| `IndexError` | Indice hors des bornes d'une liste/chaîne |\n", "| `KeyError` | Clé absente d'un dictionnaire |\n", "| `FileNotFoundError` | Fichier introuvable à l'ouverture |\n", "| `ImportError` / `ModuleNotFoundError` | Module inexistant ou mal orthographié |\n", "| `SyntaxError` | Non-respect de la grammaire de Python |\n", "| `IndentationError` | Indentation incorrecte ou incohérente |\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:base] *", "language": "python", "name": "conda-base-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.9" } }, "nbformat": 4, "nbformat_minor": 5 }