{ "cells": [ { "cell_type": "markdown", "id": "a06a76c4", "metadata": {}, "source": [ "# Micro introduction à Python (et à la programmation)" ] }, { "cell_type": "markdown", "id": "aa385104", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Programmer, c'est traduire des _algorithmes_ dans un langage (de\n", " programmation)\n", "\n", "* Un *algorithme* c'est une recette qui part de données et fournit un résultat." ] }, { "cell_type": "markdown", "id": "150e913c", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Ce qu'on va faire pour commencer:\n", "\n", "1- considérer un algorithme simple\n", "\n", "2- le traduire en Python\n", "\n", "*(apprendre par l'exemple)*" ] }, { "cell_type": "markdown", "id": "d9066a47", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Auparavant ... \n", "\n", "* variables.\n", "* structure de contrôle." ] }, { "cell_type": "markdown", "id": "194bc576", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Variables :" ] }, { "cell_type": "code", "execution_count": null, "id": "c322f11f", "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "x = 1\n", "y = x\n", "x = 2*y\n", "x +=1\n", "z=\"truc\"\n", "une_belle_liste=[1,2,3,\"beaucoup\"]" ] }, { "cell_type": "markdown", "id": "5c7a2d8b", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Structures de contrôle\n", "\n", "* _(alternative) :_ \n", "\n", " si ..... alors .... sinon ...\n", "* _(boucle) :_ \n", "\n", " pour i variant entre 1 et 100 faire ...\n", "* _(répétition conditionelle)_: \n", "\n", " tant que _quelque chose est vrai_ faire .... " ] }, { "cell_type": "code", "execution_count": 1, "id": "0610a94b", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "coucou\n" ] } ], "source": [ "x= 1\n", "if x== 1:\n", " print(\"coucou\")\n", "else:\n", " print(x)" ] }, { "cell_type": "code", "execution_count": 2, "id": "5ff063b6", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0\n", "1 2\n", "2 4\n", "3 6\n", "4 8\n" ] } ], "source": [ "for i in range(0,5):\n", " y = 2*i\n", " print(i,y)" ] }, { "cell_type": "code", "execution_count": 3, "id": "292b10af", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "i= 5\n", "while i>0:\n", " i-=1 #décrémenter i de 1\n", "print(i)" ] }, { "cell_type": "markdown", "id": "b136e291", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ " ### Un problème, un algorithme et sa traduction en Python" ] }, { "cell_type": "markdown", "id": "e4abbb26", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ " _Un nombre premier, c'est un nombre entier qui n'est divisible par aucun\n", " nombre entier plus petit que lui :_\n", " " ] }, { "cell_type": "markdown", "id": "7aea39e8", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", " - 2 est premier\n", " - 3 est premier (car 3/2 : reste 1)\n", " " ] }, { "cell_type": "markdown", "id": "bf9c497f", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " - 4 n'est pas premier (4/2 = 2, reste 0)\n", " " ] }, { "cell_type": "markdown", "id": "0918f77d", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " - 5 n'est divisible ni par 2, ni par 3, donc 5 est premier\n", " - etc." ] }, { "cell_type": "markdown", "id": "0ff120db", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Le problème :\n", "\n", "##### trouver le plus petit nombre premier supérieur à $1000$." ] }, { "cell_type": "markdown", "id": "a39591e5", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Algorithme :**\n", "\n", "- construire la liste de tous les nombres premier en partant de 2 \n", " \n", " 2, 3, 5,... \n", " \n", " jusqu'à ce qu'on en trouve un supérieur à 1000." ] }, { "cell_type": "markdown", "id": "27206a71", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " ``` \n", "listePremiers = [2]\n", " n = 3\n", "\n", "tant que le dernier nombre de listePremiers est \n", " inférieur ou égal à 1000 faire:\n", " \n", " début:\n", " \n", "\t - si n n'est divisible par aucun nombre de\n", " listePremiers alors:\n", " \n", " ajouter n à listePremiers\n", "\t\t \n", "\t\t - n <- n+1\n", " \n", " fin\n", " ```\n", " Le résultat est le dernier nombre de ```listePremiers```." ] }, { "cell_type": "markdown", "id": "5f6a6a9e", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "On fait ça _à la main_, pour voir comment ça marche (et s'assurer que c'est juste !) :\n", "\n", "* n= 3 listePremiers = [2]. \n", "\n", " n n'est divisible par aucun nombre de la\n", " liste, donc on l'ajoute à la liste: listePremiers=[2,3]\n", " \n", " n= 4\n", " " ] }, { "cell_type": "markdown", "id": "2ee3d9d3", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", "* n est divisible par un nombre de la liste (2 !).\n", "\n", " n=5" ] }, { "cell_type": "markdown", "id": "b2cb232e", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* 5 n'est divisible ni par 2, ni par 3. Donc il est premier et\n", " listePremiers=[2,3,5]\n", " \n", " n = 6" ] }, { "cell_type": "markdown", "id": "1dde5191", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "##### Les listes en Python:" ] }, { "cell_type": "code", "execution_count": null, "id": "ad328354", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "l= [1,2,5,8]" ] }, { "cell_type": "code", "execution_count": null, "id": "924bd446", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print(l[0])\n", "print(l[2])\n", "print(l[3])" ] }, { "cell_type": "code", "execution_count": null, "id": "aa846607", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print(l[-1])" ] }, { "cell_type": "code", "execution_count": null, "id": "32eb2b8e", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "for x in l:\n", " print(x)" ] }, { "cell_type": "code", "execution_count": null, "id": "2ca293d6", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "l.append('coucou')\n", "print(l)\n", "print(l[-1])" ] }, { "cell_type": "code", "execution_count": null, "id": "d261eb22", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "l= [1,2,5,8]\n", "for x in l:\n", " if x%2 ==0:\n", " print(x,\"est pair\")\n", " else:\n", " print(x, \"est impair\")" ] }, { "cell_type": "code", "execution_count": null, "id": "5fdcb602", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "ListePremiers = [2]\n", "n= 3\n", "\n", "while ListePremiers[-1] <= 1000:\n", "\n", " nEstPremier = True\n", " for x in ListePremiers:\n", " if n%x == 0:\n", " nEstPremier = False\n", " \n", " if nEstPremier:\n", " ListePremiers.append(n)\n", " \n", " n+=1" ] }, { "cell_type": "code", "execution_count": null, "id": "6db056ba", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print(ListePremiers[-1]) " ] }, { "cell_type": "code", "execution_count": null, "id": "6513e90e", "metadata": {}, "outputs": [], "source": [ "print(ListePremiers)" ] }, { "cell_type": "code", "execution_count": null, "id": "76acca29", "metadata": {}, "outputs": [], "source": [ "print(len(ListePremiers))" ] }, { "cell_type": "markdown", "id": "8cd55950", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### On va regarder ce qui se passe un peu plus en détail :" ] }, { "cell_type": "code", "execution_count": null, "id": "2f0802e2", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "ListePremiers = [2]\n", "n= 3\n", "\n", "while ListePremiers[-1] <= 15:\n", "\n", " nEstPremier = True\n", " print(\"n= \",n)\n", " for x in ListePremiers:\n", " if n%x == 0:\n", " nEstPremier = False\n", " print(n,\"n'est pas premier\")\n", " break\n", " if nEstPremier:\n", " print(n,\"est premier\")\n", " ListePremiers.append(n)\n", " print(\"La liste: \",ListePremiers)\n", " continuer=input(\"?\")\n", " n+= 2 #les nombres premiers ne sont pas pairs !\n", "print(\"Résultat :\",ListePremiers[-1])" ] }, { "cell_type": "markdown", "id": "53c0e166", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Fabriquer une boîte noire, qui, pour chaque nombre *x* qu'on lui donnera, renverra le plus petit nombre premier supérieur à *m*. " ] }, { "cell_type": "code", "execution_count": null, "id": "d0c4e6b5", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def premierSup(m):\n", "\n", " ListePremiers = [2]\n", " n= 3\n", "\n", " while ListePremiers[-1] < m:\n", "\n", " nEstPremier = True\n", " for x in ListePremiers:\n", " if n%x == 0:\n", " nEstPremier = False\n", " break\n", " if nEstPremier:\n", " ListePremiers.append(n)\n", " n += 2\n", " return ListePremiers[-1]" ] }, { "cell_type": "code", "execution_count": null, "id": "ac5473f1", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "premierSup(2010)" ] }, { "cell_type": "markdown", "id": "d798371f", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "0n peut mettre la fonction dans un fichier" ] }, { "cell_type": "code", "execution_count": null, "id": "4999edad", "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "from calcul import premierSup" ] }, { "cell_type": "code", "execution_count": null, "id": "b65b5326", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "premierSup(1210)" ] }, { "cell_type": "markdown", "id": "c107dcc5", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Python avancé\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "eedfdfde", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def premierSup(m):\n", "\n", " ListePremiers = [2]\n", " n= 3\n", "\n", " while ListePremiers[-1] < m:\n", "\n", " nEstPremier = all(n%x!=0 for x in ListePremiers)\n", " \n", " if nEstPremier:\n", " ListePremiers.append(n)\n", " n += 2\n", " return ListePremiers[-1]" ] }, { "cell_type": "code", "execution_count": null, "id": "e42db4c8", "metadata": {}, "outputs": [], "source": [ "premierSup(20)" ] }, { "cell_type": "code", "execution_count": null, "id": "12fcc9ef", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def premierSup(m):\n", "\n", " ListePremiers = [2]\n", " n= 3\n", "\n", " while ListePremiers[-1] < m:\n", "\n", " if all(n%x!=0 for x in ListePremiers):\n", " ListePremiers.append(n)\n", " n += 2\n", " return ListePremiers[-1]" ] }, { "cell_type": "code", "execution_count": null, "id": "d73cefad", "metadata": {}, "outputs": [], "source": [ "premierSup(20)" ] }, { "cell_type": "code", "execution_count": null, "id": "e9e0c1c3", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "[x for x in range(10)]" ] }, { "cell_type": "code", "execution_count": null, "id": "efb576d1", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "[2*x-1 for x in range(10)]" ] }, { "cell_type": "code", "execution_count": null, "id": "bf7488cd", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "[x%2 == 0 for x in range(10)]" ] }, { "cell_type": "code", "execution_count": null, "id": "d00c507b", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "all([x%2 == 0 for x in range(10)])" ] } ], "metadata": { "celltoolbar": "Diaporama", "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.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }