1615 lines
37 KiB
Plaintext
1615 lines
37 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "907e95937b1e8560",
|
|
"metadata": {},
|
|
"source": [
|
|
"# TP de rappels Python\n",
|
|
"\n",
|
|
"L'objectif de ce notebook est de s'assurer que les bases fondamentales de Python sont solides avant de plonger dans des concepts plus avancés.\\\n",
|
|
"Les corrections sont fournies pour vous permettre de vous auto-évaluer.\n",
|
|
"\n",
|
|
"Vous pouvez double-cliquer sur chaque cellule de correction pour la voir bien formatée.\n",
|
|
"Pour éxécuter une cellule de code, cliquez dessus et appuyez sur `Shift + Enter`. Même chose pour les cellules Markdown.\n",
|
|
"\n",
|
|
"Commencez svp par traiter **uniquement les questions marquées par une étoile** (*), c'est-à-dire les questions 1 à 11, 17, 18, 21, et 28 à 30. Cette sélection a été pensée pour vous faire passer par les concepts clés dans un ordre cohérent. Une fois que vous aurez terminé cette sélection, prévenez-moi ! Nous discuterons des concepts restants. Si vous le souhaitez, vous pourrez terminer chez vous.\n",
|
|
"\n",
|
|
"Pour les plus curieux d'entre vous qui auraient terminé la sélection, sentez-vous libres de commencer à explorer la suite en toute autonomie.\n",
|
|
"\n",
|
|
"**Bon travail !**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d4d9dbc2439e9dcf",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 1. Variables et types de données de base"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5153d650d8867472",
|
|
"metadata": {},
|
|
"source": [
|
|
"**1. Déclaration de variables (\\*)**\\\n",
|
|
"Créez une variable `prenom` contenant la chaîne \"Jean\", une variable `age` contenant le nombre `34`, et une variable `taille` contenant le nombre `1.82`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "6e1eb71e68abef86",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"prenom = \"Johan\"\n",
|
|
"age = 22\n",
|
|
"taille = 1.71"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9cd8aeb24cf5fca1",
|
|
"metadata": {},
|
|
"source": [
|
|
"prenom = \"Jean\"\n",
|
|
"age = 34\n",
|
|
"taille = 1.82<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"prenom = \"Jean\"\n",
|
|
"age = 34\n",
|
|
"taille = 1.82\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d4ee935caafda112",
|
|
"metadata": {},
|
|
"source": [
|
|
"**2. F-strings (*)**\\\n",
|
|
"En utilisant les variables de l'exercice précédent et une f-string, affichez la phrase : `\"Je m'appelle Jean, j'ai 34 ans et je mesure 1.82m.\"`"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "34d1df9c59123d0a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "27f3d67b456ea4d1",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"print(f\"Je m'appelle {prenom}, j'ai {age} ans et je mesure {taille}m.\")\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e67d7fa6d4a2b90a",
|
|
"metadata": {},
|
|
"source": [
|
|
"**3. Opérations numériques (*)**\\\n",
|
|
"Créez une variable `annee_naissance` en soustrayant `age` de l'année actuelle (`2025`)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "de048a04701dc2af",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f07592dc45ee4a91",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"annee_naissance = 2025 - age\n",
|
|
"print(annee_naissance)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5a4de99499405625",
|
|
"metadata": {},
|
|
"source": [
|
|
"**4. Vérification de type (*)**\\\n",
|
|
"Affichez le type de chacune des variables `prenom`, `age`, et `taille` en utilisant la fonction `type()`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "f76aa44bf6c9b18e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cd34c7f05f7786ca",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"print(type(prenom))\n",
|
|
"print(type(age))\n",
|
|
"print(type(taille))\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "99292af5b6b0e20b",
|
|
"metadata": {},
|
|
"source": [
|
|
"**5. Manipulation de chaînes (*)**\\\n",
|
|
"Affichez la variable `prenom` en majuscules."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "f9535646f56e7218",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f7d3baedaf74b5b2",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"print(prenom.upper())\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3b8a3495c942b188",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 2. Structures de Données"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8a223012f92da8e0",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Listes"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3d843dcba3c575a",
|
|
"metadata": {},
|
|
"source": [
|
|
"**6. Création de liste (*)**\\\n",
|
|
"Créez une liste `nombres` contenant les entiers de 1 à 5."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "3097e4f6b1a5c9f6",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9d0df3209a46f007",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"nombres = [1, 2, 3, 4, 5]\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "31d3f212aac2fa8b",
|
|
"metadata": {},
|
|
"source": [
|
|
"**7. Accès à un élément (*)**\\\n",
|
|
"Affichez le troisième élément de la liste `nombres`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "f5c6f217d533bc44",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c80370abfa048432",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"print(nombres[2]) # L'indexation commence à 0\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "366bc23f5c7737a9",
|
|
"metadata": {},
|
|
"source": [
|
|
"**8. Ajout d'un élément (*)**\\\n",
|
|
"Ajoutez le nombre `6` à la fin de la liste `nombres`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "79e421f2f4f8d00d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f13cf1f4ccec6f78",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"nombres.append(6)\n",
|
|
"print(nombres)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8b9933217862e219",
|
|
"metadata": {},
|
|
"source": [
|
|
"**9. Slicing (*)**\\\n",
|
|
"Créez une nouvelle liste `sous_liste` qui contient les deuxième et troisième éléments de `nombres`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "a1b3b8c8b54561b6",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b5ac62bedd150b02",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"sous_liste = nombres[1:3] # de l'index 1 inclus à l'index 3 exclu\n",
|
|
"print(sous_liste)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e7b86108cd156227",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Dictionnaires"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "77add9680b1b3f1d",
|
|
"metadata": {},
|
|
"source": [
|
|
"**10. Création de dictionnaire (*)**\\\n",
|
|
"Créez un dictionnaire `film` avec les clés `titre`, `annee`, et `realisateur`, et des valeurs de votre choix."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "ef61a2133ae9672a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"film = {\n",
|
|
" \"titre\": \"Inception\",\n",
|
|
" \"annee\": 2010,\n",
|
|
" \"realisateur\": \"Christopher Nolan\"\n",
|
|
"}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "36a3de55d3d66c71",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"film = {\n",
|
|
" \"titre\": \"Inception\",\n",
|
|
" \"annee\": 2010,\n",
|
|
" \"realisateur\": \"Christopher Nolan\"\n",
|
|
"}\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ee7ab59aa1fac5eb",
|
|
"metadata": {},
|
|
"source": [
|
|
"**11. Accès à une valeur (*)**\\\n",
|
|
"Affichez la valeur associée à la clé `titre` du dictionnaire `film`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "45d1be1b02ef1d16",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Inception\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"print(film[\"titre\"])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c5fc5de7791da59b",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"print(film[\"titre\"])\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c1d4411f666d9c7e",
|
|
"metadata": {},
|
|
"source": [
|
|
"**12. Ajout d'une clé-valeur**\\\n",
|
|
"Ajoutez une clé `genre` avec la valeur `\"Science-Fiction\"` au dictionnaire `film`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "307d4eb67bf1b70d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2c22e9404a83b70d",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"film[\"genre\"] = \"Science-Fiction\"\n",
|
|
"print(film)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d619f22342bacb84",
|
|
"metadata": {},
|
|
"source": [
|
|
"**13. Itération sur un dictionnaire**\\\n",
|
|
"Affichez chaque clé et sa valeur du dictionnaire `film` sous la forme `clé -> valeur`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e97ce72cf8d2e9a7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4abc2de56c235493",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"for cle, valeur in film.items():\n",
|
|
" print(f\"{cle} -> {valeur}\")\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c73570f6ac7116b3",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Tuples et Sets"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e61a3672f9446c49",
|
|
"metadata": {},
|
|
"source": [
|
|
"**14. Création d'un tuple**\\\n",
|
|
"Créez un tuple `coordonnees` contenant les valeurs `10`, `20`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e16adc123daa7422",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4188a71c4f0c7aad",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"coordonnees = (10, 20)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e7317223326ad212",
|
|
"metadata": {},
|
|
"source": [
|
|
"**15. Unpacking de tuple**\\\n",
|
|
"À partir du tuple `coordonnees`, créez deux variables `x` et `y` en une seule ligne."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d89e36a839a6aced",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "be2e5725434e7be1",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"x, y = coordonnees\n",
|
|
"print(f\"x = {x}, y = {y}\")\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ab23b79d189658ad",
|
|
"metadata": {},
|
|
"source": [
|
|
"**16. Création d'un set**\\\n",
|
|
"Créez une liste `doublons = [1, 2, 2, 3, 4, 4, 4]`. À partir de cette liste, créez un set `uniques` pour n'en garder que les valeurs uniques."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "bf341c8dd14da675",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bdf6c93b039160d9",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"doublons = [1, 2, 2, 3, 4, 4, 4]\n",
|
|
"uniques = set(doublons)\n",
|
|
"print(uniques)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "fdd6179d433d758b",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 3. Structures de Contrôle"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e876de914d85b124",
|
|
"metadata": {},
|
|
"source": [
|
|
"**17. Conditions `if`/`elif`/`else` (*)**\\\n",
|
|
"Écrivez une condition qui affiche \"Positif\" si une variable `nombre` est supérieure à 0, \"Négatif\" si elle est inférieure à 0, et \"Nul\" si elle est égale à 0. Testez avec `nombre = 10`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "ab5ea14b4838f6cb",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Positif\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"nombre = 10\n",
|
|
"if(nombre > 0):\n",
|
|
" print(\"Positif\")\n",
|
|
"elif (nombre < 0):\n",
|
|
" print(\"Négatif\")\n",
|
|
"else:\n",
|
|
" print(\"Nul\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "22b5afae1a962aa5",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"nombre = 10\n",
|
|
"if nombre > 0:\n",
|
|
" print(\"Positif\")\n",
|
|
"elif nombre < 0:\n",
|
|
" print(\"Négatif\")\n",
|
|
"else:\n",
|
|
" print(\"Nul\")\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d332d7c10609975d",
|
|
"metadata": {},
|
|
"source": [
|
|
"**18. Boucle `for` (*)**\\\n",
|
|
"En utilisant une boucle `for`, affichez chaque nom de la liste `invites = [\"Alice\", \"Bob\", \"Charlie\"]`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "6c0ed18600a37792",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Alice\n",
|
|
"Bob\n",
|
|
"Charlie\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"invites = [\"Alice\", \"Bob\", \"Charlie\"]\n",
|
|
"for i in invites:\n",
|
|
" print(i)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c276ee4c2142d83",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"invites = [\"Alice\", \"Bob\", \"Charlie\"]\n",
|
|
"for nom in invites:\n",
|
|
" print(nom)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7c2bde682be12c84",
|
|
"metadata": {},
|
|
"source": [
|
|
"**19. Boucle `for` avec `range`**\\\n",
|
|
"Affichez les nombres de 0 à 4."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8acafdfc269483a9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e2f260a07a7c2adf",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"for i in range(5):\n",
|
|
" print(i)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6f614e2c311edebf",
|
|
"metadata": {},
|
|
"source": [
|
|
"**20. Boucle `while`**\\\n",
|
|
"En utilisant une boucle `while`, affichez les nombres de 1 à 3."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e1fc56b3174fa09d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6716f9b14780e09c",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"compteur = 1\n",
|
|
"while compteur <= 3:\n",
|
|
" print(compteur)\n",
|
|
" compteur += 1\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d2347f6b6f08fd5a",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 4. Fonctions"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e243b647adf00b18",
|
|
"metadata": {},
|
|
"source": [
|
|
"**21. Définition de fonction simple (*)**\\\n",
|
|
"Créez une fonction `saluer` qui prend un `nom` en paramètre et retourne la chaîne `\"Bonjour, [nom] !\"`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "56670561d672dad6",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Bonjour, Marie !\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"def saluer(nom):\n",
|
|
" return f\"Bonjour, {nom} !\"\n",
|
|
"print(saluer(\"Marie\"))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c2f358532240c5e",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def saluer(nom):\n",
|
|
" return f\"Bonjour, {nom} !\"\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"print(saluer(\"Marie\"))\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "75f702b706f3b57",
|
|
"metadata": {},
|
|
"source": [
|
|
"**22. Fonction avec type hints**\\\n",
|
|
"Réécrivez la fonction `saluer` en ajoutant des type hints pour le paramètre `nom` (`str`) et la valeur de retour (`str`)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d80071c4bab0dd86",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "786f44f4a1e848be",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def saluer(nom: str) -> str:\n",
|
|
" return f\"Bonjour, {nom} !\"\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"print(saluer(\"Pierre\"))\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "65356aa8195750a1",
|
|
"metadata": {},
|
|
"source": [
|
|
"**23. Fonction avec argument par défaut**\\\n",
|
|
"Créez une fonction `puissance` qui prend un `nombre` et un `exposant` (avec une valeur par défaut de 2), et retourne le nombre à la puissance de l'exposant."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6d6c8950f3b48cf7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6cc9f0ccba9b8002",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def puissance(nombre: int, exposant: int = 2) -> int:\n",
|
|
" return nombre ** exposant\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"print(puissance(3)) # Devrait afficher 9\n",
|
|
"print(puissance(3, 3)) # Devrait afficher 27\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "169ee9b4ab2b3c3c",
|
|
"metadata": {},
|
|
"source": [
|
|
"**24. Fonction avec `*args`**\\\n",
|
|
"Créez une fonction `somme_infinie` qui accepte un nombre variable d'arguments numériques et retourne leur somme."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "5d04cf282063c1ae",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5e2c3fc86ad3e820",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def somme_infinie(*args):\n",
|
|
" return sum(args)\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"print(somme_infinie(1, 2, 3))\n",
|
|
"print(somme_infinie(10, 20, 30, 40))\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2d2c270000ae61cd",
|
|
"metadata": {},
|
|
"source": [
|
|
"**25. Fonction avec `**kwargs`**\\\n",
|
|
"Créez une fonction `decrire_personne` qui accepte un nombre variable d'arguments par mot-clé et les affiche."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6e2dfc397bd2376f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4649403878b1036f",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def decrire_personne(**kwargs):\n",
|
|
" for cle, valeur in kwargs.items():\n",
|
|
" print(f\"{cle}: {valeur}\")\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"decrire_personne(nom=\"Durand\", prenom=\"Alice\", age=30)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b5865d5d528964f3",
|
|
"metadata": {},
|
|
"source": [
|
|
"**26. Utilisation de `**` pour déballer un dictionnaire**\\\n",
|
|
"Créez un dictionnaire `personne_dict`. Utilisez-le pour appeler la fonction `decrire_personne` de l'exercice précédent en utilisant l'opérateur `**`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8a6eef20d8a692e8",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "eee9a0bfc5342604",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"personne_dict = {\"nom\": \"Martin\", \"prenom\": \"Leo\", \"ville\": \"Paris\"}\n",
|
|
"decrire_personne(**personne_dict)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ef7700631e74b497",
|
|
"metadata": {},
|
|
"source": [
|
|
"**27. Fonction Lambda**\\\n",
|
|
"Créez une liste de noms. Triez cette liste par la longueur des noms (du plus court au plus long) en utilisant une fonction `lambda` comme clé de tri."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "bfc020b238f984f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "60ede13c2e42887a",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"noms = [\"Christophe\", \"Ana\", \"Jean-Pierre\", \"Leo\"]\n",
|
|
"noms_tries = sorted(noms, key=lambda nom: len(nom))\n",
|
|
"print(noms_tries)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "359038a4bba9e5c1",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 5. Programmation Orientée Objet (POO)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d2c80c4e7b7d74f7",
|
|
"metadata": {},
|
|
"source": [
|
|
"**28. Création de classe (*)**\\\n",
|
|
"Créez une classe `Voiture` avec une méthode `__init__` qui initialise les attributs `marque`, `modele` et `annee`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"id": "fe7e33f80354e162",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"class Voiture:\n",
|
|
" def __init__(self, marque: str, modele: str, annee: int):\n",
|
|
" self.marque = marque\n",
|
|
" self.modele = modele\n",
|
|
" self.annee = annee"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ec66a43000a8d9e",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"class Voiture:\n",
|
|
" def __init__(self, marque: str, modele: str, annee: int):\n",
|
|
" self.marque = marque\n",
|
|
" self.modele = modele\n",
|
|
" self.annee = annee\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "77a699f2e3dc802e",
|
|
"metadata": {},
|
|
"source": [
|
|
"**29. Instanciation d'objet (*)**\\\n",
|
|
"Créez une instance de la classe `Voiture` nommée `ma_voiture` avec des valeurs de votre choix."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f9ff92f6ef992118",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d4ef730bc701a605",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"ma_voiture = Voiture(marque=\"Renault\", modele=\"Clio\", annee=2022)\n",
|
|
"print(ma_voiture.modele)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5204e7205972aaab",
|
|
"metadata": {},
|
|
"source": [
|
|
"**30. Méthode d'instance (*)**\\\n",
|
|
"Ajoutez une méthode `description` à la classe `Voiture` qui retourne une chaîne décrivant la voiture (ex: `\"Renault Clio de 2022\"`)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "b191e316abfd7ad1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Peugeot 208 de 2023\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Votre code ici (redéfinissez la classe entière)\n",
|
|
"class Voiture:\n",
|
|
" def __init__(self, marque: str, modele: str, annee: int):\n",
|
|
" self.marque = marque\n",
|
|
" self.modele = modele\n",
|
|
" self.annee = annee\n",
|
|
" def description(self) -> str:\n",
|
|
" return f\"{self.marque} {self.modele} de {self.annee}\"\n",
|
|
"ma_voiture = Voiture(marque=\"Peugeot\", modele=\"208\", annee=2023)\n",
|
|
"print(ma_voiture.description())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "205f3587f4cc5d09",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"class Voiture:\n",
|
|
" def __init__(self, marque: str, modele: str, annee: int):\n",
|
|
" self.marque = marque\n",
|
|
" self.modele = modele\n",
|
|
" self.annee = annee\n",
|
|
" \n",
|
|
" def description(self) -> str:\n",
|
|
" return f\"{self.marque} {self.modele} de {self.annee}\"\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"ma_voiture = Voiture(marque=\"Peugeot\", modele=\"208\", annee=2023)\n",
|
|
"print(ma_voiture.description())\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bcdb702b4b0dce27",
|
|
"metadata": {},
|
|
"source": [
|
|
"**31. Héritage**\\\n",
|
|
"Créez une classe `VoitureElectrique` qui hérite de `Voiture`. Son `__init__` doit accepter les mêmes arguments que `Voiture`, plus un argument `autonomie`. Elle doit appeler l'`__init__` de la classe parente."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1c0ba385497424d3",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4f1c4d81f7ec0954",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"class VoitureElectrique(Voiture):\n",
|
|
" def __init__(self, marque: str, modele: str, annee: int, autonomie: int):\n",
|
|
" super().__init__(marque, modele, annee)\n",
|
|
" self.autonomie = autonomie\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"ma_tesla = VoitureElectrique(marque=\"Tesla\", modele=\"Model 3\", annee=2024, autonomie=500)\n",
|
|
"print(ma_tesla.description())\n",
|
|
"print(f\"Autonomie : {ma_tesla.autonomie} km\")\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f25ca9ca002f9ea2",
|
|
"metadata": {},
|
|
"source": [
|
|
"**32. Méthode `__str__` et `__repr__`**\\\n",
|
|
"Ajoutez une méthode `__repr__` à la classe `Voiture` pour que `print(ma_voiture)` affiche une représentation claire de l'objet (par exemple, `Voiture(marque='Renault', modele='Clio', annee=2022)`)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d30e936fdcc4b396",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici (redéfinissez la classe)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "81cc31aee353fc9c",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"class Voiture:\n",
|
|
" def __init__(self, marque: str, modele: str, annee: int):\n",
|
|
" self.marque = marque\n",
|
|
" self.modele = modele\n",
|
|
" self.annee = annee\n",
|
|
" \n",
|
|
" def description(self) -> str:\n",
|
|
" return f\"{self.marque} {self.modele} de {self.annee}\"\n",
|
|
" \n",
|
|
" def __repr__(self) -> str:\n",
|
|
" return f\"Voiture(marque='{self.marque}', modele='{self.modele}', annee={self.annee})\"\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"ma_voiture = Voiture(marque=\"Renault\", modele=\"Clio\", annee=2022)\n",
|
|
"print(ma_voiture) # Appelle __repr__ (ou __str__ si défini)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "295da05f332f250a",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 6. Gestion des Exceptions"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "aaf5edd08ebb6b38",
|
|
"metadata": {},
|
|
"source": [
|
|
"**33. `try...except`**\\\n",
|
|
"Écrivez un bloc de code qui tente de diviser 10 par 0. Utilisez un bloc `try...except` pour intercepter la `ZeroDivisionError` et afficher un message d'erreur personnalisé."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "75124aa54bf5862f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f3250f3007ac226a",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"try:\n",
|
|
" resultat = 10 / 0\n",
|
|
"except ZeroDivisionError:\n",
|
|
" print(\"Erreur : Division par zéro impossible.\")\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5797d408c2a53470",
|
|
"metadata": {},
|
|
"source": [
|
|
"**34. Lever une exception**\\\n",
|
|
"Créez une fonction `definir_age` qui prend un `age`. Si l'âge est négatif, la fonction doit lever une `ValueError` avec un message explicite."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6b14ea235a8870cb",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2701aa9e809a771",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def definir_age(age: int):\n",
|
|
" if age < 0:\n",
|
|
" raise ValueError(\"L'âge ne peut pas être négatif.\")\n",
|
|
" print(f\"Âge défini à {age} ans.\")\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"try:\n",
|
|
" definir_age(-5)\n",
|
|
"except ValueError as e:\n",
|
|
" print(f\"Exception capturée : {e}\")\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "48aa1ceeda5fca33",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 7. Concepts Avancés (rappels)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3f2901ec20e58948",
|
|
"metadata": {},
|
|
"source": [
|
|
"**35. List Comprehension**\\\n",
|
|
"À partir de la liste `nombres = [1, 2, 3, 4, 5]`, créez une nouvelle liste `carres` contenant le carré de chaque nombre, en utilisant une list comprehension."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "b25dd47b4f882e01",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"nombres = [1, 2, 3, 4, 5]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "35b04a1d68beaaf6",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"nombres = [1, 2, 3, 4, 5]\n",
|
|
"carres = [n**2 for n in nombres]\n",
|
|
"print(carres)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a9f2bb794262375a",
|
|
"metadata": {},
|
|
"source": [
|
|
"**36. List Comprehension avec condition**\\\n",
|
|
"À partir de la même liste `nombres`, créez une liste `carres_pairs` contenant les carrés uniquement des nombres pairs."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6b2e41d1d38768a8",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici\n",
|
|
"nombres = [1, 2, 3, 4, 5]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2c8497c9efeeb77e",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"nombres = [1, 2, 3, 4, 5]\n",
|
|
"carres_pairs = [n**2 for n in nombres if n % 2 == 0]\n",
|
|
"print(carres_pairs)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4c02fcf81da59513",
|
|
"metadata": {},
|
|
"source": [
|
|
"**37. Contexte Manager `with`**\\\n",
|
|
"Écrivez \"Hello World\" dans un fichier `test.txt` en utilisant `with open(...)`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ff4443b3e8f47493",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5a236c43ee41fe87",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"with open(\"test.txt\", \"w\") as f:\n",
|
|
" f.write(\"Hello World\")\n",
|
|
"# Le fichier est automatiquement fermé à la sortie du bloc 'with'\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "195a57bb244efe41",
|
|
"metadata": {},
|
|
"source": [
|
|
"**38. Générateur et `yield`**\\\n",
|
|
"Créez une fonction générateur `compteur` qui prend un `maximum` et `yield` les nombres de 0 jusqu'à `maximum - 1`. Ensuite, itérez dessus pour les afficher."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6a2b490dba94afa4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f73c6c378c9e7166",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def compteur(maximum: int):\n",
|
|
" n = 0\n",
|
|
" while n < maximum:\n",
|
|
" yield n\n",
|
|
" n += 1\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"for nombre in compteur(5):\n",
|
|
" print(nombre)\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "20a0345f49e6fb56",
|
|
"metadata": {},
|
|
"source": [
|
|
"**39. Décorateurs (syntaxe uniquement)**\\\n",
|
|
"Ci-dessous se trouve un décorateur simple. Créez une fonction `dire_bonjour` et appliquez-lui le décorateur `@mon_decorateur`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "92f09be150ad18df",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def mon_decorateur(func):\n",
|
|
" def wrapper():\n",
|
|
" print(\"Début de l'exécution.\")\n",
|
|
" func()\n",
|
|
" print(\"Fin de l'exécution.\")\n",
|
|
" return wrapper\n",
|
|
"\n",
|
|
"# Votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "620c4080ea47ba36",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"def mon_decorateur(func):\n",
|
|
" def wrapper():\n",
|
|
" print(\"Début de l'exécution.\")\n",
|
|
" func()\n",
|
|
" print(\"Fin de l'exécution.\")\n",
|
|
" return wrapper\n",
|
|
"\n",
|
|
"@mon_decorateur\n",
|
|
"def dire_bonjour():\n",
|
|
" print(\"Bonjour !\")\n",
|
|
"\n",
|
|
"# Test\n",
|
|
"dire_bonjour()\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8ff84f5be218961d",
|
|
"metadata": {},
|
|
"source": [
|
|
"**40. `async` / `await` (syntaxe uniquement)**\\\n",
|
|
"Ceci est juste une vérification de syntaxe. Écrivez une fonction asynchrone `tache_simple` qui affiche \"Début\", attend 1 seconde de manière non-bloquante avec `asyncio.sleep(1)`, puis affiche \"Fin\".\n",
|
|
"\n",
|
|
"*Note : Pour exécuter du code asynchrone dans un notebook, on peut utiliser `await` directement dans la cellule si l'environnement le supporte, ou `asyncio.run()`.*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "235fbc6f18132d76",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import asyncio\n",
|
|
"\n",
|
|
"async def tache_simple():\n",
|
|
" # ... votre code ici\n",
|
|
" pass\n",
|
|
"\n",
|
|
"# votre code ici"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "58fa1df89d9ebc87",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details><summary>Correction</summary>\n",
|
|
"```python\n",
|
|
"import asyncio\n",
|
|
"\n",
|
|
"async def tache_simple():\n",
|
|
" print(\"Début\")\n",
|
|
" await asyncio.sleep(1)\n",
|
|
" print(\"Fin\")\n",
|
|
"\n",
|
|
"# Pour exécuter dans un script .py, on ferait :\n",
|
|
"# asyncio.run(tache_simple())\n",
|
|
"\n",
|
|
"# Dans un notebook, on peut souvent faire directement :\n",
|
|
"await tache_simple()\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1a4d1becb74bff5f",
|
|
"metadata": {},
|
|
"source": [
|
|
"--- \n",
|
|
"## Fin du TP\n",
|
|
"\n",
|
|
"Félicitations !"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"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.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|