{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Découverte de l'environnement Jupyter\n", "\n", "> Fastpages Notebook Blog Post\n", "- toc: true\n", "- badges: true\n", "- comments: true\n", "- categories: [jupyter, formation]\n", "- image: https://respawner.fr/blog/public/Divers/.python_t.jpg\n", "\n", "\n", "\n", "\n", "## Python ? iPython ? kézako ??\n", "Python est un langage de programmation très utilisé dans l'industrie ainsi que dans le domaine de la recherche. Il est étudié à l'université et en classe préparatoires. Il se développe également de plus en plus en lycée - plusieurs manuels scolaires de lycée y font maintenant référence. ![Python logo](https://respawner.fr/blog/public/Divers/.python_t.jpg)\n", "Jupyter est un environnement interactif permettant l'exécution de python. Vous en avez l'illustration sous les yeux puisque c'est Jupyter qui vous amène le langage Python dans votre navigateur internet !\n", "\n", "C'est un outil pédagogique très riche car il permet de mélanger en un seul lieu des consignes et des morceaux de programme. Jupyter est en quelque sorte un cahier de recherche interactif ! Nous allons le voir à l'oeuvre tout au long de cette formation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Concrêtement, comment ça marche ?\n", "Il y a deux type de cellules : \n", "- les cellules contenant du texte (*Markdown*, *Headers*)\n", "- les cellules contenant des instructions Python : `In [ ]`\n", "\n", "Vous pouvez à tout moment changer le type d'une cellule grâce à la liste déroulante sur la barre d'outils. Vous pouvez choisir entre :\n", "- code : la cellule contient alors des instructions Python qui seront interprétées\n", "- Markdown : la cellule contient alors du texte qui sera juste affiché\n", "- Heading x : la cellule s'affichera comme un titre de section.\n", "\n", "Pour valider une cellule, appuyez sur la touche `shift-enter` ou bien cliquez sur le bouton de la barre d'icônes.\n", "\n", "Regardez ci-dessous votre première ligne de code Python : Simple n'est-ce pas ?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#collapse\n", "# Ceci est une cellule Python\n", "# Le code qu'elle contient peut être exécuté\n", "# en tapant Shift+Entrée\n", "\n", "print(1+1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Et la pédagogie dans tout ça ?\n", "\n", "Grâce à l'environnement Jupyter, l'élève a sous les yeux les consignes du professeur ainsi que l'outil lui permettant de les réaliser, le tout dans un environnement familier qu'est le navigateur internet. Prenons un exemple d'activité d'algorithmique." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Coordonnées du milieu d'un segment\n", "\n", "On rappelle la formule : si $I$ est le milieu de $[AB]$, $$I=\\left( \\dfrac{x_A+x_B}{2};\\dfrac{x_A+x_B}{2} \\right)$$\n", "\n", "*Oui, je sais que vous le savez mais c'est pour frimer avec l'insertion de formules $\\LaTeX$ dans Jupyter !!*\n", "\n", "**Revenons aux choses sérieuses...**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compléter l'algorithme ci-dessous, écrit en langage naturel\n", "\n", "- Pour modifier l'algorithme, double-cliquez sur la cellule puis complétez les blancs.\n", "- Pour valider votre travail, tapez ***Shift+Entree***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Algorithme\n", "\n", " Définir la fonction milieu qui prend 4 pamamètres : xA, yA, xB, yB\n", " xI prend la valeur ...\n", " yI prend la valeur ...\n", " retourner ...\n", " Fin de la fonction milieu\n", "\n", " Appeler la fonction ... avec les paramètres ...\n", " Stocker les résultats dans les variables xI et yI" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Codage de l'algorithme en Python\n", "# Remplacez les ... par ce qui va bien :)\n", "\n", "def milieu(xA,yA,xB,yB):\n", " xI=...\n", " yI=...\n", " return ...\n", "\n", "xI,yI=milieu(...)\n", "(xI,yI)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous avons ainsi créé une ***fonction*** python. Cela nous permet d'enrichir le langage python avec nos propres commandes. Maintenant, notre langage préféré sais calculer des milieux !!\n", "\n", "Validez les cellules ci-dessous pour vous en convaincre." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "milieu(1,2,5,6)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "milieu(2,3,4,5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tiens c'est bizarre, on dirait que c'est le même milieu. Vérifions avec Python !\n", "\n", "Validez la cellule ci-dessous." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "milieu(1,2,5,6)==milieu(2,3,4,5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remarquez la présence du symbole ***==*** pour **tester** l'égalité de deux objets. Il ne faut pas le confondre avec le symbole ***=*** qui permet d'**affecter** une valeur à une variable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Complétez :\n", "\n", "Soient A(1;...) B(...;...) C(5;...) D(...;...)\n", "\n", "Les segments [AC] et [BD] ont même milieu donc le quadrilatère ... est un ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ecrire une nouvelle fonction\n", "\n", "En vous aidant de la démarche précédente, complétez la définition d'une fonction ***estParallelogramme*** prenant en arguments les coordonnées de 4 points A, B, C et D puis retournant **Vrai** ou **Faux** selon que le quadrilatère ABCD est un parallélogramme ou pas.\n", "\n", " Définir la fonction ... qui prend ... pamamètres : ...\n", " test prend la valeur ...\n", " retourner ...\n", " Fin de la fonction ...\n", "\n", " Entrées :\n", " Saisir ...\n", " Traitement :\n", " Appeler la fonction ... avec les paramètres ...\n", " Stocker le résultat dans la variable ...\n", " Sortie :\n", " Afficher ..." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Codez à présent cette fonction dans cette cellule\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# On vérifie que cela marche. La cellule doit afficher True\n", "test=estParallelogramme(1,2,2,3,5,6,4,5)\n", "print(test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Application\n", "Utiliser la fonction que l'on vient de définir pour dire si le quadrilatère ABCD est un parallélogramme :\n", "\n", "$A\\left(-2;2\\right)$ $B\\left(\\dfrac 2 5;-\\dfrac 6 5\\right)$ $C\\left(4;\\dfrac 2 5\\right)$ $D\\left(\\dfrac 9 5;3\\right)$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# A vous de jouer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Oui mais je veux voir la figure !!\n", "\n", "Pas de panique, validez la cellule ci-dessous et vous pourrez facilement afficher des points ou des segments dans Jupyter." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%pylab inline\n", "## Pour cette section on définit deux fonctions \n", "\n", "def trace_point(P,nom=\"\"):\n", " plot(P[0],P[1],\"ro\")\n", " text(P[0]-(P[1]-P[0])/6,P[1], nom, color='r')\n", "def trace_segment(P,Q):\n", " plot([P[0],Q[0]],[P[1],Q[1]],\"b\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "tadaaaaa..." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# et on définit si on souhaite l'échelle de notre repère\n", "xlim(-5,5) # On met ici l'échelle sur l'axe des abscisses\n", "ylim(-5,5) # et la l'adresse sur l'axe des ordonnées\n", "grid()\n", "\n", "A=(-2,2)\n", "B=(2/5,-6/5)\n", "C=(4,-1/5)\n", "D=(8/5,3)\n", "trace_point(A,\"A\")\n", "trace_point(B,\"B\")\n", "trace_point(C,\"C\")\n", "trace_point(D,\"D\")\n", "trace_segment(A,B)\n", "trace_segment(B,C)\n", "trace_segment(C,D)\n", "trace_segment(D,A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# C'est génial Python, je le veux je le veux !!\n", "\n", "Python est un langage libre, gratuit et multiplateforme. Il sest disponible sur Window$, Linux, mac, ainsi que sur smartphones et tablettes Apple ou Androhideux.\n", "\n", "Pour télécharger Python, vous pouvez vous rendre sur le site officiel http://python.org et choisir la version 3.6.2, mais cela n'installera que l'environnement très basique ***IDLE***.\n", "\n", "Pour avoir Python dans l'environnement Jupyter que l'on vient d'utiliser, je recommande d'installer la distribution clé en main [Anaconda](https://www.anaconda.com/download/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Je veux Python mais je ne veux/peux rien installer sur mon ordinateur\n", "Pas de panique, il existe des environnements prêts à l'emploi disponible sur internet :\n", "\n", "- https://try.jupyter.org/ est un environnement jupyter complet prêt à l'emploi mais attention, les classeurs réalisés sur ce site sont temporaires, c'est à dire détruits à la déconnexion. Il faut donc bien penser à télécharger en local son travail avant de quitter...\n", "- https://repl.it/languages/python3 est un environnement entièrement en ligne du type IDLE donc console + éditeur de programme. Cela permet de tester rapidement un petit programme\n", "- http://pythontutor.com/ est un peu différent car il permet une exécution pas à pas des programme avec visualisation en temps réel du contenu des variables ce qui est un formidable outil pédagogique et de débuggage !" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }