{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "[prev: Structure de contrôle](controle-flux.ipynb) | [home](../index.ipynb) | [prev: Lire les erreurs](read-errors.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Structuration du code\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bloc et indentation\n", "\n", "Les fonctions et les structures de contrôle introduisent l'idée de \"bloc d'instructions\".\n", "\n", "Elles prennent toutes la même forme:\n", "```\n", "MotClef ... :\n", " code\n", " code\n", " code\n", "```\n", "Le '`:`' est à chaque fois suivi d'une **indentation**.\n", "\n", "C'est l'indentation qui signifie à l'interpréteur où commence et finit le bloc.\n", "\n", "En Python, l'indentation est signifiante:\n", "\n", "- chaque ligne d'un bloc doit avoir la même indentation\n", "- on ne doit pas mélanger *espaces* et *tabulations* !" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Saut de ligne\n", "\n", "Une ligne correspond à une instruction.\n", "Il n'y a pas de symbole signifiant la fin d'une \"ligne d'instruction\". (eg '`;`' en C)\n", "\n", "Mais parfois une ligne est trop courte pour une instruction. La solution est alors d'utiliser '`()`', '`[]`' ou '`{}`' sur plusieurs lignes." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# une liste sur plusieurs lignes\n", "l = [\n", " 1,\n", " 2,\n", " 3,\n", " 4, # la dernière virgule est autorisée et ne change rien\n", "]\n", "l" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'un': 1, 'deux': 2, 'trois': 3, 'quatre': 4}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# un dictionnaire sur plusieurs lignes\n", "d = {\n", " 'un': 1,\n", " 'deux': 2,\n", " 'trois': 3,\n", " 'quatre': 4\n", "}\n", "d" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fermer une parenthèse de fonction sur une autre ligne\n", "nom_de_fonction_vraiment_trop_long_pour_tout_ecrire_sur_une_ligne = max\n", "\n", "result = nom_de_fonction_vraiment_trop_long_pour_tout_ecrire_sur_une_ligne(\n", " 1, 2, 3, 4\n", ")\n", "\n", "result" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0845771144278607" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# un calcul trop long\n", "a = 1.\n", "b = 2.\n", "c = 3.\n", "d = 4.\n", "\n", "result = (a + (b ** 3) * 2) / (((c + d) * (a + b)) + ((a + b + c + d) * (a + b + c) * (a + b) * a))\n", "\n", "result" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0845771144278607" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# c'est l'occasion de structurer un peu tout ça (si possible...)\n", "a = 1.\n", "b = 2.\n", "c = 3.\n", "d = 4.\n", "\n", "result = (\n", " (a + (b ** 3) * 2)\n", " /\n", " (\n", " (c + d) * (a + b)\n", " +\n", " (a + b + c + d) * (a + b + c) * (a + b) * a\n", " )\n", ")\n", "\n", "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*PS : il existe un jeu de caractères pour indiquer la continuation de ligne, mais je n'en parlerai pas.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercices" ] } ], "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.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }