{ "nbformat_minor": 0, "nbformat": 4, "cells": [ { "source": [ "$$\n", "\\def\\CC{\\bf C}\n", "\\def\\QQ{\\bf Q}\n", "\\def\\RR{\\bf R}\n", "\\def\\ZZ{\\bf Z}\n", "\\def\\NN{\\bf N}\n", "$$\n", "# Fonctions `def`" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "from __future__ import division, print_function # Python 3" ], "outputs": [], "metadata": {} }, { "source": [ "Une fonction rassemble un ensemble d'instructions qui permettent d'atteindre un certain objectif commun. Les fonctions permettent de s\u00e9parer un programme en morceaux qui correspondent \u00e0 la fa\u00e7on dont on pense \u00e0 la r\u00e9solution d'un probl\u00e8me.\n", "\n", "La syntaxe pour la d\u00e9finition d'une fonction est:" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "def FONCTION( PARAMETRES ):\n", " INSTRUCTIONS" ], "outputs": [], "metadata": {} }, { "source": [ "La ligne d'en-t\u00eate commence avec `def` et se termine par un deux-points. Le choix du nom de la fonction suit exactement les m\u00eames r\u00e8gles que pour le choix du nom d'une variable. Un bloc constitu\u00e9 d'une ou plusieurs instructions Python, chacune indent\u00e9e du m\u00eame nombre d'espace (la convention est d'utiliser 4 espaces) par rapport \u00e0 la ligne d'en-t\u00eate. Nous avons d\u00e9j\u00e0 vu la boucle `for` qui suit ce mod\u00e8le.\n", "\n", "Le nom de la fonction est suivi par certains param\u00e8tres entre parenth\u00e8ses. La liste des param\u00e8tres peut \u00eatre vide, ou il peut contenir un certain nombre de param\u00e8tres s\u00e9par\u00e9s les uns des autres par des virgules. Dans les deux cas, les parenth\u00e8ses sont n\u00e9cessaires. Les param\u00e8tres sp\u00e9cifient les informations, le cas \u00e9ch\u00e9ant, que nous devons fournir pour pouvoir utiliser la nouvelle fonction.\n", "\n", "La ou les valeurs de retour d'une fonction sont retourn\u00e9es avec la commande `return`. Par exemple, la fonction qui retourne la somme de deux valeurs s'\u00e9crit:" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "def somme(a, b):\n", " return a + b" ], "outputs": [], "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "somme(4,7)" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "11" ] }, "metadata": {} } ], "metadata": {} }, { "source": [ "La fonction qui calcule le volume d'un parall\u00e9pip\u00e8de rectangle s'\u00e9crit:" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "def volume(largeur, hauteur, profondeur):" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "... return largeur * hauteur * profondeur\n", "..." ] }, "metadata": {} } ], "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "v = volume(2,3,4)\n", "v" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "24" ] }, "metadata": {} } ], "metadata": {} }, { "source": [ "On peut rassemble le code sur la temp\u00e9rature de l'eau que l'on a \u00e9crit plus au sein d'une fonction `etat_de_leau` qui d\u00e9pend du param\u00e8tre `temperature` :" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "def etat_de_leau(temperature):\n", " if temperature < 0:\n", " print(\"L'eau est solide\")\n", " elif temperature == 0:\n", " print(\"L'eau est en transition de phase solide-liquide\")\n", " elif temperature < 100:\n", " print(\"L'eau est liquide\")\n", " elif temperature == 100:\n", " print(\"L'eau est en transition de phase liquide-gaz\")\n", " else:\n", " print(\"L'eau est un gaz\")" ], "outputs": [], "metadata": {} }, { "source": [ "Cette fonction permet de tester le code sur la temp\u00e9rature de l'eau plus facilement:" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "etat_de_leau(23)" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "L'eau est liquide" ] }, "metadata": {} } ], "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "etat_de_leau(-23)" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "L'eau est solide" ] }, "metadata": {} } ], "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "etat_de_leau(0)" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "L'eau est en transition de phase solide-liquide" ] }, "metadata": {} } ], "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "etat_de_leau(0.1)" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "L'eau est liquide" ] }, "metadata": {} } ], "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "etat_de_leau(102)" ], "outputs": [ { "execution_count": 1, "output_type": "execute_result", "data": { "text/plain": [ "L'eau est un gaz" ] }, "metadata": {} } ], "metadata": {} } ], "metadata": { "kernelspec": { "display_name": "python2", "name": "python2" } } }