From 0fe62944ff29910b3404aa4885f35ca15b31d07c Mon Sep 17 00:00:00 2001 From: hoaraualderic Date: Mon, 25 May 2026 18:08:27 +0200 Subject: [PATCH] feat: add python course --- .DS_Store | Bin 0 -> 8196 bytes 0 - Installation Python.pptx | Bin 0 -> 684762 bytes 1-introduction.ipynb | 357 +++ 2-les-variables.ipynb | 1151 ++++++++ 3-data-structures.ipynb | 2125 ++++++++++++++ 3b-data-structures.ipynb | 342 +++ 4-les_conditions_et_les_boucles.ipynb | 447 +++ 5-Les_fonctions.ipynb | 449 +++ 5b-lambda.ipynb | 493 ++++ 5c-le_typage.ipynb | 155 + 6-les-packages.ipynb | 435 +++ 7-functions-args.ipynb | 618 ++++ 8-fonction-recursive.ipynb | 192 ++ 9-falsy-values.ipynb | 131 + README.md | 64 +- Same_level.py | 12 + exos.ipynb | 2153 ++++++++++++++ oop/1-Introduction_POO.ipynb | 2593 +++++++++++++++++ oop/Correction_exercice_concessionnaire.ipynb | 207 ++ oop/Correction_forum.ipynb | 222 ++ oop/class_to_test.py | 51 + oop/correction.txt | 136 + oop/correction_conce_bis.py | 108 + oop/correction_concessionnaire.py | 186 ++ oop/correction_exercice_blog.py | 153 + oop/correction_toolbox.py | 82 + oop/correction_toolbox_bis.py | 128 + oop/correction_zoo.py | 53 + oop/img/Class_heritage.drawio.png | Bin 0 -> 11107 bytes oop/img/First_class_diagram.drawio.png | Bin 0 -> 32053 bytes oop/test_class_to_test.py | 69 + other_folder/other_folder_file.py | 4 + recursif.py | 8 + 33 files changed, 13122 insertions(+), 2 deletions(-) create mode 100644 .DS_Store create mode 100644 0 - Installation Python.pptx create mode 100644 1-introduction.ipynb create mode 100644 2-les-variables.ipynb create mode 100644 3-data-structures.ipynb create mode 100644 3b-data-structures.ipynb create mode 100644 4-les_conditions_et_les_boucles.ipynb create mode 100644 5-Les_fonctions.ipynb create mode 100644 5b-lambda.ipynb create mode 100644 5c-le_typage.ipynb create mode 100644 6-les-packages.ipynb create mode 100644 7-functions-args.ipynb create mode 100644 8-fonction-recursive.ipynb create mode 100644 9-falsy-values.ipynb create mode 100644 Same_level.py create mode 100644 exos.ipynb create mode 100644 oop/1-Introduction_POO.ipynb create mode 100644 oop/Correction_exercice_concessionnaire.ipynb create mode 100644 oop/Correction_forum.ipynb create mode 100644 oop/class_to_test.py create mode 100644 oop/correction.txt create mode 100644 oop/correction_conce_bis.py create mode 100644 oop/correction_concessionnaire.py create mode 100644 oop/correction_exercice_blog.py create mode 100644 oop/correction_toolbox.py create mode 100644 oop/correction_toolbox_bis.py create mode 100644 oop/correction_zoo.py create mode 100644 oop/img/Class_heritage.drawio.png create mode 100644 oop/img/First_class_diagram.drawio.png create mode 100644 oop/test_class_to_test.py create mode 100644 other_folder/other_folder_file.py create mode 100644 recursif.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8696372b0491d3db9c655f48cbb248015d90e639 GIT binary patch literal 8196 zcmeHM+invv5Is&J(F>OfwNMZb5fYDyXt}?ID1E2|5^6snWOHdFw%I5b)V}2#_y9hF zPvBGd5jZn;Q}3pm7bJulJ6g}KJ###BJod&308^iK_JCagYrI5mZL+$iNWWYQrQli~ zQ5xFgFizT0oJ4%yTF?#+fq}q4U?4CM7zhmf4-D{~EoCj|y>EL%9T*4>u~`f6^{YQ+SsEy7PR^`k3yZO)l-AU^BZhG&2V>3IUvv61E3G+< zj!YakvT-LA;|?CCtm-f|D?=R^2n;MTAZPaysyIO(lg#M+VYWp zWsn}?1ra(LS&MfP>&SUE6{gsdi&i|!pzRVZ`U||D8N6qBNi-X0lS~Qo9Y%UN3u83t z;e_?2PDCBy)IR5WUfR!$w1Zb1>4V1GL{CS$nwcdWpiZRkUUuFil5il|a>hI1HrEeG zw))ohY29`)HyPOlGor=3?dD@>_WBsxcs*yWqV{ckaVSe7G2b%2Jir^`^vLJH%TmcW z$+webnW35Q`}7!Z6-#FDir0!}Seqk^h}LH&FNsrEfseV3cZw-%b4;e}N{ETJG;0g8 z27H_i>YsDQmvEz*?%NcppJ13???uVqYqUD!b{r*1%wF84nQR+fhHMipW{U7B4W$X{ zL*?4};OjWT0p6p5kCavBUndQ#bL{U(>pBB1x^PA(axBbUFTXc4bJn93cdhg|vMN$m zcW}(CkumIAm6?vOwd9IOSqf>P+++rdHn?3m{~zT4{(qAx2(bkQR-OSy$fN zFA!2-OPSYaUQ$GFW~G|25*2CJ<2dE~4@2IUU0=<~nU(Be`S(8rg!g}V|7+^4boB=% CQQ<-W literal 0 HcmV?d00001 diff --git a/0 - Installation Python.pptx b/0 - Installation Python.pptx new file mode 100644 index 0000000000000000000000000000000000000000..4ca68b7fc5b289e1df611613b72f935ad80091b7 GIT binary patch literal 684762 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

?rrEETM6?*HF4pfRu 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%0D)hAKto;8$q7YfiaSO^`5(Dv)GmAz##{fFVgQ`h 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

{d(~qTNyF0*p@(V9i^_O(H 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 z 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 Changer de couleur en s'inspirant de HTML \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Et insérer des images\n", + "\n", + "![image](https://interactive-examples.mdn.mozilla.net/media/cc0-images/grapefruit-slice-332-332.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Découvrir les commentaires" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous avons vu que les markdowns permettaient de créer des commentaires, cependant ils ne sont pas accessibles dans les fichiers scripts et parfois on veut commenter différemment." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nous sommes bien ici dans une cellule de code\n", + "Les commentaires ne s'affichent pas quand on lance le code\n" + ] + } + ], + "source": [ + "# commentaire\n", + "# ligne\n", + "# à ligne\n", + "\n", + "print(\"Nous sommes bien ici dans une cellule de code\") # un commentaire ligne à ligne peut se mettre ici\n", + "\n", + "\"\"\" Commentaire \n", + "\n", + "\n", + "\n", + "multi ligne\"\"\"\n", + "\n", + "print(\"Les commentaires ne s'affichent pas quand on lance le code\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Autre différence entre ces deux types de commentaires\n", + "- Les commentaires ligne à ligne ne sont pas lus par python, il faut donc les utiliser en général.\n", + "- Les commentaires multi ligne sont lus par python mais pas affichés sauf dans certaines foncitons. On s'en sert généralement pour décrire une fonction, une classe ou un package" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function f in module __main__:\n", + "\n", + "f(x)\n", + " cette fonction ajoute 1 à x\n", + "\n" + ] + } + ], + "source": [ + "def f(x):\n", + " \"\"\" cette fonction ajoute 1 à x\"\"\"\n", + " # tu le savais ?\n", + " if True:\n", + " print(True)\n", + " return x +1\n", + "\n", + "help(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enfin, on utilise souvent un raccourci qui permet de commenter ligne à ligne plusieurs lignes en même temps: \n", + "Ctrl + SHIFT + / ou Ctrl + shift (sur les lignes selectionnées)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**: \n", + "- copier coller les règles de la pep 8 dans votre fichier script en tant que commentaire multiligne et ligne à ligne (essayez les raccourcis et relancer le script)\n", + "- copier coller les règles de la pep 8 dans une cellule code, faite le même exercice que précédemment puis copier coller dans un cellule markdown et faire une mise en page correcte" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Règles Pep8:\n", + "\n", + "Pep 8 sur les commentaires.\n", + "Ecrivez des phrases complètes, ponctuées et compréhensibles.\n", + "Le commentaire doit être cohérent avec le code.\n", + "Il doit suivre la même indentation que le code qu'il commente.\n", + "Evitez d'enfoncer des portes ouvertes : ne décrivez pas le code, expliquez plutôt à quoi il sert.\n", + "Il doit être en anglais." + ] + } + ], + "metadata": { + "interpreter": { + "hash": "4822798685b95d90cac6b9eac85a216cd3011e561666c6311e8088bbadca8e0f" + }, + "kernelspec": { + "display_name": "Python 3.8.6 64-bit ('3.8.6': pyenv)", + "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" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/2-les-variables.ipynb b/2-les-variables.ipynb new file mode 100644 index 0000000..cab7bd2 --- /dev/null +++ b/2-les-variables.ipynb @@ -0,0 +1,1151 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Les variables et les types de variables" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les variables" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Déclarer une variable" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Jérémy\n" + ] + } + ], + "source": [ + "formateur = \"Jérémy\"\n", + "\n", + "nombre_apprenants = 12\n", + "\n", + "print(formateur)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Antoine\n", + "Antoine\n", + "Antoine\n", + "Patrick\n" + ] + } + ], + "source": [ + "# double déclaration\n", + "apprenant = eleve = \"Antoine\"\n", + "print(eleve)\n", + "print(apprenant)\n", + "apprenant = \"Patrick\"\n", + "print(eleve)\n", + "print(apprenant)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les valeurs sont stockées en mémoire à des adresses précises par exemple :" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4298080848\n" + ] + } + ], + "source": [ + "print(id(12))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "valeur_12 = 12" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4298080848\n" + ] + } + ], + "source": [ + "print(id(valeur_12))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4298080848\n", + "4298080848\n", + "4298080880\n", + "4298080880\n" + ] + } + ], + "source": [ + "nombre_apprenants = 12\n", + "print(id(12))\n", + "print(id(nombre_apprenants))\n", + "\n", + "nombre_apprenants = 13\n", + "\n", + "print(id(13))\n", + "print(id(nombre_apprenants))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello World\n", + "Hello World 2\n" + ] + } + ], + "source": [ + "print(\"Hello World\")\n", + "print(\"Hello World 2\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La variable est donc un pointeur vers l'objet en mémoire." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Afficher une variable" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Jérémy\n", + "nombre_apprenants: 13\n", + "Jérémy a 13 apprenants dans ma formation, dont: Patrick\n", + "Jérémy a 13 apprenants dans ma formation, dont: Patrick\n", + "formateur='Jérémy'\n" + ] + } + ], + "source": [ + "# affichage d'une variable\n", + "print(formateur)\n", + "\n", + "# affichage de plusieurs éléments \n", + "print(\"nombre_apprenants:\", nombre_apprenants)\n", + "\n", + "# commentaire avec l'attribut format\n", + "print( \"{} a {} apprenants dans ma formation, dont: {}\".format(formateur,nombre_apprenants,apprenant))\n", + "\n", + "# commentaires avec les f-strings\n", + "print( f\"{formateur} a {nombre_apprenants} apprenants dans ma formation, dont: {apprenant}\")\n", + "\n", + "print (f\"{formateur=}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quand on ajoute des variables dans une chaîne de caractères à l'aide de méthode, on parle de \"string formatting\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modifier une variable" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nombre_apprenants: 17\n", + "apprenant: Antoine\n", + "eleve: Denis\n", + "7\n" + ] + } + ], + "source": [ + "apprenant = eleve = \"Antoine\"\n", + "eleve = \"Denis\"\n", + "\n", + "# incrémentation\n", + "nombre_apprenants = nombre_apprenants + 2\n", + "nombre_apprenants += 2 # on peut également utiliser -= /= *=\n", + "\n", + "print(\"nombre_apprenants: \", nombre_apprenants)\n", + "print(\"apprenant: \", apprenant)\n", + "print(\"eleve: \", eleve)\n", + "\n", + "eleve = 7\n", + "print(eleve)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Supprimer une variable" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4298081808\n" + ] + } + ], + "source": [ + "var_to_delete = 42\n", + "\n", + "print(id(var_to_delete))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'var_to_delete' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m/Users/jeremyvangansbeg/Documents/project/intro_python/python-course/2-les-variables.ipynb Cell 20\u001b[0m line \u001b[0;36m3\n\u001b[1;32m 1\u001b[0m \u001b[39mdel\u001b[39;00m var_to_delete\n\u001b[0;32m----> 3\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39mid\u001b[39m(var_to_delete))\n", + "\u001b[0;31mNameError\u001b[0m: name 'var_to_delete' is not defined" + ] + } + ], + "source": [ + "del var_to_delete\n", + "\n", + "print(id(var_to_delete))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Nommer une variable avec la Pep-8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La pep 8 est une convention qui définit les bonnes pratiques pour code en python." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Mettez un espace avant et après le signe égal\n", + " - apprenant = \"Charles\" et non apprenant=\"Charles\"\n", + "- Utilisez des noms descriptifs dans votre code.\n", + " - exemple: Au lieu de quantite (ou pire,qte), ajoutez des détails : quantite_en_stock, solde_actuel, etc.\n", + "- Utilisez des mots complets.\n", + " - exemple,revenu_annuelest plus clair querev_annuel.\n", + "- Suivez une convention d’appellation commune.\n", + " - le snake case : des noms composés de plusieurs mots séparés par des tirets bas(_)\n", + " - exemple nombre_de_chats, reponse_finale , le_meilleur_developpeur_python_du_monde, etc.\n", + " - commencez avec une lettre minuscule (surtout pas par un nombre)\n", + " - Utilisez uniquement des caractères alphanumériques et des tirets bas... et donc pas d'accents !\n", + "- N’oubliez pas que les noms de variables sont sensibles à la casse.\n", + " - age, Age et AGE sont trois variables différentes. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il existe d'autres conventions de nommage comme le CamelCase ou le camelCase. La seconde version est utilisée en python qu'on définit des classes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### S'exercer à manipuler les variables" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**: créez l'état civil de votre voisin \n", + "- déclarer les variables nom, prénom et deuxième prénom puis une variable nom complet à l'aide des trois précédentes en les concaténant à l'aide de l'opérateur + \n", + "- déclarer les variables année actuelle et année de naissance puis créer la variable âge à l'aide des deux pécédentes en les soustrayant\n", + "- remplacer la valeur de la variable nom par celle de nom complet puis supprimer la variable nom complet" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les types primitifs de variable" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En Python, les variables ne stockent pas directement les valeurs; elles référencent des objets. Tout en Python est un objet, y compris les nombres, les chaînes, les listes, etc. Cependant, la manière dont les variables référencent ces objets diffère en fonction de la mutabilité de l'objet et de la manière dont il est assigné.\n", + "\n", + "Pour simplifier, on parle parfois de types \"primitifs\" en Python pour désigner les types de données de base comme les entiers, les flottants, les booléens et les chaînes. Bien que le terme \"primitif\" ne soit pas strictement correct en Python (car, comme mentionné, tout est objet), il est parfois utilisé pour faire référence à ces types de base." + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 7\n" + ] + } + ], + "source": [ + "# Les \"integers\", ou nombres entiers en français\n", + "nombre_apprentants = 7\n", + "print(type(nombre_apprentants),nombre_apprentants)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En réalité, même ces types \"primitifs\" sont des instances de classes en Python" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "25.0\n" + ] + } + ], + "source": [ + "# Les \"floats\", ou nombres à virgule en français\n", + "age_moyen_promo = 25.0\n", + "print(type(age_moyen_promo), age_moyen_promo)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Jérémy\n" + ] + } + ], + "source": [ + "# Les \"strings\" (str), ou chaines de caractères en français\n", + "apprenant = \"Jérémy\"\n", + "print(type(apprenant), apprenant)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " True\n" + ] + } + ], + "source": [ + "# Les \"Booléens\" (bool), ou booléen en français, c'est à dire vrai ou faux\n", + "\n", + "est_ce_que_1_plus_1_egale_2 = 1 + 1 == 2\n", + "\n", + "print(type(est_ce_que_1_plus_1_egale_2),est_ce_que_1_plus_1_egale_2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Attention à ne pas confondre \"=\" qui permet d'assigner une variable et \"==\" qui est un opérateur de comparaison" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les integers et les floats en détail " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Opérations sur les integers et les floats" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "somme=15.5\n", + "difference=9.5\n", + "produit=37.5\n", + "quotient=4.166666666666667\n", + "quotient_sans_reste=4.0\n", + "reste=0.5\n", + "puissance=1953.125\n" + ] + } + ], + "source": [ + "x = 12.5\n", + "y = 3\n", + "\n", + "#la somme de x et y (x plus y).\n", + "somme = x + y \n", + "print (f\"{somme=}\")\n", + "\n", + "#la différence entre x et y \n", + "difference = x - y \n", + "print (f\"{difference=}\")\n", + "\n", + "#le produit de x et y\n", + "produit = x * y \n", + "print (f\"{produit=}\")\n", + "\n", + "# le quotient de x et y (x divisé par y).\n", + "quotient = x / y \n", + "print (f\"{quotient=}\")\n", + "\n", + "# le quotient de x et y sans reste.\n", + "quotient_sans_reste = x // y \n", + "print (f\"{quotient_sans_reste=}\")\n", + "\n", + "# le reste de x divisé par y.\n", + "reste = x % y \n", + "print (f\"{reste=}\")\n", + "\n", + "# x à la puissance y\n", + "puissance = x**y\n", + "print (f\"{puissance=}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "D'une mannière générale, quand on effectue une opération entre un **float** et un **integer**, le résultat est un float" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5.0" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "5 / 1.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 1`**: Quelle est la valeur prise par z? (de tête)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "x = 13\n", + "y = 4" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "z = x == (( x // y ) * y) + (x % y) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 2`**: Ajoutez des parenthèses à l'expression suivante afin que l'output soit 1." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n" + ] + } + ], + "source": [ + "print(5 - 3 // 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 3`**: Ajoutez des parenthèses à l'expression suivante afin que l'output soit 0." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "print(8 - 3 * 2 - 1 + 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 4`**: \n", + "Alice, Bob et Carol ont décidé de mettre en commun leurs bonbons d'Halloween et de les partager équitablement entre eux. Pour le bien de leur amitié, les bonbons restants seront écrasés. Par exemple, s'ils ramènent collectivement 91 bonbons à la maison, ils en prendront 30 chacun et en écraseront 1.\n", + "\n", + "Écrivez une expression arithmétique ci-dessous pour calculer le nombre de bonbons qu'ils doivent écraser pour une quantité donnée." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "# Variables representing the number of candies collected by alice, bob, and carol\n", + "alice_candies = 121\n", + "bob_candies = 77\n", + "carol_candies = 109\n", + "\n", + "# Your code goes here! Replace the right-hand side of this assignment with an expression\n", + "# involving alice_candies, bob_candies, and carol_candies" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### fonctions utiles liées aux integers ou aux float " + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10.542321\n", + "-10.54\n" + ] + } + ], + "source": [ + "x = -10.542321\n", + "\n", + "# Valeur absolue de x\n", + "print(abs(x))\n", + "\n", + "# obtenir l'arrondi d'un float\n", + "print(round(x,2))\n", + "\n", + "# Convert an object to integer\n", + "s = \"8\"\n", + "s_as_an_integer = int(s)\n", + "\n", + "# Convert an object to float\n", + "\n", + "s_as_a_float = float(s)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int(9.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "PLus de méthodes dans la documentation: https://docs.python.org/3/library/stdtypes.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les strings en détail" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Les astuces concernant les strings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il existe une liste de caractères spéciaux dans les chaînes de caractères qu'on peut appeler à l'aide du \\ (backslash). En anglais on parle de \"escape characters\"" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "J'aime \"le\" Python!\n", + "J'aime \"le\" Python! comme dit le poète \"slkdfnsklfdn\" a line \n", + " to an another\n" + ] + } + ], + "source": [ + "# Pour utiliser le symbole ` dans une string il faut écrire \\``\t\n", + "a_string = \"J'aime \\\"le\\\" Python!\"\n", + "print(a_string)\n", + "the_same_string = \"comme dit le poète \\\"slkdfnsklfdn\\\"\"\n", + "\n", + "# Pour sauter une ligne \\n\n", + "a_string_with_a_space =\t\"a line \\n to an another\"\n", + "\n", + "print(a_string, the_same_string, a_string_with_a_space)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vous trouverez plus d'informations ici sur les escapes characters : \n", + "https://www.w3schools.com/python/gloss_python_escape_characters.asp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Le parcours des chaines de caractères" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n\n" + ] + } + ], + "source": [ + "n = -2\n", + "the_string = \"string\"\n", + "\n", + "# Renvoie le n ème élément d'une liste \n", + "print(the_string[n]) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### fonctions utiles" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Renvoie le nombre de caractère dans la string\n", + "len(the_string)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Les méthodes de la classe str" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "my_string = \"Quelle belle journée belle journée\"\n", + "\n", + "# Mettre tout en minuscule\n", + "lower_string = my_string.lower()\n", + "\n", + "# Mettre tout en majuscule\n", + "upper_string = my_string.upper()\n", + "\n", + "# Mettre une majuscule au début\n", + "capitalized_string = my_string.capitalize()\n", + "\n", + "# Remplacez une expression\n", + "replaced_string = my_string.replace(\"journée\", \"soirée\")\n", + "\n", + "# Cherchez un bout de la chaine\n", + "emplacement_de_belle = my_string.find(\"belle\")\n", + "\n", + "# Compte le nombre de fois ou apparait un caractère\n", + "count_string = my_string.count(\"l\")\n", + "\n", + "# Diviser une chaine de caractères pour créer une liste\n", + "splited_string = my_string.split(\" \")\n", + "\n", + "# Remplace les {} par la valeur définie dans format\n", + "my_string = \"Quelle {} et {} journée\".format(\"belle\", \"bonne\")\n", + "my_string = \"Quelle {adjectif_1} et {adjectif_2} journée\".format(adjectif_2=\"belle\", adjectif_1=\"bonne\")\n", + "belle_var = \"belle\"\n", + "bonne_var = \"bonne\"\n", + "my_string = \"Quelle {} et {} journée\".format(belle_var, bonne_var)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "my_string : Quelle bonne et belle journée\n", + "Quelle bonne et belle journée\n" + ] + } + ], + "source": [ + "print(\"my_string :\", my_string)\n", + "print(f\"{my_string=}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**: travaillez sur la définition de python \n", + "- remplacez python par lovely python partout dans la chaine de caractère suivante en utilisant une variable et le string formatting\n", + "- Affichez la chaine suivante en une seule chaine de caractères en sautant une ligne entre chaque phrase\n", + "- bonus : améliorer la lisibilité en faisant un retour à la ligne dans le code. Attention à ne pas confondre retour à la ligne dans l'input et dans l'output." + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "python_definition = \"python is an interpreted high-level general-purpose programming language. its design philosophy emphasizes code readability with its use of significant indentation. its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.\"" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [], + "source": [ + "new_python_definition = python_definition.replace\\\n", + "(\"python\", \"lovely python\")" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lovely python is an interpreted high-level general-purpose programming language.\n", + "its design philosophy emphasizes code readability with its use of significant indentation.\n", + "its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.\n" + ] + } + ], + "source": [ + "print(new_python_definition.replace(\". \", \".\\n\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a\\b\n" + ] + } + ], + "source": [ + "test = \"a\\\\b\"\n", + "\n", + "print(test)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [], + "source": [ + "new_python_definition = python_definition.replace(\"python\", \"lovely python\").replace(\".\", \". \\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les booléens en détail" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False\n", + "True\n", + "True\n", + "True\n", + "False\n", + "False\n", + "True\n", + "True\n", + "False\n", + "True\n", + "True\n", + "False\n", + "True\n", + "False\n", + "True\n" + ] + } + ], + "source": [ + "x = 8\n", + "y = 9\n", + "z = [7 ,8]\n", + "\n", + "\"\"\"Les booléens sont souvent le résultat d'une comparaison \"\"\"\n", + "\n", + "print( x == y ) #equal\n", + "\n", + "print( x != y ) # not equal\n", + "\n", + "print( x < y ) #strictly less than\n", + "\n", + "print( x <= y ) #less than or equal\n", + "\n", + "print( x > y ) #strictly greater than\n", + "\n", + "print( x >= y ) #greater than or equal\n", + "\n", + "\"\"\" ou le résultat d'affirmation \"\"\"\n", + "\n", + "print( type(x) is int ) # être\n", + "\n", + "print( type(x) is not str ) # ou ne pas être\n", + "\n", + "print( x in z) # appartenir\n", + "\n", + "print( y not in z ) # ou ne pas appartenir\n", + "\n", + "\"\"\" enfin ils peuvent être combiné grâve à des opérateurs logique \"\"\"\n", + "t = True\n", + "f = False\n", + "\n", + "print( t and f) # s'écrit aussi &\n", + "print( t or f) # s'écrit aussi | \n", + "print( not t)\n", + "print( not f)" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "0 == False" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "True or True" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "exercice : 1,2,3,4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.12 ('env': venv)", + "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" + }, + "orig_nbformat": 2, + "vscode": { + "interpreter": { + "hash": "f9351f71b73ea8a230435cc436bb534a46778c892f07a974c8047a435918be1c" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/3-data-structures.ipynb b/3-data-structures.ipynb new file mode 100644 index 0000000..5fd4c9a --- /dev/null +++ b/3-data-structures.ipynb @@ -0,0 +1,2125 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data structures" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En python, il existe 4 grands types de data structures qui permettent de stocker une collection de données :\n", + "- Les listes\n", + "- les dictionnaires\n", + "- les sets\n", + "- les tuples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les listes " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### définition et déclaration" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Une liste est une collection d'objets:\n", + "- dont l'ordre compte, elle est ordonnée (contrairement aux dictionnaires et aux sets) \n", + "- dont les éléments peuvent être modifiés (contrairement aux tuples et aux sets)\n", + "- dont un élément peut être répétés plusieurs fois (contrairement aux sets)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Créer des listes contenants des éléments:\n", + "liste_de_nombres = [1, 2, 3, 5, 7, 11, 13, 17, 17]\n", + "liste_de_strings = [\"a\", \"b\", \"abc\"]\n", + "liste_foutoire = [7, 4.2, \"un truc\", True, [\"une\",\"autre\",\"liste\"]]\n", + "\n", + "# Créer des listes vides: \n", + "liste_vide = []\n", + "liste_vide = list()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On accède aux éléments d'une liste par leur indice :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# On accède aux éléments d'une liste ainsi:\n", + "# soit en partant du début\n", + "# le premier élément se trouve à l'indice 0\n", + "print(liste_de_nombres[0], \" est le 1er élément\")\n", + "print(liste_de_nombres[4], \" est le 5ème élément\") \n", + "\n", + "# soit par la fin\n", + "print(liste_de_nombres[-1], \" est le dernier élément\")\n", + "\n", + "# On peut également selectionner une partie de la liste\n", + "print(liste_de_nombres[1:3]) # L'indice final est exclusif tandis que le premier indice est inclusif\n", + "\n", + "# On peut également selectionner tous les premiers ou tous les derniers éléments\n", + "print(liste_de_nombres[:3])\n", + "print(liste_de_nombres[3:-1])\n", + "liste_de_nombres[::-1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exercice : Que sélectionne cette expression ? (décommenter à l'aide d'un raccourci pour afficher la réponse)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "liste_foutoire = [7, 4.2, \"un truc\", True, [\"une\",\"autre\",\"liste\"]]\n", + "\n", + "# liste_foutoire[3]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "first_selection = liste_foutoire[4]\n", + "print(first_selection)\n", + "second_selection = first_selection[1]\n", + "print(second_selection)\n", + "third_selection = second_selection[1]\n", + "print(third_selection)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "liste_foutoire[4][1][1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "liste_foutoire[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# On peut supprimer un élément en se servant de son indice\n", + "del liste_foutoire[3]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "liste_foutoire" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "liste_de_nombres = [1, 2, 3, 8, 7, 11, 13, 17, 17]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "liste_de_nombres" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# On peut ainsi modifier les valeurs d'une liste à un certain indice\n", + "liste_de_nombres[3] = \"Un changement\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "liste_de_nombres" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'**indexation** en Python permet d'accéder à des éléments spécifiques dans des structures de données comme les listes, tuples ou chaînes de caractères. Les éléments sont référencés en utilisant des indices, qui commencent à **0** pour le premier élément. Par exemple, dans une liste `L = [10, 20, 30, 40]`, l'élément à l'indice 1 est `L[1]`, soit **20**. Python permet aussi une **indexation négative**, où `-1` désigne le dernier élément, `-2` l'avant-dernier, etc.\n", + "\n", + "En plus de l'indexation simple, il est possible de faire du **slicing** (découpage) avec la syntaxe `liste[start:end:step]`. Par exemple, pour récupérer tous les éléments d'une liste entre l’indice 1 et 3 (exclus) : `L[1:3]` renvoie `[20, 30]`. Le paramètre `step` permet de définir l'intervalle entre les indices. Ainsi, `L[::2]` renverra `[10, 30]`, prenant un élément sur deux.\n", + "\n", + "Les **`:`** peuvent donc être utilisés pour omettre les valeurs par défaut : si `start` est omis, l'indexation commencera au début de la liste, et si `end` est omis, elle ira jusqu'à la fin.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 'Un changement', 7, 11, 13, 17, 17]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Un changement', 3, 2, 1]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres[3::-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[17, 17, 13, 11, 7, 'Un changement', 3, 2, 1]" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Obtenir une liste en sens inverse\n", + "liste_de_nombres[::-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Un changement', 7, 11, 13, 17]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres[3:-1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explications ChatGPT :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "liste_de_nombres[:3:-1]\n", + "\n", + "Le début du découpage n'est pas spécifié (il est vide avant le premier :), donc cela commence à partir de la fin de la liste (car le pas est -1, ce qui signifie que le découpage est en mode inversé).\n", + "3 est la fin du découpage. Cela signifie que le découpage s'arrêtera avant l'index 3 (sans inclure l'élément à l'index 3).\n", + "Le pas est -1, donc la liste sera retournée à l'envers.\n", + "En résumé, cette expression prend tous les éléments de la fin de la liste jusqu'à, mais sans inclure, l'élément à l'index 3, et les renvoie dans l'ordre inverse.\n", + "\n", + "liste_de_nombres[3:-1]\n", + "\n", + "3 est le début du découpage. Cela signifie que le découpage commencera à partir de l'élément à l'index 3.\n", + "-1 est la fin du découpage. En Python, un index négatif compte à partir de la fin. Ainsi, -1 représente le dernier élément. Donc, le découpage s'arrêtera avant le dernier élément (sans inclure le dernier élément).\n", + "Le pas n'est pas spécifié, donc il est par défaut de 1, ce qui signifie que la liste sera retournée dans l'ordre normal.\n", + "En résumé, cette expression prend tous les éléments à partir de l'index 3 jusqu'à, mais sans inclure, le dernier élément." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'expression liste_de_nombres[3::-1] est une autre variante de la fonctionnalité de découpage des listes en Python. Voici comment elle fonctionne :\n", + "\n", + "3 est le début du découpage. Cela signifie que le découpage commencera à partir de l'élément à l'index 3.\n", + "La fin du découpage n'est pas spécifiée (elle est vide après le premier :), ce qui, en combinaison avec un pas négatif, signifie que le découpage continuera jusqu'au début de la liste.\n", + "Le pas est -1, donc la liste sera retournée à l'envers.\n", + "En d'autres termes, cette expression prend tous les éléments depuis l'index 3 jusqu'au début de la liste, et les renvoie dans l'ordre inverse.\n", + "\n", + "Si nous prenons l'exemple précédent où liste_de_nombres = [0, 1, 2, 3, 4, 5] :\n", + "\n", + "liste_de_nombres[3::-1] renverra [3, 2, 1, 0]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### fonctions utiles" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 100, 7, 11, 13, 17, 17]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres[3] = 100\n", + "liste_de_nombres" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# connaitre le nombre d'éléments dans une liste\n", + "len(liste_de_nombres)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# connaitre la somme d'une liste numérique\n", + "sum(liste_de_nombres)\n", + "\n", + "# connaitre le maximum ou le minimum d'une liste numérique\n", + "max(liste_de_nombres)\n", + "\n", + "# min(liste_de_nombres)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'>' not supported between instances of 'str' and 'int'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[61], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m liste_de_strings \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m1\u001b[39m,\u001b[38;5;241m2\u001b[39m,\u001b[38;5;241m3\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m1\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;43mmax\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mliste_de_strings\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mTypeError\u001b[0m: '>' not supported between instances of 'str' and 'int'" + ] + } + ], + "source": [ + "liste_de_strings = [1,2,3,'1']\n", + "max(liste_de_strings)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Méthodes associées à la classe liste" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "liste_de_nombres = [3,8,7]" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [], + "source": [ + "liste_de_nombres_2 = [1,3,5,6,7]\n", + "liste_de_nombres.extend(liste_de_nombres_2)" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[3, 8, 7, 1, 3, 5, 6, 7, 'test']" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres += ['test']\n", + "liste_de_nombres" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[3, 8, 7, 1, 3, 5, 6, 7, 'test']" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "liste_de_nombres.insert(2,'insert_test')" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[3, 8, 'insert_test', 7, 1, 3, 5, 6, 7, 'test']" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['abc', 'abc', 3, 8, 7, 1, 1, 3, 5, 6, 7, [1, 3, 5, 6, 7], 'test', 'test']" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_de_nombres" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "liste_de_strings[3] = \"antoine\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "liste_de_strings" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "# ajouter un élément à la fin une liste\n", + "liste_de_nombres.append(89)\n", + "\n", + "# Ajoute un élément à une liste à une certaine position (ici au début: 0)\n", + "liste_de_nombres.insert(0, -1) # d'abord l'indice puis ce qu'on ajoute\n", + "\n", + "# # concatène deux listes (ajoute une liste à une autre)\n", + "liste_de_nombres.extend(liste_de_nombres_2)\n", + "\n", + "# # supprimer un élément d'une liste en utilisant sa valeur\n", + "liste_de_strings.remove(\"abc\")\n", + "\n", + "# # supprime un élément d'une liste en utilisant son indice\n", + "# # si aucun argument est founi, supprime le dernier élément de la liste\n", + "liste_de_strings.pop()\n", + "\n", + "# # ordonner les éléments d'une liste\n", + "liste_de_nombres.sort()\n", + "\n", + "# # retrouve l’indice de la première occurrence d’un élément à chercher dans notre liste ;\n", + "liste_de_strings.index('antoine')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour les autres méthodes voir la : https://docs.python.org/fr/3/tutorial/datastructures.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**: " + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6\n" + ] + }, + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "liste_nombres = [1, 6, 98, 52, 1045, 3]\n", + "\n", + "# 1) classez la liste en ordre croissant\n", + "liste_nombres.sort()\n", + "\n", + "# 2) supprimez le premier élément de la liste\n", + "liste_nombres.pop(0)\n", + "# 3) ajoutez le nombre \"1097\" à la fin de la liste\n", + "liste_nombres.append(1097)\n", + "# 4) récupérez le deuxième élément dans une variable \"deuxieme_element\"\n", + "deuxieme_element = liste_nombres[1]\n", + "print(deuxieme_element) # la console devrait afficher \"6\" !\n", + "\n", + "# 5) affichez la longueur de la liste\n", + "len(liste_nombres)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les dictionnaires" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Définition et création" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un dictionnaire est un objet permettant de stocker des informations à l'aide d'un système clé/valeur.\n", + "A chaque clé correspond une valeur, les clés n'ont pas d'ordre entre elles." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Créer un dictionnaire vide" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_dict = {}\n", + "new_dict = dict()\n", + "print(new_dict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Créer un dictionnaire contenant des données" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'lesstrings': 'exemple', 'lesintegers': 9, 'leslistes': [7, 8, 9], 'les booleen': True}\n" + ] + } + ], + "source": [ + "trucs_appris_en_python = { \n", + " \"lesstrings\": \"exemple\", \n", + " \"lesintegers\": 9, \n", + " \"leslistes\": [7,8,9], \n", + " \"les booleen\": True \n", + "}\n", + "\n", + "print(trucs_appris_en_python)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'4.3': 3}" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{\"4.3\":3}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Restriction:\n", + "- Les clés peuvent être des int, des float, des str (tout object immutable (voir plus loin)) mais une clé ne peut être utilisée qu'une seule fois \n", + "- les valeurs peuvent être ne n'importe quel type" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Accéder aux valeurs" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'lesstrings': 'exemple',\n", + " 'lesintegers': 9,\n", + " 'leslistes': [7, 8, 9],\n", + " 'les booleen': True}" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trucs_appris_en_python" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'exemple'" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Accéder à une valeur à partir de sa clé\n", + "trucs_appris_en_python[\"lesstrings\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "trucs_appris_en_python" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'lesstrings': 'exemple',\n", + " 'lesintegers': 9,\n", + " 'leslistes': [7, 8, 9],\n", + " 'les booleen': True,\n", + " 'lesfloats': 3.8}" + ] + }, + "execution_count": 111, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# On peut à tout moment ajouter une nouvelle clé à un dictionnaire en lui attribuant une valeur\n", + "trucs_appris_en_python['lesfloats'] = 3.8\n", + "trucs_appris_en_python" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [], + "source": [ + "# On modifie la valeur comme on modifierait une variable\n", + "trucs_appris_en_python['leslistes'].append(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [], + "source": [ + "my_new_list = [86,87]" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'lesstrings': 'exemple',\n", + " 'lesintegers': 9,\n", + " 'leslistes': [7, 8, 9],\n", + " 'les booleen': True}" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trucs_appris_en_python" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [], + "source": [ + "trucs_appris_en_python[\"leslistes2\"] = my_new_list" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'lesstrings': 'exemple',\n", + " 'lesintegers': 9,\n", + " 'leslistes': [7, 8, 9],\n", + " 'les booleen': True,\n", + " 'leslistes2': [86, 87, 88]}" + ] + }, + "execution_count": 160, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trucs_appris_en_python" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [], + "source": [ + "my_new_list.append(88)" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[86, 87, 88]" + ] + }, + "execution_count": 159, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_new_list" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [], + "source": [ + "# On modifie la valeur comme on modifierait une variable\n", + "trucs_appris_en_python['lesintegers'] = test_value" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'lesintegers': 86, 'leslistes': [7, 8, 9, 3], 'les booleen': True}" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trucs_appris_en_python" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'lesstrings': 'exemple', 'lesintegers': 9, 'leslistes': [7, 8, 9], 'les booleen': True}\n" + ] + }, + { + "data": { + "text/plain": [ + "{'lesintegers': 9, 'leslistes': [7, 8, 9], 'les booleen': True}" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# supprimer un couple clef/valeur\n", + "del trucs_appris_en_python['lesfloats']\n", + "print(trucs_appris_en_python)\n", + "\n", + "# une autre manière de supprimer un couple cle/valeur:\n", + "trucs_appris_en_python.pop('lesstrings') \n", + "trucs_appris_en_python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Parcourir un dictionnaire" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'lesintegers': 9, 'leslistes': [7, 8, 9], 'les booleen': True}" + ] + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trucs_appris_en_python" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "# vérifier l'existence d'une clef:\n", + "print(\"leslistes\" in trucs_appris_en_python)" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['lesintegers', 'leslistes', 'les booleen'])\n", + "dict_values([9, [7, 8, 9], True])\n", + "dict_items([('lesintegers', 9), ('leslistes', [7, 8, 9]), ('les booleen', True)])\n" + ] + } + ], + "source": [ + "# trois méthodes importantes liées aux dictionnaires:\n", + "print(trucs_appris_en_python.keys())\n", + "print(trucs_appris_en_python.values())\n", + "print(trucs_appris_en_python.items())" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "# Utilisation de values()\n", + "print( 9 in trucs_appris_en_python.values() )" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "# Utilisation de items()\n", + "print( (\"lesintegers\",9) in trucs_appris_en_python.items() )" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "print(\"leslistes\" in trucs_appris_en_python.keys())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## La Mutabilité" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Définition" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Observons quelque chose:" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "jeremy\n", + "JEREMY\n" + ] + } + ], + "source": [ + "a = \"JEREMY\"\n", + "\n", + "print(a.lower())\n", + "\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2, 3]\n" + ] + } + ], + "source": [ + "b = [1,2]\n", + "\n", + "b.append(3)\n", + "\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quand on définit une variable en python on définit toujours un nom qui pointe vers une valeur enregistrée en mémoire. En fonction du type d'objet la valeur inscrite en mémoire peut être modifiée ou non. On appelle cela la mutabilité\n", + "- Les Objets immutables sont ceux dont la valeur en mémoire ne peut changer: Entiers, flottants, complexes, tuples, chaînes de caractères, …\n", + "- LEs Objets mutables sont ceux dont la valeur en mémoire change: Listes, dictionnaires, …" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Récupérer le résultat des opérations " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quand on modifie un object immutable, ce que l'on fait en réalité c'est de déclarer une nouvelle valeur en mémoire. Cette nouvelle valeur si on veut s'en servir il faut lui donner un nouveau nom et donc l'assigner à une variable\n", + "\n", + "Pour les object mutable, quand on les modifie, c'est directement l'objet en mémoire qui est modifié, pas besoin donc d'assigner un nouveau nom de variable pour ce résultat. Si on le fait, python n'enregistrera pas la nouvelle valeur prise mais un objet nul ou parfois le résultat de l'opération. C'est donc le meilleur moyen de perdre ses données:" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JEREMY\n", + "Jeremy\n" + ] + } + ], + "source": [ + "a = \"Jeremy\"\n", + "\n", + "a_bis = a.upper()\n", + "\n", + "print(a_bis)\n", + "\n", + "# a = a.upper()\n", + "\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3]" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [], + "source": [ + "b = [1,2]\n", + "b.append(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n", + "None\n" + ] + } + ], + "source": [ + "b = [1,2]\n", + "\n", + "b_bis = b.append(3)\n", + "\n", + "print(b_bis)\n", + "\n", + "b = b.append(3)\n", + "\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Créer des alias et des copies" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut faire en sorte qu'une variable soit égale à la valeur d'une autre variable" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = [1,2]\n", + "value_deleted = b.pop(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [], + "source": [ + "a = \"Jeremy\"\n", + "b = [1,2]\n", + "\n", + "a_alias = a\n", + "b_alias = b" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2]" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b_alias" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans ce cas là, on crée en réalité un alias, on crée un nouveau nom qui point vers la même valeur en mémoire." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On a vue que pour les immutables, la valeur en mémoire ne changeait pas, si on fait donc pointer l'un des deux alias vers une nouvelle valeur, l'autre pointera toujours vers l'ancienne valeur inchangée" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'JEREMY'" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.upper()" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JEREMY\n", + "Jeremy\n" + ] + } + ], + "source": [ + "a = a.upper()\n", + "print(a)\n", + "print(a_alias)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour les objets mutables, c'est la valeur en mémoire qui change. Si donc on la modifie en utilisant un des deux alias, l'autre alias pointera égaement vers la valeur modifiée" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2]" + ] + }, + "execution_count": 172, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2, 3, 3]\n", + "[1, 2, 3, 3]\n" + ] + } + ], + "source": [ + "b.append(3)\n", + "print(b)\n", + "print(b_alias)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si on veut conserver l'état initial d'un objet mutable, il ne faut pas créer un alias mais une copie" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 3]" + ] + }, + "execution_count": 175, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2, 3, 3, 4]\n", + "[1, 2, 3, 3]\n" + ] + } + ], + "source": [ + "b_copie = b.copy()\n", + "\n", + "b.append(4)\n", + "\n", + "print(b)\n", + "print(b_copie)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**: \n", + "\n", + "- Déclarer une variable de type float égale à -3.9874. \n", + " - Conserver une copie de cette état initial\n", + " - Calculer la valeur absolue de cette variable. \n", + " - Puis ajouter cette valeur absolue à la valeur initiale de la variable \n", + " - (Toutes ces étapes sont à faire séparement et pas sur une seule ligne)\n", + "- Créer un dictionnaire avec une cle \"nombre\" et comme valeur l'int 90\n", + " - Conserver une copie de cette état initial\n", + " - Modifier la cle pour lui donner comme valeur 150\n", + " - additionner les valeurs de cette clé pour l'état initial et l'état modifié\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-3.9874\n", + "0.0\n", + "-3.9874\n" + ] + } + ], + "source": [ + "var_immuable = -3.9874\n", + "var_immuable_copy = var_immuable\n", + "abs(var_immuable_copy)\n", + "# print(var_immuable_copy_abs)\n", + "print(var_immuable)\n", + "var_immuable_copy = var_immuable_copy + abs(var_immuable_copy)\n", + "print(var_immuable_copy)\n", + "print(var_immuable)" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'nombre': 90}\n", + "{'nombre': 240}\n", + "{'nombre': 240}\n" + ] + } + ], + "source": [ + "\n", + "my_dict = {'nombre' : 90}\n", + "my_dict_copy = my_dict.copy()\n", + "my_dict_fake_copy = my_dict\n", + "\n", + "my_dict['nombre'] += 150\n", + "print(my_dict_copy)\n", + "print(my_dict)\n", + "print(my_dict_fake_copy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les sets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un set est une collection non ordonnée et non indexée d'éléments uniques. En d'autres termes, les éléments d'un ensemble ne peuvent pas être dupliqués. Les ensembles sont très utiles pour effectuer des opérations d'ensemble, comme l'union, l'intersection, la différence, etc.\n", + "\n", + "Valeurs acceptées : \n", + "- int\n", + "- float\n", + "- str" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5}\n" + ] + } + ], + "source": [ + "# Création d'un set\n", + "mon_set = {1, 2, 3, 4, 5}\n", + "print(mon_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 207, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{}" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": {}, + "outputs": [], + "source": [ + "my_list_with_duplicates = [1,1,1,2,2,3]" + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3]" + ] + }, + "execution_count": 199, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(set(my_list_with_duplicates))" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_values(['exemple', 9, [7, 8, 9], True, [86, 87, 88]])" + ] + }, + "execution_count": 201, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trucs_appris_en_python.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unhashable type: 'list'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[200], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# connaitre tous les élements uniques\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;43mset\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtrucs_appris_en_python\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalues\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" + ] + } + ], + "source": [ + "# connaitre tous les élements uniques\n", + "set()" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5, 6}\n" + ] + } + ], + "source": [ + "# Ajouter un élément à un set\n", + "mon_set.add(6)\n", + "print(mon_set) # {1, 2, 3, 4, 5, 6}" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'set' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[211], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mmon_set\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\n", + "\u001b[0;31mTypeError\u001b[0m: 'set' object is not subscriptable" + ] + } + ], + "source": [ + "mon_set[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "2", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[210], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Supprimer un élément d'un set\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[43mmon_set\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mremove\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(mon_set) \u001b[38;5;66;03m# {1, 3, 4, 5, 6}\u001b[39;00m\n\u001b[1;32m 5\u001b[0m mon_set[\u001b[38;5;241m1\u001b[39m]\n", + "\u001b[0;31mKeyError\u001b[0m: 2" + ] + } + ], + "source": [ + "# Supprimer un élément d'un set\n", + "\n", + "mon_set.remove(2)\n", + "print(mon_set) # {1, 3, 4, 5, 6}\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Opérations avec les sets" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5, 6, 7, 8}\n", + "{4, 5}\n", + "{1, 2, 3}\n" + ] + } + ], + "source": [ + "set1 = {1, 2, 3, 4, 5}\n", + "set2 = {4, 5, 6, 7, 8}\n", + "\n", + "# Union\n", + "print(set1 | set2)\n", + "\n", + "# Intersection\n", + "print(set1 & set2)\n", + "\n", + "# Différence\n", + "print(set1 - set2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exercices sur les sets :\n", + "\n", + "1. Créez un set contenant les lettres de votre prénom.\n", + "2. Ajoutez une lettre à votre set.\n", + "3. Supprimez une lettre de votre set.\n", + "4. Créez un second set avec un autre prénom, et trouvez les lettres communes aux deux prénoms." + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a', 'b', 'e', 'i', 'j', 'm', 'n'}" + ] + }, + "execution_count": 225, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set(\"benjamin\")" + ] + }, + { + "cell_type": "code", + "execution_count": 226, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'e', 'm'}" + ] + }, + "execution_count": 226, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "name_set = {\"j\", \"e\", \"r\", \"e\", \"m\", \"y\"}\n", + "name_set.add('z')\n", + "name_set.remove(\"j\")\n", + "name_set & set(list(\"benjamin\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tuples en Python\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un tuple est une collection ordonnée et immuable d'éléments. Contrairement aux listes, une fois qu'un tuple est créé, vous ne pouvez pas modifier, ajouter ou supprimer d'éléments." + ] + }, + { + "cell_type": "code", + "execution_count": 227, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 2, 3, 4, 5)\n" + ] + } + ], + "source": [ + "# Création d'un tuple\n", + "\n", + "mon_tuple = (1, 2, 3, 4, 5)\n", + "print(mon_tuple)" + ] + }, + { + "cell_type": "code", + "execution_count": 228, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "# Accéder à un élément d'un tuple\n", + "\n", + "print(mon_tuple[1]) # 2" + ] + }, + { + "cell_type": "code", + "execution_count": 229, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[229], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Tenter de modifier un tuple générera une erreur\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[43mmon_tuple\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m6\u001b[39m \u001b[38;5;66;03m# TypeError\u001b[39;00m\n", + "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "source": [ + "# Tenter de modifier un tuple générera une erreur\n", + "\n", + "mon_tuple[1] = 6 # TypeError" + ] + }, + { + "cell_type": "code", + "execution_count": 231, + "metadata": {}, + "outputs": [], + "source": [ + "mon_tuple2 = (\"a\", 8.5, [1,2], {1,2}, {\"key\":\"value\"}, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exercices sur les tuples :\n", + "\n", + "1. Créez un tuple avec vos 5 films préférés.\n", + "2. Affichez le premier et le dernier film de votre tuple.\n", + "3. Essayez de remplacer un film par un autre pour vérifier l'immutabilité du tuple." + ] + }, + { + "cell_type": "code", + "execution_count": 237, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[237], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m my_tuple \u001b[38;5;241m=\u001b[39m (\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLa Haine\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Intouchables\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIndependance Day\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mJurrasic Park\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDikkenek\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 3\u001b[0m \u001b[43mmy_tuple\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUn film\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 4\u001b[0m my_tuple[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n", + "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "source": [ + "my_tuple = (\"La Haine\", \" Intouchables\", \"Independance Day\", \"Jurrasic Park\", \"Dikkenek\")\n", + "\n", + "my_tuple[0] = \"Un film\"\n", + "my_tuple[-1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice combinant les listes, tuples, dictionnaires et sets :\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "metadata": {}, + "outputs": [], + "source": [ + "mylist = [\"La Haine\",\n", + "\"Amélie\",\n", + "\"La La Land\",\n", + "\"La Haine\",\n", + "\"Intouchables\",\n", + "\"Le Fabuleux Destin d'Amélie Poulain\",\n", + "\"Intouchables\",\n", + "\"La Cité des enfants perdus\",\n", + "\"Les Misérables\"\n", + "\"La Cité des enfants perdus\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Créez un set pour obtenir la liste unique des films.\n", + "- Créez un dictionnaire où la clé est le film et la valeur est sa position initiale dans la liste (utilisez un tuple pour stocker les positions si un film apparaît plusieurs fois).\n", + "- Ajoutez à votre dictionnaire un autre film de votre choix avec sa position fictive.\n", + "- Affichez le nom du film et ses positions à partir du dictionnaire." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 282, + "metadata": {}, + "outputs": [], + "source": [ + "set_list = set(mylist)\n", + "\n", + "my_dict = {}" + ] + }, + { + "cell_type": "code", + "execution_count": 283, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 La Haine\n", + "1 Amélie\n", + "2 La La Land\n", + "3 La Haine\n", + "4 Intouchables\n", + "5 Le Fabuleux Destin d'Amélie Poulain\n", + "6 Intouchables\n", + "7 La Cité des enfants perdus\n" + ] + } + ], + "source": [ + "for i in range(len(mylist)-1):\n", + " # print(i)\n", + " # print(mylist[i])\n", + " print(i, mylist[i])\n", + " if mylist[i] in my_dict:\n", + " my_dict[mylist[i]]= (my_dict[mylist[i]], i)\n", + " else :\n", + " my_dict[mylist[i]] = i" + ] + }, + { + "cell_type": "code", + "execution_count": 284, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'La Haine': (0, 3),\n", + " 'Amélie': 1,\n", + " 'La La Land': 2,\n", + " 'Intouchables': (4, 6),\n", + " \"Le Fabuleux Destin d'Amélie Poulain\": 5,\n", + " 'La Cité des enfants perdus': 7}" + ] + }, + "execution_count": 284, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_dict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.14" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/3b-data-structures.ipynb b/3b-data-structures.ipynb new file mode 100644 index 0000000..eb64dc1 --- /dev/null +++ b/3b-data-structures.ipynb @@ -0,0 +1,342 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compréhension de listes, dictionnaires et opérateurs ternaires en Python\n", + "\n", + "Dans ce cours, nous allons explorer trois concepts très pratiques et concis en Python :\n", + "1. La **compréhension de listes** pour générer des listes de manière élégante.\n", + "2. La **compréhension de dictionnaires** pour créer des dictionnaires en une seule ligne.\n", + "3. Les **opérateurs ternaires**, qui permettent de simplifier des expressions conditionnelles.\n", + "\n", + "Commençons par la compréhension de listes !\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Compréhension de listes\n", + "\n", + "La **compréhension de listes** est une manière compacte et lisible de générer des listes à partir d'itérables, souvent en appliquant une condition ou une transformation sur chaque élément.\n", + "\n", + "### Structure de base :\n", + "```python\n", + "[expression for element in iterable if condition]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrés : [1, 4, 9, 16, 25]\n" + ] + } + ], + "source": [ + "nombres = [1, 2, 3, 4, 5]\n", + "carres = [x**2 for x in nombres]\n", + "print(\"Carrés :\", carres)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemple 2 : Appliquer une condition dans la compréhension de liste\n", + "\n", + "On peut aussi ajouter une **condition** pour filtrer les éléments. Ici, on va seulement garder les nombres pairs et calculer leur carré.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrés des nombres pairs : [4, 9, 16, 36, 64]\n" + ] + } + ], + "source": [ + "# Exemple avec condition\n", + "nombres = [1, 2, 3, 4, 5, 6, 7, 8]\n", + "carres_pairs = [x**2 for x in nombres if x % 2 == 0 or x % 3 == 0]\n", + "print(\"Carrés des nombres pairs :\", carres_pairs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemple 3 : Compréhension avec une double boucle\n", + "\n", + "Il est possible d'utiliser plusieurs boucles imbriquées dans une compréhension de liste. Par exemple, si on veut créer toutes les paires possibles à partir de deux listes :\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Paires possibles : [(2, 'a'), (2, 'b'), (2, 'c')]\n" + ] + } + ], + "source": [ + "# Double boucle dans une compréhension de liste\n", + "liste1 = [1, 2, 3]\n", + "liste2 = ['a', 'b', 'c']\n", + "paires = [(x, y) for x in liste1 for y in liste2 if x % 2 == 0]\n", + "print(\"Paires possibles :\", paires)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Compréhension de dictionnaires\n", + "\n", + "La compréhension de dictionnaires fonctionne de la même manière que celle des listes, mais elle permet de créer un dictionnaire en une seule ligne.\n", + "\n", + "### Structure de base :\n", + "```python\n", + "{key_expression: value_expression for element in iterable if condition}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dictionnaire de carrés : {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}\n" + ] + } + ], + "source": [ + "# Exemple 1 : Créer un dictionnaire avec des carrés\n", + "nombres = [1, 2, 3, 4, 5]\n", + "carres_dict = {x: x**2 for x in nombres}\n", + "print(\"Dictionnaire de carrés :\", carres_dict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemple 2 : Ajouter une condition dans la compréhension d'un dictionnaire\n", + "\n", + "On peut aussi filtrer les éléments avec une condition, par exemple, créer un dictionnaire uniquement pour les nombres pairs.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dictionnaire des carrés des nombres pairs : {2: 4, 4: 16}\n" + ] + } + ], + "source": [ + "# Exemple avec condition\n", + "carres_pairs_dict = {x: x**2 for x in nombres if x % 2 == 0}\n", + "print(\"Dictionnaire des carrés des nombres pairs :\", carres_pairs_dict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Opérateurs ternaires\n", + "\n", + "L'opérateur ternaire en Python est une manière concise d'écrire des instructions conditionnelles sur une seule ligne.\n", + "\n", + "### Structure de base :\n", + "```python\n", + "valeur_si_vrai if condition else valeur_si_faux\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "majeur\n" + ] + } + ], + "source": [ + "age = 15\n", + "\n", + "if age >= 18 : \n", + " status = \"majeur\"\n", + "else :\n", + " status = \"majeur\"\n", + "\n", + "print(status)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Statut : majeur\n" + ] + } + ], + "source": [ + "# Exemple 1 : Simple utilisation de l'opérateur ternaire\n", + "age = 18\n", + "status = \"majeur\" if age >= 18 else \"mineur\"\n", + "print(\"Statut :\", status)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemple 2 : Utiliser un opérateur ternaire dans une boucle\n", + "\n", + "On peut aussi utiliser l'opérateur ternaire dans une compréhension de liste. Par exemple, transformer les éléments selon une condition.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parité des nombres : ['rien', 'pair', 'rien', 'multiple de 4', 'rien']\n" + ] + } + ], + "source": [ + "# Exemple avec opérateur ternaire dans une compréhension de liste\n", + "nombres = [1, 2, 3, 4, 5]\n", + "parite = [ \"multiple de 4\" if x%4 == 0 else \"pair\" if x % 2 == 0 else \"rien\" for x in nombres ]\n", + "print(\"Parité des nombres :\", parite)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemple 3 : Opérateurs ternaires dans une fonction\n", + "\n", + "Tu peux également utiliser les opérateurs ternaires pour retourner une valeur basée sur une condition dans une fonction.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "majeur\n", + "mineur\n" + ] + } + ], + "source": [ + "# Fonction avec opérateur ternaire\n", + "def check_age(age):\n", + " return \"majeur\" if age >= 18 else \"mineur\"\n", + "\n", + "print(check_age(20)) # Devrait afficher \"majeur\"\n", + "print(check_age(15)) # Devrait afficher \"mineur\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Les compréhensions de listes et de dictionnaires, ainsi que les opérateurs ternaires, sont des outils puissants en Python pour écrire du code concis, lisible et efficace. Ils sont particulièrement utiles dans les situations où l'on doit transformer, filtrer ou manipuler des collections d'éléments.\n", + "\n", + "**Résumé :**\n", + "- La **compréhension de listes** permet de générer des listes en une ligne, avec éventuellement des conditions.\n", + "- La **compréhension de dictionnaires** permet de créer des dictionnaires de manière tout aussi concise.\n", + "- Les **opérateurs ternaires** permettent d'écrire des expressions conditionnelles sur une seule ligne.\n", + "\n", + "N'hésite pas à expérimenter ces concepts dans ton propre code pour en tirer le meilleur parti !\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercices\n", + "\n", + "1. Crée une liste des cubes des nombres de 1 à 10.\n", + "2. Crée un dictionnaire où les clés sont des nombres de 1 à 5 et les valeurs sont \"pair\" ou \"impair\" selon la parité du nombre.\n", + "3. Utilise un opérateur ternaire pour écrire une fonction qui renvoie \"positif\", \"négatif\" ou \"zéro\" en fonction de l'input.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "api", + "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.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/4-les_conditions_et_les_boucles.ipynb b/4-les_conditions_et_les_boucles.ipynb new file mode 100644 index 0000000..24fcc05 --- /dev/null +++ b/4-les_conditions_et_les_boucles.ipynb @@ -0,0 +1,447 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Les conditions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if True:\n", + " print('The condition passed')\n", + "\n", + "if False:\n", + " print('The condition not passed')\n", + "\n", + "if 0 :\n", + " print('The condition not passed')\n", + "\n", + "if 1:\n", + " print('The condition passed')\n", + "\n", + "if 1 == True:\n", + " print('The condition passed')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\" Structure générale d'une condition if \"\"\"\n", + "if mon_booleen:\n", + " # exécuter le code quand mon_booleen est vrai\n", + "else:\n", + " # exécuter le code quand mon_booleen est faux" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\" Exemple \"\"\"\n", + "\n", + "ensoleille = False\n", + "\n", + "if ensoleille:\n", + " print(\"on va à la plage !\")\n", + "else:\n", + " print(\"on reste à la maison !\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "0 == 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\" Il est également possible d'ajouter d'autres conditions\"\"\"\n", + "\n", + "ensoleille = False\n", + "neige = True\n", + "\n", + "if ensoleille:\n", + " print(\"on va à la plage !\")\n", + "elif neige:\n", + " print(\"on fait un bonhomme de neige\")\n", + "else:\n", + " print(\"on reste à la maison !\")\n", + "\n", + "a = 8\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 1\n", + "\n", + "if a > 2:\n", + " print(a, \" est plus grand 2\")\n", + "\n", + "print(\"fin du programme\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rappel: Les booléens peuvent être combinés avec des opérateurs logiques (and, or ..) ou issus de comparaisons (<, >, == ...)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Exemple\n", + "x = 7\n", + "\n", + "if x < 10 and x > 3 :\n", + " print(f\"{x} est compris entre 3 et 10, non-inclus\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 1`**: quelle est la valeur de x?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = True\n", + "b = False\n", + "c = True\n", + "\n", + "if a and b:\n", + " x = 5\n", + "elif not c:\n", + " x = 4\n", + "elif a:\n", + " x = 8\n", + "else:\n", + " x = 7\n", + "\n", + "print(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 2`**: devinez ce qui va être affiché" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 3\n", + "b = 7\n", + "c = 5\n", + "\n", + "if a < b or b != c and c >= b: #True, True, False\n", + " print(\"c'est vrai\")\n", + "else:\n", + " print(\"c'est faux\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Les boucles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## La boucle for" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Le principal interet de la boucle for est de parcourir des listes\n", + "liste_apprenants = [\"Pascal\", \"Azel\", \"Tony\", \"Vladimir\", \"Sabrina\"]\n", + "\n", + "for i in liste_apprenants:\n", + " print(i, \" présent\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut également s'en servir avec la fonction range, cela permet de parcourir une liste d'entiers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(type(range(5)))\n", + "print(range(5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(10):\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# la fonction range peut prendre plusieurs arguments:\n", + "premier_element = 2\n", + "dernier_element_plus_1 = 11\n", + "pas = 2 # on compte tous les combien\n", + "\n", + "for j in range(premier_element,dernier_element_plus_1,pas):\n", + " print(f\"j = {j}\")\n", + "\n", + "premier_element = 11\n", + "dernier_element_plus_1 = 6\n", + "pas = -3 # on compte tous les combien\n", + "\n", + "print('--------')\n", + "\n", + "for k in range(premier_element,dernier_element_plus_1,pas):\n", + " print(f\"k = {k}\") " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 2`**: écrivez un code qui utilise range et la liste \"ma liste\" et qui à la sortie suivante: \n", + "canari 1 \n", + "avion 2 \n", + "papier 3 \n", + "ciseaux 4 \n", + "toiture 5 " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ma_liste = [\"canari\", \"avion\", \"papier\", \"ciseaux\", \"toiture\"]\n", + "\n", + "range(len(ma_liste))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Boucle While" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# La structure générale de la boucle while est la suivante:\n", + "\n", + "i = 0\n", + "\n", + "while (10 > i) :\n", + " print(f\"la condition est encore vraie car i vaut {i}\")\n", + " i += 1 # on appelle cela l'incrementation\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# l'incrémentation permet de ne pas créer de boucle infinie\n", + "i=11\n", + "condition = 12 > i\n", + "while condition:\n", + " print(\"ceci est une boucle infinie\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 1`**: \n", + "- Utilisez une boucle for et la fonction \"range\" pour calculer la somme des 100 premier entier naturel\n", + "- Utilisez la boucle while pour calculer le produit des 100 premiers entier naturel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# vous aurez surement besoin d'un counter\n", + "counter = 0\n", + "somme = 0\n", + "\n", + "#...\n", + "\n", + "print(somme)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "product = 1\n", + "i = 1\n", + "while \"condition sur i à écrire\":\n", + " # ...\n", + "\n", + "print(product)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 2`**: \n", + "- Dans un fichier script, A l'aide de la fonction while et la fonction input (help(input)) écrivez cette blague\n", + "- \"Si repete et pepete sont dans un bateau, pepete tombe à l'eau, qu'est ce qui reste?\"\n", + "- si la personne répond \"repète\", le programme pose la meme question : \"Si repete et pepete sont dans un bateau, pepete tombe à l'eau, qu'est ce qui reste?\"\n", + "- si la personne répond autre chose le programme pose comme question: \"Mais non tu comprends pas, si repete et pepete sont dans un bateau, pepete tombe à l'eau, qu'est ce qui reste \"\n", + "- si la personne répond \"tu es lourd\" enfin le programme s'arrete" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 3`**: \n", + "- Reprenez votre programme en utilisant l'instruction `break`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 4`**: Plus classique et beaucoup moins drole \n", + "- écrivez un programme script qui demande deux nombres puis renvoie leur somme si les nombres sont valides sinon il renvoie une erreur et demande à nouveaux deux nombres valides." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "exercice 5,6,7,8,9,10,11(faire une recherche), 12, 13,14,15, 16, 17, 18, 19, 20, 21, 22, 23, 24" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "4822798685b95d90cac6b9eac85a216cd3011e561666c6311e8088bbadca8e0f" + }, + "kernelspec": { + "display_name": "Python 3.8.6 64-bit ('3.8.6': pyenv)", + "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.14" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/5-Les_fonctions.ipynb b/5-Les_fonctions.ipynb new file mode 100644 index 0000000..f8ffea3 --- /dev/null +++ b/5-Les_fonctions.ipynb @@ -0,0 +1,449 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Les fonctions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Une fonction est un bloc de code avec un but spécifique auquel vous pouvez donner un nom. \n", + "- Elles sont dans un premier temps définies \n", + "- Puis exécuter. \n", + "Quand vous appelez une fonction, vous exécutez le code qu’elle contient. Les fonctions vous laissent saisir des paramètres pour exécuter le même code sur différentes valeurs." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les fonctions de base" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Certaines fonctions sont déja définies dans python, on en a déja rencontré quelques unes:\n", + "- len(x)\n", + "- type(x)\n", + "- max(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour savoir à quoi sert une fonction (ou une classe) il existe une autre fonction:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on built-in function max in module builtins:\n", + "\n", + "max(...)\n", + " max(iterable, *[, default=obj, key=func]) -> value\n", + " max(arg1, arg2, *args, *[, key=func]) -> value\n", + " \n", + " With a single iterable argument, return its biggest item. The\n", + " default keyword-only argument specifies an object to return if\n", + " the provided iterable is empty.\n", + " With two or more arguments, return the largest argument.\n", + "\n" + ] + } + ], + "source": [ + "help(max)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour les autres fonctions built-in : https://docs.python.org/3/library/functions.html#help" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Définir une fonction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il est également possible de créer ses propres fonctions" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'result' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m/Users/jeremyvangansbeg/Documents/project/intro_python/python-course/5-Les_fonctions.ipynb Cell 10\u001b[0m line \u001b[0;36m9\n\u001b[1;32m 6\u001b[0m \u001b[39mreturn\u001b[39;00m result\n\u001b[1;32m 8\u001b[0m \u001b[39m# étape de l'appel\u001b[39;00m\n\u001b[0;32m----> 9\u001b[0m resultat \u001b[39m=\u001b[39m fonction_name(\u001b[39m\"\u001b[39;49m\u001b[39mquelque_chose\u001b[39;49m\u001b[39m\"\u001b[39;49m,\u001b[39m\"\u001b[39;49m\u001b[39mautre_chose\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n", + "\u001b[1;32m/Users/jeremyvangansbeg/Documents/project/intro_python/python-course/5-Les_fonctions.ipynb Cell 10\u001b[0m line \u001b[0;36m6\n\u001b[1;32m 4\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mfonction_name\u001b[39m(parametre_1,parametre_2):\n\u001b[1;32m 5\u001b[0m \u001b[39m#instructions\u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m \u001b[39mreturn\u001b[39;00m result\n", + "\u001b[0;31mNameError\u001b[0m: name 'result' is not defined" + ] + } + ], + "source": [ + "\"\"\"Structure générale d'une fonction\"\"\"\n", + "\n", + "# étape de la définition\n", + "def fonction_name(parametre_1,parametre_2):\n", + " #instructions\n", + " return result\n", + "\n", + "# étape de l'appel\n", + "resultat = fonction_name(\"quelque_chose\",\"autre_chose\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n" + ] + } + ], + "source": [ + "\"\"\"Exemple\"\"\"\n", + "def add(a,b):\n", + " c = a + b\n", + " return c\n", + "\n", + "print(add(3,4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**: " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Ecrivez une fonction qui permet de calculer le produit des éléments d'une liste contenant des integers.\n", + "def produit_entiers(liste_entiers):\n", + " result = 1\n", + " for x in liste_entiers:\n", + " result *= x\n", + " return result\n", + "\n", + " # écrivez le code ici" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Ecrivez une fonction qui permet de calculer le produit des éléments d'une liste contenant des integers.\n", + "def produit_entiers(liste_entiers):\n", + " result = 1\n", + " for x in liste_entiers:\n", + " if type(x) is int or type(x) is float :\n", + " result *= x\n", + " else :\n", + " return \"Merci de fournir une liste valide\"\n", + " return result\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Union\n", + "\n", + "def produit_entiers(liste_entiers: List[Union[int, float]]) -> float:\n", + " result = 1.0\n", + " for x in liste_entiers:\n", + " try:\n", + " result *= x\n", + " except TypeError:\n", + " raise ValueError(f\"L'élément {x} n'est pas un nombre valide\")\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Merci de fournir une liste valide'" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "produit_entiers([5,\"ff\", 8.5])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 0, 0, 0, 0]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[0] * 5" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def produit_entiers(liste_entiers: list) -> int:\n", + " return \"ok\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ok'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "produit_entiers(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ecrire correctement ses fonctions avec la Pep8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Une docstring est un ensemble de mots qui documente un bout de code. Elle commence par trois guillemets ouvrants, le commentaire que vous souhaitez apporter puis trois guillemets fermants." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Exemple :\n", + "\n", + "\"\"\" This is a docstring. I'm here to explain what the following code will do.\n", + "Oh, I'm multiline too!\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Selon la PEP 8, chaque partie de votre code devrait contenir une Docstring.\n", + "- tous les modules publics\n", + "- toutes les fonctions\n", + "- toutes les classes\n", + "- toutes les méthodes de ces classes" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "def add(a,b):\n", + " \"\"\" \n", + " This function returns the sum of the two parameters\n", + "\n", + " parameters\n", + " ----------\n", + " a: int\n", + " b: int\n", + " \"\"\"\n", + " aprime = abs(a) # on prend la valeur absolue\n", + " bprime = abs(b) \n", + " return a + b" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function add in module __main__:\n", + "\n", + "add(a, b)\n", + " This function returns the sum of the two parameters\n", + " \n", + " parameters\n", + " ----------\n", + " a: int\n", + " b: int\n", + "\n" + ] + } + ], + "source": [ + "help(add)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cependant la Pep 8 nous demande également d'être concis dans nos commentaires et de ne pas commenter des évidences. Il faut donc se poser la question de savoir si ce que nous écrivons est évident pour quelqu'un qui n'a pas écrit le code (ici oui), si ce n'est pas évident alors il faut commenter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`règles d'écriture`**:\n", + "- fonctions: minuscules et tiret du bas : my_function()\n", + "- arguments des méthodes et fonctions : identique aux fonctions. my_function(param=False) (attention pas d'espace)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fonctions et Méthodes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les fonctions et les méthodes sont des objets proches mais qui possèdent des différences et donc ne doivent pas être confondus:\n", + "- Une fonction est défninie independement de tous objets, les objets auxquels elle s'applique sont tous précisés dans ses paramètres\n", + " - **exemple**: round(un_float,2), sum(une_liste), sum(un_int, autre_int)...\n", + "- Une méthode est liée à une classe d'objet, elle est définie au moment de la défnition de la classe. On applique toujours une méthode à une instance de classe. Comme on appelle la méthode à partir de cette instance, on ne la rappelle pas dans les paramètres:\n", + " - **exemple**: une_instance_str.upper(), une_instance_liste.append(3)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De même que pour les fonctions, on peut obtenir de l'aide sur les méthodes:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on method_descriptor:\n", + "\n", + "upper(self, /)\n", + " Return a copy of the string converted to uppercase.\n", + "\n", + "Help on method_descriptor:\n", + "\n", + "append(self, object, /)\n", + " Append object to the end of the list.\n", + "\n" + ] + } + ], + "source": [ + "help(str.upper)\n", + "help(list.append)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "4822798685b95d90cac6b9eac85a216cd3011e561666c6311e8088bbadca8e0f" + }, + "kernelspec": { + "display_name": "Python 3.8.6 64-bit ('3.8.6': pyenv)", + "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" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/5b-lambda.ipynb b/5b-lambda.ipynb new file mode 100644 index 0000000..50577b6 --- /dev/null +++ b/5b-lambda.ipynb @@ -0,0 +1,493 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fonctions Lambda en Python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En Python, une fonction lambda est une petite fonction anonyme. Elle peut prendre un nombre quelconque d'arguments, mais ne peut avoir qu'une seule expression. L'expression est évaluée et renvoyée lors de l'appel de la fonction lambda.\n", + "\n", + "Syntaxe\n", + "La syntaxe pour définir une fonction lambda est :" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(arguments)>" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lambda arguments: expression" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La fonction peut avoir n'importe quel nombre d'arguments, mais seulement une expression. L'expression est évaluée et renvoyée lors de l'appel." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Différences avec les fonctions régulières" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Les fonctions lambda n'ont pas de nom lorsqu'elles sont définies. C'est pourquoi on les appelle aussi fonctions anonymes.\n", + "2. Vous ne pouvez écrire qu'une expression dans une fonction lambda, et non des blocs de code.\n", + "3. Les fonctions lambda renvoient automatiquement la valeur de leur expression unique, sans avoir besoin d'utiliser le mot-clé return." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fonction lambda sans argument" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello, World!\n" + ] + } + ], + "source": [ + "f = lambda : \"Hello, World!\"\n", + "print(f())" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "()\n", + "Hello, World!\n" + ] + } + ], + "source": [ + "def f():\n", + " return \"Hello, World!\"\n", + "\n", + "print(f())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fonction lambda avec un argument" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15\n" + ] + } + ], + "source": [ + "g = lambda x: x + 10\n", + "print(g(5)) # Affiche 15" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Foncton lambda avec plusieurs arguments" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12\n" + ] + } + ], + "source": [ + "h = lambda x, y: x * y\n", + "print(h(3, 4)) # Affiche 12" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Utilisation courante des fonctions lambda" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'une des utilisations les plus courantes des fonctions lambda est de les utiliser comme arguments pour des fonctions de niveau supérieur comme map(), filter(), et sorted().\n", + "\n", + "Exemple avec map()\n", + "Supposons que nous ayons une liste de nombres et que nous voulions augmenter chaque élément de cette liste de 10. Nous pouvons utiliser map() avec une fonction lambda pour cela." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[11, 12, 13, 14, 15]\n" + ] + } + ], + "source": [ + "numbers = [1, 2, 3, 4, 5]\n", + "result = map(lambda x: x + 10, numbers)\n", + "print(list(result)) # Affiche [11, 12, 13, 14, 15]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[11, 12, 13, 14, 15]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[x +10 for x in numbers]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[11, 12, 13, 14, 15]\n" + ] + } + ], + "source": [ + "numbers = [1, 2, 3, 4, 5]\n", + "\n", + "def add10(x):\n", + " return x + 10\n", + "\n", + "result = map(add10, numbers)\n", + "\n", + "print(list(result))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exemple avec filter()\n", + "Supposons que nous voulions filtrer une liste pour ne garder que les nombres pairs. Encore une fois, filter() et lambda sont utiles." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 4, 6]\n" + ] + } + ], + "source": [ + "numbers = [1, 2, 3, 4, 5, 6]\n", + "even_numbers = filter(lambda x: x % 2 == 0, numbers)\n", + "print(list(even_numbers)) # Affiche [2, 4, 6]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Conclusion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Les fonctions lambda sont un outil puissant en Python, offrant une manière concise d'écrire des fonctions simples. Bien qu'elles ne soient pas appropriées pour toutes les situations, elles peuvent rendre le code plus lisible et plus propre dans certains scénarios." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-----" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 4, 6, 8, 10, 12]" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "L = [1,2,3,4,5,6]\n", + "\n", + "list(map(lambda toto : toto*2, L))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercice** : Gestionnaire de notes\n", + "Contexte :\n", + "Vous êtes enseignant et vous avez plusieurs étudiants avec leurs notes respectives pour différents devoirs. Vous souhaitez analyser ces notes pour obtenir certaines statistiques.\n", + "\n", + "**Données** :" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "students = [\n", + " {\"name\": \"Alice\", \"grades\": [85, 90, 88, 70, 92]},\n", + " {\"name\": \"Bob\", \"grades\": [80, 78, 85, 85, 88]},\n", + " {\"name\": \"Charlie\", \"grades\": [88, 90, 92, 85, 85]},\n", + " {\"name\": \"David\", \"grades\": [85, 85, 83, 87, 90]},\n", + " {\"name\": \"Eve\", \"grades\": [90, 92, 90, 88, 85]}\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Tâches** :\n", + "\n", + "1. Moyenne de chaque étudiant:\n", + "Utilisez une fonction lambda pour calculer la moyenne des notes de chaque étudiant. Affichez le nom de chaque étudiant avec sa moyenne.\n", + "\n", + "2. Étudiants au-dessus de la moyenne:\n", + "Calculez la moyenne générale de tous les étudiants. Ensuite, utilisez une fonction lambda pour filtrer et lister les noms des étudiants dont la moyenne est supérieure à la moyenne générale.\n", + "\n", + "3. Note la plus élevée et la plus basse:\n", + "Pour chaque étudiant, trouvez sa note la plus élevée et sa note la plus basse en utilisant des fonctions lambda. Affichez le nom de l'étudiant avec ses notes les plus élevées et les plus basses." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Alice': 85.0, 'Bob': 83.2, 'Charlie': 88.0, 'David': 86.0, 'Eve': 89.0}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict(map(lambda x: (x['name'],sum(x['grades'])/len(x['grades'])), students))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#1\n", + "{'Alice': 85.0, 'Bob': 83.2, 'Charlie': 88.0, 'David': 86.0, 'Eve': 89.0}\n", + "#2\n", + "{'Charlie': 88.0, 'Eve': 89.0}\n", + "#3\n", + "{'Alice': {'min': 70, 'max': 92},\n", + " 'Bob': {'min': 78, 'max': 88},\n", + " 'Charlie': {'min': 85, 'max': 92},\n", + " 'David': {'min': 83, 'max': 90},\n", + " 'Eve': {'min': 85, 'max': 92}}" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('Alice', 85.0), ('Bob', 83.2), ('Charlie', 88.0), ('David', 86.0), ('Eve', 89.0)]\n" + ] + } + ], + "source": [ + "# 1\n", + "moyenne_eleve = list(map(lambda x: (x['name'], sum(x['grades'])/len(x['grades'])), students))\n", + "print(moyenne_eleve)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Conseils** :\n", + "\n", + "- Pour la tâche 1, vous pourriez utiliser la fonction map() pour appliquer une fonction qui calcule la moyenne à chaque étudiant.\n", + "- Pour la tâche 2, après avoir trouvé la moyenne générale, vous pourriez utiliser la fonction filter() pour filtrer les étudiants.\n", + "- Pour la tâche 3, vous pourriez utiliser les fonctions max() et min() en combinaison avec des fonctions lambda pour trouver les notes les plus élevées et les plus basses." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.14" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/5c-le_typage.ipynb b/5c-le_typage.ipynb new file mode 100644 index 0000000..950bdba --- /dev/null +++ b/5c-le_typage.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Typage dans les fonctions Python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "À partir de Python 3.5, le langage a introduit un support optionnel pour les annotations de type. Cela vous permet d'indiquer le type attendu des arguments et de la valeur renvoyée d'une fonction. Bien que Python reste un langage à typage dynamique, ces annotations offrent un moyen d'indiquer comment une fonction est censée être utilisée.\n", + "\n", + "Syntaxe\n", + "La syntaxe de base pour annoter une fonction est la suivante:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (1725628101.py, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Input \u001b[0;32mIn [1]\u001b[0;36m\u001b[0m\n\u001b[0;31m def function_name(arg: arg_type, ...) -> return_type:\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "def function_name(arg: arg_type, ...) -> return_type:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utilité\n", + "1. Lisibilité: Les annotations de type améliorent la lisibilité du code en fournissant des informations supplémentaires sur la façon dont une fonction doit être utilisée.\n", + "2. Détection d'erreurs: Avec des outils comme mypy, les annotations de type peuvent être utilisées pour détecter des erreurs potentielles avant l'exécution du code.\n", + "3. Documentation: Les annotations agissent comme une forme de documentation pour les autres développeurs (ou pour vous-même à l'avenir)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exemples\n", + "### Fonction simple avec typage" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def greet(name: str) -> str:\n", + " return \"Hello, \" + name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fonction avec plusieurs arguments" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def add_numbers(a: int, b: int) -> int:\n", + " return a + b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Utilisation de types complexes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si vous travaillez avec des listes, des dictionnaires ou d'autres structures de données, vous pouvez également spécifier des types pour eux." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Dict\n", + "\n", + "def average(numbers: List[float]) -> float:\n", + " return sum(numbers) / len(numbers)\n", + "\n", + "def get_name(person: Dict[str, str]) -> str:\n", + " return person[\"name\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Union\n", + "\n", + "def average(numbers: List[Union[int, float]]) -> float:\n", + " return sum(numbers) / len(numbers)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.14" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/6-les-packages.ipynb b/6-les-packages.ipynb new file mode 100644 index 0000000..cb2f7e2 --- /dev/null +++ b/6-les-packages.ipynb @@ -0,0 +1,435 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Importation: packages et fichiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Présentation des packages" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un package est un fichier ou un ensemble de fichiers qui contient des fonctions et des classes qui peuvent être réutilisés dans d'autres programmes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importer un package dans son environnement de dev depuis votre librairie de package" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour utiliser un package il faut l'importer depuis votre librairie de package. \n", + "Celle-ci est constituée par python et par anaconda " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5\n" + ] + } + ], + "source": [ + "# exemple d'utilisation\n", + "import math \n", + "\n", + "x = 5.8999\n", + "print( math.floor(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# en utilisant import math on est obligé de préciser le nom du package:\n", + "math.floor(5.8999)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5\n", + "0.9244298774134548\n" + ] + } + ], + "source": [ + "\"\"\" il existe trois manières d'importer un package: deux légales et une illégale\"\"\"\n", + "# LEGAL: importer tout un package en s'obligeant en indiquant le nom du package avant:\n", + "import math as m\n", + "x = m.floor(5.899999)\n", + "\n", + "\n", + "# LEGAL: importer une partie d'un package sans devoir indiquer le nom du package avant de s'en servir:\n", + "from random import randint\n", + "y = randint(0,10)\n", + "print(y)\n", + "\n", + "# ILLEGAL: importer tout un package sans devoir indiquer le nom du package avant de s'en servir:\n", + "from random import *\n", + "z = uniform(0,1)\n", + "print(z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installer un package dans sa librairie de package puis l'importer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vous pouvez trouver des packages qui ne sont ni dans python ni anaconda" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'pandas'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m/Users/jeremyvangansbeg/Documents/project/intro_python/python-course/6-les-packages.ipynb Cell 11\u001b[0m line \u001b[0;36m1\n\u001b[0;32m----> 1\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mpandas\u001b[39;00m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'pandas'" + ] + } + ], + "source": [ + "import pandas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vous devez auparavant installer ce package dans votre librairie de package à l'aide de la commande:\n", + "- **`pip3 install pandas`**\n", + "\n", + "Cette commande doit être tapée dans votre terminal" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# vous pouvez ensuite l'importer dans votre environnement de dev\n", + "import pipe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Autres commandes utiles:\n", + "- pip show \n", + "- pip list\n", + "- pip freeze" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Se servir d'un package" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour connaitre comment se servir d'un package vous pouvez procéder en deux temps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "D'abord obtenir la liste des objets et fonctions dans ce package" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(range(10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ensuite demander l'aide sur une fonction particulière" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on built-in function tan in module math:\n", + "\n", + "tan(x, /)\n", + " Return the tangent of x (measured in radians).\n", + "\n" + ] + } + ], + "source": [ + "help(math.tan)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Les environnements virtuels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un environnement virtuel est un dossier qui regroupe une certaine version de python et ainsi que certains packages et leurs versions propres à un projet. Le projet sera exécuté au sein de cet environnement.\n", + "Cela permet:\n", + "- de garder un environnement léger: savoir quel package il faut installer quand on clone un nouveau projet et non tous les packages de l'ordinateur de la personne qui a créé le projet\n", + "- connaître la version des packages et des dépendances où le projet fonctionne (des mises à jour peuvent rendre un projet inutilisable)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il existe de nombreux outils de gestion d'environnement virtuel:\n", + "- venv: inclus dans python\n", + "- virtualenv: le plus ancien, permet de gérer des version de python 2\n", + "- conda: qui vient avec anaconda\n", + "- Pipenv: la solution en vue, qui regroupe pip et virtualenv" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous allons voir venv, ce n'est pas le plus recommandé pour des usages complexes mais il a l'avantage d'être inclu dans python." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les commandes qu'il faut connaitre (à taper dans le terminal):\n", + "- **`python -m venv venv`** : crée un environnement appelé env\n", + "- **`venv env/bin/activate`** (Unix) ou **`..\\env\\Scripts\\activate`** (WIndows): active l'environnement virtuel: à partir de maintenant quand on lance un fichier depuis le terminal ou qu'on install un package avec pip, ce sera dans cet environnement\n", + "- **`deactivate`** : désactive l'environnement\n", + "- **`rm -rf env`** : supprimer l'environnement virtuel\n", + "- **`pip freeze > requirements.txt`** : crée un fichier requirements.txt avec tous les packages du projet et leur version\n", + "- **`pip install -r requirements.txt`** : install tous les packages fu fichier requirement" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Article médium sur l'équivalent en [Pipenv](https://medium.com/analytics-vidhya/why-pipenv-over-venv-for-python-projects-a51fb6e4f31e) et l'interet d'utiliser ce package" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importer des fichiers et des packages qu'on a soit même créé." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il existe une bonne pratique chez les développeurs de créer leurs classes et leurs fonctions dans des fichiers séparés (normalement une classe ou une fonction par fichier). Pour pouvoir faire cela il faut pouvoir importer un fichier." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "this is a function from a same level file\n", + "this is a function from a same level file\n" + ] + } + ], + "source": [ + "# il est assez facile d'importer une fonction du même niveau\n", + "\n", + "from Same_level import same_level_function, same_level_function2\n", + "same_level_function(\"Same\")\n", + "same_level_function2(\"Same\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'child_folder'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[2], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# De même pour un fichier enfant\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mchild_folder\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchild_file\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m child_file_function\n\u001b[1;32m 4\u001b[0m child_file_function()\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'child_folder'" + ] + } + ], + "source": [ + "# De même pour un fichier enfant\n", + "\n", + "from child_folder.child_file import child_file_function\n", + "child_file_function()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['/Users/jeremyvangansbeg/Documents/project/intro_python/python-course',\n", + " '/opt/miniconda3/lib/python39.zip',\n", + " '/opt/miniconda3/lib/python3.9',\n", + " '/opt/miniconda3/lib/python3.9/lib-dynload',\n", + " '',\n", + " '/Users/jeremyvangansbeg/Documents/project/intro_python/python-course/venv/lib/python3.9/site-packages']\n" + ] + } + ], + "source": [ + "import sys\n", + "from pprint import pprint\n", + "pprint(sys.path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans l'autre sens ça se complique, voir le fichier child_folder/child_file.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**: \n", + "- Créer un dossier appelé \"exercice_package\"\n", + "- Dans ce dossier créer fichier \"parent_file\" et définir une fonction multiply(a,b) qui permet de multiplier 2 entiers\n", + "- Dans le dossier \" exercice_package\", créer un dossier appelé \"principal\" et dedans un fichier \"slevel\" ou vous définissez une fonction add(a,b)\n", + "- Dans le dossier \"principal\", créer un dossier appelé \"child_folder\" et dedans un fichier appelé \"child\" ou vous définissez la fonction divide(a,b)\n", + "- Enfin dans le dossier \"principal\", créer un fichier \"main\" ou vous calculerez l'arrondi tronqué avec 2 chiffres derrière la virgule de (5 + 2 * 3 ) / 3 en utilisant les trois fonctions définies précédemment. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "exos : 25-74" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "api", + "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.8" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/7-functions-args.ipynb b/7-functions-args.ipynb new file mode 100644 index 0000000..83eb035 --- /dev/null +++ b/7-functions-args.ipynb @@ -0,0 +1,618 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Arguments de Fonction en Python\n", + "\n", + "Lorsque nous définissons une fonction en Python, nous spécifions souvent des arguments pour capturer des valeurs que nous souhaitons utiliser dans cette fonction. Ces arguments peuvent être passés de différentes manières, et cette flexibilité est l'une des caractéristiques qui rendent Python si puissant. Dans ce notebook, nous explorerons différentes manières de passer des arguments à une fonction.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Arguments par position\n", + "\n", + "Les arguments positionnels sont les plus basiques et les plus couramment utilisés. Lorsque nous appelons une fonction avec des arguments positionnels, les valeurs sont assignées aux paramètres de la fonction basées sur leur ordre.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Prénom: John\n", + "Nom: Doe\n" + ] + } + ], + "source": [ + "def afficher_nom(prenom, nom):\n", + " print(f\"Prénom: {prenom}\")\n", + " print(f\"Nom: {nom}\")\n", + "\n", + "afficher_nom(\"John\", \"Doe\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Arguments par nom d'argument (ou mots-clés)\n", + "\n", + "Plutôt que de dépendre de l'ordre des arguments, nous pouvons également spécifier des arguments en utilisant le nom des paramètres. Cela nous permet de passer des arguments dans un ordre différent de la définition de la fonction, et rend notre code plus lisible." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nom: Alice\n", + "Age: 30\n" + ] + } + ], + "source": [ + "def afficher_details(nom, age):\n", + " print(f\"Nom: {nom}\")\n", + " print(f\"Age: {age}\")\n", + "\n", + "afficher_details(age=30, nom=\"Alice\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. `*args` : Arguments positionnels variables\n", + "\n", + "Il se peut que nous voulions créer une fonction où le nombre exact d'arguments n'est pas déterminé à l'avance. Dans ces cas, nous pouvons utiliser `*args`, qui permet à une fonction d'accepter un nombre quelconque d'arguments positionnels." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n" + ] + } + ], + "source": [ + "def afficher_nombres(*args):\n", + " print(type(args))\n", + " for num in args:\n", + " print(num)\n", + "\n", + "afficher_nombres(1, 2, 3, 4, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. `**kwargs` : Arguments par mots-clés variables\n", + "\n", + "De manière similaire à `*args`, si nous souhaitons permettre un nombre variable d'arguments par mots-clés, nous pouvons utiliser `**kwargs`. Cela traite les arguments comme un dictionnaire où les noms des arguments sont les clés.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "nom: Martin\n", + "age: 25\n", + "pays: France\n" + ] + } + ], + "source": [ + "def afficher_data(**kwargs):\n", + " print(type(kwargs))\n", + " for key, value in kwargs.items():\n", + " print(f\"{key}: {value}\")\n", + "\n", + "afficher_data(nom=\"Martin\", age=25, pays=\"France\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Combinaison des différents types d'arguments\n", + "\n", + "Il est possible de combiner arguments positionnels, arguments par mots-clés, `*args` et `**kwargs` dans une seule fonction. Cependant, leur ordre dans la liste des paramètres de la fonction est crucial :\n", + "1. Arguments positionnels\n", + "2. Arguments par mots-clés\n", + "3. `*args`\n", + "4. `**kwargs`\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 2\n", + "3\n", + "4\n", + "5\n", + "Majeur : True\n", + "nom: Lucas\n", + "age: 28\n" + ] + } + ], + "source": [ + "def exemple_combinaison(a, b, *args, majeur=True, **kwargs):\n", + " print(a, b)\n", + " for arg in args:\n", + " print(arg)\n", + " print(f\"Majeur : {majeur}\")\n", + " for key, value in kwargs.items():\n", + " print(f\"{key}: {value}\")\n", + "\n", + "exemple_combinaison(1, 2, 3, 4, 5, nom=\"Lucas\", age=28)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Les arguments de fonction en Python offrent une flexibilité remarquable, permettant aux développeurs de créer des fonctions modulaires et réutilisables. Que vous passiez des arguments de manière positionnelle, par mots-clés, ou que vous utilisiez `*args` et `**kwargs` pour accepter un nombre variable d'arguments, la maîtrise de ces concepts est essentielle pour la programmation efficace en Python.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Unpacking de collections\n", + "\n", + "L'unpacking permet de décomposer les éléments d'une collection directement dans des variables. En Python, nous pouvons \"déballer\" ou \"décomposer\" les éléments des listes, tuples et dictionnaires dans des variables individuelles. Cela est souvent utilisé en combinaison avec les fonctions pour passer des arguments.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.1 Unpacking de listes et tuples" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 2 3\n", + "4 5\n" + ] + } + ], + "source": [ + "# Unpacking de liste\n", + "nombres = [1, 2, 3]\n", + "a, b, c = nombres\n", + "print(a, b, c)\n", + "\n", + "# Unpacking de tuple\n", + "coords = (4, 5)\n", + "x, y = coords\n", + "print(x, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.2 Utilisation de l'unpacking avec *args\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 2, 3, 4, 5)\n", + "15\n" + ] + } + ], + "source": [ + "def somme(*args):\n", + " print(args)\n", + " return sum(args)\n", + "\n", + "# Si nous avons une liste\n", + "nombres = [1, 2, 3, 4, 5]\n", + "\n", + "# Nous pouvons utiliser l'unpacking pour passer les éléments de la liste comme arguments\n", + "print(somme(*nombres))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15\n" + ] + } + ], + "source": [ + "# Bien comprendre la différence avec cette syntaxe\n", + "\n", + "def somme(args):\n", + " return sum(args)\n", + "\n", + "nombres = [1, 2, 3, 4, 5]\n", + "\n", + "# Ici args est un argument qui est une liste\n", + "print(somme(nombres))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "10\n" + ] + } + ], + "source": [ + "def somme(a, b, *args):\n", + " total = a + b\n", + " for num in args:\n", + " total += num\n", + " return total\n", + "\n", + "# Utilisation de la fonction\n", + "print(somme(1, 2)) # 3, car nous n'avons que deux arguments\n", + "print(somme(1, 2, 3, 4)) # 10, car nous avons des arguments supplémentaires\\" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.3 Unpacking de dictionnaires\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nom: Alice, Age: 30\n", + "Nom: Alice, Age: 30\n" + ] + } + ], + "source": [ + "# Unpacking de dictionnaire\n", + "personne = {\"nom\": \"Alice\", \"age\": 30}\n", + "\n", + "# ** peut être utilisé pour déballer le contenu d'un dictionnaire en arguments par mots-clés\n", + "def afficher_personne(nom, age):\n", + " print(f\"Nom: {nom}, Age: {age}\")\n", + "\n", + "afficher_personne(**personne)\n", + "\n", + "afficher_personne(nom=\"Alice\", age=30)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.4 Utilisation de l'unpacking avec **kwargs\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nom: Lucas\n", + "age: 28\n", + "pays: France\n" + ] + } + ], + "source": [ + "def afficher_data(**kwargs):\n", + " for key, value in kwargs.items():\n", + " print(f\"{key}: {value}\")\n", + "\n", + "# Si nous avons un dictionnaire\n", + "data = {\"nom\": \"Lucas\", \"age\": 28, \"pays\": \"France\"}\n", + "\n", + "# Nous pouvons utiliser l'unpacking pour passer les éléments du dictionnaire comme arguments\n", + "afficher_data(**data)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nom: Lucas\n", + "age: 28\n", + "pays: France\n", + "nom: Lucas\n", + "age: 28\n", + "pays: France\n", + "profession: Développeur\n", + "nom: Lucas\n", + "age: 28\n", + "pays: France\n", + "profession: Développeur\n", + "hobby: Lecture\n" + ] + } + ], + "source": [ + "def afficher_profil(**kwargs):\n", + " for key, value in kwargs.items():\n", + " print(f\"{key}: {value}\")\n", + "\n", + "# Utilisation normale\n", + "afficher_profil(nom=\"Lucas\", age=28, pays=\"France\")\n", + "\n", + "# Plus tard, vous réalisez que vous voulez ajouter une profession sans changer la signature de la fonction\n", + "afficher_profil(nom=\"Lucas\", age=28, pays=\"France\", profession=\"Développeur\")\n", + "\n", + "# Encore plus tard, vous voulez ajouter une autre information\n", + "afficher_profil(nom=\"Lucas\", age=28, pays=\"France\", profession=\"Développeur\", hobby=\"Lecture\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unpacking de *args vs **kwargs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Bonjour Camille, vous avez 32 ans\n", + "Bonjour Camille, vous avez 32 ans\n" + ] + } + ], + "source": [ + "def greetings(name,age):\n", + " return f\"Bonjour {name}, vous avez {age} ans\"\n", + "\n", + "my_args = [\"Camille\", 32]\n", + "\n", + "print(greetings(*my_args))\n", + "\n", + "my_kwargs = {\"name\":\"Camille\", \"age\": 32}\n", + "\n", + "print(greetings(**my_kwargs))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion sur l'Unpacking\n", + "\n", + "L'unpacking est une fonctionnalité puissante en Python qui permet une affectation multiple et une manière concise de passer des arguments à des fonctions. Que ce soit pour les listes, les tuples ou les dictionnaires, l'unpacking facilite la manipulation et le passage de collections.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Arguments par défaut (valeurs par défaut)\n", + "\n", + "En Python, nous pouvons définir une valeur par défaut pour un ou plusieurs arguments dans la signature de la fonction. Cela signifie que si l'argument n'est pas fourni lors de l'appel de la fonction, la valeur par défaut sera utilisée à la place.\n", + "\n", + "### 6.1 Exemple basique\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Bonjour, Alice!\n", + "Bonjour, Utilisateur!\n" + ] + } + ], + "source": [ + "def saluer(nom=\"Utilisateur\"):\n", + " return f\"Bonjour, {nom}!\"\n", + "\n", + "# Appel avec un argument\n", + "print(saluer(\"Alice\"))\n", + "\n", + "# Appel sans argument, utilisant la valeur par défaut\n", + "print(saluer())\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6.2 Précautions avec les arguments par défaut\n", + "\n", + "Il est important de faire preuve de prudence lorsque vous utilisez des objets mutables, comme des listes ou des dictionnaires, comme valeurs par défaut. Ces objets sont créés une seule fois lors de la définition de la fonction, ce qui peut entraîner un comportement inattendu.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1]\n", + "[1, 2]\n" + ] + } + ], + "source": [ + "def ajouter_a_liste(valeur, liste_defaut=[]):\n", + " liste_defaut.append(valeur)\n", + " return liste_defaut\n", + "\n", + "print(ajouter_a_liste(1))\n", + "print(ajouter_a_liste(2))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notez comment la même liste est utilisée à chaque appel de fonction. Pour éviter ce comportement, nous utilisons généralement une valeur par défaut de `None` et initialisons l'objet mutable à l'intérieur de la fonction." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1]\n", + "[2]\n" + ] + } + ], + "source": [ + "def ajouter_a_liste_corrige(valeur, liste_defaut=None):\n", + " if liste_defaut is None:\n", + " liste_defaut = []\n", + " liste_defaut.append(valeur)\n", + " return liste_defaut\n", + "\n", + "print(ajouter_a_liste_corrige(1))\n", + "print(ajouter_a_liste_corrige(2))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion sur les arguments par défaut\n", + "\n", + "Les arguments par défaut permettent d'écrire des fonctions flexibles qui peuvent être appelées avec un nombre variable d'arguments. Ils sont particulièrement utiles pour définir des comportements par défaut pour une fonction. Cependant, il est essentiel de faire preuve de prudence lors de l'utilisation d'objets mutables comme valeurs par défaut pour éviter des comportements inattendus.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "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": "-1.-1.-1" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/8-fonction-recursive.ipynb b/8-fonction-recursive.ipynb new file mode 100644 index 0000000..fc37b32 --- /dev/null +++ b/8-fonction-recursive.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fonctions récursives en Python\n", + "\n", + "Une fonction récursive est une fonction qui s'appelle elle-même. La récursivité est une technique puissante de programmation, mais elle nécessite une compréhension approfondie et une attention particulière pour éviter des appels infinis. Dans ce notebook, nous explorerons les bases de la récursivité et quelques exemples classiques.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Principe de base de la récursivité\n", + "\n", + "Pour qu'une fonction récursive fonctionne correctement, elle doit avoir :\n", + "\n", + "1. **Un cas de base** : une condition qui arrête la récursivité.\n", + "2. **Un pas récursif** : une partie où la fonction s'appelle elle-même, généralement avec des arguments modifiés.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemple : Factorielle\n", + "\n", + "La factorielle d'un nombre non négatif \\( n \\) est le produit de tous les entiers positifs inférieurs ou égaux à \\( n \\). Elle est généralement notée par \\( n! \\).\n", + "\n", + "La factorielle peut être définie récursivement comme suit :\n", + "1. \\( 0! = 1 \\) (cas de base)\n", + "2. \\( n! = n \\times (n-1)! \\) (pour \\( n > 0 \\))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "120\n" + ] + } + ], + "source": [ + "def factorielle(n):\n", + " # Cas de base\n", + " if n == 0:\n", + " return 1\n", + " # Pas récursif\n", + " else:\n", + " return n * factorielle(n-1)\n", + "\n", + "print(factorielle(5)) # Devrait afficher 120 (car 5! = 5x4x3x2x1 = 120)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Étape par étape pour `factorielle(5)` :\n", + "\n", + "1. **Appel initial** : `factorielle(5)`\n", + " - Le programme teste `if n == 0` (5 n'est pas égal à 0), donc on passe au `else`.\n", + " - On entre dans le cas récursif : `n * factorielle(n - 1)`, ce qui devient `5 * factorielle(4)`.\n", + "\n", + "2. **Deuxième appel** : `factorielle(4)`\n", + " - Encore une fois, `n == 0` est faux (car 4 n'est pas égal à 0).\n", + " - On calcule `4 * factorielle(3)`.\n", + "\n", + "3. **Troisième appel** : `factorielle(3)`\n", + " - On teste encore `if n == 0`, ce qui est faux (car 3 n'est pas égal à 0).\n", + " - On calcule `3 * factorielle(2)`.\n", + "\n", + "4. **Quatrième appel** : `factorielle(2)`\n", + " - Le test `if n == 0` échoue encore (2 n'est pas égal à 0).\n", + " - On calcule `2 * factorielle(1)`.\n", + "\n", + "5. **Cinquième appel** : `factorielle(1)`\n", + " - Le test `if n == 0` échoue encore (1 n'est pas égal à 0).\n", + " - On calcule `1 * factorielle(0)`.\n", + "\n", + "6. **Sixième appel** : `factorielle(0)`\n", + " - Cette fois, `if n == 0` est **vrai** !\n", + " - On atteint le **cas de base**, donc la fonction retourne 1.\n", + "\n", + "#### Maintenant, revenons en arrière (remontée de la récursion) :\n", + "Après avoir atteint le cas de base, on revient à chaque étape précédente et on effectue les multiplications :\n", + "\n", + "7. **Retour à `factorielle(1)`** :\n", + " - On remplace `factorielle(0)` par 1 (valeur obtenue du cas de base).\n", + " - On calcule : `1 * 1 = 1`. La fonction retourne 1.\n", + "\n", + "8. **Retour à `factorielle(2)`** :\n", + " - On remplace `factorielle(1)` par 1.\n", + " - On calcule : `2 * 1 = 2`. La fonction retourne 2.\n", + "\n", + "9. **Retour à `factorielle(3)`** :\n", + " - On remplace `factorielle(2)` par 2.\n", + " - On calcule : `3 * 2 = 6`. La fonction retourne 6.\n", + "\n", + "10. **Retour à `factorielle(4)`** :\n", + " - On remplace `factorielle(3)` par 6.\n", + " - On calcule : `4 * 6 = 24`. La fonction retourne 24.\n", + "\n", + "11. **Retour à `factorielle(5)`** :\n", + " - On remplace `factorielle(4)` par 24.\n", + " - On calcule : `5 * 24 = 120`. La fonction retourne 120.\n", + "\n", + "### Résultat final :\n", + "La fonction retourne finalement 120 pour `factorielle(5)`.\n", + "\n", + "### Résumé du processus récursif :\n", + "- Chaque appel récursif divise le problème en un sous-problème plus petit, en soustrayant 1 à \\( n \\).\n", + "- La récursion s'arrête lorsqu'on atteint le **cas de base** (quand \\( n == 0 \\)).\n", + "- Ensuite, chaque étape effectue les multiplications lors du retour des appels récursifs, ce qui permet de remonter jusqu'à la solution finale.\n", + "\n", + "### Visualisation :\n", + "\n", + "```\n", + "factorielle(5) => 5 * factorielle(4)\n", + "factorielle(4) => 4 * factorielle(3)\n", + "factorielle(3) => 3 * factorielle(2)\n", + "factorielle(2) => 2 * factorielle(1)\n", + "factorielle(1) => 1 * factorielle(0)\n", + "factorielle(0) => 1 # Cas de base\n", + "```\n", + "\n", + "En remontant :\n", + "```\n", + "factorielle(1) => 1 * 1 = 1\n", + "factorielle(2) => 2 * 1 = 2\n", + "factorielle(3) => 3 * 2 = 6\n", + "factorielle(4) => 4 * 6 = 24\n", + "factorielle(5) => 5 * 24 = 120\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercice : Suite de Fibonacci\n", + "\n", + "La suite de Fibonacci est une série de nombres où chaque nombre est la somme des deux précédents. Les deux premiers nombres de la suite de Fibonacci sont généralement 0 et 1.\n", + "\n", + "La suite commence comme suit : 0,1,1,2,3,5,8,13,21,34,…\n", + "\n", + "La suite de Fibonacci peut être définie récursivement comme suit :\n", + "1. \\( F(0) = 0 \\)\n", + "2. \\( F(1) = 1 \\)\n", + "3. \\( F(n) = F(n-1) + F(n-2) \\) (pour \\( n > 1 \\))\n", + "\n", + "Écrire une fonction récursive qui renvoie la valeur du n-ème nombre de la suite de Finocci.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "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.9.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/9-falsy-values.ipynb b/9-falsy-values.ipynb new file mode 100644 index 0000000..e25879a --- /dev/null +++ b/9-falsy-values.ipynb @@ -0,0 +1,131 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Falsy Values en Python\n", + "\n", + "En Python, certaines valeurs sont considérées comme \"falsy\" lorsqu'elles sont évaluées dans un contexte booléen, tel qu'une condition `if`. Si une valeur est \"falsy\", cela signifie qu'elle sera considérée comme `False` dans un contexte booléen, sinon elle est considérée comme \"truthy\" et sera évaluée comme **`True`**.\n", + "\n", + "\n", + "Exemples de valeurs Falsy:\n", + "- **`None`**\n", + "- **`False`**\n", + "- **`0`** (zéro - pour tous les types numériques: int, float, complex)\n", + "- **`\"\"`** (chaîne vide)\n", + "- **`[]`** (liste vide)\n", + "- **`{}`** (dictionnaire vide)\n", + "- **`set()`** (ensemble vide)\n", + "- **`()`** (tuple vide)\n", + "- Et d'autres objets qui définissent leur méthode **`__bool__()`** ou **`__len__()`** pour renvoyer False ou 0 respectivement." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Démonstration:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'None' est falsy\n", + "'False' est falsy\n", + "'0' est falsy\n", + "'' est falsy\n", + "'[]' est falsy\n", + "'{}' est falsy\n", + "'set()' est falsy\n", + "'()' est falsy\n" + ] + } + ], + "source": [ + "falsy_values = [None, False, 0, \"\", [], {}, set(), ()]\n", + "\n", + "for value in falsy_values:\n", + " if value:\n", + " print(f\"'{value}' est truthy\")\n", + " else:\n", + " print(f\"'{value}' est falsy\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Attention, il y a des valeurs qu'on pourrait penser falsy mais qui ne le sont pas :" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'None' est falsy\n", + "'False' est falsy\n", + "'0' est falsy\n", + "'' est falsy\n", + "'[]' est falsy\n", + "'{}' est falsy\n", + "'set()' est falsy\n", + "'()' est falsy\n", + "' ' est truthy\n", + "'False' est truthy\n", + "'10' est truthy\n", + "'[False]' est truthy\n", + "'{'': None}' est truthy\n", + "'{None}' est truthy\n", + "'(False,)' est truthy\n" + ] + } + ], + "source": [ + "falsy_values = [None, False, 0, \"\", [], {}, set(), ()]\n", + "truthy_values = [\" \", \"False\", 10, [False], {\"\": None}, set([None]), (False,)]\n", + "\n", + "all_values = falsy_values + truthy_values\n", + "\n", + "for value in all_values:\n", + " if value:\n", + " print(f\"'{value}' est truthy\")\n", + " else:\n", + " print(f\"'{value}' est falsy\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "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.9.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/README.md b/README.md index cbb918a..e403b0d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,62 @@ -# cours-python -Cours python pour simplon +# Projet d'Introduction à Python + +Ce projet contient une série de notebooks Jupyter pour apprendre les bases de Python, y compris les variables, les structures de données, les conditions, les boucles, les fonctions, la programmation orientée objet, et plus encore. + +## Contenu des Notebooks + +- **0 - Installation Python.pptx** : Présentation sur l'installation de Python. +- **1-introduction.ipynb** : Introduction à Python. +- **2-les-variables.ipynb** : Les variables en Python. +- **3-data-structures.ipynb** : Les structures de données en Python. +- **3b-data-structures.ipynb** : Suite des structures de données. +- **4-les_conditions_et_les_boucles.ipynb** : Les conditions et les boucles. +- **5-Les_fonctions.ipynb** : Les fonctions en Python. +- **5b-lambda.ipynb** : Les fonctions lambda. +- **5c-le_typage.ipynb** : Le typage en Python. +- **6-les-packages.ipynb** : Gestion des packages et environnements virtuels. +- **7-functions-args.ipynb** : Les arguments de fonctions. +- **8-fonction-recursive.ipynb** : Les fonctions récursives. +- **9-falsy-values.ipynb** : Les valeurs falsy en Python. +- **exos.ipynb** : Exercices pratiques. + +## Programmation Orientée Objet (POO) + +Le dossier `oop` contient des notebooks et des scripts pour apprendre la programmation orientée objet en Python : + +- **1-Introduction_POO.ipynb** : Introduction à la POO. +- **class_to_test.py** : Script de classe à tester. +- **correction_conce_bis.py** : Correction des exercices de conception. + +## Utilisation des Environnements Virtuels + +Dans le notebook **6-les-packages.ipynb**, vous apprendrez à utiliser les environnements virtuels avec `venv`, `virtualenv`, et `conda`. + +### Commandes Principales + +- **Créer un environnement virtuel** : + ```bash + python -m venv venv + ``` +- **Activer l'environnement virtuel** : + - Unix : `source venv/bin/activate` + - Windows : `venv\Scripts\activate` +- **Désactiver l'environnement virtuel** : + ```bash + deactivate + ``` + +## Installation des Dépendances + +Pour installer les dépendances nécessaires, utilisez la commande suivante après avoir activé votre environnement virtuel : + +```bash +pip install -r requirements.txt +``` + +## Contribuer + +Les contributions sont les bienvenues ! Veuillez soumettre une pull request ou ouvrir une issue pour discuter des changements que vous souhaitez apporter. + +## Licence + +Ce projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails. diff --git a/Same_level.py b/Same_level.py new file mode 100644 index 0000000..30aec66 --- /dev/null +++ b/Same_level.py @@ -0,0 +1,12 @@ +def same_level_function(source): + if source == "Same": + print("this is a function from a same level file") + elif source == "Child": + print("this is a function from a parent level file") + + +def same_level_function2(source): + if source == "Same": + print("this is a function from a same level file") + elif source == "Child": + print("this is a function from a parent level file") \ No newline at end of file diff --git a/exos.ipynb b/exos.ipynb new file mode 100644 index 0000000..cd9a9ac --- /dev/null +++ b/exos.ipynb @@ -0,0 +1,2153 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 France 36.2\n" + ] + } + ], + "source": [ + "# Exo 1\n", + "a = 1\n", + "b = 'France'\n", + "c = 36.2\n", + "\n", + "a, b, c = 1, \"France\", 36.2\n", + "\n", + "print(a,b,c)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ça va\n" + ] + } + ], + "source": [ + "# Exo 2\n", + "ch = \"Salut\"\n", + "ch = \"ça va\"\n", + "print(ch)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n" + ] + } + ], + "source": [ + "# Exo 3\n", + "x = 3\n", + "y = 8.5\n", + "\n", + "x = str(x)\n", + "y = str(y)\n", + "\n", + "print(type(x))\n", + "print(type(y))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Le poids de l'utilisateur est de : 90kg\n" + ] + } + ], + "source": [ + "# Exo 4\n", + "poids = input(\"Quel est votre poids ?\")\n", + "\n", + "print(\"Le poids de l'utilisateur est de : \" + poids + \"kg\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chaîne de caractères\n" + ] + } + ], + "source": [ + "# Exo 5\n", + "var = \"Bonjour\"\n", + "\n", + "if type(var) is int:\n", + " print(\"Entier\")\n", + "elif type(var) is str:\n", + " print(\"Chaîne de caractères\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Positive\n" + ] + } + ], + "source": [ + "# Exo 6\n", + "d = 5\n", + "\n", + "if d > 0: \n", + " print(\"Positive\")\n", + "\n", + "else :\n", + " print(\"Négative\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L'utilisateur est mineur\n" + ] + } + ], + "source": [ + "# Exo 7\n", + "age = int(input(\"Quel âge avez-vous ?\"))\n", + "\n", + "if age >= 18 :\n", + " print(\"L'utilisateur est majeur\")\n", + "else :\n", + " print(\"L'utilisateur est mineur\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n", + "9\n", + "10\n", + "11\n", + "12\n", + "13\n", + "14\n", + "15\n", + "16\n", + "17\n", + "18\n", + "19\n", + "20\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n", + "9\n", + "10\n", + "11\n", + "12\n", + "13\n", + "14\n", + "15\n", + "16\n", + "17\n", + "18\n", + "19\n", + "20\n" + ] + } + ], + "source": [ + "# Exo 8\n", + "for i in range(1,21):\n", + " print(i)\n", + "\n", + "i=1\n", + "while i < 21 :\n", + " print(i)\n", + " i+=1" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "11\n", + "13\n", + "15\n", + "17\n", + "19\n" + ] + } + ], + "source": [ + "# # Exo 9\n", + "# for i in range(11, 20, 2):\n", + "# print(i)\n", + "\n", + "i=11\n", + "while i < 21 :\n", + " print(i)\n", + " i+=2" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 10\n", + "\n", + "[x for x in range(1,11)]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 2, 4, 6, 8, 10]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 11\n", + "[x for x in range(0,11,2)]\n", + "\n", + "# -- \n", + "list(range(0,11,2))\n", + "\n", + "# --\n", + "[x for x in range(0,11) if x % 2 == 0]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 2, 3, 4, 6, 8, 9, 12]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 12\n", + "L = [6,8,3,4,1,12,2,9,2]\n", + "L.sort()\n", + "L" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 13\n", + "L = [6,8,3,4,1,12,2,9,2]\n", + "L.count(1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[10, 25, 30, 45, 90, 'ab', 'cd', 'ef']\n", + "[10, 25, 30, 45, 90, 'ab', 'cd', 'ef']\n", + "[10, 25, 30, 45, 90, 'ab', 'cd', 'ef']\n" + ] + } + ], + "source": [ + "# Exo 14\n", + "L = []\n", + "L.extend([10,25,30,45,90, \"ab\", \"cd\", \"ef\"])\n", + "print(L)\n", + "\n", + "# ou\n", + "L = []\n", + "L += [10,25,30,45,90, \"ab\", \"cd\", \"ef\"]\n", + "print(L)\n", + "\n", + "# ou\n", + "L = []\n", + "L_extend = [10,25,30,45,90, \"ab\", \"cd\", \"ef\"]\n", + "for elem in L_extend:\n", + " L.append(elem)\n", + "print(L)" + ] + }, + { + "cell_type": "code", + "execution_count": 324, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 4, 7, 10]" + ] + }, + "execution_count": 324, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Exo 15\n", + "L = [x for x in range(1,11)]\n", + "L1 = L[::3]\n", + "L1" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'acefnr'" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 16\n", + "c = 'france'\n", + "c = list(c)\n", + "c.sort()\n", + "c = \"\".join(c)\n", + "c\n", + "\n", + "# ----- #\n", + "\n", + "c = 'france'\n", + "c = sorted(c)\n", + "c = \"\".join(c)\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9, 3, 'p', 'b']\n" + ] + } + ], + "source": [ + "# Exo 17\n", + "L1 = [9, 8, 7, 14, 3, 2, \"a\", \"p\", \"bonjour\", \"b\"]\n", + "L2 = [\"b\", 1, 9.2, 6, 3, 9, \"p\"]\n", + "\n", + "L3_set = set(L1) & set(L2)\n", + "L3 = list(L3_set) \n", + "print(L3)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 8, 9, 12, 15]" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(map(lambda x : x[1], L))" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "# 18\n", + "\n", + "L = [(\"Pomme\", 15), (\"Banane\", 8), (\"Fraise\", 12), (\"Kiwi\", 9), (\"Peche\", 2)]\n", + "\n", + "L.sort(key=lambda x : x[1])\n", + "\n", + "# ou\n", + "\n", + "L = [(\"Pomme\", 15), (\"Banane\", 8), (\"Fraise\", 12), (\"Kiwi\", 9), (\"Peche\", 2)]\n", + "\n", + "def sort_second_elem(elem):\n", + " return elem[1]\n", + "\n", + "L.sort(key=sort_second_elem)" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ednom el tuot ruojnoB'" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 19\n", + "ch = \"Bonjour tout le monde\"\n", + "\n", + "ch[::-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 7\n" + ] + } + ], + "source": [ + "# Exo 20 \n", + "mydict = {\"Pomme\": 3,\n", + " \"Banane\": 7,\n", + " \"Kiwi\": 1}\n", + "\n", + "print(mydict[\"Pomme\"], mydict['Banane'])" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "34" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 21\n", + "mydict = {\"Pomme\": 15,\n", + " \"Banane\": 8,\n", + " \"Kiwi\": 9,\n", + " \"Peche\":2 }\n", + "\n", + "sum([x for x in mydict.values()])" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "187.63\n", + "187.63\n" + ] + } + ], + "source": [ + "# Exo 22\n", + "\n", + "c = 187.632587\n", + "\n", + "\"{:.2f}\".format(c)\n", + "\n", + "# ---\n", + "\n", + "print(f\"{c:.2f}\")\n", + "\n", + "# ---\n", + "\n", + "print(f\"{187.632587:.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Je m'appelle Julien et j'ai 32 ans, J'apprends le langage Python\n" + ] + } + ], + "source": [ + "# Exo 23\n", + "monNom = \"Julien\"\n", + "age = 32\n", + "nomLangage = \"Python\"\n", + "\n", + "print(f\"Je m'appelle {monNom} et j'ai {age} ans, J'apprends le langage {nomLangage}\".format())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8 x 0 = 0\n", + "8 x 1 = 8\n", + "8 x 2 = 16\n", + "8 x 3 = 24\n", + "8 x 4 = 32\n", + "8 x 5 = 40\n", + "8 x 6 = 48\n", + "8 x 7 = 56\n", + "8 x 8 = 64\n", + "8 x 9 = 72\n", + "8 x 10 = 80\n" + ] + } + ], + "source": [ + "# Exo 24\n", + "for i in range(11):\n", + " print(\"{} x {} = {}\".format(8, i, 8*i))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/jeremyvangansbeg/Documents/project/intro_python/python-course\n" + ] + } + ], + "source": [ + "# Exo 25\n", + "import os\n", + "\n", + "print(os.getcwd())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 3, 4, 5]\n" + ] + } + ], + "source": [ + "# Exo 26\n", + "L = [1,2,3,4,5]\n", + "\n", + "L.remove(1)\n", + "\n", + "print(L)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('my_file', '.txt')\n", + "File Name: my_file\n", + "File Extension: .txt\n" + ] + } + ], + "source": [ + "# Exo 27\n", + "import os\n", + " \n", + "# this will return a tuple of root and extension\n", + "split_tup = os.path.splitext('my_file.txt')\n", + "print(split_tup)\n", + " \n", + "# extract the file name and extension\n", + "file_name = split_tup[0]\n", + "file_extension = split_tup[1]\n", + " \n", + "print(\"File Name: \", file_name)\n", + "print(\"File Extension: \", file_extension)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8 x 0 = 0\n", + "8 x 1 = 8\n", + "8 x 2 = 16\n", + "8 x 3 = 24\n", + "8 x 4 = 32\n", + "8 x 5 = 40\n", + "8 x 6 = 48\n", + "8 x 7 = 56\n", + "8 x 8 = 64\n", + "8 x 9 = 72\n", + "8 x 10 = 80\n", + "Temps d'execution du programme (secondes) : 6.198883056640625e-05\n" + ] + } + ], + "source": [ + "# Exo 28\n", + "import time\n", + "\n", + "start_time = time.time()\n", + "\n", + "for i in range(11):\n", + " print(\"{} x {} = {}\".format(8, i, 8*i))\n", + "\n", + "execution_time = time.time() - start_time\n", + "\n", + "print(\"Temps d'execution du programme (secondes) :\", execution_time)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['d', 8, 3, 'ch', 6, 2, 's', 7]\n" + ] + } + ], + "source": [ + "# Exo 29\n", + "import random\n", + "\n", + "L = [3,6,8,7,2, \"s\", \"ch\", \"d\"]\n", + "\n", + "random.shuffle(L)\n", + "\n", + "print(L)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30\n" + ] + } + ], + "source": [ + "# Exo 30\n", + "import random\n", + "\n", + "print(random.randint(20,30))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n", + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n", + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n", + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n", + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n", + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n", + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n", + "5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n" + ] + } + ], + "source": [ + "# Exo 31\n", + "for j in range(8) :\n", + " print(*[i for i in range(5,21)]) " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3, 6, 9, 12, 15, 18, 21, 24]\n", + "[1, 2, 3, 4, 5, 6, 7, 8]\n" + ] + } + ], + "source": [ + "# Exo 32\n", + "L = [i for i in range(3,25,3)]\n", + "print(L)\n", + "L1 = [int(i/3) for i in range(3,25,3)]\n", + "print(L1)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[5, 2, 8]\n" + ] + } + ], + "source": [ + "# Exo 33\n", + "L= [-6, 5, -3, -1, 2, 8, -3.6]\n", + "\n", + "L1 = [i for i in L if i > 0 ]\n", + "print(L1)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9\n", + "2\n" + ] + } + ], + "source": [ + "# Exo 34\n", + "def f(a,b,x):\n", + " return a*(x**3) + 2*a*(x**2) +b\n", + "\n", + "print(f(3,0,1))\n", + "print(f(0,2,2))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n" + ] + } + ], + "source": [ + "# Exo 35\n", + "def verif_presence(a,L):\n", + " if a in L :\n", + " return True\n", + " else:\n", + " return False\n", + " \n", + "print(verif_presence(2, list(range(7))))\n", + "print(verif_presence(-1, [3,6,9,7,\"abcr\"]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "[1, 4, 9]\n", + "14\n", + "\n", + "[3, 0, 1, 8]\n", + "12\n" + ] + } + ], + "source": [ + "# Exo 36\n", + "def somme_des_chiffres(num):\n", + " str_num = str(num)\n", + " print(type(str_num))\n", + " ma_liste_de_chiffres = [int(chiffre) for chiffre in str_num]\n", + " print(ma_liste_de_chiffres)\n", + " return sum(ma_liste_de_chiffres)\n", + " \n", + "print(somme_des_chiffres(149))\n", + "print(somme_des_chiffres(3018))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "24\n", + "1\n" + ] + } + ], + "source": [ + "# Exo 37\n", + "def calcul_somme(L):\n", + " \n", + " return sum(L)\n", + " \n", + "print(calcul_somme([3,2,6,9,-1,5]))\n", + "print(calcul_somme([-3, -6,0,1,2,7]))" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-1, 0, 1, 3, 5, 7]\n", + "[-3, 0, 1, 3.2, 5, 9, 10]\n" + ] + } + ], + "source": [ + "# Exo 38\n", + "def supprimer_doublons(L):\n", + " L_cleaned = list(set(L))\n", + " L_cleaned.sort()\n", + " return L_cleaned\n", + " \n", + "print(supprimer_doublons([0,3,5,7,3,5,1,-1]))\n", + "print(supprimer_doublons([0,5,9,10,3.2,1,-3]))" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'julien': 14, 'laurent': 31, 'baptiste': 29}\n", + "{'poids': 65.3}\n" + ] + } + ], + "source": [ + "# Exo 39\n", + "def ajout_element_dict(cle, valeur,d):\n", + " d[cle] = valeur\n", + " return d\n", + "print(ajout_element_dict(\"baptiste\", 29, {\"julien\" :14, \"laurent\"\n", + " :31}))\n", + "print(ajout_element_dict(\"poids\", 65.3, {}))" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8\n", + "7\n", + "8\n", + "7\n" + ] + } + ], + "source": [ + "# Exo 40\n", + "def maximum(L):\n", + " L.sort()\n", + " return L[-1]\n", + "print(maximum([-9,2,4,1,8]))\n", + "print(maximum([-3,1,7,6,2,3]))\n", + "\n", + "# ---\n", + "def maximum(L):\n", + " maximum = L[0]\n", + " for value in L :\n", + " if value > maximum :\n", + " maximum = value\n", + " return maximum\n", + "print(maximum([-9,2,4,1,8]))\n", + "print(maximum([-3,1,7,6,2,3]))" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "46\n", + "12\n" + ] + } + ], + "source": [ + "# Exo 41\n", + "def somme_sous_liste(L,i,j):\n", + " L = L[i:j+1]\n", + " return sum(L)\n", + "print(somme_sous_liste([4,10,12,16,18], 2, 4))\n", + "print(somme_sous_liste(list((range(2,13,2))), 0, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "*\n", + "**\n", + "****\n", + "******\n", + "********\n", + "**********\n", + "\n", + "*\n", + "**\n", + "****\n", + "******\n", + "********\n", + "**********\n" + ] + } + ], + "source": [ + "# Exo 42\n", + "print(\"*\") \n", + "for i in range(2,11,2):\n", + " print(\"*\" * i) \n", + "\n", + "\n", + "for i in range(0,11):\n", + " if i % 2 == 0 or i == 1:\n", + " print(\"*\" * i) " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-9\n", + "-3\n" + ] + } + ], + "source": [ + "# Exo 43\n", + "def minimum(L):\n", + " minimum = L[0]\n", + " for value in L:\n", + " if value < minimum :\n", + " minimum = value\n", + " return minimum\n", + "\n", + "print(minimum([-9,2,4,1,8]))\n", + "print(minimum([-3,1,7,6,2,3]))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6\n", + "0\n" + ] + } + ], + "source": [ + "# Exo 44\n", + "def longueur(L):\n", + " i = 0\n", + " for v in L:\n", + " i+=1\n", + " return i\n", + "\n", + "print(longueur([3,6,7,\"abde\", [1,3,57], True]))\n", + "print(longueur([]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.0\n", + "5.571428571428571\n", + "4.0\n", + "5.571428571428571\n" + ] + } + ], + "source": [ + "# Exo 45\n", + "def moyenne_liste(L):\n", + " return sum(L) / len(L)\n", + "\n", + "print(moyenne_liste(list(range(1,8))))\n", + "print(moyenne_liste([3,0,-1,5,6,9,17]))\n", + "\n", + "#---\n", + "def moyenne_liste(L):\n", + " total = 0\n", + " i = 0\n", + " for value in L :\n", + " total += value\n", + " i+=1\n", + " if i ==0:\n", + " return 0\n", + " return total / i\n", + "\n", + "print(moyenne_liste(list(range(1,8))))\n", + "print(moyenne_liste([3,0,-1,5,6,9,17]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 3]\n", + "[1, 3, 9]\n" + ] + } + ], + "source": [ + "# Exo 46\n", + "def diviseur(n):\n", + " return [x for x in range(1, n+1) if n%x == 0]\n", + "\n", + "print(diviseur(3))\n", + "print(diviseur(9))" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n" + ] + } + ], + "source": [ + "# Exo 47\n", + "def verif_maj(phrase):\n", + " for letter in phrase :\n", + " if letter.isupper():\n", + " return True\n", + " else:\n", + " return False\n", + "\n", + "print(verif_maj(\"Les légumes sont bons pour la santé\"))\n", + "print(verif_maj(\"j'apprends le langage python\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 9, 8, 2, 6, 9, True, False, 'abc']\n", + "[[39, -1], 3, -9, 'xz', 'France']\n" + ] + } + ], + "source": [ + "# Exo 48\n", + "def concat_liste(L1,L2,L3):\n", + " L1 += L2\n", + " L1 += L3\n", + " return L1\n", + "\n", + "print(concat_liste([0,9,8],[2,6,9],[True,False,\"abc\"]))\n", + "print(concat_liste([[38,-1], 3, -9],[\"xz\",\"France\"],[]))" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6\n", + "4\n" + ] + } + ], + "source": [ + "# Exo 49\n", + "def nbr_valeur_dict(d):\n", + " compteur = 0\n", + " for values in d.values():\n", + " compteur += len(values)\n", + "\n", + " return compteur\n", + "\n", + "\n", + "print(nbr_valeur_dict({'a':[1,2,3], 'b' :[3,'p'], \"c\":[8]}))\n", + "print(nbr_valeur_dict({'Julie':[12, 60.1], 'Fred' :[26, 75.6], \"David\":[]}))" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [], + "source": [ + "d1 = {\"test1\":\"value1\"}\n", + "d2 = {\"test2\":\"value2\"}\n", + "\n", + "for k,v in d2.items():\n", + " d1[k] =v" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "c 2\n", + "d -1\n", + "{'a': 3, 'b': 6, 'c': 2, 'd': -1}\n", + "p []\n", + "{'d': [2.9, 4.1], 'p': []}\n" + ] + } + ], + "source": [ + "# Exo 50\n", + "def concat_dict(d1,d2):\n", + " for key, value in d2.items():\n", + " d1[key] = value\n", + " return d1\n", + "\n", + "print(concat_dict({\"a\":3, \"b\":6},{\"c\":2, \"d\":-1}))\n", + "print(concat_dict({\"d\":[2.9,4.1]}, {'p':[]}))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6\n", + "362880\n", + "1\n" + ] + } + ], + "source": [ + "# Exo 51\n", + "def calcul_factoriel(n):\n", + " total = 1\n", + " for i in range(1, n+1) :\n", + " total *= i\n", + " return total\n", + "\n", + "\n", + "print(calcul_factoriel(3))\n", + "print(calcul_factoriel(9))\n", + "print(calcul_factoriel(0))" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[5, 15, 25, 35, 45, 55, 65, 75, 85, 95]\n", + "[11, 22, 44, 55, 77]\n" + ] + } + ], + "source": [ + "# Exo 52\n", + "def diviseur_mult(n,a,nbr_seuil):\n", + " result_list = []\n", + " for i in range(1,nbr_seuil) :\n", + " if i%n ==0 and i%a !=0:\n", + " result_list.append(i)\n", + "\n", + " return result_list\n", + "\n", + "\n", + "print(diviseur_mult(5,2,100))\n", + "print(diviseur_mult(11,3,85))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[True, True, True, True, True, True, True, True, True]\n", + "True\n", + "[]\n", + "True\n" + ] + } + ], + "source": [ + "# Exo 53\n", + "def presence_voyelle(phrase):\n", + " voyelles = [\"a\", \"e\", \"i\", \"o\", \"u\", \"y\"]\n", + "\n", + " test = [True for x in phrase if x in voyelles]\n", + "\n", + " return any(test)\n", + "\n", + "print(presence_voyelle(\"Je vais prendre ma douche\"))\n", + "print(presence_voyelle(\"rbhpm\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LaFranceestbelle!\n", + "Jevaisprendremonvélo\n" + ] + } + ], + "source": [ + "# Exo 54\n", + "def suppr_espace(phrase):\n", + " phrase = phrase.replace(\" \", \"\")\n", + " return phrase\n", + "\n", + "print(suppr_espace(\"La France est belle !\"))\n", + "print(suppr_espace(\"Je vais prendre mon vélo\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 6]\n", + "L'élément -1 ne se trouve pas dans la liste [6, 8, 9, 1, 3, 7]\n" + ] + } + ], + "source": [ + "# Exo 55\n", + "def position_elt_liste(L,x) :\n", + " indices = []\n", + " for i in range(len(L)):\n", + " if L[i] == x :\n", + " indices.append(i)\n", + " if len(indices) :\n", + " return indices\n", + " else :\n", + " return print(f\"L'élément {x} ne se trouve pas dans la liste {L}\")\n", + " \n", + "\n", + "# Exo 55\n", + "def position_elt_liste(L,x) :\n", + " indices = []\n", + " for i in range(len(L)):\n", + " if L[i] == x :\n", + " indices.append(i)\n", + " return indices or f\"L'élément {x} ne se trouve pas dans la liste {L}\"\n", + "\n", + " \n", + "print(position_elt_liste([1,2,3,6,8,7,3],3))\n", + "print(position_elt_liste([6,8,9,1,3,7],-1))" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Salut\n", + "origine\n" + ] + } + ], + "source": [ + "# Exo 56\n", + "def filtrer_mots(phrase, longueur_mini) :\n", + " liste_de_mots = phrase.split(\" \")\n", + " liste_de_mots_sup_longueur_mini = [word for word in liste_de_mots if len(word) > longueur_mini ]\n", + " return \" \".join(liste_de_mots_sup_longueur_mini)\n", + "\n", + "\n", + " \n", + "print(filtrer_mots(\"Salut toi\",4))\n", + "print(filtrer_mots(\"Quel est ton origine ?\",5))" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "monde le tout bonjour\n", + "Pomme\n" + ] + } + ], + "source": [ + "# Exo 57\n", + "def inverser_phrase(phrase) :\n", + " liste_de_mots = phrase.split(\" \")\n", + " liste_de_mots_inversee = liste_de_mots[::-1]\n", + " return \" \".join(liste_de_mots_inversee)\n", + "\n", + "\n", + " \n", + "print(inverser_phrase(\"bonjour tout le monde\"))\n", + "print(inverser_phrase(\"Pomme\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(1, 2), (-4, 1), (2, 2), (-3, 2), (8, 2), (9, 1)]\n", + "[(3, 2), (4, 1), ('b', 1), ('a', 2)]\n", + "[(-4, 1), (8, 2), (-3, 2), (2, 2), (1, 2), (9, 1)]\n", + "[('a', 2), (3, 2), (4, 1), ('b', 1)]\n" + ] + } + ], + "source": [ + "# Exo 58\n", + "def nombre_occurence(L):\n", + " return list(set([(x,L.count(x)) for x in L]))\n", + "\n", + "print(nombre_occurence([-4,8,-3,2,1,2,9,-3,8,1]))\n", + "print(nombre_occurence([\"a\",3,4,\"b\",\"a\",3]))\n", + "\n", + "\n", + "# Exo 58\n", + "def nombre_occurence(L):\n", + " occurences = []\n", + " for value in L:\n", + " if (value,L.count(value)) not in occurences :\n", + " occurences.append((value,L.count(value)))\n", + " return occurences\n", + "\n", + "print(nombre_occurence([-4,8,-3,2,1,2,9,-3,8,1]))\n", + "print(nombre_occurence([\"a\",3,4,\"b\",\"a\",3]))" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 3, 6, 9, 12]\n", + "[-3, 2, 7, 44]\n" + ] + } + ], + "source": [ + "# Exo 59\n", + "def union_list(L1,L2,L3):\n", + " new_list = list(set(L1) | set(L2) | set(L3))\n", + " new_list.sort()\n", + " return new_list\n", + "\n", + "print(union_list([3,6,9,3], [1,0,3], [12,6,0]))\n", + "print(union_list([7,44,-3], [], [7,2,7]))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "5 % 15" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "5\n" + ] + } + ], + "source": [ + "# Exo 60\n", + "def calcul_PGCD(a,b):\n", + " min_number = min([a,b])\n", + " max_number = max([a,b])\n", + " r = max_number % min_number\n", + " b = max_number // min_number\n", + " q = (max_number - r) / b\n", + " return int(q)\n", + "\n", + "print(calcul_PGCD(3,5))\n", + "print(calcul_PGCD(5,15))" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ceci est\n", + "un \n", + "text\n", + "None\n" + ] + } + ], + "source": [ + "# Exo 61\n", + "def lire_fichier(chemin_fichier):\n", + " with open(chemin_fichier) as my_file:\n", + " print(my_file.read())\n", + "\n", + "\n", + "print(lire_fichier('test.txt'))" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Je', 'suis', 'jeremy.\\nJe', 'suis', 'un', 'formateur']\n", + "0\n", + "['Je', 'suis', 'jeremy.', 'Je', 'suis', 'un', 'formateur']\n", + "0\n" + ] + } + ], + "source": [ + "# Exo 62\n", + "def nbr_occ_fichier(chemin_fichier, mot):\n", + " with open(chemin_fichier) as my_file:\n", + " my_list_of_words = my_file.read().split(\" \")\n", + " print(my_list_of_words)\n", + " \n", + " return my_list_of_words.count(mot)\n", + "\n", + "\n", + "print(nbr_occ_fichier('test.txt', \"je\"))\n", + "\n", + "import re\n", + "\n", + "def nbr_occ_fichier(chemin_fichier, mot):\n", + " with open(chemin_fichier) as my_file:\n", + " # Dans cette version on sépare quand il y a un espace\n", + " # ou un retour à la ligne.\n", + " my_list_of_words = re.split(r' |\\n', my_file.read())\n", + " print(my_list_of_words)\n", + " \n", + " return my_list_of_words.count(mot)\n", + "\n", + "\n", + "print(nbr_occ_fichier('test.txt', \"je\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 202, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Je suis jeremy.\\nJe suis un ormateur'" + ] + }, + "execution_count": 202, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 63\n", + " \n", + "def suppr_carac(chemin_fichier, caractere):\n", + " \n", + " with open(chemin_fichier, 'r') as my_file:\n", + " to_return = my_file.read().replace(caractere,\"\")\n", + "\n", + " with open(chemin_fichier, 'w') as my_file:\n", + " my_file.write(to_return)\n", + "\n", + " return to_return\n", + " \n", + "suppr_carac(\"test.txt\", \"f\")" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 204, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 64\n", + " \n", + "def presence_nombre(chemin_fichier):\n", + " \n", + " with open(chemin_fichier, 'r') as my_file:\n", + " text = my_file.read()\n", + " for letter in text:\n", + " if letter.isdigit():\n", + " return True\n", + " return False\n", + " \n", + "presence_nombre(\"test.txt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "26" + ] + }, + "execution_count": 210, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 65\n", + "def nombre_fichier(chemin_dossier=\".\"):\n", + " return len(os.listdir(path=chemin_dossier))\n", + " \n", + "nombre_fichier()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Bonjour, ...'" + ] + }, + "execution_count": 212, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 66\n", + "\n", + "def ecrire_fichier(nom_fichier, text):\n", + " with open(nom_fichier, 'w') as my_file:\n", + " my_file.write(text)\n", + " return text\n", + " \n", + "ecrire_fichier(\"test.txt\", \"Bonjour, ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a\n", + "dtg\n" + ] + } + ], + "source": [ + "# Exo 67\n", + "\n", + "def cle_max_valeur_dict(d):\n", + " max_len = 0\n", + " key = \"\"\n", + " for k, v in d.items():\n", + " curr_len = len(set(v))\n", + " if curr_len > max_len :\n", + " max_len = curr_len\n", + " key = k\n", + " return key\n", + "\n", + "\n", + " \n", + "print(cle_max_valeur_dict({'a' : [9,10,9,7,3,1],\n", + " 'b':[5,3,2,2,2],\n", + " 'c': [1,1,1,1,1,1,8,2]}))\n", + "\n", + "print(cle_max_valeur_dict({'dtg' : [6,8,1],\n", + " 'fgb':[2.5,\"a\"],\n", + " 'klm': [\"p\", 3.3]}))" + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "['3', '2']\n" + ] + } + ], + "source": [ + "# Exo 68\n", + "\n", + "list_user = input(\"Entrer une liste d'utilisateur\")\n", + "list_user = list_user.replace('[','').replace(']','').split(',')\n", + "\n", + "print(type(list_user))\n", + "print(list_user)" + ] + }, + { + "cell_type": "code", + "execution_count": 257, + "metadata": {}, + "outputs": [], + "source": [ + "# Exo 69\n", + "\n", + "def nbr_jour_heure(date_debut, date_fin):\n", + " import datetime\n", + " date_debut = date_debut.split(\"/\")\n", + " date_fin = date_fin.split(\"/\")\n", + " date_debut = datetime.datetime(year=int(date_debut[0]), month=int(date_debut[1]), day=int(date_debut[2]))\n", + " date_fin = datetime.datetime(year=int(date_fin[0]), month=int(date_fin[1]), day=int(date_fin[2]))\n", + "\n", + " nb_jours = abs((date_fin - date_debut).days)\n", + "\n", + " return (nb_jours, nb_jours*24)\n", + "\n", + "\n", + "print(nbr_jour_heure('2022/05/15', \"2022/06/20\"))\n", + "print(nbr_jour_heure('2022/04/1', \"2022/04/27\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 285, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a2e12b\n", + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()\n", + "nghd7^\n" + ] + } + ], + "source": [ + "# Exo 70\n", + "\n", + "def generer_mdp(caracteres, taille_mdp):\n", + " import random\n", + " return \"\".join(random.choices(caracteres, k=taille_mdp))\n", + "\n", + "print(generer_mdp(\"abcdefg1234\", 6))\n", + "\n", + "import string\n", + "liste_caracteres = string.ascii_letters + string.digits + \"!@#$%^&*()\"\n", + "print(liste_caracteres)\n", + "print(generer_mdp(liste_caracteres, 6))" + ] + }, + { + "cell_type": "code", + "execution_count": 288, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9.207106781186548\n", + "8.0\n" + ] + } + ], + "source": [ + "# Exo 71\n", + "def fonct_trigo(x):\n", + " import math\n", + " return math.cos(x)*math.sin(x)+math.sin(x)+8\n", + "\n", + "import math\n", + "print(fonct_trigo(math.pi/4))\n", + "print(fonct_trigo(math.pi))" + ] + }, + { + "cell_type": "code", + "execution_count": 296, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 120, 123, 130, 132, 138, 140, 145, 150, 154, 159, 160, 167, 170, 176, 180, 183, 189, 190, 195, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 213, 220, 224, 230, 231, 235, 240, 242, 246, 250, 253, 257, 260, 264, 268, 270, 275, 279, 280, 286, 290, 297, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 312, 318, 320, 321, 325, 330, 333, 340, 345, 347, 350, 352, 354, 357, 360, 369, 370, 374, 375, 380, 381, 390, 396, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 415, 420, 422, 426, 430, 435, 437, 440, 448, 450, 451, 453, 456, 459, 460, 462, 465, 466, 470, 473, 480, 484, 490, 495, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 514, 519, 520, 523, 527, 530, 532, 534, 537, 540, 541, 543, 546, 549, 550, 560, 564, 570, 572, 573, 578, 579, 580, 587, 590, 591, 594, 597, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 617, 620, 624, 628, 630, 639, 640, 642, 645, 646, 650, 654, 660, 664, 666, 670, 671, 678, 680, 682, 687, 690, 693, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 716, 720, 725, 729, 730, 734, 735, 740, 743, 750, 752, 753, 758, 759, 760, 761, 768, 770, 780, 785, 786, 789, 790, 792, 795, 798, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 813, 819, 820, 826, 830, 831, 840, 844, 850, 857, 860, 862, 867, 870, 875, 876, 879, 880, 890, 891, 897, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 915, 918, 920, 927, 930, 936, 940, 945, 950, 951, 954, 957, 960, 963, 970, 972, 975, 978, 980, 981, 987, 990, 999]\n" + ] + } + ], + "source": [ + "# Exo 72\n", + "L = []\n", + "\n", + "for i in range(100,1000):\n", + " istr = str(i)\n", + " a,b,c = istr\n", + " a = int(a)\n", + " b = int(b)\n", + " c = int(c)\n", + " somme = a+b+c\n", + " produit = a*b*c\n", + " if produit%somme == 0:\n", + " L.append(int(str(a)+str(b)+str(c)))\n", + "\n", + "L.sort()\n", + "print(list(set(L)))" + ] + }, + { + "cell_type": "code", + "execution_count": 312, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 312, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exo 73\n", + "def calcul_somme(L):\n", + " if not L:\n", + " return 0\n", + " else:\n", + " return L[0] + calcul_somme(L[1:])\n", + "\n", + "calcul_somme([2,3,5])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La notation lst[1:] crée en fait une nouvelle sous-liste qui commence à partir du deuxième élément de la liste lst jusqu'à la fin de la liste. Donc, à chaque appel récursif, nous passons une liste qui est plus courte d'un élément.\n", + "\n", + "Prenons l'exemple de la liste ma_liste = [1, 2, 3, 4, 5] pour mieux comprendre :\n", + "\n", + "Lors du premier appel à somme_recursive(ma_liste), la liste est [1, 2, 3, 4, 5]. Nous prenons 1 (le premier élément) et ajoutons le résultat de somme_recursive([2, 3, 4, 5]) (la liste sans le premier élément).\n", + "Dans le deuxième appel, la liste est [2, 3, 4, 5]. Nous prenons 2 et ajoutons le résultat de somme_recursive([3, 4, 5]).\n", + "Dans le troisième appel, la liste est [3, 4, 5]. Nous prenons 3 et ajoutons le résultat de somme_recursive([4, 5]).\n", + "Dans le quatrième appel, la liste est [4, 5]. Nous prenons 4 et ajoutons le résultat de somme_recursive([5]).\n", + "Dans le cinquième appel, la liste est [5]. Nous prenons 5 et ajoutons le résultat de somme_recursive([]).\n", + "Finalement, lors du sixième appel, la liste est vide [], et nous retournons simplement 0 car c'est notre cas de base.\n", + "Si vous additionnez tous ces appels :\n", + "1\n", + "+\n", + "(\n", + "2\n", + "+\n", + "(\n", + "3\n", + "+\n", + "(\n", + "4\n", + "+\n", + "(\n", + "5\n", + "+\n", + "0\n", + ")\n", + ")\n", + ")\n", + ")\n", + "1+(2+(3+(4+(5+0)))) = 15" + ] + }, + { + "cell_type": "code", + "execution_count": 323, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 323, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def suite_fibonacci(n):\n", + " if n<=1:\n", + " return n\n", + " else :\n", + " return suite_fibonacci(n-1) + suite_fibonacci(n-2)\n", + " \n", + "suite_fibonacci(3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.14" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/oop/1-Introduction_POO.ipynb b/oop/1-Introduction_POO.ipynb new file mode 100644 index 0000000..7628a33 --- /dev/null +++ b/oop/1-Introduction_POO.ipynb @@ -0,0 +1,2593 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Programmation orienté objet" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Les objets en python" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quels sont les objets dans le code suivant ?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Les éléments en python\n", + "a = 3\n", + "b = 9\n", + "c = [4,5]\n", + "\n", + "d = 'Hi'\n", + "\"Hello\"\n", + "\n", + "def mutipliby_by_2(x):\n", + " return x * 2\n", + "\n", + "mutipliby_by_2(7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Répondre ici**\n", + "\n", + "Les objets sont : " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En python, il existe 8 elements fondamentaux :\n", + "- objects (objets)\n", + "- identifiers (identifiants)\n", + "- operators (opérateurs)\n", + "- delimiters (délimiteurs)\n", + "- keywords (mots-clés)\n", + "- comments (commentaires)\n", + "- blank lines (ligne blanche)\n", + "- white space (espace)\n", + "- indentation " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "Solution\n", + "\n", + "Les objets sont : 2, 9, 4, 5, 'Hi', 'Hello', function definition, 2, 7, 14\n", + "\n", + "Les identifiants sont : a, b, c, d, mutipliby_by_2, x\n", + "\n", + "Les opérateurs sont : *\n", + "\n", + "Les délimiteurs sont : , [] () '' \"\" =\n", + "\n", + "Keywords : def, return\n", + "\n", + "Commentaires : # Les éléments en python\n", + "\n", + "Voir dans le code pour les espaces, les blanks lines et l'indentation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plus d'opérateurs : https://www.w3schools.com/python/python_operators.asp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## I.1 Vocabulaire" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Métaphore cullinère:\n", + "- une classe : la recette du \"gateau\"\n", + "- une instanciation de classe : la préparation d'un gateau à partir de la recette.\n", + "- un objet ou une instance de classe : un gateau avec un cetain gout et un certain nombre de parts.\n", + "\n", + "On comprend qu'avec une recette on peut créer une infinité de gateaux.\n", + "\n", + "Une classe peut contenir:\n", + "- des attributs\n", + "- des méthodes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.2 Point Pep 8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comment nommer ce dont on se sert:\n", + "- **`Class names`**: should normally use the CapWords convention.\n", + "- **`Method names and attribute names`** : Use the function naming rules: lowercase with words separated by underscores as necessary to improve readability." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# II Coder ses premières classes et instances de classe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## II.1 Coder les classes et les méthodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "class Cake :\n", + " # on définit ensuite, le constructeur: l'ensemble des attributs d'instance\n", + " # le constructeur est lui même une méthode mais une méthode très particulière\n", + " def __init__(self, flavor, number_share):\n", + " \"\"\" Initialise les attributs\n", + "\n", + " Args:\n", + " flavor ([type]): [description]\n", + " number_share ([type]): [description]\n", + " \"\"\"\n", + " self.flavor = flavor\n", + " self.number_share = number_share\n", + "\n", + " # on définit ensuite les méthodes qui peuvent utiliser les attributs de classe et d'instance\n", + " def be_cut(self):\n", + " \"\"\" couper le gateau\"\"\"\n", + " return print(\"the {} cake is now cut in {} shares\".format(self.flavor, self.number_share)) \n", + "\n", + " def add_candles(self,candle):\n", + " \"\"\" ajoute des bougies au gateau\"\"\"\n", + " return print(\"{} candles have been added on the {} cake\".format(candle, self.flavor))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the banana cake is now cut in 10 shares\n", + "the carrot cake is now cut in 12 shares\n", + "18 candles have been added on the banana cake\n" + ] + } + ], + "source": [ + "banana_cake = Cake(\"banana\",10)\n", + "banana_cake.number_share\n", + "\n", + "\n", + "carrot_cake = Cake(\"carrot\",12)\n", + "carrot_cake.flavor\n", + "\n", + "banana_cake.be_cut()\n", + "carrot_cake.be_cut()\n", + "\n", + "banana_cake.add_candles(18)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "type(banana_cake)=\n", + "banana_cake.flavor='banana'\n", + "banana_number_share: 8\n", + "the banana cake is now cut in 8 shares\n", + "8 candles have been added on the banana cake\n" + ] + } + ], + "source": [ + "# On crée maintenant nos objets à partir de la classe définie plus haut\n", + "\n", + "# L'instanciation nécessite de définir les attributs d'instance (mais pas de classe)\n", + "banana_cake = Cake(\"banana\",8)\n", + "carrot_cake = Cake(\"carrot\",10)\n", + "\n", + "print(f\"{type(banana_cake)=}\" )\n", + "print(f\"{banana_cake.flavor=}\")\n", + "print(\"banana_number_share:\",banana_cake.number_share)\n", + "\n", + "# On peut appeler les méthodes, comme on l'a toujours fait\n", + "banana_cake.be_cut()\n", + "banana_cake.add_candles(8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 1`**: \n", + "Reprennez votre diagramme de class et coder les classes et les objets qui s'y trouvent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## II.2 Les différents types d'attribut et de méthode" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En programmation orientée objet, il existe trois types d’attributs :\n", + "- les attributs d’instance et les méthodes d'instance sont propres aux instances créées\n", + " - les méthodes d'instances sont les méthodes normales, on donne implicitement à celles-ci l'instance comme premier paramètre (self)\n", + "- les attributs de classe (propres à la classe, et partagés entre les instances): Les attributs de classe sont souvent utilisés pour créer des données ou des actions globales à la classe, qui ne dépendent pas d’une instance. \n", + " - Elles peuvent être accédées par la classe, sans passer par l’instanciation. \n", + " - Les attributs de classe peuvent se référencer entre eux, mais ne peuvent pas accéder aux attributs d’instance.\n", + " - On donne implicitement aux méthodes de classe comme premier argument la classe elle-même (cls)\n", + "- et les attributs statiques et les méthodes statiques sont presque indépendants de la classe, on ne les verra pas car il n'est pas conseillé de les utiliser, ils ont précédés de @staticmethod).\n", + " - On ne leur donne pas implicitement de premier paramètre\n", + "\n", + "Si chaque type d’attribut possède une utilité propre, essayez autant que possible de privilégier les attributs d’instance, qui permettent d’utiliser la programmation orientée objet à son plein potentiel.\n", + "\n", + "good to know:\n", + "When you try to access an attribute from an instance of a class, it first looks at its instance namespace. If it finds the attribute, it returns the associated value. If not, it then looks in the class namespace and returns the attribute (if it’s present, throwing an error otherwise)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "class Pie:\n", + " \"\"\"Objet Cake qui permettra d'alimenter ma boulangerie\n", + " \"\"\"\n", + " # on crée les attributs de classe en dehors du constructeur\n", + " taste = \"good\"\n", + "\n", + " def __init__(self, flavor,number_share):\n", + " \"\"\" Initialise les attributs\n", + "\n", + " Args:\n", + " flavor ([type]): [description]\n", + " number_share ([type]): [description]\n", + " \"\"\"\n", + " self.flavor = flavor\n", + " self.number_share = number_share\n", + "\n", + " def be_cut(self):\n", + " \"\"\" couper le gateau\"\"\"\n", + " print(\"the {} cake is now cut in {} share\".format(self.flavor, self.number_share)) \n", + "\n", + " def add_candles(self,candle):\n", + " \"\"\" ajoute des bougies au gateau\"\"\"\n", + " print(\"{} candles have been added on the {} {} cake\".format(candle, self.__class__.taste,self.flavor))\n", + " print(\"each share has\") \n", + " \n", + "\n", + " #on les utilise dans des méthodes de classe\n", + " @classmethod\n", + " def is_it_good(cls):\n", + " return cls.taste == \"good\"\n", + " \n", + " @staticmethod\n", + " def my_addition(a,b):\n", + " return a + b\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "apple\n" + ] + }, + { + "data": { + "text/plain": [ + "15" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "apple_pie = Pie(\"apple\",10)\n", + "print(apple_pie.flavor)\n", + "apple_pie.my_addition(7,8)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'good'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pie.taste\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'good'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "apple_pie = Pie(\"apple\",10)\n", + "apple_pie.taste" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Pie.taste\n", + "print(Pie.is_it_good())\n", + "apple_pie = Pie(\"apple\",10)\n", + "apple_pie.is_it_good()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pie.taste='good'\n", + "Pie.is_it_good()=True\n", + "apple_pie.taste='good'\n", + "apple_pie.taste='bad'\n", + "raspberry_pie.taste='good'\n", + "raspberry_pie.taste='just okay'\n", + "stawberry_pie.taste='just okay'\n", + "apple_pie.taste='bad'\n" + ] + } + ], + "source": [ + "# On peut accéder aux variables de classe sans instanciation.\n", + "print(f\"{Pie.taste=}\")\n", + "print(f\"{Pie.is_it_good()=}\")\n", + "\n", + "# Les instances peuvent accéder à ces attributs:\n", + "apple_pie = Pie(\"apple\",8)\n", + "raspberry_pie = Pie(\"raspberry\",9)\n", + "\n", + "# modifier cette attribut ne fonctionnera que pour l'instance en question\n", + "print(f\"{apple_pie.taste=}\")\n", + "apple_pie.taste = \"bad\"\n", + "print(f\"{apple_pie.taste=}\")\n", + "print(f\"{raspberry_pie.taste=}\")\n", + "\n", + "# On peut changer cette valeur pour toutes les instances\n", + "Pie.taste = \"just okay\"\n", + "\n", + "# Cela modifie automatiquement toutes les instances\n", + "print(f\"{raspberry_pie.taste=}\")\n", + "\n", + "# Y compris les nouvelles crées\n", + "stawberry_pie = Pie(\"stawberry\",8)\n", + "print(f\"{stawberry_pie.taste=}\")\n", + "\n", + "# Par contre quand on a modifié la valeur de taste pour apple, on l'a part la meme occasion transformé\n", + "# en attribut d'instance d'apple. Il ne peut donc plus être modifié.\n", + "print(f\"{apple_pie.taste=}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'flavor': 'apple', 'number_share': 8, 'taste': 'bad'}\n", + "{'__module__': '__main__', '__doc__': \"Objet Cake qui permettra d'alimenter ma boulangerie\\n \", 'taste': 'good', '__init__': , 'be_cut': , 'add_candles': , 'is_it_good': , 'my_addition': , '__dict__': , '__weakref__': }\n", + "{'__module__': '__main__', '__doc__': \"Objet Cake qui permettra d'alimenter ma boulangerie\\n \", 'taste': 'good', '__init__': , 'be_cut': , 'add_candles': , 'is_it_good': , 'my_addition': , '__dict__': , '__weakref__': }\n" + ] + } + ], + "source": [ + "apple_pie = Pie(\"apple\",8)\n", + "\n", + "apple_pie.taste = \"bad\"\n", + "\n", + "print(apple_pie.__dict__)\n", + "print(apple_pie.__class__.__dict__)\n", + "print(Pie.__dict__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice`**\n", + "- Créer des classes: boite à outils, marteau, tournevis, clou, visse \n", + "- Instanciez une boîte à outils, un tournevis, et un marteau.\n", + "- Placez le marteau et le tournevis dans la boîte à outils.\n", + "- Instanciez une visse, et serrez-la avec le tournevis. Affichez la vis avant et après avoir été serrée.\n", + "- Instanciez un clou, puis enfoncez-le avec le marteau. Affichez le clou avant et après avoir été enfoncé.\n", + "- Une boite à outil possède 5 emplacements. (classe attributs)\n", + "- Régulièrement le constructeur des boites à outils sort un nouveau modèle qui permet d'etendre la capacité des boites à outils de 1 emplacement.\n", + "\n", + "Pour chaque classe vous devez définir les attributs et les méthodes qui permettront d'éxecuter et de rapporter dans le terminal ces actions et ces états." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# III L'héritage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## III.1 La notion d'héritage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le grand avantage des classes c'est l'héritage.\n", + "\n", + "L'héritage consiste à créer une classe enfant à partir d'une classe parent.\n", + "La classe enfant récupère toutes les méthodes de la classe parent et tous les attributs de classe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![title](img/Class_heritage.drawio.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pourquoi l’héritage ?\n", + "- **`La réutilisabilité`**: quand on veut écrire plusieurs classes proches, il faut créer une classe parente et ensuite facilement créer les classes enfants. Pour modifier une méthode existante dans toutes les classes, il ne faudra plus que la changer à un endroit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**'Exercice'** Ecrire le diagramme de classe correspondant au cas suivant:\n", + "Fort de votre expérience en pâtisserie, vous décidez de créer un forum en ligne pour parler de gâteaux ! \n", + "- Vous devez définir et instancier trois classes: Utilisateurs (et ses héritiers), fil de discussion et post (et ses héritiers)\n", + "\n", + "\n", + "Sur ce forum\n", + "- les utilisateurs fans de pâtisserie pourront : s’inscrire et se connecter ;\n", + "- parler de leurs gâteaux préférés, en créant de nouveaux fils de discussion ;\n", + "- répondre à des messages, dans les fils existants.\n", + "- Un fil de discussion sur ce forum a un titre, une date de création et une collection de posts lui correspondant.\n", + "- Chaque post contient du texte, l’utilisateur qui l’a publié et la date de publication.\n", + "- Les utilisateurs ont la possibilité d’attacher des fichiers à leurs posts :\n", + "- Partez du principe qu’il peut y avoir de nombreux types de fichiers, mais nous sommes surtout intéressés par les fichiers images (GIF ou JPEP).\n", + "- Un post peut avoir un fichier attaché, ce qui changera la façon dont le post est affiché. Ce serait donc un nouveau type de post.\n", + "- Enfin, il y a des utilisateurs spéciaux nommés modérateurs, qui ont la capacité de modifier un post pour qu’il contienne du contenu nouveau, et de supprimer ceux qui ne parlent pas de gâteaux. ;)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comment représenter les différentes [associations](https://creately.com/blog/diagrams/class-diagram-relationships/) en UML?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## III.2 Coder ses classes héritées" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "# Exemple\n", + "\n", + "class Stylo:\n", + " \"\"\" Classe stylo\"\"\"\n", + " tient_dans_une_trousse = True\n", + " \n", + " def __init__(self,couleur,taille):\n", + " self.couleur = couleur\n", + " self.taille = taille\n", + " \n", + " def ecrire(self,content):\n", + " print(f'J\\'écris {content} avec mon stylo {self.couleur}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dir(object)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "J'écris un truc avec mon stylo noir\n" + ] + } + ], + "source": [ + "bic = Stylo(\"noir\",10)\n", + "bic.ecrire(\"un truc\")" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "class StyloPlume(Stylo):\n", + " fais_des_tache = True\n", + " \n", + " def __init__(self, couleur, taille, type_cartouche):\n", + " self.couleur = couleur\n", + " self.taille = taille\n", + " self.type_cartouche = type_cartouche" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "J'écris un contenu avec mon stylo rouge\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ma_plume = StyloPlume(\"rouge\",10,\"parker\")\n", + "ma_plume.ecrire(\"un contenu\")\n", + "ma_plume.fais_des_tache" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'rouge'" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ma_plume = StyloPlume(\"rouge\",10,\"parker\")\n", + "ma_plume.couleur" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "voici ce que j'écris : un contenu\n" + ] + } + ], + "source": [ + "ma_plume.ecrire(\"un contenu\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ma_plume.tient_dans_une_trousse" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## III.3 Surcharger une méthode et utilisation de super()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Surcharger une méthode consiste à définir à nouveau une méthode existant dans la classe parent dans la classe enfant.\n", + "\n", + "C'est la définition dans la classe enfant qui l'emportera" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "class StyloPlume(Stylo):\n", + " \"\"\" Classe stylo\"\"\"\n", + " def __init__(self, couleur, type_cartouche):\n", + " self.couleur = couleur\n", + " self.type_cartouche = type_cartouche\n", + "\n", + " def ecrire(self,content):\n", + " print(f'J\\'écris {content} avec mon stylo PLUME {self.couleur}')\n", + "\n", + " def ecrire_old(self,content):\n", + " super().ecrire(content)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "J'écris autre chose avec mon stylo PLUME bleu\n" + ] + } + ], + "source": [ + "StyloPlume(\"bleu\",\"parker\").ecrire(\"autre chose\")" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "J'écris autre chose avec mon stylo bleu\n" + ] + } + ], + "source": [ + "StyloPlume(\"bleu\",\"parker\").ecrire_old(\"autre chose\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut également si on le souhaite réutiliser une classe parente surcharger à l'aide de super()" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [], + "source": [ + "class StyloBic(Stylo):\n", + " \"\"\" Classe stylo\"\"\"\n", + " def __init__(self, couleur,marque):\n", + " super().__init__(couleur) #Quand il y a beaucoup d'argument ça devient utile\n", + " self.marque = marque\n", + "\n", + " def ecrire(self,content):\n", + " print(f'J\\'écris {content} avec mon stylo BIC {self.couleur}')" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [], + "source": [ + "mon_stylo_bic = StyloBic(\"rouge\",\"bic\")" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'rouge'" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mon_stylo_bic.couleur" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 1`**\n", + "\n", + "Coder le diagramme de classe que vous vennez d'écrire " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 2`**:\n", + "\n", + "Réaliser la série d'exercices [suivante](https://holypython.com/advanced-python-exercises/exercise-5-inheritence/)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice 3`**:\n", + "\n", + "Réaliser la série d'exercices suivants sur [codewars](https://www.codewars.com/collections/python-classes-5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# IV Encapsulation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## IV.1 Les attibuts protégés" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les attributs protégés sont des attributs qu'on ne peut pas appeler en dehors de la classe. Ils ne sont accessible qu'au sein de la classe et dans les sous classes.\n", + "\n", + "Les attributs protégés existent dans différents langages (jave, C++) mais sont un peu particuliers en python" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "class Profil:\n", + " def __init__(self,name):\n", + " self.name = name\n", + " # les attributs protégés sont caractérisés par un \"_\" avant leurs noms\n", + " self.password = \"pass\"\n", + "\n", + " # généralement on y accède au moyen de méthodes spécifique:\n", + " def setPassword(self,password):\n", + " if len(password)>=8:\n", + " self.password = password\n", + " else:\n", + " print(\"mot de passe pas assez secure: len> 8 exigée\")\n", + "\n", + " def getPassword(self):\n", + " return self.password" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'1234'" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "charles = Profil(\"charles\")\n", + "charles.password\n", + "charles.setPassword(\"12345678\")\n", + "\n", + "charles.password = \"1234\"\n", + "charles.password" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [], + "source": [ + "class Profil:\n", + " def __init__(self,name):\n", + " self.name = name\n", + " # les attributs protégés sont caractérisés par un \"_\" avant leurs noms\n", + " self._password = \"pass\"\n", + "\n", + " # généralement on y accède au moyen de méthodes spécifique:\n", + " def setPassword(self,password):\n", + " if len(password)>=8:\n", + " self._password = password\n", + "\n", + " def getPassword(self):\n", + " return self._password[0:3] + \"*****\"" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'123*****'" + ] + }, + "execution_count": 111, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mon_profil = Profil(\"charles\")\n", + "\n", + "mon_profil.setPassword(\"12345678\")\n", + "\n", + "\n", + "mon_profil._password\n", + "mon_profil.getPassword()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'charles', '_password': '12345678', 'password': '888'}" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mon_profil.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'1234567809'" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_profil=Profil(\"Charles\")\n", + "my_profil.setPassword(\"1234567809\")\n", + "my_profil.getPassword()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "trynew\n" + ] + } + ], + "source": [ + "# Théoriquement, le code suivant ne devrait pas marcher:\n", + "my_profil._password = \"trynew\"\n", + "print(my_profil._password)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'charles', '_password': 8}" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# remarque\n", + "# On retrouve dans le dictionnaire d'attribut _password, c'est pour cela qu'on peut y accéder de l'extérieur\n", + "mon_profil.__dict__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cependant ça marche, le \"_\" est juste une convention qui dit qu'on déconseille d'accéder à cet élément en dehors de ma classe mais on peut néanmoins le faire sans obtenir d'erreur.\n", + "\n", + "Par contre, comme dit précédement, on peut accéder aux attributs protégé depuis une classe fille." + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [], + "source": [ + "class Compte(Profil):\n", + " def __init__(self, name):\n", + " super().__init__(name)\n", + "\n", + " def getPassword(self):\n", + " return self._password" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pass'" + ] + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mon_compte = Compte(\"C.Ben\")\n", + "mon_compte.getPassword()" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'C.Ben', '_password': 'pass'}" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# remarque\n", + "# On retrouve dans le dictionnaire d'attribut _password, c'est pour cela qu'on peut y accéder de l'extérieur\n", + "mon_compte.__dict__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'idée des attributs protégés c'est qu'on veut forcer l'utilisateur à y accéder via les methodes set, del et get définies dans la classe et qui vont poser des restrictions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## IV.2 Les attributs privés" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les attributs privés ne peuvent être appelés qu'au sein de la classe. Ils sont caractérisés par des doubles underscore (dunders) \"__\"" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [], + "source": [ + "class Profil2:\n", + " \n", + " __private_classe_attribut = 8\n", + " \n", + " def __init__(self,name):\n", + " self.name = name\n", + " # les attributs protégés sont caractérisés par un \"_\" avant leurs noms\n", + " self.__password = \"pass\"\n", + "\n", + " # généralement on y accède au moyen de méthodes spécifique:\n", + " def setPassword(self,password):\n", + " self.__password = password\n", + "\n", + " def getPassword(self):\n", + " return self.__password" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pass\n" + ] + }, + { + "data": { + "text/plain": [ + "'1234'" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pas de soucis, on peut toujours y accéder au sein de la classe\n", + "my_profil2=Profil2(\"Charles\")\n", + "print(my_profil2.getPassword())\n", + "my_profil2.setPassword(\"1234\")\n", + "my_profil2.getPassword()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Profil2' object has no attribute '__password'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_1880/3176204372.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Mais ça ne marche plus\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mmy_profil2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__password\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;31m#my_profil2.__private_classe_attribut\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'Profil2' object has no attribute '__password'" + ] + } + ], + "source": [ + "# Mais ça ne marche plus\n", + "my_profil2.__password\n", + "#my_profil2.__private_classe_attribut" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'Charles', '_Profil2__password': 2}" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# remarque\n", + "# On ne trouve pas dans le dictionnaire d'attribut __password, alors meme qu'on le manipule dans la fonction getPassword\n", + "my_profil2.__dict__\n", + "\n", + "# On trouve _Profil2__password mais les gens respectables ne manipulent pas ce genre de chose.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "mappingproxy({'__module__': '__main__',\n", + " '_Profil2__private_classe_attribut': 8,\n", + " '__init__': ,\n", + " 'setPassword': ,\n", + " 'getPassword': ,\n", + " '__dict__': ,\n", + " '__weakref__': ,\n", + " '__doc__': None})" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# remarque\n", + "# Il en est de même pour l'attribut de classe __private_classe_attribut\n", + "my_profil2.__class__.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [], + "source": [ + "class Compte2(Profil2):\n", + " def __init__(self, name):\n", + " super().__init__(name)\n", + "\n", + " def getPassword(self):\n", + " return self.__password\n", + " \n", + " def getPrivate_herited(self):\n", + " return self.__private_classe_attribut" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [], + "source": [ + "mon_compte2 = Compte2(\"C.Ben\")" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Compte2' object has no attribute '_Compte2__password'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_1880/4036005713.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# mais ceci n'est plus possible\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mmon_compte2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPassword\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;31m#mon_compte2.getPrivate_herited()\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_1880/3881013715.py\u001b[0m in \u001b[0;36mgetPassword\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetPassword\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__password\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetPrivate_herited\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'Compte2' object has no attribute '_Compte2__password'" + ] + } + ], + "source": [ + "# mais ceci n'est plus possible\n", + "mon_compte2.getPassword()\n", + "#mon_compte2.getPrivate_herited()" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'C.Ben', '_Profil2__password': 'pass'}" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# On remarque que dans le dict, l'attribut s'appelle _Profil2__password et non pas Compte2__password\n", + "mon_compte2.__dict__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## IV.3 Les méthodes privées" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice user_creation`**\n", + "\n", + "- créer une classe user avec un attribut publique \"profil\", des attribut protégés \"password\" et \"user_name\" et un attribut privée \"validation_code\"\n", + "- créer des méthodes publiques \"set_password\", \"get_password\" et \"get_user_name\"\n", + "- créer une méthode publique \"set_username\" qui prend comme argument un code et un nouveau user name. Cette méthode fait appelle à une autre méthode, privée cette fois qui compare le code avec le code de validation. Si le code correspond au validation_code alors le changement est réalisé.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# V Usages avancés" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## V.1 Le décorateur: @Property" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les attributs protégés c'est bien mais c'est peu maintenable." + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [], + "source": [ + "# Supposons le code suivant:\n", + "class Celsius:\n", + " def __init__(self, temperature:int = 0):\n", + " self.temperature = temperature\n", + "\n", + " def to_fahrenheit(self):\n", + " return (self.temperature * 1.8) + 32" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans une mise à jour de notre code, on veut empecher la création de températures inférieures à -273.15 degré. Ces restrictions il va falloir les inscrires dans une méthode setter et faire en sorte que la seule manière de définir la température, ce soit par ce moyen setter. On transforme donc temperature en attribut protégé" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# Making Getters and Setter methods\n", + "class Celsius:\n", + " def __init__(self, temperature=0):\n", + " self.set_temperature(temperature)\n", + "\n", + " def to_fahrenheit(self):\n", + " return (self.get_temperature() * 1.8) + 32\n", + "\n", + " # getter method\n", + " def get_temperature(self):\n", + " return self._temperature\n", + "\n", + " # setter method\n", + " def set_temperature(self, value):\n", + " if value < -273.15:\n", + " raise ValueError(\"Temperature below -273.15 is not possible.\")\n", + " self._temperature = value" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "temperature = Celsius(7.2)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on method set_temperature in module __main__:\n", + "\n", + "set_temperature(value) method of __main__.Celsius instance\n", + " # setter method\n", + "\n" + ] + } + ], + "source": [ + "help(temperature.set_temperature)" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_temperature',\n", + " 'get_temperature',\n", + " 'set_temperature',\n", + " 'to_fahrenheit']" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(temperature)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le problème c'est qu'il va falloir modifier l'ensemble de notre programme.\n", + "\n", + "A chaque fois qu'on avait **`obj.temperature`** il faut mettre **`obj.get_temperature()`** et à chaque fois qu'on a **`obj.temperature = val`** il faut mettre **`set_temperature(val)`**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour ne pas rencontrer ce problème, on peut utiliser les décorateurs @property, @setter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "# Using @property decorator\n", + "class Celsius:\n", + " def __init__(self, temperature=0):\n", + " self.temperature = temperature\n", + "\n", + " def to_fahrenheit(self):\n", + " return (self.temperature * 1.8) + 32\n", + "\n", + " @property\n", + " def temperature(self):\n", + " print(\"Getting value...\") # a ne pas écrire dans un vrai code\n", + " return self._temperature\n", + "\n", + " @temperature.setter\n", + " def temperature(self, value):\n", + " print(\"Setting value...\") # a ne pas écrire dans un vrai code\n", + " if value < -273.15:\n", + " raise ValueError(\"Temperature below -273 is not possible\")\n", + " self._temperature = value\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "can't set attribute", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_2921/2193769133.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mhuman\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCelsius\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m37\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_2921/1803078970.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, temperature)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mCelsius\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtemperature\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtemperature\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtemperature\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mto_fahrenheit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: can't set attribute" + ] + } + ], + "source": [ + "human = Celsius(37)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'_temperature': 47}" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "human.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dir(human)" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting value...\n", + "37\n" + ] + } + ], + "source": [ + "print(human.temperature)" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting value...\n" + ] + }, + { + "ename": "ValueError", + "evalue": "Temperature below -273 is not possible", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_11213/1994104652.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mhuman\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtemperature\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m280\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_11213/3974558698.py\u001b[0m in \u001b[0;36mtemperature\u001b[0;34m(self, value)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Setting value...\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# a ne pas écrire dans un vrai code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m273.15\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Temperature below -273 is not possible\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_temperature\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Temperature below -273 is not possible" + ] + } + ], + "source": [ + "human.temperature = -280" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting value...\n", + "Getting value...\n", + "37\n", + "Getting value...\n", + "98.60000000000001\n", + "Setting value...\n" + ] + } + ], + "source": [ + "# Quand on instancie un objet, le paramètre se définit directement via le setter.\n", + "human = Celsius(37)\n", + "\n", + "# Quand on le print, c'est via le geet\n", + "print(human.temperature)\n", + "\n", + "\n", + "# les autre méthodes y accèdent également via le getter\n", + "print(human.to_fahrenheit())\n", + "\n", + "# on le modifie églament via le setter\n", + "human.temperature = 39" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il est possible également de défnir des attributs privés" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "# Using @property decorator\n", + "class Password:\n", + " def __init__(self, password=0):\n", + " self.__password = password\n", + "\n", + " @property\n", + " def password(self):\n", + " return self.__password # dunders!\n", + "\n", + " # @password.setter\n", + " # def password(self, value):\n", + " # self.__password = value ## dunders too" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "my_password = Password(\"secret\")" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "can't set attribute", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/py/4rt338cj1ks4z3332m7l3f880000gp/T/ipykernel_2921/3247830432.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmy_password\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpassword\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m9\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m: can't set attribute" + ] + } + ], + "source": [ + "my_password.password = 9" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice user_creation_bis`**\n", + "\n", + "Refaite l'exercice user_creation à l'aide cette fois du décorateur @property" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## V.2 Les classes abstraites" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il peut être utile de créer une classe parente dont on veut faire hériter les méthodes mais qui ne peut pas être instanciée\n", + "\n", + "Dans ce cas on utilisera une [classe abstaite](https://towardsdatascience.com/abstract-base-classes-in-python-fundamentals-for-data-scientists-3c164803224b). C'est une classe qui est définie, dont on peut hériter mais qu'on ne peut pas instancier." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# On crée ici un classe MaterielScolaire qui ne correspond à rien de précis mais dont on peut hériter:\n", + "\n", + "from abc import ABCMeta, abstractmethod # permet de définir des classes de base\n", + "\n", + "class MaterielScolaire(metaclass = ABCMeta):\n", + " \n", + " user = \"student\"\n", + "\n", + " def get_date_achat(self):\n", + " print(\"a la rentrée\")\n", + "\n", + " # abstactmethod permet de définir des méthodes que les classes filles seront obligées de posseder. \n", + " @abstractmethod\n", + " def tient_dans_une_trousse(self,untruc):\n", + " return \"nimporte quoi\"\n", + "\n", + " @abstractmethod\n", + " def nom_methode(self):\n", + " pass\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ma_regle.tient_dans_une_trousse()='nimporte quoi'\n" + ] + } + ], + "source": [ + "# Je ne peux définir une classe enfant qui ne contient pas de définition des méthodes suivants abstactmethod\n", + "class Regle(MaterielScolaire):\n", + " \n", + " def __init__(self, longueur):\n", + " self.longueur = longueur\n", + " #self.marque = marque\n", + " def tient_dans_une_trousse(self):\n", + " return super().tient_dans_une_trousse(\"mon argument\")\n", + " \n", + "\n", + "# Pour le reste, le principe d'héritage fonctionne\n", + "ma_regle = Regle(20)\n", + "print(f\"{ma_regle.tient_dans_une_trousse()=}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**`Exercice le zoo`**\n", + "\n", + "Vous gérez un zoo qui abrite des poissons, des oiseaux et des félins.\n", + "- Tous les animaux possèdent un nom\n", + "- tous les animaux doivent pouvoir manger selon leur régime alimentaire\n", + "\n", + "- Pour que les félins mangent il faut vérifier que ce qu'on leur donne soit bien de la viande\n", + "- Pour que les poissons mangent il faut vérifier que ce qu'on leur donne soit bien de la nourriture pour poisson\n", + "- Pour que les oiseaux mangent il faut vérifier que ce qu'on leur donne soit bien des graines\n", + "\n", + "- Tous les poissons doivent pouvoir nager\n", + "- Tous les oiseaux doivent piailler\n", + "\n", + "- Les lions doivent rugir et les chats miauler, les panthères ne font rien\n", + "- les canaris piaillent en disant \"cuicui\" les autruches piaillent en disant \"CUICUI\"\n", + "\n", + "Créer votre zoo avec 2 lion , 3 chat, 1 canari, 2 autruches, 3 raies et 1 dauphin." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## V.3 Typing classes in python." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### V.4.1 Typing in python: typing hint" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Depuis python 3.5 il est possible d'inclure des annotations de type comme celle-ci:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n" + ] + } + ], + "source": [ + "\n", + "# On précise ici que les deux arguments attendus sont de types int \n", + "# et que la fonction est sensé renvoyer quelque chose de type int\n", + "# la valeur par défaut se met après\n", + "def f(x: int , y: int = 0) -> int :\n", + " return x + y\n", + "\n", + "print(f(3, 4))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8.0\n", + "ab\n" + ] + } + ], + "source": [ + "print(f(3.2, 4.8))\n", + "print(f(\"a\", \"b\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cependant, Python est un langage dynamique, c'est à dire qu'on peut changer le type assigné à une variable. Ce typage n'est donc qu'indicatif et n'est pas contraignant.\n", + "\n", + "On considère que le typage n'est pas une compétence de python mais un compétence du développeur ou de l'IDE. On peut donc modifier l'ide pour qu'il mette en évidence nos erreurs de type:\n", + "Dans VS Code: setting -> pylance -> python analysis Type Checking mode (activer)\n", + "\n", + "On peut également utiliser le package mypy qui permet de lancer le code entre utilisant ce typage comme stricte." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function f in module __main__:\n", + "\n", + "f(x: int, y: int = 0) -> int\n", + " # On précise ici que les deux arguments attendus sont de types int \n", + " # et que la fonction est censé renvoyer quelque chose de type int\n", + " # la valeur par défaut se met après\n", + "\n" + ] + } + ], + "source": [ + "#Le typage s'affiche quand j'utilise help\n", + "help(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### V.4.2 Typing classes in python." + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " un cake à ['chocolat', 'banace'] de 10.8 part\n", + "[<__main__.TypeCake object at 0x10d847730>]\n" + ] + } + ], + "source": [ + "from typing import List, Optional\n", + "\n", + "class TypeCake:\n", + " def __init__(self, flavor: List[str], number_share: int):\n", + " self.flavor: List[str] = flavor\n", + " self.number_share: int = number_share\n", + " self.new_number_share : float = self.number_of_shareplusdeuxpointcinq()\n", + " \n", + " def __str__(self):\n", + " return f\" un cake à {self.flavor} de {self.number_share} part\"\n", + " \n", + " def number_of_shareplusdeuxpointcinq (self):\n", + " \n", + " return self.number_share + 2.5\n", + "\n", + "\n", + "my_weird_cake = TypeCake(flavor=[\"chocolat\",\"banace\"], number_share=10.8)\n", + "my_weird_cake.number_share\n", + "\n", + "\n", + "print(my_weird_cake)\n", + "my_list= [my_weird_cake]\n", + "print(my_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'flavor': 5, 'number_share': '10'}" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_weird_cake.__dict__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## V.4 Les méthodes \\_\\_str\\_\\_ et \\_\\_repr\\_\\_" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [], + "source": [ + "class Stylo (object):\n", + " def __init__(self, couleur, taille):\n", + " self.couleur = couleur\n", + " self.taille = taille\n", + "\n", + " def __repr__(self):\n", + " return f\"Stylo : {self.__dict__}\" \n" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{ couleur :rouge , taille: 10 }]\n" + ] + } + ], + "source": [ + "ma_liste = []\n", + "ma_liste.append(mon_stylo)\n", + "print(ma_liste)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Python \\_\\_str\\_\\_()\n", + "\n", + "Cette méthode retourne la chaine de charactère qui représente l'objet. Cette méthode est appelée quand on fait print() ou str().\n", + "\n", + "Si on n'implémente pas \\_\\_str\\_\\_() pour une classe, alors la représentation c'est \\_\\_repr\\_\\_() qui est appelée." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Python \\_\\_repr\\_\\_()\n", + "Cette fonction est appelée quand on fait repr(). L'idée est de transformer n'importe quel objet python en une chaine de charactère qui permettrait de reconstruire cet objet. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2021-11-29 11:31:12.443989\n", + "datetime.datetime(2021, 11, 29, 11, 31, 12, 443989)\n" + ] + } + ], + "source": [ + "#Python __str__ and __repr__ examples\n", + "#Let’s look at a built-in class where both __str__ and __repr__ functions are defined.\n", + "\n", + "import datetime\n", + "now = datetime.datetime.now()\n", + "print(str(now))\n", + "#'2020-12-27 22:28:00.324317'\n", + "print(repr(now))\n", + "#'datetime.datetime(2020, 12, 27, 22, 28, 0, 324317)'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On voit que le résultat de \\_\\_str\\_\\_() est plus facilement lisible que celui de \\_\\_repr\\_\\_() qui possède plus d'information et est donc plus utile pour une machine." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Cake:\n", + " def __init__(self, flavor:str, number_share: int):\n", + " self.flavor: str = flavor\n", + " self.number_share: int = number_share\n", + " \n", + " def __str__(self):\n", + " return f\" un cake à {self.flavor} de {self.number_share} part\"\n", + "\n", + "\n", + "my_weird_cake = Cake(flavor=\"banana\", number_share=10)\n", + "my_weird_cake.number_share\n", + "\n", + "\n", + "print(my_weird_cake)\n", + "my_list= [my_weird_cake]\n", + "print(my_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En conclusion si la méthode str n'est pas défnie, c'est la méthode repr qui est appelée. Donc si on ne veut pas distinguer l'affichage pour l'homme et l'affichage pour la machine, il suffit de définir seulement la méthode repr." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## V.5 \\_\\_eq\\_\\_ method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\_\\_eq\\_\\_ permet de définir sous quels critère un objet de votre class est équivalent à un autre." + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<__main__.card object at 0x10c421550>\n", + "<__main__.card object at 0x10d8526d0>\n", + "True\n" + ] + } + ], + "source": [ + "# De base, deux objets instanciés de la même manière ne sont pas équivalent\n", + "class card:\n", + " def __init__ (self,rank, suit):\n", + " self.rank = rank\n", + " self.suit = suit\n", + " \n", + "\n", + "\n", + "queenofheart_a = card(\"Q\",\"heart\")\n", + "queenofheart_b = card(\"Q\",\"heart\")\n", + "\n", + "print(queenofheart_a)\n", + "print(queenofheart_b)\n", + "print(queenofheart_a != queenofheart_b )" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n" + ] + } + ], + "source": [ + "class cardeq:\n", + " def __init__ (self,rank, suit):\n", + " self.rank = rank\n", + " self.suit = suit\n", + " self.card_value = self.__card_value()\n", + " \n", + " def __eq__(self, other):\n", + " if type(other) is type(self):\n", + " return (self.rank == other.rank) and (self.suit == other.suit)\n", + " else:\n", + " return False \n", + "\n", + " def __card_value(self):\n", + " order = {\"J\":11, \"Q\" : 12 , \"K\" : 13, \"A\": 14}\n", + " if isinstance(self.rank, str):\n", + " return order[self.rank]\n", + " else:\n", + " return self.rank\n", + "\n", + " def __lt__(self,other): \n", + " if type(other) is type(self):\n", + " return self.card_value < other.card_value\n", + " raise TypeError(\"les deux objets ne sont pas du même type\")\n", + "\n", + "\n", + "queenofheart_a = cardeq(\"Q\",\"heart\")\n", + "queenofheart_b = cardeq(\"Q\",\"heart\")\n", + "dix_de_coeur = cardeq(10,\"heart\")\n", + "kingofgeart = cardeq(\"K\",\"heart\")\n", + "\n", + "print(queenofheart_a == queenofheart_b )\n", + "print(dix_de_coeur > kingofgeart )\n" + ] + }, + { + "cell_type": "code", + "execution_count": 286, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "# écriture alternative\n", + "class cardeq:\n", + " def __init__ (self,rank, suit):\n", + " self.rank = rank\n", + " self.suit = suit\n", + " \n", + " def __members(self):\n", + " return (self.rank, self.suit)\n", + "\n", + " def __eq__(self, other):\n", + " if type(other) is type(self):\n", + " return self.__members() == other.members()\n", + " else:\n", + " return False \n", + "\n", + "\n", + "queenofheart_a = cardeq(\"Q\",\"heart\")\n", + "queenofheart_b = cardeq(\"Q\",\"heart\")\n", + "\n", + "print(queenofheart_a == queenofheart_b )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## V.6 Python datamodel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dir(object)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plus sur les méthodes spéciales: [documentation](https://docs.python.org/3/reference/datamodel.html#special-method-names)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# VI Les dataclasses " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Reprennons notre exemple de gateau, l'initialisation est longue et ne permet même pas de typer.\n", + "Est ce qu'il n'y aurait pas moyen de faire plus simple?" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "class card:\n", + " def __init__ (self,rank, suit):\n", + " self.rank = rank\n", + " self.suit = suit\n", + "\n", + " \n", + " def __eq__(self, other):\n", + " if type(other) is type(self):\n", + " return (self.rank == other.rank) and (self.suit == other.suit)\n", + " else:\n", + " return False \n", + " \n", + " def __repr__(self):\n", + " return f\"un truc beau\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "un truc beau\n" + ] + } + ], + "source": [ + "queenofheart_b = card(\"Q\",\"heart\")\n", + "print(queenofheart_b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C'est possible avec le module dataclasses" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from dataclasses import dataclass, field\n", + "from typing import ClassVar\n", + "\n", + "@dataclass\n", + "class Cake:\n", + " \n", + " # on initialise les attributs d'instance\n", + " flavor: str #equivalent à dans init self.flavor: str = flavor\n", + " number_share: int \n", + " init_value: int = field(default=0)\n", + " ma_liste = field(default_factory=[])\n", + " cream: bool = False # on peut préciser une valeur par défaut\n", + " version_recette: ClassVar[float] = 3.2 # on peut aussi créer des attributs de classe\n", + "\n", + " \n", + " def __post_init__(self):\n", + " self.number_share_plus_one = self.__number_share_plus_one()\n", + "\n", + " def __number_share_plus_one(self):\n", + " return self.number_share + 1\n", + " \n", + "# mieux encore, une repr est automatiquement généré:\n", + "\n", + "banana_cake = Cake(flavor=\"banana\",number_share=10)\n", + "banana_cake.flavor\n", + "banana_cake.number_share_plus_one" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'flavor': 'banana',\n", + " 'number_share': 10,\n", + " 'init_value': 0,\n", + " 'cream': False,\n", + " 'number_share_plus_one': 11}" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "banana_cake.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cake(flavor='banana', number_share=10, cream=False)\n" + ] + } + ], + "source": [ + "print(banana_cake)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les dataclasses implémentent également une méthode \\_\\_eq\\_\\_" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "banana_cake_bis = Cake(\"banana\",10)\n", + "banana_cake == banana_cake_bis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour aller plus loin vous pouvez découvrir le package [pydantic](https://www.youtube.com/watch?v=Vj-iU-8_xLs) qui a des fonctionnalités supplémentaires par rapport aux dataclasses comme la présence de validator." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "More about [dataclasses](https://www.youtube.com/watch?v=vBH6GRJ1REM&t=455s)\n", + "\n", + "[documentation](https://docs.python.org/3/library/dataclasses.html#module-dataclasses)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# VII Tester ses classes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "voir les fichiers:\n", + "- class_to_test.py\n", + "- test_class_to_test.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ressources" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le cours s'inspire des cours suivant:\n", + "- [openclassroom](https://openclassrooms.com/fr/courses/7150616-apprenez-la-programmation-orientee-objet-avec-python/7197146-comprenez-la-programmation-orientee-objet)\n", + "- [programiz (property)](https://www.programiz.com/python-programming/property)\n", + "- [journal dev (str, repr)](https://www.journaldev.com/22460/python-str-repr-functions)\n", + "- [Docstring (youtube)](https://www.youtube.com/watch?v=6Ltk49YhrWY)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.12 ('env': venv)", + "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.9.12" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "0607a848ffd73ecc9cc21824b435c3b7f19a6ddc6b88730c443268397d59d817" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/oop/Correction_exercice_concessionnaire.ipynb b/oop/Correction_exercice_concessionnaire.ipynb new file mode 100644 index 0000000..916e1ea --- /dev/null +++ b/oop/Correction_exercice_concessionnaire.ipynb @@ -0,0 +1,207 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "class Voiture:\n", + " def __init__(self, marque, couleur, prix):\n", + " self.marque = marque\n", + " self.couleur = couleur\n", + " self.prix = prix\n", + "\n", + " def __str__(self):\n", + " return f'{self.marque} {self.couleur} à {self.prix}'\n", + "\n", + " def __repr__(self):\n", + " return f'{self.marque} {self.couleur} à {self.prix}'\n", + "\n", + " def drive(self):\n", + " print(f\"je conduis ma super {self.marque}€\")" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "class Magasin:\n", + " def __init__(self, nom):\n", + " self.nom = nom\n", + " self.inventaire = {}\n", + " self.stock = []\n", + "\n", + " def ajout_voiture(self,voiture):\n", + " self.stock.append(str(voiture))\n", + " if voiture.marque not in self.inventaire:\n", + " self.inventaire[voiture.marque] = 0\n", + " self.inventaire[voiture.marque] += 1\n", + " print(f\"la {voiture.marque} a été ajoutée à l'inventaire\")\n", + "\n", + " def delete_voiture(self,voiture):\n", + " self.stock.remove(str(voiture))\n", + " self.inventaire[voiture.marque] -= 1\n", + " print(f\"la {voiture.marque} a été retirée de l'inventaire\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "la Toyota a été ajoutée à l'inventaire\n", + "la Toyota a été ajoutée à l'inventaire\n", + "la Toyota a été ajoutée à l'inventaire\n", + "la Toyota a été ajoutée à l'inventaire\n", + "la BMW a été ajoutée à l'inventaire\n", + "la BMW a été ajoutée à l'inventaire\n", + "la Honda a été ajoutée à l'inventaire\n", + "la Honda a été ajoutée à l'inventaire\n", + "{'Toyota': 4, 'BMW': 2, 'Honda': 2}\n", + "['Toyota rouge à 20000', 'Toyota bleue à 20000', 'Toyota noire à 20000', 'Toyota grise à 20000', 'BMW rouge à 20000', 'BMW kaki à 20000', 'Honda verte à 20000', 'Honda noire à 20000']\n" + ] + } + ], + "source": [ + "mon_magasin = Magasin(\"Simplon shop\")\n", + "\n", + "mon_magasin.ajout_voiture(Voiture(\"Toyota\",\"rouge\", 20000))\n", + "mon_magasin.ajout_voiture(Voiture(\"Toyota\",\"bleue\", 20000))\n", + "mon_magasin.ajout_voiture(Voiture(\"Toyota\",\"noire\", 20000))\n", + "mon_magasin.ajout_voiture(Voiture(\"Toyota\",\"grise\", 20000))\n", + "mon_magasin.ajout_voiture(Voiture(\"BMW\",\"rouge\", 20000))\n", + "mon_magasin.ajout_voiture(Voiture(\"BMW\",\"kaki\", 20000))\n", + "mon_magasin.ajout_voiture(Voiture(\"Honda\",\"verte\", 20000))\n", + "mon_magasin.ajout_voiture(Voiture(\"Honda\",\"noire\", 20000))\n", + "\n", + "print(mon_magasin.inventaire)\n", + "print(mon_magasin.stock)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "class Client:\n", + " def __init__(self, name, id, email):\n", + " self.name = name\n", + " self.id = id\n", + " self.email = email\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "class Vente:\n", + " def __init__(self,magasin,voiture,client,vendeur):\n", + " self.magasin = magasin\n", + " self.voiture =voiture\n", + " self.client = client\n", + " self.vendeur = vendeur\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "class Vendeur:\n", + " def __init__(self,name):\n", + " self.name = name\n", + " self.nb_vente = 0\n", + "\n", + " @staticmethod\n", + " def checkstock(magasin,voiture):\n", + " return str(voiture) in magasin.stock\n", + "\n", + " def creer_vente(self,magasin,voiture,client):\n", + " if self.checkstock(magasin,voiture):\n", + " self.nb_vente +=1\n", + " magasin.delete_voiture(voiture)\n", + " return Vente(magasin,voiture,client,self)\n", + " else:\n", + " print(\"la voiture n'est pas dans le stock, la vente ne peut être effectuée\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "la Honda a été retirée de l'inventaire\n" + ] + } + ], + "source": [ + "denis = Vendeur(\"Denis\")\n", + "\n", + "ma_vente = denis.creer_vente(mon_magasin,Voiture(\"Honda\",\"noire\",20000),Client(\"robert\",324342,\"rb@gmail.com\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Toyota': 4, 'BMW': 2, 'Honda': 1}" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mon_magasin.inventaire" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + }, + "kernelspec": { + "display_name": "Python 3.8.6 64-bit", + "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.8.6" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/oop/Correction_forum.ipynb b/oop/Correction_forum.ipynb new file mode 100644 index 0000000..af0cc40 --- /dev/null +++ b/oop/Correction_forum.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "class Post:\n", + " def __init__(self,texte,user, date,fil):\n", + " self.texte = texte\n", + " self.user = user\n", + " self.date = date\n", + " self.fil = fil\n", + " \n", + " def __repr__(self):\n", + " return f\"user:{self.user} date:{self.date} \\n fil de discussion: {self.fil} content : \\n {self.texte}\"\n", + "\n", + "class GifPost(Post):\n", + " def __init__(self,texte,user,date,fil,file_type,file_path):\n", + " super().__init__(texte,user, date,fil,file_type)\n", + " self.gif_path=file_path\n", + "\n", + "class JpegPost(Post):\n", + " def __init__(self,texte,user,date,fil,file_type,file_path):\n", + " super().__init__(texte,user, date,fil,file_type)\n", + " self.jpeg_path=file_path\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "class Fil():\n", + " def __init__(self, titre, date, texte_first_content,user,file_type=None,file_path=None):\n", + " self.titre = titre\n", + " self.date = date\n", + " self.collection_post =[]\n", + " self.add_post(texte_first_content,user,date,file_type,file_path)\n", + "\n", + " def add_post(self,texte,user,date,file_type=None,file_path=None):\n", + " if file_type == \"Gif\":\n", + " self.collection_post.append(GifPost(texte,user,date,self,file_type,file_path))\n", + " elif file_type == \"Jpeg\":\n", + " self.collection_post.append(JpegPost(texte,user,date,self,file_type,file_path))\n", + " else:\n", + " self.collection_post.append(Post(texte,user,date,self))\n", + " \n", + " def del_post(self,index_post):\n", + " del self.collection_post[index_post]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "class User:\n", + " def __init__(self,identifiant, password, email):\n", + " self.identifiant = identifiant\n", + " self.password = password\n", + " self.email = email\n", + " \n", + " def new_fil(self,titre, date, texte_first_content,file_type=None,file_path=None):\n", + " return Fil(titre, date, texte_first_content,self,file_type=None,file_path=None)\n", + "\n", + " def new_post(self,texte, date, fil, file_type=None,file_path=None):\n", + " fil.add_post(texte,date,self,file_type=None,file_path=None)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "class Moderateur(User):\n", + " def modify_post(self,fil,index_post,new_content):\n", + " fil.collection_post[index_post].texte = new_content\n", + " \n", + " def delete_post(self,fil,index_post):\n", + " fil.del_post(index_post)\n", + "\n", + " def delete_fil(self,fil):\n", + " del fil" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "denis = User(\"denis\",\"1234\",\"dd@gmail.com\")" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "first_fil = denis.new_fil(\"mes passions\",\"01012020\",\"J'aimerais mieux connaitre mes passions, avez vous des idées?\")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[user:<__main__.User object at 0x113af2a30> date:01012020 \n", + " fil de discussion: <__main__.Fil object at 0x112786eb0> content : \n", + " J'aimerais mieux connaitre mes passions, avez vous des idées?]" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "first_fil.collection_post" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "jeanne = User(\"Jeanne\",\"1234\",\"jeanne@gmail.com\")" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + "jeanne.new_post(\"cherche au plus profond de toi\",\"lendemain\",first_fil,\"Gif\",\"the path\") " + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[user:<__main__.User object at 0x113af2a30> date:01012020 \n", + " fil de discussion: <__main__.Fil object at 0x112786eb0> content : \n", + " J'aimerais mieux connaitre mes passions, avez vous des idées?]" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "first_fil.collection_post" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "anais = Moderateur(\"Anais\",\"12345\",\"ana@gmail.com\")" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "anais.delete_post(first_fil,1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + }, + "kernelspec": { + "display_name": "Python 3.8.6 64-bit", + "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.8.6" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/oop/class_to_test.py b/oop/class_to_test.py new file mode 100644 index 0000000..bfbdd3e --- /dev/null +++ b/oop/class_to_test.py @@ -0,0 +1,51 @@ +from abc import ABC, abstractmethod + +class Vehicule(ABC): + def drive(self) -> str: + return "the vehicule is on its wheels!" + + @property + @abstractmethod + def prix(self): + pass + +class Voiture(Vehicule): + def __init__(self, marque, couleur, prix, reduction_applicable): + self.marque = marque + self.couleur = couleur + self.prix = prix + self.reduction_applicable = reduction_applicable + + def __str__(self): + return f'{self.marque} {self.couleur} à {self.prix}' + + def __repr__(self): + return f'{self.marque} {self.couleur} à {self.prix}' + + @property + def prix(self): + return self._prix + + @prix.setter + def prix(self, value): + if not isinstance(value,int): + raise ValueError("prix should be int") + self._prix = value + + def prix_apres_reduction(self): + return self.prix * (1-self.reduction_applicable) + + def prix_apres_double_reduction(self): + return self.prix * (1 - 2*self.reduction_applicable) + + def prix_apres_triple_reduction(self): + return self.prix * (1 - 3*self.reduction_applicable) + + def fonction_sans_fin(self): + while True: + print("sans fin!") + + def I_want_to_quit(self): + self.fonction_sans_fin() + return "I quit" + diff --git a/oop/correction.txt b/oop/correction.txt new file mode 100644 index 0000000..70498bc --- /dev/null +++ b/oop/correction.txt @@ -0,0 +1,136 @@ +classe héritage: https://github.com/OpenClassrooms-Student-Center/7150626-Apprenez-la-programmation-orientee-objet-avec-Python/blob/main/exercices/p2c2_forum.py + + + +user_creation (encapsulation) + +class User: + def __init__(self,profil): + self.profil = profil + self._password = "" + self._user_name = "" + self.__validation_code = "AB2X" + + def set_password(self,new_password): + self._password = new_password + + def get_password(self): + return self._password + + def get_user_name(self): + return self._user_name + + def __check_validation_code(self,code): + return code == self.__validation_code + + def set_user_name(self,code,user_name): + if self.__check_validation_code(code): + self._user_name = user_name + else: + print("error code") + +user_creation_bis + +class User: + def __init__(self,profil, password="", code_value = ("AB2X","")): + self.profil = profil + self.password = password + self.__validation_code = "AB2X" + self.user_name = code_value + + @property + def password(self): + return self._password + + @password.setter + def password(self,new_password): + self._password = new_password + + + @property + def user_name(self): + return self._user_name + + @user_name.setter + def user_name(self,code_value): + code,value = code_value + print(code) + print(self.__validation_code) + if self.__check_validation_code(code): + self._user_name = value + else: + print("error code") + + def __check_validation_code(self,code): + return code == self.__validation_code + + + +Zoo + +from abc import ABCMeta, abstractmethod + +class Animal (metaclass = ABCMeta ): + def __init__(self, name): + self.name = name + + @abstractmethod + def manger(self): + pass + +class Felin(Animal, metaclass = ABCMeta): + def manger (self,value): + if value == "viande": + print("le félin est nourri") + else: + print("cela ne correspond pas à un félin") + +class Poisson(Animal, metaclass = ABCMeta): + def manger (self,value): + if value == "nourriture pour poisson": + print("le poisson est nourri") + else: + print("cela ne correspond pas à un poisson") + + @abstractmethod + def nager(): + pass + +class Oiseau(Animal, metaclass = ABCMeta): + def manger (self,value): + if value == "graine": + print("l'oiseau est nourri") + else: + print("cela ne correspond pas à un oiseau") + + @abstractmethod + def piailler(): + pass + + +class Lion(Felin): + def rugier(self): + print("RRRRRrrrr") + +class Chat(Felin): + def miauler(self): + print("Miaou") + +class Panthère(Felin): + pass + +class Canari(Oiseau): + def piaillier(self): + print("cuicui") + +class Autruche(Oiseau): + def piaillier(self): + print("CUICUI") + +class Raie(Poisson): + def nager(self): + pass + +class Dauphin(Poisson): + def nager(self): + pass diff --git a/oop/correction_conce_bis.py b/oop/correction_conce_bis.py new file mode 100644 index 0000000..851ad2a --- /dev/null +++ b/oop/correction_conce_bis.py @@ -0,0 +1,108 @@ + +from dataclasses import dataclass, field +from abc import ABC, abstractmethod + +@dataclass +class Vehicule(ABC): + + couleur: str + _marque: str + modele: str + prix_ht: float + reduction_applicable: float + + @property + @abstractmethod + def marque(self): + return self._marque + + def __post_init__(self): + self.prix_ttc: float = self.prix_ht * 1.20 + + +@dataclass +class Voiture(Vehicule): + + boitier: str + + @property + def marque(self): + return self._marque + +@dataclass +class Moto(Vehicule): + + visiere: str + + @property + def marque(self): + return self._marque + +@dataclass +class Camion(Vehicule): + + remorque: str + + @property + def marque(self): + return self._marque + +@dataclass +class Vente: + + vendeurs: list["Vendeur"] + vehicule: Vehicule + reduction: bool = False + + def __post_init__(self): + self.prix_de_vente: float = self.vehicule.prix_ttc + + def imprimer_en_pdf(self): + print(f"Impression en PDF terminée: {self}") + + def appliquer_reduction(self, Vendeur): + if not Vendeur.senior: + raise ValueError("Ce vendeur n'est pas habilité à appliquer une réduction") + self.reduction = True + self.prix_de_vente = self.prix_de_vente*(1-self.vehicule.reduction_applicable) + if not Vendeur in self.vendeurs: + self.vendeurs.append(Vendeur) + +@dataclass +class Vendeur: + + nom: str + senior: bool + nombre_ventes: int = 0 + + def creer_vente(self, voiture): + self.nombre_ventes += 1 + return Vente([self], voiture) + +@dataclass +class Concessionnaire: + + adresse: str + siret: int + vendeurs: list[Vendeur] + inventaire: list[Vehicule] = field(default_factory=list) + + def afficher_voiture_par_marque(self, marque): + return len([vehicule for vehicule in self.inventaire if vehicule.marque == marque]) + + def add_inventaire(self, vehicule: Vehicule): + self.inventaire.append(vehicule) + + def remove_inventaire(self, vehicule: Vehicule): + self.inventaire.remove(vehicule) + + +ma_voiture = Voiture("rouge","Toyota","Iaris",20000,0.1,"automatique") +mon_vendeur = Vendeur("denis",True) +ma_vente = Vente([mon_vendeur],ma_voiture) +print(ma_vente.prix_de_vente) +ma_vente.appliquer_reduction(mon_vendeur) +print(ma_vente.prix_de_vente) +#print(ma_vente) +print(ma_vente.imprimer_en_pdf()) + diff --git a/oop/correction_concessionnaire.py b/oop/correction_concessionnaire.py new file mode 100644 index 0000000..8d8dea7 --- /dev/null +++ b/oop/correction_concessionnaire.py @@ -0,0 +1,186 @@ + +from abc import ABC, abstractmethod + + + +class Vehicule(ABC): + + def __init__(self, couleur, marque, modele, prix_HT, reduction_applicable, TVA = 0.2): + self.couleur = couleur + self.marque = marque + self.modele = modele + self.prix_HT = prix_HT + self.prix_TTC = prix_HT * (1 + TVA ) + self.reduction_applicable = reduction_applicable + + + + def __repr__(self): + return str({"marque":self.marque, "modele":self.modele}) + + +class Voiture(Vehicule): + def __init__(self, couleur: str, marque :str, modele, prix_HT, reduction_applicable, nbr_portes: int, TVA = 0.2): + self.nbr_portes = nbr_portes + super().__init__(couleur, marque, modele, prix_HT, reduction_applicable) + + def __repr__(self): + return str({"type": "Voiture", "marque":self.marque, "modele":self.modele}) + +class Moto(Vehicule): + def __init__(self, couleur, marque, modele, prix_HT, reduction_applicable, topcase: bool, TVA = 0.2): + self.topcase = topcase + super().__init__(couleur, marque, modele, prix_HT, reduction_applicable) + + def __repr__(self): + return str({"type": "Moto", "marque":self.marque, "modele":self.modele}) + +class Camion(Vehicule): + def __init__(self, couleur, marque, modele, prix_HT, reduction_applicable, tonnage: float, TVA = 0.2): + self.tonnage = tonnage + super().__init__(couleur, marque, modele, prix_HT, reduction_applicable) + + def __repr__(self): + return str({"type": "Camion", "marque":self.marque, "modele":self.modele}) + + +class Contrat: + pass + + +class Vendeur: + def __init__(self, nom, statut, contrat:Contrat): + self.nom = nom + self.statut = statut + self.contrat = contrat + self.paie = contrat.calcul_paie(8) + + +from abc import ABC, abstractmethod + +class Contrat(ABC): + + @abstractmethod + def calcul_paie(self): + pass + + +class Contrat_journalier(Contrat): + def __init__(self, taux_horraire): + self.taux_horraire = taux_horraire + + def calcul_paie (self, nbr_heure_travaillée): + return self.taux_horraire * nbr_heure_travaillée + +class Contrat_mensuel(Contrat): + def __init__(self, salaire_mensuel): + self.salaire_mensuel = salaire_mensuel + + def calcul_paie (self): + return self.salaire_mensuel + +class Contrat_freelance(Contrat): + def __init__(self, TJM): + self.TJM = TJM + + def calcul_paie (self, nbr_jour_travaillé): + return self.TJM * nbr_jour_travaillé + + + + + + + +class Vente: + def __init__(self, vehicule:Vehicule, vendeur:Vendeur, reduction_demande: bool, vendeur_senior_associe=None): + self.vehicule = vehicule + self.vendeur = vendeur + self.reduction_demande = reduction_demande + self.prix_final = self.__calcul_prix_final() + self.vendeur_senior_associe = vendeur_senior_associe + + def __calcul_prix_final(self): + if self.reduction_demande == True: + return self.vehicule.prix_TTC * (1 - self.vehicule.reduction_applicable) + else: + return self.vehicule.prix_TTC + + + +def creer_vente(vehicule, vendeur, reduction_demandee, vendeur_senior_associe: Vendeur = None): + if vendeur.statut == "senior" or reduction_demandee == False: + return Vente(vehicule, vendeur, reduction_demandee) + elif vendeur.statut == "junior" and reduction_demandee == True and vendeur_senior_associe == None: + print("Pour pouvoir accorder une reduction, il faut un vendeur senior associé") + else: + if vendeur_senior_associe.statut == "senior": + return Vente(vehicule, vendeur, reduction_demandee, vendeur_senior_associe) + else: + print("le vendeur associé n'est pas non plus senior") + + +""" + +il existe trois types de vendeur, les vendeurs payés à l’heure, ceux freelance à la mission et ceux payés au mois. Une méthode permettra de calculer leur paie chaque mois. + + +""" + +class Concessionnaire: + + def __init__(self, adresse, siret): + self.inventaire = [] + self.liste_vendeur = [] + self.adresse = adresse + self.siret = siret + + def inventaire_par_marque(self): + dictionnaire_par_marque = {} + for vehicule in self.inventaire: + if vehicule.marque not in dictionnaire_par_marque: + dictionnaire_par_marque[vehicule.marque] = 1 + else: + dictionnaire_par_marque[vehicule.marque] += 1 + return dictionnaire_par_marque + + def ajouter_inventaire(self,vehicule: Vehicule): + self.inventaire.append(vehicule) + + def retirer_inventaire(self,vehicule: Vehicule): + self.inventaire.remove(vehicule) + + def ajouter_liste_vendeur(self,vendeur: Vendeur): + self.inventaire.append(vendeur) + + def retirer_liste_vendeur(self,vendeur: Vendeur): + self.inventaire.remove(vendeur) + + + +mon_vendeur = Vendeur ("Denis", "junior", Contrat_freelance(300)) +mon_vendeur_senior = Vendeur ("Fred", "senior", Contrat_journalier(10)) + + +print(mon_vendeur.contrat.calcul_paie(10)) +print(mon_vendeur_senior.contrat.calcul_paie(7)) + + +# ma_voiture = Voiture("rouge", "Toyota", 'Hiaris', 25000, 0.1, 4) +# ma_moto = Moto("rouge", "Toyota", 'ROméo', 15000, 0.1, True) + +# ma_vente = creer_vente(ma_voiture,mon_vendeur, True,mon_vendeur_senior) + +# mon_concessionnaire = Concessionnaire("5 rue De la République", 38499495) + +# mon_concessionnaire.ajouter_inventaire(ma_voiture) +# mon_concessionnaire.ajouter_inventaire(ma_moto) +# mon_concessionnaire.retirer_inventaire(ma_moto) +# print(mon_concessionnaire.inventaire) + +# mon_concessionnaire.ajouter_inventaire(Camion("rouge", "Toyota", 'ROméo', 15000, 0.1, 18.5)) +# #mon_concessionnaire.retirer_inventaire(Camion("rouge", "Toyota", 'ROméo', 15000, 0.1, 18.5)) + + +# print(mon_concessionnaire.inventaire) + diff --git a/oop/correction_exercice_blog.py b/oop/correction_exercice_blog.py new file mode 100644 index 0000000..2cfb3cb --- /dev/null +++ b/oop/correction_exercice_blog.py @@ -0,0 +1,153 @@ +""" +**'Exercice'** Ecrire le diagramme de classe correspondant au cas suivant: +Fort de votre expérience en pâtisserie, vous décidez de créer un forum en ligne pour parler de gâteaux ! +- Vous devez définir et instancier trois classes: Utilisateurs (et ses héritiers), fil de discussion et post (et ses héritiers) + + +Sur ce forum +- les utilisateurs fans de pâtisserie pourront : s’inscrire et se connecter ; +- parler de leurs gâteaux préférés, en créant de nouveaux fils de discussion ; +- répondre à des messages, dans les fils existants. +- Un fil de discussion sur ce forum a un titre, une date de création et une collection de posts lui correspondant. +- Chaque post contient du texte, l’utilisateur qui l’a publié et la date de publication. +- Les utilisateurs ont la possibilité d’attacher des fichiers à leurs posts : +- Partez du principe qu’il peut y avoir de nombreux types de fichiers, mais nous sommes surtout intéressés par les fichiers images (GIF ou JPEP). +- Un post peut avoir un fichier attaché, ce qui changera la façon dont le post est affiché. Ce serait donc un nouveau type de post. +- Enfin, il y a des utilisateurs spéciaux nommés modérateurs, qui ont la capacité de modifier un post pour qu’il contienne du contenu nouveau, et de supprimer ceux qui ne parlent pas de gâteaux. ;) + + +**`Exercice user_creation`** + +- créer une classe user avec un attribut publique "profil", des attribut protégés "password" et "user_name" et un attribut privée "validation_code" +- créer des méthodes publiques "set_password", "get_password" et "get_user_name" +- créer une méthode publique "set_username" qui prend comme argument un code et un nouveau user name. Cette méthode fait appelle à une autre méthode, privée cette fois qui compare le code avec le code de validation. Si le code correspond au validation_code alors le changement est réalisé. + + + """ + +from datetime import datetime + + + +class User: + + def __init__(self,profil,user_name,password): + self.profil = profil + self._password = self.set_password(password) + self._user_name = user_name + self.__validation_code = "XHDJFOD" + + + def set_password(self, password): + if isinstance(password,str) and len(password)>=8: + return password + else: + print("le password de correspond pas") + + def get_password(self): + return self._password + + def __validation(self,validation_code): + return self.__validation_code == validation_code + + def set_username(self,new_user_name,validation_code): + if self.__validation(validation_code): + self._user_name = new_user_name + else: + print("erreur dans le code de validation") + + def get_user_name(self): + return self._user_name + + + def login(self, password): + if self._password == password: + self.statut = "connecté" + print("vous etes bien connecté") + else: + print("vous n'avez pas de compte ou mot de passe incorrect") + + def new_fil(self,fil:"Fil"): + return fil + + def new_post(self,fil,post): + fil.add_post(post) + print(f"un nouveau post a été ajouté à {fil}") + return post + + +class Moderateur(User): + def modify_post(self,fil,post,new_text): + if post in fil.contenu: + post.texte = new_text + + +class Post: + def __init__(self,utilisateur,texte): + self.utilisateur = utilisateur + self.texte = texte + self.date_creation = datetime.now() + +class Post_fichier(Post): + def __init__(self,utilisateur,texte,type_fichier): + super().__init__(utilisateur,texte) + self.type_fichier = type_fichier + +class Fil: + + def __init__(self,titre): + self.contenu = [] + self.date_creation = datetime.now() + self.titre = titre + + def add_post(self,post:Post): + self.contenu.append(post) + + + + + + +charles = User("Actif","Charles","SecretKeys") + +print(charles.get_password()) + +charles.set_username("charles B", "XHDJFOD") + + +print(charles.get_user_name()) + +charles.set_username("charles Be", "XHDJFO") + +charles.__validation("XHDJFO") + +# charles.sign_in(1234) +# charles.login(1234) + +# mon_fil = Fil("carrotcake") + + +# print(f"{mon_fil.__dict__=}") + +# mon_post=Post(charles,"le contenu de mon 1er poste") + +# charles.new_post(mon_fil,mon_post) + + +# print(f"{mon_fil.contenu=}") + +# denis = Moderateur("denis") + +# denis.sign_in(9987) +# denis.login(9987) + + +# print(f"{mon_post.texte=}") + +# denis.modify_post(mon_fil,mon_post, "un nouveau texte" ) + +# print(f"{mon_post.texte=}") + +# mon_post_avec_fichier = Post_fichier(charles,"le contenu de mon 1er poste",type_fichier="GIF") + +# print(f"{mon_post.__dict__=}") diff --git a/oop/correction_toolbox.py b/oop/correction_toolbox.py new file mode 100644 index 0000000..15b498e --- /dev/null +++ b/oop/correction_toolbox.py @@ -0,0 +1,82 @@ +class Vis: + def __init__(self, taille, status="non vissée"): + self.taille = taille + self.status = status + + def visser(self): + self.status = "non vissée" if self.status == "vissée" else "vissée" + +class Tournevis: + def __init__(self,marque): + self.marque = marque + + def vissage(self,vis:Vis): + vis.visser() + +class Clou: + def __init__(self, taille, status="non cloué"): + self.taille = taille + self.status = status + + def clouer(self): + if self.status == "non cloué": + self.status = "cloué" + elif self.status == "cloué": + print("le clou est déja cloué") + + +class Marteau: + def __init__(self,marque): + self.marque = marque + + def clouage(self,clou:Clou): + clou.clouer() + + +class Toolbox: + nb_emplacement = 5 + + @classmethod + def update(cls): + cls.nb_emplacement +=1 + + def __init__(self): + self.contenu = [] + + def add_to_toolbox(self,Tool): + if len(self.contenu) < self.__class__.nb_emplacement: + self.contenu.append(Tool) + else: + print("ma boite à outil est pleine") + + def remove_from_toolbox(self,Tool): + if Tool in self.contenu: + self.contenu.remove(Tool) + +ma_vis = Vis(10) +mon_tournevis = Tournevis("facom") + +mon_tournevis.vissage(ma_vis) +print(ma_vis.status) +mon_tournevis.vissage(ma_vis) +print(ma_vis.status) + +mon_clou = Clou(13) +mon_marteau = Marteau("facom") + +print(mon_clou.status) +mon_marteau.clouage(mon_clou) + +mon_marteau.clouage(mon_clou) +print(mon_clou.status) + +boite_outil = Toolbox() + +boite_outil.add_to_toolbox(mon_marteau) +boite_outil.add_to_toolbox(mon_tournevis) +print(boite_outil.contenu) + +boite_outil.remove_from_toolbox(mon_marteau) +print(boite_outil.contenu) + +boite_outil.remove_from_toolbox(Tournevis("facom")) \ No newline at end of file diff --git a/oop/correction_toolbox_bis.py b/oop/correction_toolbox_bis.py new file mode 100644 index 0000000..f1ea8d3 --- /dev/null +++ b/oop/correction_toolbox_bis.py @@ -0,0 +1,128 @@ +"""**`Exercice`** +- Créer des classes: boite à outils, marteau, tournevis, clou, vis +- Instanciez une boîte à outils, un tournevis, et un marteau. +- Placez le marteau et le tournevis dans la boîte à outils. +- Instanciez une visse, et serrez-la avec le tournevis. Affichez la vis avant et après avoir été serrée. +- Instanciez un clou, puis enfoncez-le avec le marteau. Affichez le clou avant et après avoir été enfoncé. +- Une boite à outil possède 5 emplacements. (classe attributs) +- Régulièrement le constructeur des boites à outils sort un nouveau modèle qui permet d'etendre la capacité des boites à outils de 1 emplacement. + +Pour chaque classe vous devez définir les attributs et les méthodes qui permettront d'éxecuter et de rapporter dans le terminal ces actions et ces états. +""" + + + + + +class Vis: + def __init__(self,type,statut = "non vissée"): + self.type = type + self.statut = statut + + def visser(self): + self.statut = "non vissée" if self.statut =="vissée" else "vissée" + + + +class Clou: + def __init__(self,longueur, statut = "non cloué"): + self.longueur = longueur + self.statut = statut + + def clouer(self): + self.statut = "cloué" + + pass + + +class Tournevis: + def __init__(self,type): + self.type = type + + def vissage(self,vis): + if self.type == vis.type: + vis.visser() + print(f"la vis est maintenant {vis.statut}") + else: + print("le tournevis ne convient pas à la vis") + +class Marteau: + + def clouage(self, clou): + clou.clouer() + print(f"le clou est maintenant {clou.statut}") + + +class Toolbox: + nb_emplacement = 5 + + def __init__(self): + self.contenu = [] + + def add_tool(self,outil): + if len(self.contenu) < self.nb_emplacement: + self.contenu.append(outil) + else: + print("la boite à outil est déja pleine") + + @classmethod + def update_toolbox(cls,nb_emplacement_supp =1 ): + cls.nb_emplacement += nb_emplacement_supp + + + + +mon_clou = Clou(4) + + + +mon_clou.clouer() + + + + +ma_vis = Vis("plate") + +print(f"{ma_vis.statut=}") + + + +mon_tournevis = Tournevis("plate") + +mon_tournevis.vissage(ma_vis) + + +# print(f"{ma_vis.statut=}") + +# mon_marteau = Marteau() + +# # print(type(mon_marteau)) +# # print(mon_marteau.__dict__) + +# # mon_marteau.clouage(mon_clou) + +# ma_toolbox = Toolbox() +# print(f"{ma_toolbox.contenu=}") + +# ma_toolbox.add_tool(mon_marteau) +# ma_toolbox.add_tool(mon_tournevis) + +# marteau_2 = Marteau() +# marteau_3 = Marteau() +# marteau_4 = Marteau() +# marteau_5 = Marteau() + +# ma_toolbox.add_tool(marteau_2) +# ma_toolbox.add_tool(marteau_3) +# ma_toolbox.add_tool(marteau_4) +# ma_toolbox.add_tool(marteau_5) + + +# print(f"{ma_toolbox.contenu=}") + +# ma_toolbox.update_toolbox(1) + +# ma_toolbox.add_tool(marteau_5) + +# print(f"{ma_toolbox.contenu=}") + diff --git a/oop/correction_zoo.py b/oop/correction_zoo.py new file mode 100644 index 0000000..e9148ab --- /dev/null +++ b/oop/correction_zoo.py @@ -0,0 +1,53 @@ +""" +Vous gérez un zoo qui abrite des poissons, des oiseaux et des félins. +- Tous les animaux possèdent un régime alimentaire de la forme {aliment: bool, aliment: bool} +- tous les animaux doivent pouvoir manger selon leur régime alimentaire + +- Pour que les félins mangent il faut vérifier que ce qu'on leur donne soit bien de la viande +- Pour que les poissons mangent il faut vérifier que ce qu'on leur donne soit bien de la nourriture pour poisson +- Pour que les oiseaux mangent il faut vérifier que ce qu'on leur donne soit bien des graines + +- Tous les poissons doivent pouvoir nager +- Tous les oiseaux doivent piailler + +- Les lions doivent rugir et les chats miauler, les panthères ne font rien +- les canaris piaillent en disant "cuicui" les autruches piaillent en disant "CUICUI" + +Créer votre zoo avec 2 lion , 3 chat, 1 canari, 2 autruches, 3 raies et 1 dauphin. +""" + +from abc import ABCMeta, abstractmethod # permet de définir des classes de base + + +class Animal (metaclass = ABCMeta): + @abstractmethod + def manger(self): + pass + + @property + @abstractmethod + def regime_alimentaire(self): + pass + +class Poisson (Animal): + regime_alimentaire = {"nourriture_pour_poisson": True, "Viande":False, "Graine": False} + + def manger(self, aliment): + if self.regime_alimentaire[aliment] == True: + print ("le poisson a bien mangé") + else: + print("cet aliment ne convient pas aux poissons") + + @abstractmethod + def nager(self): + pass + +class Raie(Poisson): + def nager(self): + print("la raie nage") + + +une_raie = Raie() +une_raie.manger("nourriture_pour_poisson") +une_raie.manger("Viande") +une_raie.nager() diff --git a/oop/img/Class_heritage.drawio.png b/oop/img/Class_heritage.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..6b48b546d1c00d7d6c18cd4e3d979971465f098a GIT binary patch literal 11107 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 MNE1Y*-nGd82WeFo*#H0l literal 0 HcmV?d00001 diff --git a/oop/img/First_class_diagram.drawio.png b/oop/img/First_class_diagram.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..2421b2135a505bfcb88290af6c63ba39acf4c0bb GIT binary patch literal 32053 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

$OI=tVQ9%XZ4K^?B;HXVGVWR4Ilm6Vuj+L zg`RsYS?n9JA-<_%<>=Jj^i%8D{Fjz2D%}6|`@a?iZi@dmO5W@4BK+BGVofhKa*z6N DqVQ$Z literal 0 HcmV?d00001 diff --git a/oop/test_class_to_test.py b/oop/test_class_to_test.py new file mode 100644 index 0000000..1f23d68 --- /dev/null +++ b/oop/test_class_to_test.py @@ -0,0 +1,69 @@ +from class_to_test import Voiture, Vehicule +# Tester une classe correspond à tester chacune de ses méthodes. +# Pour cela on crée une classe de test dont le nom commence par Test +# Chacunes de ses méthodes permettra de tester les méthodes de la classe à tester +import pytest + +class TestVoiture: + + def test_prix_apres_reduction(self): + assert Voiture("toyota", "rouge",20000,0.1).prix_apres_reduction() == 18000 + + def test_prix_apres_double_reduction(self): + assert Voiture("toyota","rouge",20000,0.1).prix_apres_double_reduction() == 16000 + + def test_prix_apres_triple_reduction(self): + assert Voiture("toyota","rouge",20000,0.1).prix_apres_triple_reduction() == 14000 + + def test_initialisation(self): + assert Voiture("toyota","rouge",20000,0.1).prix == 20000 + with pytest.raises(ValueError) : + Voiture("toyota","rouge","20000",0.1) + + def test_I_want_to_quit(self, monkeypatch): + def no_func(x): + pass + #monkeypatch.setattr("class_to_test.Voiture.fonction_sans_fin",no_func) + monkeypatch.setattr(Voiture, "fonction_sans_fin",no_func) + #monkeypatch.delattr(Voiture, "fonction_sans_fin") (ne marche pas) + + assert Voiture("toyota","rouge",20000,0.1).I_want_to_quit() == "I quit" + +# Je dois créer trois fois ma voiture. C'est plutot embettant. + +# Je peux préférer utiliser des fixtures + +@pytest.fixture +def voiture_test(): + return Voiture("toyota","rouge",20000,0.1) + + +class TestVoiture2(): + def test_prix_apres_reduction(self,voiture_test): + assert voiture_test.prix_apres_reduction() == 18000 + + def test_prix_apres_double_reduction(self,voiture_test): + assert voiture_test.prix_apres_double_reduction() == 16000 + + def test_prix_apres_triple_reduction(self,voiture_test): + assert voiture_test.prix_apres_triple_reduction() == 14000 + + def test_initialisation(self, voiture_test): + assert voiture_test.prix == 20000 + with pytest.raises(ValueError) : + Voiture("toyota","rouge","20000",0.1) + + + +# Test an abstract class: +# Certaines abstract class possèdent des méthodes qui ne sont pas des abstact méthode +# On aimerait pouvoir les tester au niveau de la classe parent et pas plusieurs fois +# Dans les classes enfant +class TestVehicule(): + def test_drive(self): + #Cette ligne permet de supprimer toutes les abstactmethod + Vehicule.__abstractmethods__ = set() + # On peut donc instatancier un vehicule + my_vehicule = Vehicule() + # Et tester ses méthodes qui ne sont pas des abstractmethod + assert my_vehicule.drive() == "the vehicule is on its wheels!" diff --git a/other_folder/other_folder_file.py b/other_folder/other_folder_file.py new file mode 100644 index 0000000..578cc70 --- /dev/null +++ b/other_folder/other_folder_file.py @@ -0,0 +1,4 @@ +def other_folder_function(): + print("I'm an other folder function") + + \ No newline at end of file diff --git a/recursif.py b/recursif.py new file mode 100644 index 0000000..974e7db --- /dev/null +++ b/recursif.py @@ -0,0 +1,8 @@ +def factorielle(n): + if n == 0: + return 1 + else: + return n * factorielle(n-1) + + +factorielle(4)