{"cells":[{"metadata":{},"cell_type":"markdown","source":"<div class = \"alert alert-danger\"> \n \nAttention: **veillez à bien sauvegarder votre travail** dans le bon dossier du disque réseau (dossier document) avec le bon nom (et l'extension *.ipynb*), **sinon toutes les modifications seront perdues!**\n\nPour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*\n</div>"},{"metadata":{},"cell_type":"markdown","source":"Rappel de quelques fonction de Turtle avec des exemples qui pourront vous servir\n\n| Fonction |Exemple|Commentaire|\n|:-------- |:------|:----------|\n|forward(x)|forward(150)|Trace un trait de 150 points|\n|backward(x)|backward(150)|Trace un trait “à reculons” de 150 points|\n|left(n)|left(60)|Tourne sur place la tortue de 60° à gauche|\n|right(n)|right(60)|Tourne sur place la tortue de 60° à droite|\n|width(x)|width(5)|Change l’épaisseur à 5 points|\n|color(\"c\")|color(\"yellow\")|Change la couleur du trait (mais aucun trait n’est tracé à ce moment). Notez les guillemets !|\n|penup()|penup()|Lève la tortue (permet de se déplacer sans dessiner)|\n|pendown()|pendown()|Baisse le stylo|"},{"metadata":{},"cell_type":"markdown","source":"# 2. Répéter - `for`\n\nDans ce chapitre, nous découvrons comment utiliser une boucle `for` pour répéter un bloc d'instructions un certain nombre de fois. Nous allons voir que :\n\n* la boucle `for` permet de répéter des instructions,\n* la structure `for _ in range(n):` permet de répéter un bloc un nombre `n` fois,\n* les instructions, qui sont répétées, sont celles qui suivent le `:` et qui sont indentées (décalées à droite). En effet, le langage python, n'a pas de end for pour indiquer la fin de la boucle. Le langage utilise l'indentation pour signifier qu'une suite d'instruction fait partie de la boucle.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n```\nUne boucle informatique est\n\nA) une instruction\nB) un passage ondulé\nC) une section de code répétée\nD) une protection thermique\nE) un cercle dessiné par \"Turtle\"\n```"},{"metadata":{},"cell_type":"markdown","source":"<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n\nC) une section de code répétée\n</div>\n</details>"},{"metadata":{},"cell_type":"markdown","source":"## 2.1 La répétition\n\nRevenons vers un exemple simple : dessiner un carré.\n\nSi nous regardons le code de près, nous pouvons voir que nous répétons 4 fois les mêmes deux instructions `forward()` et `left()`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nforward(100)\nleft(90)\nforward(100)\nleft(90)\nforward(100)\nleft(90)\nforward(100)\nleft(90)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Ne serait-ce pas pratique de pouvoir dire à la tortue de répéter ces instructions 4 fois ?\nCeci est possible avec une boucle `for`. \n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 1 </h3>Transformez le rectangle en triangle.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(4):\n forward(100)\n left(90)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<div class=\"alert alert-block alert-warning\"><b>A savoir:</b> \n \nPour distinguer les instructions qui seront répétées de celles qui ne le seront pas, on indente le code, c'est-à-dire que toutes les instructions qui suivent le `for` qui commencent par un espacement seront répétées le nombre de fois explicité dans le `range`. Après les répétitions le programme exécutera la permière instruction qui n'est pas indentée.\n\nNB: Vous être libre de choisir l'espace d'indentation mais soyez rigoureux avec votre choix et garder la même valeur pour tout votre programme. Nous utilisons en général un espace de 4 caractères pour rendre les codes plus lisible.\n</div>"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n```\n\nUne indentation de texte est\n\nA) un décalage vers la gauche\nB) un décalage vers la droite\nC) une mise en paragraphe\nD) une mise en sous-section\n```"},{"metadata":{},"cell_type":"markdown","source":"<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n\nB) un décalage vers la droite\n</div>\n</details>"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n```\nAvez-vous compris la notion d'indentation ?\nDans l'exemple ci-dessous (juste après la question/réponses) combien de fois le texte \"Au revoir\" va être affiché ?\nEssayer de répondre puis exécuter le programme qui suit pour vérifier votre réponse\n\nA) 0 fois\nB) 1 fois\nC) 5 fois\nD) le code fera une une erreur à cause de l'indentation dans la boucle for\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Dans cette exemple l'instruction B ne fait pas partie de la boucle.\n\nfor _ in range(5):\n print(\"Hello\")\n print(\"----------\")\nprint(\"Au revoir\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.3 Faire des figures avec les boucles\n\n### Polygone régulier\nAvec une boucle `for`, nous pouvons simplifier le dessin des formes symétriques."},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2 </h3>\n\n1. Utiliser une boucle pour réécrire le programme ci-dessous \n2. Quelle est la figure dessinée ?"},{"metadata":{"trusted":false,"scrolled":true},"cell_type":"code","source":"from turtle import *\n\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3 </h3>\n\nCompléter le programme ci-dessous pour tracer un octogone. Un octogone est un polygone à huit sommets, donc huit côtés."},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nforward(100)\nleft(45)\n\n# à compléter\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Escalier\n\nPour dessiner un escalier, il faut simplement répéter dans une boucle le dessin pour une seule marche.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(5):\n forward(20)\n left(90)\n forward(20)\n right(90)\n\nforward(100)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Pour dessiner des dents de scie, il faut simplement répéter dans une boucle le dessin pour une seule dent.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>\n\nDessinez une usine avec un toit en dents de scie.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(4):\n left(45)\n forward(71)\n right(135)\n forward(50)\n left(90)\n\nforward(80)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Éventail\n\nQue se passe-t-il si nous dessinons une ligne (`forward()`/`backward()`) et tournons chaque fois d'un petit angle ?\nC'est un peu comme un éventail qui s'ouvre.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 5 </h3>\n\nDoublez l'angle de rotation dans `left()`."},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(18):\n forward(100)\n backward(100)\n left(10)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Que se passe-t-il si nous avançons plus que nous reculons ?\nUne toute petite modification du programme peut faire une chouette différence."},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 6 </h3>\n\nModifiez les valeurs dans `forward()` et `backward()`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(18):\n forward(100)\n backward(90)\n left(20)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Étoile\n\nVoici une autre façon de toujours avancer, mais en tournant chaque fois d'un angle un peu plus petit que 180°.\nEssayons !\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 7 </h3>\n\nChangez le nombre de pics de l'étoile."},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(9):\n forward(200)\n left(160)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Cercle\nRappel: La fonction circle(R, A) permet de dessiner un arc de cercle de rayon R et d'angle A.\n\nExemple: circle(100, 360) dessine un cercle de rayon 100.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nCompléter la boucle for pour dessiner trois cercles rouge de rayon 50 coller les uns aux autres comme sur le dessin:\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\ncolor('red')\nfor _ in range(3):\n \n\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.4 Explorer \"La tortue\"\n\nVoici quelques fonctions de la tortue.\n\n"},{"metadata":{},"cell_type":"markdown","source":"### Estampe\n\nVous pouvez laisser une impression de la tortue à sa position actuelle avec la fonction `stamp()`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\nshape('turtle')\n\nfor _ in range(6):\n forward(100)\n left(60)\n stamp()\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Forme\n\nVous pouvez changer la forme de votre tortue avec la fonction `shape()`.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 9 </h3>Essayez les formes `'triangle'` et `'arrow'`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\nbackward(200)\n\nstamp()\nshape('turtle')\nforward(100)\n\nstamp()\nshape('circle')\nforward(100)\n\nstamp()\nshape('square')\nforward(100)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.5 Les erreurs\n\nIl est important de bien lire et comprendre les messages d'erreur.\nDans cette section, vous allez découvrir les différentes catégories d'erreur et comment les corriger.\n\n"},{"metadata":{},"cell_type":"markdown","source":"### ImportError\n\nCette erreur survient lorsque vous essayez d'importer un module qui n'existe pas.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 10 </h3>Corrigez l'erreur d'importation.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtl import *\n\nfor i in range(3):\n forward(100)\n left(120)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <font color='red'>SyntaxError</font>\n\nCette erreur survient lorsque vous écrivez mal un mot-clé, ou si vous oubliez une ponctuation. Dans ce cas, le mot-clé mal écrit n'est pas reconnu et il n'est pas colorié correctement dans votre code.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 11 </h3>Corrigez les trois erreurs de syntaxe et remarquez les éventuelles différences de stylisation.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"fro turtle import *\n\nfore i in range(3)\n forward(100)\n left(120)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <font color='red'>NameError</font>\n\nCette erreur survient lorsque vous écrivez mal le nom d'une variable ou fonction.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 12 </h3>Corrigez les trois erreurs de nom.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(n):\n forwarde(100)\n lefft(120)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <font color='red'>TypeError</font>\n\nCette erreur survient lorsque vous ne mettez pas le nombre d'arguments corrects pour une fonction.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 13 </h3>Corrigez les trois erreurs de type.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range():\n forward()\n left(100, 120)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercices d'entraînement "},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 14 </h3>\n\nRéécrire le code suivant en remplaçant par une boucle `for` partout où c’est possible.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(-40)\nleft(30)\nforward(-40)\nleft(30)\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(-40)\nleft(30)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 15 </h3>\n\nUtiliser votre identifiant EEL et le mot de passe *Sismondi2024* pour faire les exercices de la **série B** de la plateforme [AlgoPython](https://www.algopython.fr/login). [](https://www.algopython.fr/login)\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"---\n\n#### Remarque générale\n\nCe document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)\n\n"}],"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.12.3"}},"nbformat":4,"nbformat_minor":2}
{"cells":[{"metadata":{},"cell_type":"markdown","source":"<div class = \"alert alert-danger\"> \n \nAttention: **veillez à bien sauvegarder votre travail** dans le bon dossier du disque réseau (dossier document) avec le bon nom (et l'extension *.ipynb*), **sinon toutes les modifications seront perdues!**\n\nPour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*\n</div>"},{"metadata":{},"cell_type":"markdown","source":"Rappel de quelques fonction de Turtle avec des exemples qui pourront vous servir\n\n| Fonction |Exemple|Commentaire|\n|:-------- |:------|:----------|\n|forward(x)|forward(150)|Trace un trait de 150 points|\n|backward(x)|backward(150)|Trace un trait “à reculons” de 150 points|\n|left(n)|left(60)|Tourne sur place la tortue de 60° à gauche|\n|right(n)|right(60)|Tourne sur place la tortue de 60° à droite|\n|width(x)|width(5)|Change l’épaisseur à 5 points|\n|color(\"c\")|color(\"yellow\")|Change la couleur du trait (mais aucun trait n’est tracé à ce moment). Notez les guillemets !|\n|penup()|penup()|Lève la tortue (permet de se déplacer sans dessiner)|\n|pendown()|pendown()|Baisse le stylo|"},{"metadata":{},"cell_type":"markdown","source":"# 2. Répéter - `for`\n\nDans ce chapitre, nous découvrons comment utiliser une boucle `for` pour répéter un bloc d'instructions un certain nombre de fois. Nous allons voir que :\n\n* la boucle `for` permet de répéter des instructions,\n* la structure `for _ in range(n):` permet de répéter un bloc un nombre `n` fois,\n* les instructions, qui sont répétées, sont celles qui suivent le `:` et qui sont indentées (décalées à droite). En effet, le langage python, n'a pas de end for pour indiquer la fin de la boucle. Le langage utilise l'indentation pour signifier qu'une suite d'instruction fait partie de la boucle.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n```\nUne boucle informatique est\n\nA) une instruction\nB) un passage ondulé\nC) une section de code répétée\nD) une protection thermique\nE) un cercle dessiné par \"Turtle\"\n```"},{"metadata":{},"cell_type":"markdown","source":"<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n\nC) une section de code répétée\n</div>\n</details>"},{"metadata":{},"cell_type":"markdown","source":"## 2.1 La répétition\n\nRevenons vers un exemple simple : dessiner un carré.\n\nSi nous regardons le code de près, nous pouvons voir que nous répétons 4 fois les mêmes deux instructions `forward()` et `left()`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nforward(100)\nleft(90)\nforward(100)\nleft(90)\nforward(100)\nleft(90)\nforward(100)\nleft(90)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Ne serait-ce pas pratique de pouvoir dire à la tortue de répéter ces instructions 4 fois ?\nCeci est possible avec une boucle `for`. \n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 1 </h3>Transformez le rectangle en triangle.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(4):\n forward(100)\n left(90)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<div class=\"alert alert-block alert-warning\"><b>A savoir:</b> \n \nPour distinguer les instructions qui seront répétées de celles qui ne le seront pas, on indente le code, c'est-à-dire que toutes les instructions qui suivent le `for` qui commencent par un espacement seront répétées le nombre de fois explicité dans le `range`. Après les répétitions le programme exécutera la permière instruction qui n'est pas indentée.\n\nNB: Vous être libre de choisir l'espace d'indentation mais soyez rigoureux avec votre choix et garder la même valeur pour tout votre programme. Nous utilisons en général un espace de 4 caractères pour rendre les codes plus lisible.\n</div>"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n```\n\nUne indentation de texte est\n\nA) un décalage vers la gauche\nB) un décalage vers la droite\nC) une mise en paragraphe\nD) une mise en sous-section\n```"},{"metadata":{},"cell_type":"markdown","source":"<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n\nB) un décalage vers la droite\n</div>\n</details>"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n```\nAvez-vous compris la notion d'indentation ?\nDans l'exemple ci-dessous (juste après la question/réponses) combien de fois le texte \"Au revoir\" va être affiché ?\nEssayer de répondre puis exécuter le programme qui suit pour vérifier votre réponse\n\nA) 0 fois\nB) 1 fois\nC) 5 fois\nD) le code fera une une erreur à cause de l'indentation dans la boucle for\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Dans cette exemple l'instruction B ne fait pas partie de la boucle.\n\nfor _ in range(5):\n print(\"Hello\")\n print(\"----------\")\nprint(\"Au revoir\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.3 Faire des figures avec les boucles\n\n### Polygone régulier\nAvec une boucle `for`, nous pouvons simplifier le dessin des formes symétriques."},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2 </h3>\n\n1. Utiliser une boucle pour réécrire le programme ci-dessous \n2. Quelle est la figure dessinée ?"},{"metadata":{"trusted":false,"scrolled":true},"cell_type":"code","source":"from turtle import *\n\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\nforward(100)\nleft(60)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3 </h3>\n\nCompléter le programme ci-dessous pour tracer un octogone. Un octogone est un polygone à huit sommets, donc huit côtés."},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nforward(100)\nleft(45)\n\n# à compléter\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Escalier\n\nPour dessiner un escalier, il faut simplement répéter dans une boucle le dessin pour une seule marche.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(5):\n forward(20)\n left(90)\n forward(20)\n right(90)\n\nforward(100)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Pour dessiner des dents de scie, il faut simplement répéter dans une boucle le dessin pour une seule dent.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>\n\nDessinez une usine avec un toit en dents de scie.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(4):\n left(45)\n forward(71)\n right(135)\n forward(50)\n left(90)\n\nforward(80)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Éventail\n\nQue se passe-t-il si nous dessinons une ligne (`forward()`/`backward()`) et tournons chaque fois d'un petit angle ?\nC'est un peu comme un éventail qui s'ouvre.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 5 </h3>\n\nDoublez l'angle de rotation dans `left()`."},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(18):\n forward(100)\n backward(100)\n left(10)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Que se passe-t-il si nous avançons plus que nous reculons ?\nUne toute petite modification du programme peut faire une chouette différence."},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 6 </h3>\n\nModifiez les valeurs dans `forward()` et `backward()`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(18):\n forward(100)\n backward(90)\n left(20)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Étoile\n\nVoici une autre façon de toujours avancer, mais en tournant chaque fois d'un angle un peu plus petit que 180°.\nEssayons !\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 7 </h3>\n\nChangez le nombre de pics de l'étoile."},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(9):\n forward(200)\n left(160)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Cercle\nRappel: La fonction circle(R, A) permet de dessiner un arc de cercle de rayon R et d'angle A.\n\nExemple: circle(100, 360) dessine un cercle de rayon 100.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nCompléter la boucle for pour dessiner trois cercles rouge de rayon 50 coller les uns aux autres comme sur le dessin:\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\ncolor('red')\nfor _ in range(3):\n \n\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.4 Explorer \"La tortue\"\n\nVoici quelques fonctions de la tortue.\n\n"},{"metadata":{},"cell_type":"markdown","source":"### Estampe\n\nVous pouvez laisser une impression de la tortue à sa position actuelle avec la fonction `stamp()`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\nshape('turtle')\n\nfor _ in range(6):\n forward(100)\n left(60)\n stamp()\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Forme\n\nVous pouvez changer la forme de votre tortue avec la fonction `shape()`.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 9 </h3>Essayez les formes `'triangle'` et `'arrow'`.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\nbackward(200)\n\nstamp()\nshape('turtle')\nforward(100)\n\nstamp()\nshape('circle')\nforward(100)\n\nstamp()\nshape('square')\nforward(100)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.5 Les erreurs\n\nIl est important de bien lire et comprendre les messages d'erreur.\nDans cette section, vous allez découvrir les différentes catégories d'erreur et comment les corriger.\n\n"},{"metadata":{},"cell_type":"markdown","source":"### ImportError\n\nCette erreur survient lorsque vous essayez d'importer un module qui n'existe pas.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 10 </h3>Corrigez l'erreur d'importation.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtl import *\n\nfor i in range(3):\n forward(100)\n left(120)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <font color='red'>SyntaxError</font>\n\nCette erreur survient lorsque vous écrivez mal un mot-clé, ou si vous oubliez une ponctuation. Dans ce cas, le mot-clé mal écrit n'est pas reconnu et il n'est pas colorié correctement dans votre code.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 11 </h3>Corrigez les trois erreurs de syntaxe et remarquez les éventuelles différences de stylisation.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"fro turtle import *\n\nfore i in range(3)\n forward(100)\n left(120)\n\ndone()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <font color='red'>NameError</font>\n\nCette erreur survient lorsque vous écrivez mal le nom d'une variable ou fonction.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 12 </h3>Corrigez les trois erreurs de nom.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(n):\n forwarde(100)\n lefft(120)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <font color='red'>TypeError</font>\n\nCette erreur survient lorsque vous ne mettez pas le nombre d'arguments corrects pour une fonction.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 13 </h3>Corrigez les trois erreurs de type.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nfor _ in range():\n forward()\n left(100, 120)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Exercices d'entraînement "},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 14 </h3>\n\nRéécrire le code suivant en remplaçant par une boucle `for` partout où c’est possible.\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"from turtle import *\n\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(-40)\nleft(30)\nforward(-40)\nleft(30)\nforward(20)\nright(40)\nforward(20)\nright(40)\nforward(-40)\nleft(30)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 15 </h3>\n\nUtiliser votre identifiant EEL et le mot de passe *Sismondi2024* pour faire les exercices de la **série B** de la plateforme [AlgoPython](https://www.algopython.fr/login). [](https://www.algopython.fr/login)\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"---\n\n#### Remarque générale\n\nCe document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)\n\n"}],"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.12.3"}},"nbformat":4,"nbformat_minor":2}
\ No newline at end of file
\ No newline at end of file
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<divclass = "alert alert-danger">
<divclass = "alert alert-danger">
Attention: **veillez à bien sauvegarder votre travail** dans le bon dossier du disque réseau (dossier document) avec le bon nom (et l'extension *.ipynb*), **sinon toutes les modifications seront perdues!**
Attention: **veillez à bien sauvegarder votre travail** dans le bon dossier du disque réseau (dossier document) avec le bon nom (et l'extension *.ipynb*), **sinon toutes les modifications seront perdues!**
Pour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*
Pour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*
</div>
</div>
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Rappel de quelques fonction de Turtle avec des exemples qui pourront vous servir
Rappel de quelques fonction de Turtle avec des exemples qui pourront vous servir
| Fonction |Exemple|Commentaire|
| Fonction |Exemple|Commentaire|
|:-------- |:------|:----------|
|:-------- |:------|:----------|
|forward(x)|forward(150)|Trace un trait de 150 points|
|forward(x)|forward(150)|Trace un trait de 150 points|
|backward(x)|backward(150)|Trace un trait “à reculons” de 150 points|
|backward(x)|backward(150)|Trace un trait “à reculons” de 150 points|
|left(n)|left(60)|Tourne sur place la tortue de 60° à gauche|
|left(n)|left(60)|Tourne sur place la tortue de 60° à gauche|
|right(n)|right(60)|Tourne sur place la tortue de 60° à droite|
|right(n)|right(60)|Tourne sur place la tortue de 60° à droite|
|width(x)|width(5)|Change l’épaisseur à 5 points|
|width(x)|width(5)|Change l’épaisseur à 5 points|
|color("c")|color("yellow")|Change la couleur du trait (mais aucun trait n’est tracé à ce moment). Notez les guillemets !|
|color("c")|color("yellow")|Change la couleur du trait (mais aucun trait n’est tracé à ce moment). Notez les guillemets !|
|penup()|penup()|Lève la tortue (permet de se déplacer sans dessiner)|
|penup()|penup()|Lève la tortue (permet de se déplacer sans dessiner)|
|pendown()|pendown()|Baisse le stylo|
|pendown()|pendown()|Baisse le stylo|
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# 2. Répéter - `for`
# 2. Répéter - `for`
Dans ce chapitre, nous découvrons comment utiliser une boucle `for` pour répéter un bloc d'instructions un certain nombre de fois. Nous allons voir que :
Dans ce chapitre, nous découvrons comment utiliser une boucle `for` pour répéter un bloc d'instructions un certain nombre de fois. Nous allons voir que :
* la boucle `for` permet de répéter des instructions,
* la boucle `for` permet de répéter des instructions,
* la structure `for _ in range(n):` permet de répéter un bloc un nombre `n` fois,
* la structure `for _ in range(n):` permet de répéter un bloc un nombre `n` fois,
* les instructions, qui sont répétées, sont celles qui suivent le `:` et qui sont indentées (décalées à droite). En effet, le langage python, n'a pas de end for pour indiquer la fin de la boucle. Le langage utilise l'indentation pour signifier qu'une suite d'instruction fait partie de la boucle.
* les instructions, qui sont répétées, sont celles qui suivent le `:` et qui sont indentées (décalées à droite). En effet, le langage python, n'a pas de end for pour indiquer la fin de la boucle. Le langage utilise l'indentation pour signifier qu'une suite d'instruction fait partie de la boucle.
Revenons vers un exemple simple : dessiner un carré.
Revenons vers un exemple simple : dessiner un carré.
Si nous regardons le code de près, nous pouvons voir que nous répétons 4 fois les mêmes deux instructions `forward()` et `left()`.
Si nous regardons le code de près, nous pouvons voir que nous répétons 4 fois les mêmes deux instructions `forward()` et `left()`.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
fromturtleimport*
fromturtleimport*
forward(100)
forward(100)
left(90)
left(90)
forward(100)
forward(100)
left(90)
left(90)
forward(100)
forward(100)
left(90)
left(90)
forward(100)
forward(100)
left(90)
left(90)
done()
done()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Ne serait-ce pas pratique de pouvoir dire à la tortue de répéter ces instructions 4 fois ?
Ne serait-ce pas pratique de pouvoir dire à la tortue de répéter ces instructions 4 fois ?
Ceci est possible avec une boucle `for`.
Ceci est possible avec une boucle `for`.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 1 </h3>Transformez le rectangle en triangle.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 1 </h3>Transformez le rectangle en triangle.
Pour distinguer les instructions qui seront répétées de celles qui ne le seront pas, on indente le code, c'est-à-dire que toutes les instructions qui suivent le `for` qui commencent par un espacement seront répétées le nombre de fois explicité dans le `range`. Après les répétitions le programme exécutera la permière instruction qui n'est pas indentée.
Pour distinguer les instructions qui seront répétées de celles qui ne le seront pas, on indente le code, c'est-à-dire que toutes les instructions qui suivent le `for` qui commencent par un espacement seront répétées le nombre de fois explicité dans le `range`. Après les répétitions le programme exécutera la permière instruction qui n'est pas indentée.
NB: Vous être libre de choisir l'espace d'indentation mais soyez rigoureux avec votre choix et garder la même valeur pour tout votre programme. Nous utilisons en général un espace de 4 caractères pour rendre les codes plus lisible.
NB: Vous être libre de choisir l'espace d'indentation mais soyez rigoureux avec votre choix et garder la même valeur pour tout votre programme. Nous utilisons en général un espace de 4 caractères pour rendre les codes plus lisible.
Compléter la boucle for pour dessiner trois cercles rouge de rayon 50 coller les uns aux autres comme sur le dessin:
Compléter la boucle for pour dessiner trois cercles rouge de rayon 50 coller les uns aux autres comme sur le dessin:


%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
fromturtleimport*
fromturtleimport*
color('red')
color('red')
for_inrange(3):
for_inrange(3):
done()
done()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2.4 Explorer "La tortue"
## 2.4 Explorer "La tortue"
Voici quelques fonctions de la tortue.
Voici quelques fonctions de la tortue.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Estampe
### Estampe
Vous pouvez laisser une impression de la tortue à sa position actuelle avec la fonction `stamp()`.
Vous pouvez laisser une impression de la tortue à sa position actuelle avec la fonction `stamp()`.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
fromturtleimport*
fromturtleimport*
shape('turtle')
shape('turtle')
for_inrange(6):
for_inrange(6):
forward(100)
forward(100)
left(60)
left(60)
stamp()
stamp()
done()
done()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Forme
### Forme
Vous pouvez changer la forme de votre tortue avec la fonction `shape()`.
Vous pouvez changer la forme de votre tortue avec la fonction `shape()`.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 9 </h3>Essayez les formes `'triangle'` et `'arrow'`.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 9 </h3>Essayez les formes `'triangle'` et `'arrow'`.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
fromturtleimport*
fromturtleimport*
backward(200)
backward(200)
stamp()
stamp()
shape('turtle')
shape('turtle')
forward(100)
forward(100)
stamp()
stamp()
shape('circle')
shape('circle')
forward(100)
forward(100)
stamp()
stamp()
shape('square')
shape('square')
forward(100)
forward(100)
done()
done()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2.5 Les erreurs
## 2.5 Les erreurs
Il est important de bien lire et comprendre les messages d'erreur.
Il est important de bien lire et comprendre les messages d'erreur.
Dans cette section, vous allez découvrir les différentes catégories d'erreur et comment les corriger.
Dans cette section, vous allez découvrir les différentes catégories d'erreur et comment les corriger.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### ImportError
### ImportError
Cette erreur survient lorsque vous essayez d'importer un module qui n'existe pas.
Cette erreur survient lorsque vous essayez d'importer un module qui n'existe pas.
Cette erreur survient lorsque vous écrivez mal un mot-clé, ou si vous oubliez une ponctuation. Dans ce cas, le mot-clé mal écrit n'est pas reconnu et il n'est pas colorié correctement dans votre code.
Cette erreur survient lorsque vous écrivez mal un mot-clé, ou si vous oubliez une ponctuation. Dans ce cas, le mot-clé mal écrit n'est pas reconnu et il n'est pas colorié correctement dans votre code.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 11 </h3>Corrigez les trois erreurs de syntaxe et remarquez les éventuelles différences de stylisation.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 11 </h3>Corrigez les trois erreurs de syntaxe et remarquez les éventuelles différences de stylisation.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
froturtleimport*
froturtleimport*
foreiinrange(3)
foreiinrange(3)
forward(100)
forward(100)
left(120)
left(120)
done()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### <font color='red'>NameError</font>
### <font color='red'>NameError</font>
Cette erreur survient lorsque vous écrivez mal le nom d'une variable ou fonction.
Cette erreur survient lorsque vous écrivez mal le nom d'une variable ou fonction.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 12 </h3>Corrigez les trois erreurs de nom.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 12 </h3>Corrigez les trois erreurs de nom.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
fromturtleimport*
fromturtleimport*
for_inrange(n):
for_inrange(n):
forwarde(100)
forwarde(100)
lefft(120)
lefft(120)
done()
done()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### <font color='red'>TypeError</font>
### <font color='red'>TypeError</font>
Cette erreur survient lorsque vous ne mettez pas le nombre d'arguments corrects pour une fonction.
Cette erreur survient lorsque vous ne mettez pas le nombre d'arguments corrects pour une fonction.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 13 </h3>Corrigez les trois erreurs de type.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 13 </h3>Corrigez les trois erreurs de type.
Utiliser votre identifiant EEL et le mot de passe *Sismondi2024* pour faire les exercices de la **série B** de la plateforme [AlgoPython](https://www.algopython.fr/login). [](https://www.algopython.fr/login)
Utiliser votre identifiant EEL et le mot de passe *Sismondi2024* pour faire les exercices de la **série B** de la plateforme [AlgoPython](https://www.algopython.fr/login). [](https://www.algopython.fr/login)
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
---
---
#### Remarque générale
#### Remarque générale
Ce document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)
Ce document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)