{ "cells": [ { "cell_type": "markdown", "id": "9b20e9f0", "metadata": {}, "source": [ "# Partie 1: programmer des fonctions de traitement de listes" ] }, { "cell_type": "markdown", "id": "ddb55983", "metadata": {}, "source": [ "## Liste Python\n", "On souhaite faire un traitement python sur les notes obtenues au cours des 2 premiers trimestres.\n", "Créer une liste et mettre les valeurs 10, 8.9, 9.9, 12.3, 11.1\n", "\n", "Ecrire: \n", "\n", "`notes = [10, 8.9, 9.9, 12.3, 11.1]`\n", "\n", "Afficher la liste `notes`" ] }, { "cell_type": "code", "execution_count": null, "id": "568507e0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "c78cdc01", "metadata": {}, "source": [ "## Ajouter des valeurs\n", "Ajouter maintenant les notes obtenues lors de la période du 3e trimestre: 12.3, 13.1, 14.5, 20\n", "\n", "On utilise la méthode de liste `append`: par exemple, `notes.append(12.3)`, puis `notes.append(13.1)`,...\n", "\n", "A la fin, afficher `notes`." ] }, { "cell_type": "code", "execution_count": null, "id": "d200a655", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "dba25d79", "metadata": {}, "source": [ "## Somme\n", "Le calcul de la somme des éléments necessite d'utiliser une boucle bornée et accumuler les valeurs dans une variable, que l'on nomme par exemple, `s`.\n", "\n", "Dans une fonction que vous appelerez `somme`: Définir une variable `s` que vous mettrez à 0.\n", "\n", "A l'aide d'une boucle bornée, parcourir les éléments de la liste, et ajouter chaque valeur à `s`.\n", "\n", "Retourner `s`\n", "\n", "Puis afficher la somme des valeurs de `notes`" ] }, { "cell_type": "code", "execution_count": null, "id": "dd377869", "metadata": {}, "outputs": [], "source": [ "def somme(tab):\n", " \"\"\"calcule la somme de la liste tab\n", " \"\"\"\n", " s = 0\n", " # a completer\n", " \n", "somme(notes)" ] }, { "cell_type": "code", "execution_count": null, "id": "26569e34", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "6712b7b7", "metadata": {}, "source": [ "La chaine de caractères dans la fonction `\"\"\"calcule la somme de la liste tab\"\"\"` est un commentaire sur une ou plusieurs lignes. Celle-ci représente le *docstring* de la fonction, et peut être appelé avec la fonction `help`:" ] }, { "cell_type": "code", "execution_count": null, "id": "cbd28d05", "metadata": {}, "outputs": [], "source": [ "help(somme)" ] }, { "cell_type": "markdown", "id": "1b67a127", "metadata": {}, "source": [ "## Moyenne\n", "Le calcul de la moyenne se fait en ajoutant toutes les valeurs, et en divisant par le nombre de notes\n", "\n", "1. Ecrire le script de la fonction `moyenne`, et calculer la somme `s`, puis la moyenne des valeurs de `notes`\n", "\n", "\n", "\n", "*Aide:* On utilisera la fonction `len(notes)` qui retourne le nombre d'éléments de `notes`.\n", "\n", "La fonction `moyenne` va alors retourner $s / len(tab)$\n", "\n", "2. Afficher la moyenne de `notes`" ] }, { "cell_type": "code", "execution_count": null, "id": "c308836c", "metadata": {}, "outputs": [], "source": [ "def moyenne(tab):\n", " \"\"\"calcule la moyenne des valeurs de la liste tab\n", " \"\"\"\n", " s = 0\n", " # a completer\n", " \n", "moyenne(notes)" ] }, { "cell_type": "code", "execution_count": null, "id": "d31252c0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "fdca1abc", "metadata": {}, "source": [ "## Max\n", "1. Dans une fonction `max`. On affecte à la variable `m` la première valeur de la liste. On parcours ensuite les éléments `e`, un par un, à l'aide d'une boucle bornée.\n", "\n", "Si l'élément `e` est supérieur à `m`, on affecte à `m` la valeur `e`.\n", "\n", "A la fin de la boucle, on retourne la valeur `m`.\n", "\n", "2. Tester ensuite:\n", "\n", "```\n", "max(notes)\n", "```" ] }, { "cell_type": "code", "execution_count": null, "id": "cce36204", "metadata": {}, "outputs": [], "source": [ "def max(tab):\n", " m = tab[0]\n", " # a completer\n", " \n", "max(notes)" ] }, { "cell_type": "code", "execution_count": null, "id": "5f1ceeab", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "466aadb2", "metadata": {}, "source": [ "## Min\n", "adapter le script précedent pour rechercher le minimum dans la liste `notes`" ] }, { "cell_type": "code", "execution_count": null, "id": "462efd40", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "fb81cf2e", "metadata": {}, "source": [ "## indice du max\n", "On cherche l'indice de la position de la valeur max dans une liste. On utilise le script de la fonction `max`, mais cette fois, la boucle bornée se fait sur les indices et non les valeurs de `tab`:\n", "\n", "```\n", "for i in range(len(tab)):\n", "...\n", "```\n", "\n", "On retourne l'indice de la plus grande valeur, `indice_max`\n", "\n", "*Exemple:*\n", "\n", "```\n", ">>> indice_du_max(notes)\n", "8\n", "```\n", "\n", "1. Compléter le script de la fonction `indice_du_max`\n", "2. Trouver l'indice du max dans `notes`\n" ] }, { "cell_type": "code", "execution_count": null, "id": "ffed8893", "metadata": {}, "outputs": [], "source": [ "def indice_du_max(tab):\n", " m = tab[0]\n", " indice_max = 0\n", " for i in range(len(tab)):\n", " # a completer" ] }, { "cell_type": "code", "execution_count": null, "id": "ac826b53", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "ee771d31", "metadata": {}, "source": [ "## nombre d'occurences\n", "On cherche à compter le nombre de notes supérieures ou egales à la moyenne 10. Pour cela, on utilise une variable `n` que l'on met à zero en debut de script. Puis à l'aide d'une boucle bornée, on parcourt les éléments de la liste `tab`. Chaque fois que la valeur de `e` est supérieure ou egal à 10.0, on incrémente `n` d'une unité. \n", "\n", "On retourne enfin la valeur `n`." ] }, { "cell_type": "code", "execution_count": null, "id": "878e187c", "metadata": {}, "outputs": [], "source": [ "def nombre_sup_moyenne(tab):\n", " n = 0\n", " # a completer" ] }, { "cell_type": "code", "execution_count": null, "id": "b922f939", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "7f7fed63", "metadata": {}, "source": [ "## Rechercher un 20\n", "On recherche la présence eventuelle d'une note egale à 20 dans la liste `notes`. Le parcours de la liste se fera à l'aide d'une boucle bornée, avec pour variant, le rang `i` de l'élément de liste: `for i in range(len(tab)):`\n", "\n", "Si l'élément de liste `tab[i]` vaut 20, ou 20.0, retourner alors l'index `i`.\n", "\n", "Sinon, retourner -1.\n", "\n", "*Exemple:*\n", "\n", "```\n", "recherche_20(notes)\n", "# Affiche 8\n", "```" ] }, { "cell_type": "code", "execution_count": null, "id": "f7f28873", "metadata": {}, "outputs": [], "source": [ "def recherche_20(tab):\n", " for i in range(len(tab)):\n", " # a completer" ] }, { "cell_type": "code", "execution_count": null, "id": "66f22f49", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "07eb80ae", "metadata": {}, "source": [ "## Rechercher n'importe quelle valeur\n", "La fonction possède maintenant 2 paramètres: `tab`, la liste de notes, et `val`, la valeur recherchée.\n", "\n", "Adapter le script précédent pour rechercher le rang de la valeur `val` si celle-ci se trouve dans la liste `tab`\n", "\n", "*Exemple:*\n", "\n", "```\n", "recherche(notes, 20)\n", "# Affiche 8\n", "recherche(notes, 19)\n", "# Affiche -1\n", "```" ] }, { "cell_type": "markdown", "id": "cca6111f", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "1f7dde07", "metadata": {}, "source": [ "## Ajouter un test d'assertion\n", "Comme vous l'imaginez, il ne devrait pas être possible de placer une valeur à chercher inférieure à 0, ou supérieure à 20. Vous allez ajouter un *test d'assertion* pour eviter d'excuter la fonction dans ces 2 cas:\n", "\n", "Exemples:" ] }, { "cell_type": "code", "execution_count": null, "id": "b43eab4c", "metadata": {}, "outputs": [], "source": [ "x = 10\n", "assert x >=0 and x <= 20, \"x doit être compris entre 0 et 20\"" ] }, { "cell_type": "code", "execution_count": null, "id": "24f5913f", "metadata": {}, "outputs": [], "source": [ "x = 22\n", "assert x >=0 and x <= 20, \"x doit être compris entre 0 et 20\"" ] }, { "cell_type": "markdown", "id": "ccee200a", "metadata": {}, "source": [ "Vous avez compris le fonctionnement de l'instruction `assert`? Alors: \n", "\n", "* Placer cette ligne dans la fonction `recherche`\n", "* tester les lignes suivantes" ] }, { "cell_type": "code", "execution_count": null, "id": "4ec36a18", "metadata": {}, "outputs": [], "source": [ "recherche(notes,9.9)" ] }, { "cell_type": "code", "execution_count": null, "id": "6532ae9b", "metadata": {}, "outputs": [], "source": [ "recherche(notes,0)" ] }, { "cell_type": "code", "execution_count": null, "id": "bf10f472", "metadata": {}, "outputs": [], "source": [ "recherche(notes,22)" ] }, { "cell_type": "markdown", "id": "269b52a5", "metadata": {}, "source": [ "# Partie 2: Créer un module\n", "Une fois que vous avez programmé toutes ces fonctions, vous allez les placer dans un module:\n", "\n", "* Avec un IDE python, comme Pyzo ou Spyder: Ouvrir un nouveau fichier \n", "* Placer toutes ces fonctions, l'une après l'autre, en sautant 2 lignes entre chacune d'entre elles.\n", "* sauvegarder le fichier, avec le nom `utilitaire_notes.py`\n", "\n", "Ces fonctions pourront être utilisées depuis un autre fichier python. Il suffira d'importer toutes les fonctions en ajoutant la ligne suivante, en debut de script:\n", "\n", "`from utilitaire_notes import *`\n", "\n", "> A vous de jouer\n", "\n", "1. Créer le module `utilitaire_notes.py`\n", "2. Ouvrir un nouveau notebook, et placer dans la première cellule:\n", "\n", "```\n", "from utilitaire_notes import *\n", "notes = [10, 8.9, 9.9, 12.3, 11.1]\n", "somme(notes)\n", "```\n", "\n", "Vous pouvez alors vous assurer que vos fonctions sont bien importées. Testez certaines d'entre elles." ] }, { "cell_type": "code", "execution_count": null, "id": "c0a60623", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "1db63f63", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "ef5ddb4c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "ee6f8a83", "metadata": {}, "outputs": [], "source": [] } ], "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.7.9" } }, "nbformat": 4, "nbformat_minor": 5 }