Skip to content
Snippets Groups Projects
Commit c81c4069 authored by Vincent Namy (EDU_GE)'s avatar Vincent Namy (EDU_GE)
Browse files

02_Boucle_for.ipynb : Clarifier les énoncés

parent ff79c91d
No related branches found
No related tags found
No related merge requests found
{"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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; Exercice 4 </h3>\n\nDessinez une usine avec un toit en dents de scie.\n![Image de losange](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap2/Toit_dent_de_scie.svg)"},{"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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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![Image de losange](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap2/3cercles.png)"},{"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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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> &nbsp; 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). [![A mushroom-head robot](https://www.algopython.fr/css/img/navbar-logo.png 'AlgoPython')](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![Licence Creative Commons](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)\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
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class = \"alert alert-danger\"> \n",
" \n",
"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!**\n",
"\n",
"Pour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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|"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Répéter - `for`\n",
"\n",
"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 :\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"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> &nbsp; Quizz </h3> \n",
" \n",
"```\n",
"Une boucle informatique est\n",
"\n",
"A) une instruction\n",
"B) un passage ondulé\n",
"C) une section de code répétée\n",
"D) une protection thermique\n",
"E) un cercle dessiné par \"Turtle\"\n",
"```"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Ta réponse : "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details>\n",
"<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \n",
"Réponse (Cliquer pour dévoiler)\n",
"</summary> \n",
"\n",
"<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n",
"\n",
"C) une section de code répétée\n",
"</div>\n",
"</details>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.1 La répétition\n",
"\n",
"Revenons vers un exemple simple : dessiner un carré.\n",
"\n",
"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()`.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"forward(100)\n",
"left(90)\n",
"forward(100)\n",
"left(90)\n",
"forward(100)\n",
"left(90)\n",
"forward(100)\n",
"left(90)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ne serait-ce pas pratique de pouvoir dire à la tortue de répéter ces instructions 4 fois ?\n",
"Ceci est possible avec une boucle `for`. \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 1 </h3>Transformez le rectangle en triangle.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(4):\n",
" forward(100)\n",
" left(90)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-warning\"><b>A savoir:</b> \n",
" \n",
"Pour distinguer les instructions qui seront répétées de celles qui ne le seront pas, on <b>indente</b> 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",
"\n",
"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 ou la <b>touche Tabulation</b> pour rendre les codes plus lisibles.\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> &nbsp; Quizz </h3> \n",
" \n",
"```\n",
"\n",
"Une indentation de texte est\n",
"\n",
"A) un décalage vers la gauche\n",
"B) un décalage vers la droite\n",
"C) une mise en paragraphe\n",
"D) une mise en sous-section\n",
"```"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Ta réponse : "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details>\n",
"<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \n",
"Réponse (Cliquer pour dévoiler)\n",
"</summary> \n",
"\n",
"<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n",
"\n",
"B) un décalage vers la droite\n",
"</div>\n",
"</details>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> &nbsp; Quizz </h3> \n",
" \n",
"```\n",
"Avez-vous compris la notion d'indentation ?\n",
"Dans l'exemple ci-dessous (juste après la question/réponses) combien de fois le texte \"Au revoir\" va être affiché ?\n",
"Essayer de répondre puis exécuter le programme qui suit pour vérifier votre réponse\n",
"\n",
"A) 0 fois\n",
"B) 1 fois\n",
"C) 5 fois\n",
"D) le code fera une une erreur à cause de l'indentation dans la boucle for\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Dans cette exemple l'instruction B ne fait pas partie de la boucle.\n",
"\n",
"for _ in range(5):\n",
" print(\"Hello\")\n",
" print(\"----------\")\n",
"print(\"Au revoir\")"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Ta réponse : "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details>\n",
"<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \n",
"Réponse (Cliquer pour dévoiler)\n",
"</summary> \n",
"\n",
"<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n",
"\n",
"B) 1 fois\n",
"</div>\n",
"</details>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.3 Faire des figures avec les boucles\n",
"\n",
"### Polygone régulier\n",
"Avec une boucle `for`, nous pouvons simplifier le dessin des formes symétriques."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 2 </h3>\n",
"\n",
"1. Utiliser une boucle pour réécrire le programme ci-dessous \n",
"2. Quelle est la figure dessinée ?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"forward(100)\n",
"left(60)\n",
"forward(100)\n",
"left(60)\n",
"forward(100)\n",
"left(60)\n",
"forward(100)\n",
"left(60)\n",
"forward(100)\n",
"left(60)\n",
"forward(100)\n",
"left(60)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 3 </h3>\n",
"\n",
"Compléter le programme ci-dessous pour tracer un octogone. Un octogone est un polygone à huit sommets, donc huit côtés."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"forward(100)\n",
"left(45)\n",
"\n",
"# à compléter\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Escalier\n",
"\n",
"Pour dessiner un escalier, il faut simplement répéter dans une boucle le dessin pour une seule marche.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(5):\n",
" forward(20)\n",
" left(90)\n",
" forward(20)\n",
" right(90)\n",
"\n",
"forward(100)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour dessiner des dents de scie, il faut simplement répéter dans une boucle le dessin pour une seule dent.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 4 </h3>\n",
"\n",
"Dessinez une usine avec un toit en dents de scie.\n",
"![Image de losange](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap2/Toit_dent_de_scie.svg)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(4):\n",
" left(45)\n",
" forward(71)\n",
" right(135)\n",
" forward(50)\n",
" left(90)\n",
"\n",
"forward(80)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Éventail\n",
"\n",
"Que se passe-t-il si nous dessinons une ligne (`forward()`/`backward()`) et tournons chaque fois d'un petit angle ?\n",
"C'est un peu comme un éventail qui s'ouvre.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 5 </h3>\n",
"\n",
"Doublez l'angle de rotation dans `left()`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(18):\n",
" forward(100)\n",
" backward(100)\n",
" left(10)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 6 </h3>\n",
"\n",
"Que se passe-t-il si nous avançons plus que nous reculons ?\n",
"Une toute petite modification du programme peut faire une chouette différence.\n",
"\n",
"Modifiez les valeurs dans `forward()` et `backward()`.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(18):\n",
" forward(100)\n",
" backward(90)\n",
" left(20)\n",
"\n",
"done()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Étoile\n",
"\n",
"Voici une autre façon de toujours avancer, mais en tournant chaque fois d'un angle un peu plus petit que 180°.\n",
"Essayons !\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 7 </h3>\n",
"\n",
"Essayez de changer le nombre de pics de l'étoile."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(9):\n",
" forward(200)\n",
" left(160)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Cercle\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 8 </h3>\n",
"\n",
"Compléter la boucle for pour dessiner trois cercles rouge de rayon 50 collés les uns aux autres comme sur le dessin:\n",
"![Image de losange](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap2/3cercles.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Rappel: \n",
"\n",
"La fonction circle(R, A) permet de dessiner un arc de cercle de rayon R et d'angle A.\n",
"\n",
"Exemple: circle(100, 360) dessine un cercle de rayon 100.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"color('red')\n",
"for _ in range(3):\n",
" \n",
"\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.4 Explorer \"La tortue\"\n",
"\n",
"Voici quelques fonctions de la tortue.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Estampe\n",
"\n",
"Vous pouvez laisser une impression de la tortue à sa position actuelle avec la fonction `stamp()`.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"shape('turtle')\n",
"\n",
"for _ in range(6):\n",
" forward(100)\n",
" left(60)\n",
" stamp()\n",
"\n",
"done()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Forme\n",
"\n",
"Vous pouvez changer la forme de votre tortue avec la fonction `shape()`.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 9 </h3>Essayez les formes 'triangle', 'arrow', 'circle' et 'square'.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"shape('turtle')\n",
"\n",
"for _ in range(6):\n",
" forward(100)\n",
" left(60)\n",
" stamp()\n",
"\n",
"done()\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.5 Les erreurs\n",
"\n",
"Il est important de bien lire et comprendre les messages d'erreur.\n",
"Dans cette section, vous allez découvrir les différentes catégories d'erreur et comment les corriger.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ImportError\n",
"\n",
"Cette erreur survient lorsque vous essayez d'importer un module qui n'existe pas.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 10 </h3>Corrigez l'erreur d'importation.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtl import *\n",
"\n",
"for i in range(3):\n",
" forward(100)\n",
" left(120)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### <font color='red'>SyntaxError</font>\n",
"\n",
"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.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 11 </h3>Corrigez les trois erreurs de syntaxe et remarquez les éventuelles différences de stylisation.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fro turtle import *\n",
"\n",
"fore i in range(3)\n",
" forward(100)\n",
" left(120)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### <font color='red'>NameError</font>\n",
"\n",
"Cette erreur survient lorsque vous écrivez mal le nom d'une variable ou fonction.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 12 </h3>Corrigez les trois erreurs de nom.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(n):\n",
" forwarde(100)\n",
" lefft(120)\n",
"\n",
"done()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### <font color='red'>TypeError</font>\n",
"\n",
"Cette erreur survient lorsque vous ne mettez pas le nombre d'arguments corrects pour une fonction.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 13 </h3>Corrigez les trois erreurs de type.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range():\n",
" forward()\n",
" left(100, 120)\n",
"\n",
"done()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exercices d'entraînement "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 14 </h3>\n",
"\n",
"Réécrire le code suivant en remplaçant par une boucle `for` partout où c’est possible.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"forward(20)\n",
"right(40)\n",
"forward(20)\n",
"right(40)\n",
"forward(20)\n",
"right(40)\n",
"forward(20)\n",
"right(40)\n",
"forward(-40)\n",
"left(30)\n",
"forward(-40)\n",
"left(30)\n",
"forward(20)\n",
"right(40)\n",
"forward(20)\n",
"right(40)\n",
"forward(-40)\n",
"left(30)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> &nbsp; Exercice 15 </h3>\n",
"\n",
"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). [![A mushroom-head robot](https://www.algopython.fr/css/img/navbar-logo.png 'AlgoPython')](https://www.algopython.fr/login)\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"#### Remarque générale\n",
"\n",
"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)\n",
"![Licence Creative Commons](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)\n"
]Update
"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.11.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment