{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Types et variables\n", "\n", "Ludovic Deneuville\n", "\n", "## Avant de commencer\n", "\n", "- Téléchargez ce\n", " notebook\n", " Jupyter\n", "- Connectez-vous au\n", " Jupyter\n", " ENSAI avec id et mot de passe\n", " - ou une autre plate-forme (SSPCloud, Jupyter Lab, Google Colab,\n", " Kaggle…)\n", "- Importez le fichier .ipynb\n", "\n", "## Introduction\n", "\n", "Dans ce notebook, nous allons découvrir les types de base en python :\n", "\n", "- numériques\n", " - **int** : entiers\n", " - **float** : décimaux\n", "- chaines de caractères : **str**\n", "- booléens : **bool**\n", "\n", "## 1 Affectation de variables" ], "id": "25945473-2389-4dd4-8dac-f0ac25a42719" }, { "cell_type": "code", "execution_count": 1, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Créer la variable a et lui affecter la valeur 8\n", "a = 8\n", "\n", "# Créer la variable b et lui affecter la chaîne de caractère \"texte\"\n", "b = \"texte\"\n", "\n", "# Créer la variable c et lui affecter le booléen True\n", "c = True" ], "id": "b79556a1" }, { "cell_type": "code", "execution_count": 2, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Afficher le contenu de a\n", "a" ], "id": "2cc33b00" }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remarque : Un notebook n’affiche que la dernière valeur qui lui est\n", "demandé. \n", "Pour réaliser plusieurs affichages, il faut utiliser la méthode\n", "**print**" ], "id": "381dd649-71f9-47df-9717-6df297bad74d" }, { "cell_type": "code", "execution_count": 3, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "print(a+1)\n", "print(b)\n", "print(c)" ], "id": "9855a2a1" }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python est **langage typé dynamiquement**. \n", "Cela siginifie qu’il est possible de modifier le type d’une variable\n", "sans contrainte. \n", "Si la variable **a** contient du texte, il est possible de lui affecter\n", "ensuite un entier." ], "id": "24fe77c6-a877-4828-aef7-8dc94ec595e0" }, { "cell_type": "code", "execution_count": 4, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "print(a)\n", "a = \"abcd\"\n", "print(a)\n", "a = False\n", "print(a)" ], "id": "2b2d33ad" }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Astuce** : Pour afficher toutes les variables créées et leurs valeurs,\n", "vous pouvez utiliser la commande `%whos`" ], "id": "a2792783-435e-43b1-b4e6-c406cf39287b" }, { "cell_type": "code", "execution_count": 5, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "%whos" ], "id": "3e5b58bc" }, { "cell_type": "markdown", "metadata": {}, "source": [ "------------------------------------------------------------------------\n", "\n", "## 2 Nombres\n", "\n", "La fonction `type` permet de connaitre le type" ], "id": "d6a34ef8-2e8c-414d-935f-55b305f20b06" }, { "cell_type": "code", "execution_count": 6, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "a = 8\n", "type(a)" ], "id": "6ea93480" }, { "cell_type": "code", "execution_count": 7, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "b = 33.5\n", "type(b)" ], "id": "8b822c00" }, { "cell_type": "code", "execution_count": 8, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "float('inf')" ], "id": "af987c3b" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 Convertions\n", "\n", "Les fonctions `float` et `int` peuvent être utilisées pour passer d’un\n", "type à l’autre." ], "id": "ac179b19-3ddb-44c3-8b40-3ca81d121be3" }, { "cell_type": "code", "execution_count": 9, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Conversion en float\n", "float(a)" ], "id": "9208f1a2" }, { "cell_type": "code", "execution_count": 10, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Conversion en int (partie entière)\n", "int(b)" ], "id": "0b6343cf" }, { "cell_type": "code", "execution_count": 11, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Notation scientifique\n", "2.1e3" ], "id": "7413d618" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 Opérations arithmétiques de base" ], "id": "6344b6b8-fd02-4307-82f5-b7bc46cbedb5" }, { "cell_type": "code", "execution_count": 12, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Addition\n", "1 + 1" ], "id": "cf0eaf17" }, { "cell_type": "code", "execution_count": 13, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Soustraction\n", "6 - 2" ], "id": "1e05ca73" }, { "cell_type": "code", "execution_count": 14, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Multiplication\n", "3 * 4" ], "id": "e0612cd6" }, { "cell_type": "code", "execution_count": 15, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Division\n", "11 / 5" ], "id": "17bb935f" }, { "cell_type": "code", "execution_count": 16, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Division euclidienne : quotient\n", "11 // 5" ], "id": "744b381b" }, { "cell_type": "code", "execution_count": 17, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Division euclidienne : reste (modulo)\n", "11 % 5" ], "id": "553db83f" }, { "cell_type": "code", "execution_count": 18, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Puissance\n", "2 ** 10" ], "id": "e75aadd9" }, { "cell_type": "code", "execution_count": 19, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Racine carrée\n", "36 ** 0.5" ], "id": "2f93662c" }, { "cell_type": "markdown", "metadata": {}, "source": [ "------------------------------------------------------------------------\n", "\n", "## 3 Chaînes de charactères\n", "\n", "Les chaînes de caractères (strings) sont utilisées pour stocker de\n", "l’information textuelle.\n", "\n", "Un *string* se définit en mettant l’information entre apostrophes `'` ou\n", "entre guillemets `\"`.\n", "\n", "### 3.1 Définition" ], "id": "3084b45f-06d3-4520-9ec0-0076ac8d1c30" }, { "cell_type": "code", "execution_count": 20, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "a = 'une chaine de caractères définie avec des apostrophes'\n", "a" ], "id": "ca439ab0" }, { "cell_type": "code", "execution_count": 21, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "b = \"une chaine de caractères définie avec des guillemets\"\n", "b" ], "id": "ad0e5ada" }, { "cell_type": "code", "execution_count": 22, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Pour inclure une apostrophe à l'intérieur de la chaine\n", "\"j'inclus l'apostrophe\"" ], "id": "02e9e66d" }, { "cell_type": "code", "execution_count": 23, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Pour inclure des guillemets à l'intérieur de la chaine\n", "'les \"guillemets\" sont là'" ], "id": "f218f450" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 Métodes utiles\n", "\n", "Voici un aperçu de quelques méthodes utiles. De nombreuses autres\n", "existent (voir [documentation\n", "officielle](https://docs.python.org/3/library/stdtypes.html#string-methods))" ], "id": "fa73d803-7d6d-4433-a827-dee1b8489948" }, { "cell_type": "code", "execution_count": 24, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Longueur d'une chaîne (nombre de caractères)\n", "len(\"J'ai 18 caractères\")" ], "id": "4ccb3d7b" }, { "cell_type": "code", "execution_count": 25, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Concaténation\n", "\"I am\" + \"your father\"\n", "\" \".join([\"I am\", \"your father\"])" ], "id": "d7de113e" }, { "cell_type": "code", "execution_count": 26, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Concaténation avec un nombre\n", "annee = 2\n", "\"je suis en \" + annee + \"ème année\"" ], "id": "eb907e67" }, { "cell_type": "markdown", "metadata": {}, "source": [ "Problème, il faut au préalable convertir le nombre en chaîne de\n", "caractères. \n", "La méthode **str** fait le travail." ], "id": "d0e47dbe-50f6-4b45-9a21-36093be46166" }, { "cell_type": "code", "execution_count": 27, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Concaténation avec un nombre - après convertion du nombre en string\n", "annee = 2\n", "\"je suis en \" + str(annee) + \"ème année\"" ], "id": "6c638419" }, { "cell_type": "code", "execution_count": 28, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Répétition\n", "\"hop \" * 5" ], "id": "2f3f9be1" }, { "cell_type": "code", "execution_count": 29, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Mettre en majuscules\n", "\"C'est OK\".upper()" ], "id": "28cb3c60" }, { "cell_type": "code", "execution_count": 30, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Mettre en minuscules\n", "\"C'est OK\".lower()" ], "id": "49090042" }, { "cell_type": "code", "execution_count": 31, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Compter le nombre d'occurences\n", "\"Mangez cinq fruits et légumes par jour\".count(\"a\")" ], "id": "263f8a17" }, { "cell_type": "code", "execution_count": 32, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Créer une liste de mots\n", "\"Mangez cinq fruits et légumes par jour\".split()" ], "id": "984d9828" }, { "cell_type": "code", "execution_count": 33, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Séparer les mots selon un caractère spécifique\n", "\"un-deux-trois-soleil\".split(\"-\")" ], "id": "4ac29946" }, { "cell_type": "code", "execution_count": 34, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Utiliser les strings comme templates\n", "\"mon numéro est : {}\".format(\"06 12 34 56 78\")" ], "id": "99032ef1" }, { "cell_type": "code", "execution_count": 35, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Commence par ?\n", "\"vélo\".startswith(\"vé\")" ], "id": "4aba1741" }, { "cell_type": "code", "execution_count": 36, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Se termine par ?\n", "\"vélo\".endswith(\"lo\")" ], "id": "bd10ec50" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3 Extraire des sous-chaînes\n", "\n", "Une chaîne de caractères est considérée en Python comme une liste de\n", "caractères. \n", "Il est donc possible d’extraire différents éléments de cette liste" ], "id": "cef974a0-76f8-4892-af76-720efbb66c75" }, { "cell_type": "code", "execution_count": 37, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Premier élémént\n", "\"c'est de toute beauté\"[0]" ], "id": "031cab2f" }, { "cell_type": "code", "execution_count": 38, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Deuxième élémént\n", "\"c'est de toute beauté\"[1]" ], "id": "873a1da4" }, { "cell_type": "code", "execution_count": 39, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Dernier élémént\n", "\"c'est de toute beauté\"[-1]" ], "id": "3fb6a770" }, { "cell_type": "code", "execution_count": 40, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# À partir d'un certain caractère\n", "\"c'est de toute beauté\"[6:]" ], "id": "ef461656" }, { "cell_type": "code", "execution_count": 41, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Jusqu'à un certain caractère\n", "\"c'est de toute beauté\"[:8]" ], "id": "c2ad05b6" }, { "cell_type": "code", "execution_count": 42, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Extraire une sous-chaîne\n", "\"c'est de toute beauté\"[9:14]" ], "id": "2d4c22ae" }, { "cell_type": "code", "execution_count": 43, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Extraire tous les 2 caractères, à partir de la 4 ème position\n", "\"c'est de toute beauté\"[4::2]" ], "id": "a0c9f431" }, { "cell_type": "code", "execution_count": 44, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Inverser une chaîne\n", "\"c'est de toute beauté\"[::-1]" ], "id": "429cbae1" }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Caractères spéciaux\n", "\n", "Pour insérer des caractères spéciaux au sein d’une chaîne de caractère,\n", "il faut utiliser le caractère d’échappement `\\`.\n", "\n", "| Caractère | Description |\n", "|-----------|-------------------------|\n", "| \\\\ | Caractère d’échappement |\n", "| \\\\ | Apostrophe |\n", "| \\\\ | Guillemets doubles |\n", "| \\n | Retour à la ligne |\n", "| \\t | Tabulation horizontale |\n", "| \\r | Retour chariot |" ], "id": "06306b40-220f-44cb-bb34-abcaace8d2ad" }, { "cell_type": "code", "execution_count": 45, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "c = \"une chaîne\\nsur 2 lignes\"\n", "print(c)" ], "id": "76c7f531" }, { "cell_type": "code", "execution_count": 46, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Définir une chaîne de caractères sur plusieurs lignes\n", "d = \"\"\"une autre \\\"possibilité\\\" pour\n", "avoir une chaîne sur 2 lignes\"\"\"\n", "print(d)" ], "id": "e7dacc7a" }, { "cell_type": "markdown", "metadata": {}, "source": [ "------------------------------------------------------------------------\n", "\n", "## 4 Boléens\n", "\n", "Les Booléens ne peuvent prendre que deux valeurs : `True` et `False` \n", "Attention à bien respecter la notation avec la première lettre en\n", "majuscule et les autres en minuscule." ], "id": "3caaa929-b511-4dda-8151-67348c0e7f3d" }, { "cell_type": "code", "execution_count": 47, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "type(True)" ], "id": "c97280e8" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.1 Opérateurs de comparaison\n", "\n", "| Opérateur | Signification |\n", "|-----------|-------------------------|\n", "| == | Egal à |\n", "| != | Non égal à |\n", "| \\< | Strictement inférieur à |\n", "| \\> | Strictement supérieur à |\n", "| \\<= | Inférieur ou égal à |\n", "| \\>= | Supérieur ou égal à |" ], "id": "16382a7a-cb4a-4fec-9d0c-77ba68fc7f90" }, { "cell_type": "code", "execution_count": 48, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "8 > 5" ], "id": "d22a7906" }, { "cell_type": "code", "execution_count": 49, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "1+1 == 2" ], "id": "846fef52" }, { "cell_type": "code", "execution_count": 50, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "[1, 2, 3] == [1, 2, 3]" ], "id": "01e60cae" }, { "cell_type": "code", "execution_count": 51, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "\"girafe\" != \"gnou\"" ], "id": "59adb1de" }, { "cell_type": "code", "execution_count": 52, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Enchainement d'opérateurs\n", "1 < 2 == 2 >= 1 != 2" ], "id": "3494c98a" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.2 Opérateurs and, or, not" ], "id": "3d335a54-e547-4473-99ac-867b3e422a0e" }, { "cell_type": "code", "execution_count": 53, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "a = True\n", "b = False\n", "\n", "a and b" ], "id": "ef0b091c" }, { "cell_type": "code", "execution_count": 54, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "a or b" ], "id": "6bef9ab7" }, { "cell_type": "code", "execution_count": 55, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "not a" ], "id": "438d7457" }, { "cell_type": "code", "execution_count": 56, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "(a or b) and (a and not b)" ], "id": "944e1353" }, { "cell_type": "markdown", "metadata": {}, "source": [ "------------------------------------------------------------------------\n", "\n", "## 5 Exercices\n", "\n", "### 5.1 Exercice 1\n", "\n", "Calculer la somme des longueurs des trois chaînes de caractères\n", "suivantes :\n", "\n", "- “une première chaîne”\n", "- “et une deuxième”\n", "- “jamais deux sans trois”" ], "id": "d307bebe-1066-49db-860f-92d5ccda59b1" }, { "cell_type": "code", "execution_count": 57, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Tapez votre réponse dans cette cellule" ], "id": "fb4f29a9" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.2 Exercice 2\n", "\n", "Quel est le type adapté pour définir un code postal ?\n", "\n", "Essayer de définir les codes postaux suivants au format `int` et au\n", "format `string` :\n", "\n", "- 92120\n", "- 02350\n", "\n", "Que concluez-vous ?" ], "id": "61a56e80-bd0e-44f6-a50e-cfcb15786f77" }, { "cell_type": "code", "execution_count": 58, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Tapez votre réponse dans cette cellule" ], "id": "e3daab5f" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.3 Exercice 3\n", "\n", "Compter le nombre de fois où la lettre e est présente dans la chaîne\n", "suivante : `Je compte le nombre de e dans cette chaîne de caractères`" ], "id": "36560f91-fb0e-48d5-b1f1-4d3aa42a7ac5" }, { "cell_type": "code", "execution_count": 59, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Tapez votre réponse dans cette cellule" ], "id": "438bffd6" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.4 Exercice 4\n", "\n", "Repérer la première position où la lettre e est présente dans la chaîne\n", "suivante : “Je fais un comptage des e.”\n", "\n", "**Indice** : on peut utiliser la méthode *built-in*\n", "[find](https://docs.python.org/fr/3/library/stdtypes.html#str.find)." ], "id": "550c7d0a-e127-4c4d-ab9a-8ab2b12d5714" }, { "cell_type": "code", "execution_count": 60, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Tapez votre réponse dans cette cellule" ], "id": "49ddac69" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.5 Exercice 5\n", "\n", "Supprimer les espaces superflus au début et à la fin de la chaîne\n", "suivante :\n", "\n", "**Indice** : on peut utiliser la méthode *built-in*\n", "[strip](https://docs.python.org/fr/3/library/stdtypes.html#str.strip)." ], "id": "b5e2b066-5ddc-427a-96b1-a4551c1eac35" }, { "cell_type": "code", "execution_count": 61, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Tapez votre réponse dans cette cellule\n", "a = \" Un string très mal formatté. \"" ], "id": "3dbc8a8e" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.6 Exercice 6\n", "\n", "Réaliser la suite d’opérations suivantes à l’aide des opérateurs\n", "d’incrémentation, et imprimer la valeur finale :\n", "\n", "- initialiser une variable à 1\n", "- lui soustraire 5\n", "- la multiplier par 4\n", "- lui ajouter 22" ], "id": "992f011d-0088-41b2-9bb1-6eaba793cf6a" }, { "cell_type": "code", "execution_count": 62, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Tapez votre réponse dans cette cellule" ], "id": "10e947c7" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.7 Exercice 7\n", "\n", "Considérons les deux séquences suivantes :\n", "\n", "- “nous sommes en”\n", "- “2022”\n", "\n", "Trouvez à partir du tutoriel deux manières différentes de les utiliser\n", "pour composer la séquence “nous sommes en 2022”." ], "id": "e8a7f102-89c6-4fc2-a920-41b8483cb731" }, { "cell_type": "code", "execution_count": 63, "metadata": { "vscode": { "languageId": "python" } }, "outputs": [], "source": [ "# Tapez votre réponse dans cette cellule" ], "id": "67e122ca" } ], "nbformat": 4, "nbformat_minor": 5, "metadata": { "kernelspec": { "name": "python3", "display_name": "Python 3 (ipykernel)", "language": "python", "path": "/opt/hostedtoolcache/Python/3.10.14/x64/share/jupyter/kernels/python3" }, "language_info": { "name": "python", "codemirror_mode": { "name": "ipython", "version": "3" }, "file_extension": ".py", "mimetype": "text/x-python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } } }