diff --git a/PreStSauveur/Programmation/Projets Python.ipynb b/PreStSauveur/Programmation/Projets Python.ipynb
index 30a9930..6224fba 100644
--- a/PreStSauveur/Programmation/Projets Python.ipynb
+++ b/PreStSauveur/Programmation/Projets Python.ipynb
@@ -14,9 +14,8 @@
"* [Générateur d'excuses](#Générateur-d'excuses)\n",
"* [Magic 8 ball](#Magic-8-ball)\n",
"* [Deviner un nombre](#Deviner-un-nombre)\n",
- "* [Pierre feuille ciseau](#Pierre-Feuille-Ciseau)\n",
- "* [Deviner un nombre (améliorations)](#Deviner-un-nombre)\n",
"* [Generateur de Smiley](#Generateur-de-simleys)\n",
+ "* [Pierre feuille ciseau](#Pierre-Feuille-Ciseau)\n",
"* [Chiffrement de Cesar](#Chiffrement-de-Cesar)\n",
"* [Polynome du 2nd degré](#Polynome-du-2nd-degre)\n",
"-----------\n",
@@ -25,7 +24,7 @@
"* [Les conditions if](#Condition-if)\n",
"* [Les boucles for](#Boucles-for)\n",
"* [Les boucles while](#Boucles-while)\n",
- "* [Les fonctions](#Fonction)\n",
+ "* [Les fonctions](#Fonctions)\n",
"------------\n",
"Ressouces Python\n",
"* [site du zero](http://openclassrooms.com/courses/apprenez-a-programmer-en-python) (cours en ligne)\n",
@@ -258,9 +257,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "* Modifier les lignes précédentes pour se présenter **Bonjour, je m'appelle (Bob)**.\n",
+ "* Modifier les lignes précédentes pour se présenter **Bonjour, je m'appelle Bob** où **Bob** est un nom stocké dans une variable **nom**.\n",
"\n",
- "Pour demander quelque chose à l'utilisateur, on utilise la fonction `input`"
+ "Pour demander quelque chose à l'utilisateur, on utilise la fonction `input`.\n",
+ "\n",
+ "Dans le programme suivant, l'ordinateur pose une question (**Nom du coupable (masculin)?**), attend que l'utilisateur donne une réponse puis réutilise cette réponse pour faire une phrase (**C'est pas moi! c'est ....**)"
]
},
{
@@ -272,8 +273,8 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Nom du coupable (masculin)? bob\n",
- "C'est pas moi! C'est bob\n"
+ "Nom du coupable (masculin)? Bob\n",
+ "C'est pas moi! C'est Bob\n"
]
}
],
@@ -286,7 +287,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "* Finir d'écrire le programme qui permettra de générer une excuse"
+ "* Modifier les lignes précédentes pour que l'ordinateur demande un verbe d'action puis construit une phrase utilisant ce verbe d'action.\n",
+ "\n",
+ "### Proposition d'étapes\n",
+ "\n",
+ "* Finir d'écrire le programme qui demande des informations puis qui génére une excuse"
]
},
{
@@ -340,7 +345,7 @@
{
"data": {
"text/plain": [
- "'reponse 1'"
+ "'reponse 2'"
]
},
"execution_count": 11,
@@ -356,7 +361,10 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "* En réutilisant la fonction **input** vue précédement, écrire un programme qui propose de poser une question et qui lui apporte une réponse!"
+ "### Proposition d'étapes\n",
+ "\n",
+ "* L'ordinateur demande une question existentielle.\n",
+ "* L'ordinateur apporte une réponse aléatoire choisie parmis plusieurs réponses"
]
},
{
@@ -367,6 +375,10 @@
"\n",
"Nous allons maintenant écrire un programme qui va chercher à faire deviner à l'utilisateur un nombre choisi aléatoirement par Python.\n",
"\n",
+ "L'ordinateur choisit un nombre aléatoire entre 1 et 20.\n",
+ "L'utilisateur propose un nombre.\n",
+ "L'ordinateur répond si le nombre proposé est plus grand, plus petit ou égal au nombre choisi.\n",
+ "\n",
"Pour faire choisir un nombre entier à Python, on utilise la fonction `randint(min,max)` (`randint` signifie random integer = entier aléatoire)"
]
},
@@ -379,7 +391,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "2\n"
+ "15\n"
]
}
],
@@ -394,13 +406,70 @@
"source": [
"Faites executer plusieurs fois cette commande pour remarquer qu'elle ne retourne pas toujours le même résultat.\n",
"\n",
+ "### Propositions d'étapes\n",
+ "\n",
"* Completer votre programme pour demander une réponse à l'utilisateur *(utilisez `int(input(\"question\"))` plutôt que `input(\"question\")` pour que la réponse soit transformée en entier)*\n",
"\n",
"* Regarder la section sur [Condition if](#Condition-if) pour adapter l'exemple et savoir lequel du nombre choisi par l'ordinateur ou de l'utilisateur est le plus grand.\n",
"\n",
+ "\n",
"* Écrire le programme final qui fait choisir un nombre à l'ordinateur, qui demande un nombre à l'utilisateur puis qui dit si le nombre donné par l'utilisateur est plus grand ou plus petit.\n",
"\n",
- "* Pour améliorer notre programme, il faudrait que l'utilisateur puisse rententer de deviner le nombre. Regardez la section [Boucle while](#Boucle-while) pour améliorer votre programme."
+ "* Pour améliorer notre programme, il faudrait que l'utilisateur puisse rententer de deviner le nombre. Regardez la section [Boucle while](#Boucle-while) pour améliorer votre programme.\n",
+ "\n",
+ "* On pourra continuer à l'améliorer en comptant et en annonçant le nombre de tentative à la fin."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Generateur de simleys\n",
+ "\n",
+ "Pour ce projet, nous allons programmer un générateur de smileys. Nous allons définir quelquels éléments de ce smiley et l'ordinateur choisira aléatoirement parmi ces éléments pour créer le smiley.\n",
+ "\n",
+ "Voici les éléments du smiley."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "LISTE_CHAPEAU = [u\" \\n _===_\", \" ___ \\n .....\", \" _ \\n /_\\ \", \" ___ \\n (_*_)\"]\n",
+ "LISTE_NEZ = [u\",\", \".\", \"_\", \" \"]\n",
+ "LISTE_OEIL = [u\".\", \"o\", \"O\", \"-\"]\n",
+ "LISTE_GAUCHE_CORPS_HAUT = [u\" \", \"\\\\\", \" \", \" \"]\n",
+ "LISTE_GAUCHE_CORPS_BAS = [u\"<\", \" \", \"/\", \" \"]\n",
+ "LISTE_DROITE_CORPS_HAUT = [u\" \", \"/\", \" \", \" \"]\n",
+ "LISTE_DROITE_CORPS_BAS = [u\">\", \" \", \"\\\\\", \" \"]\n",
+ "LISTE_TORSE = [u\" : \", \"] [\", \"> <\", \" \"]\n",
+ "LISTE_BASE = [u\" : \", '\" \"', \"___\", \" \"]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "* Le programme qui séléctionnera aléatoirement des éléments pour construire un smiley de ce type:\n",
+ "\n",
+ " _\n",
+ " /_\\ \n",
+ " (o O)\n",
+ " <( : ) \n",
+ " (\" \") \n",
+ " \n",
+ "### Propositions d'étapes\n",
+ "\n",
+ "* Recopier les listes de parties\n",
+ "* Choisir aléatoirement un chapeau\n",
+ "* Construire aléatoirement une tête '(oeil nez oeil)'\n",
+ "* Construire aléatoirement les autres parties du corps\n",
+ "* Construire tout le smiley"
]
},
{
@@ -425,100 +494,6 @@
"* En utilisant les [conditions if](#Condition-if) comparer les deux choix pour determiner qui est le vaincueur."
]
},
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Deviner un nombre (amélioration)\n",
- "\n",
- "Reprenez votre programme qui fait deviner à l'utilisateur un nombre choisi par l'ordinateur. Le soucis de ce programme est que nous n'avons qu'un essai ce qui n'est pas très pratique pour trouver le nombre...\n",
- "\n",
- "Nous allons améliorer ce programme laisser plus de chance à l'utilisateur. Pour cela nous allons faire une boucle `while` (tant que en français)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "un tour\n",
- "un tour\n",
- "un tour\n",
- "un tour\n",
- "un tour\n",
- "un tour\n",
- "un tour\n",
- "un tour\n",
- "un tour\n",
- "Fini! Et a vaut 20\n"
- ]
- }
- ],
- "source": [
- "a = 11\n",
- "while a < 20: #tant que a est plus petit que 20\n",
- " print(\"un tour\")\n",
- " a = a + 1\n",
- "print(\"Fini! Et a vaut \", a)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "On peut aussi créer une variable `aPasTrouve = True` (True en anglais signifie vrai) et dès que l'utilisateur a trouvé la bonne valeur, on change `aPasTrouve = False` (False en anglais signifie faux).\n",
- "\n",
- "* Écrire cette amélioration du programme.\n",
- "* Améliorer votre programme, en comptant le nombre de tentatives."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Generateur de simleys\n",
- "\n",
- "Pour ce projet, nous allons programmer un générateur de smileys. Nous allons définir quelquels éléments de ce smiley et l'ordinateur choisira aléatoirement parmi ces éléments pour créer le smiley.\n",
- "\n",
- "Voici les éléments du smiley."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "LISTE_CHAPEAU = [u\" \\n _===_\", \" ___ \\n .....\", \" _ \\n /_\\ \", \" ___ \\n (_*_)\"]\n",
- "LISTE_NEZ = [u\",\", \".\", \"_\", \" \"]\n",
- "LISTE_OEIL = [u\".\", \"o\", \"O\", \"-\"]\n",
- "LISTE_GAUCHE_CORPS_HAUT = [u\" \", \"\\\\\", \" \", \" \"]\n",
- "LISTE_GAUCHE_CORPS_BAS = [u\"<\", \" \", \"/\", \" \"]\n",
- "LISTE_DROITE_CORPS_HAUT = [u\" \", \"/\", \" \", \" \"]\n",
- "LISTE_DROITE_CORPS_BAS = [u\">\", \" \", \"\\\\\", \" \"]\n",
- "LISTE_TORSE = [u\" : \", \"] [\", \"> <\", \" \"]\n",
- "LISTE_BASE = [u\" : \", '\" \"', \"___\", \" \"]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "* Le programme qui séléctionnera aléatoirement des éléments pour construire un smiley de ce type:\n",
- "\n",
- " _\n",
- " /_\\ \n",
- " (o O)\n",
- " <( : ) \n",
- " (\" \") "
- ]
- },
{
"cell_type": "markdown",
"metadata": {},
@@ -579,7 +554,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 14,
"metadata": {},
"outputs": [
{
@@ -610,7 +585,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 15,
"metadata": {},
"outputs": [
{
@@ -640,7 +615,7 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
@@ -677,7 +652,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -707,7 +682,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
@@ -734,7 +709,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 19,
"metadata": {},
"outputs": [
{
@@ -774,7 +749,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
@@ -782,8 +757,8 @@
"output_type": "stream",
"text": [
"Comment t'appelles tu?\n",
- "bob\n",
- "Ah! Tu t'appelles bob\n"
+ "Ivan\n",
+ "Ah! Tu t'appelles Ivan\n"
]
}
],
@@ -811,7 +786,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
@@ -826,11 +801,11 @@
"a = 2\n",
"b = 3\n",
"\n",
- "if a > b: \n",
+ "if a > b: # Si\n",
" print(\"a plus grand que b\")\n",
- "elif a == b:\n",
+ "elif a == b: # Sinon si\n",
" print(\"a est égal à b\")\n",
- "else:\n",
+ "else: # Sinon\n",
" print(\"a est plus petit que b\")"
]
},
@@ -847,7 +822,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
@@ -882,7 +857,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 23,
"metadata": {},
"outputs": [
{
@@ -922,7 +897,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 24,
"metadata": {},
"outputs": [
{
@@ -961,19 +936,19 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "5\n",
- "8\n",
- "11\n",
- "14\n",
- "17\n",
- "20\n",
+ "u vaut 5\n",
+ "u vaut 8\n",
+ "u vaut 11\n",
+ "u vaut 14\n",
+ "u vaut 17\n",
+ "u vaut 20\n",
"u a depassé 50 et vaut 20\n"
]
}
@@ -982,7 +957,7 @@
"u = 2\n",
"while u < 19:\n",
" u = u + 3\n",
- " print(u)\n",
+ " print(\"u vaut \", u)\n",
"print(\"u a depassé 50 et vaut\", u)"
]
},
@@ -995,13 +970,22 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
+ "Quelle est la couleur du cheval blanc d'Henri 4?\n",
+ "bleu\n",
+ "Non! Recommence!\n",
+ "Quelle est la couleur du cheval blanc d'Henri 4?\n",
+ "vert\n",
+ "Non! Recommence!\n",
+ "Quelle est la couleur du cheval blanc d'Henri 4?\n",
+ "jaune\n",
+ "Non! Recommence!\n",
"Quelle est la couleur du cheval blanc d'Henri 4?\n",
"blanc\n",
"Bravo!\n",
@@ -1021,6 +1005,193 @@
" print(\"Non! Recommence!\")\n",
"print(\"Voila tu as réussi!\")"
]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Fonctions\n",
+ "\n",
+ "Une fonction est un morceau de programme qui évitera de coder plusieurs fois la même chose. Quand on programme on dit souvent `Si c'est la 3e fois que l'on écrit ces lignes c'est qu'il faut en faire une fonction`.\n",
+ "\n",
+ "Voici différentes utilisation de fonctions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Fonctions numériques\n",
+ "\n",
+ "En math, on utilise les fonctions pour décrire les transformations (de nombres le plus souvent). \n",
+ "\n",
+ "Par exemple:\n",
+ "$$ f:x \\mapsto 3x + 2$$\n",
+ "Cette fonction $f$ prend un nombre, le multiplie par 3 puis ajoute 2. On pourra la coder de la façon suivante:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def f(x):\n",
+ " return 3*x+2"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "On vient de coder cette fonction, on peut ensuite l'utiliser"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "14\n",
+ "L'image de 2.5 par la fonction f est 9.5\n",
+ "f(-2) = -4\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(f(4))\n",
+ "print(\"L'image de 2.5 par la fonction f est \", f(2.5))\n",
+ "print(\"f(-2) = \", f(-2))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Au collège, on a vu les \"programmes de calculs\". Ils peuvent eux aussi être codé avec des fonctions.\n",
+ "\n",
+ "- Choisir un nombre\n",
+ "- Ajouter 5\n",
+ "- Diviser par 10\n",
+ "\n",
+ "Se code de la façon suivante:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def programme(nombre):\n",
+ " reponse = nombre + 5\n",
+ " reponse = reponse / 10\n",
+ " return reponse"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "6.5\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(programme(60))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### D'autres fonctions\n",
+ "\n",
+ "Les fonctions numériques sont très utilisées en math mais en programmation, on manipule beaucoup d'autres types de fonctions.\n",
+ "\n",
+ "On pourrait vouloir transformer un texte en un titre entouré de symboles `#`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def entoure(titre):\n",
+ " return '##### ' + titre + ' #####'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "##### Mon titre #####\n",
+ "##### L'histoire du petit chaperon rouge #####\n",
+ "##### Fin #####\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(entoure('Mon titre'))\n",
+ "print(entoure(\"L'histoire du petit chaperon rouge\"))\n",
+ "print(entoure('Fin'))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "On peut même mettre un autre argument (en plus de `titre`) pour entourer avec autre chose que `#`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def entoure(texte, symbole):\n",
+ " return symbole*4 + ' ' + texte + ' ' + symbole*4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "---- La belle au bois dormant ----\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(entoure('La belle au bois dormant', '-'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {