- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie, on va voir les méthodes Ajouter et Enlever qui vont nous permettre d'ajouter et d'enlever des éléments.C'est assez similaire aux méthodes Append et Remove que l'on aurait sur une liste,sauf que vous voyez qu'on va faire pas mal de vérifications en plus pour s'assurer que notre liste ne contient que les éléments que l'on veut.
00:00:16 :Par exemple, on va faire en sorte que l'on ne puisse pas ajouter de nombres à l'intérieur de notre liste.On ne pourra ajouter que des chaînes de caractères.
00:00:23 :La première chose que j'ai fait ici, tout en haut du fichier, c'est importer le module Logging.On pourrait très bien faire des prints, mais généralement, on va préférer utiliser ce module.
00:00:32 :Pour l'instant, je l'utilise de façon très basique, c'est-à-dire que je vais juste chercher un logger ici.Je ne mets rien dans un fichier de log et je ne sette même pas de niveau de debug.
00:00:43 :Je pourrais mettre un niveau à Debug, Warning, Error, comme on l'avait vu dans la partie sur le Logging.Pour l'instant, je fais juste récupérer un logger libre à vous si vous voulez le personnaliser,d'écrire les logs dans un fichier comme on l'avait vu dans la partie sur le Logging.
00:00:56 :Pour l'instant, je ne veux pas mettre un print, j'essaie de faire quelque chose d'assez propre,donc j'utilise ce logger à la place du print, même s'il reste très simple.
00:01:05 :Ce qu'on va faire, c'est deux méthodes, la méthode Ajouter et la méthode Enlever,qui vont nous permettre d'ajouter et d'enlever des éléments.On n'oublie pas de mettre le self à chaque fois, là encore qui va référer à notre instance,et on passe à chaque fois un élément qu'on veut ajouter ou enlever.
00:01:20 :Dans ce cas-ci, on va avoir un paramètre Élément qu'on va pouvoir utiliser tout au long de notre méthode.Qu'est-ce que je fais en premier ici dans ma méthode Ajouter ?
00:01:28 :Je vérifie avec IsInstance si l'élément est de type chaîne de caractère ou non,et j'inverse cette condition avec Note.Donc en français, si on lit ça, si on le traduit en français,ça donne si l'élément n'est pas de type string, donc de type chaîne de caractère,on va lever une erreur de type ValueError, et on va afficher ici comme message d'erreur,
00:01:50 :vous ne pouvez ajouter que des chaînes de caractère.Donc IsInstance, ça nous permet de vérifier si un élément est d'un certain type.Donc là, on vérifie si Élément est de type chaîne de caractère, et si ce n'est pas le cas,donc si c'est Note, IsInstance, Élément, chaîne de caractère,
00:02:04 :donc là on fait une inversion avec Note, et bien on va lever cette erreur.Donc pour lever une erreur, on utilise le mot Raise et le type de l'erreur,et on peut spécifier ici un message que l'on va afficher à l'utilisateurpour qu'il sache un peu plus précisément ce qui a causé l'erreur.
00:02:19 :Donc si notre élément est une chaîne de caractère,c'est-à-dire qu'on ne passera pas à travers cette condition,et on va continuer avec cette prochaine vérification,dans laquelle on vérifie si l'élément est déjà ou non dans la liste.
00:02:30 :Donc là on fait une vérification en faisant If Élément In Self,donc Self, qu'est-ce que c'est ? Et bien c'est mon instance.Mon instance, c'est quoi ? C'est une liste, puisque là on hérite de la classe List,
00:02:41 :donc comme on l'a vu dans la partie précédente, on peut utiliser Append, Remove, etc.Donc on est vraiment en présence d'une liste.Donc Self, c'est ma liste, et je vais vérifier tout simplementsi l'élément que l'on passe à notre méthode ajoutée iciest déjà présent ou non dans la liste.
00:02:55 :Donc si on a déjà des pommes dans la liste et qu'on essaie de rajouter des pommes,et bien on va tout simplement mettre un message d'erreur,donc avec notre logger ici, on va dire logger.error,
00:03:03 :et avec un If String, on va lui dire que l'élément que l'utilisateur a essayé d'ajouterest déjà dans la liste, et on fait un return false,donc return qui nous permet d'arrêter la méthode ici,donc on ne va pas aller plus loin, et on retourne falsepour indiquer à l'utilisateur qu'il y a eu un problème.
00:03:19 :Donc quand on va utiliser cette méthode ajoutée,si on utilise un item qui est déjà dans la liste,si on essaie d'ajouter un élément qui est déjà dans la liste,et bien on aura ce message d'erreur et le message falsequi va être affiché et qui va nous être retourné.
00:03:32 :Donc ça c'est pratique si par exemple vous avez d'autres opérationsqui dépendent de cet ajout.Imaginez que vous ajoutez un élément dans la liste,et que par la suite vous voulez, si l'élément a bien été ajouté,l'afficher dans une interface graphique.
00:03:44 :Et bien on pourrait faire une variable résultat ici,qui serait égale à liste.ajouter, et on essaye d'ajouter des pommes.Et donc avec le return false ici,si l'élément n'a pas été ajouté correctement,donc s'il était déjà présent dans la liste,on va retourner false,donc cette variable résultat sera égale à false,
00:04:01 :et par la suite on peut faire ici une vérificationpour dire if résultat, donc si résultat est vrai,cette condition sera vraie,et on pourra donc par exemple afficher icil'élément dans une interface graphique.
00:04:15 :Donc là je mets juste une ligne de commentaire,mais imaginez qu'on aurait du code iciqui continue et qui affiche cet élémentdans une interface graphique.
00:04:22 :Donc c'est pour ça que c'est important quand mêmequand vous faites quelque chose ici,de retourner soit false, soit true dans ce cas-ci.Des fois on peut retourner une valeur,on n'est pas obligé de retourner des boules et un,ça peut être l'élément qui a été ajouté,par exemple ici plutôt que de retourner true,
00:04:37 :je pourrais retourner élément directement.Moi j'aime bien être assez constant dans le typede ce que je retourne, c'est-à-dire que si icije retourne un boule et un, donc quand on n'arrive pasà ajouter quelque chose, et bien quand on arriveà ajouter quelque chose, j'aime bien retournerégalement un boule et un, comme ça on est sûr
00:04:51 :dans les deux cas que ça marche ou pasqu'on va avoir un boule et un.Alors que si en fonction des cas de figureon commence à renvoyer une chaîne de caractèreou un boule et un, ou un nombre, etc,là ça peut être un peu plus difficilepour celui qui va utiliser votre classe
00:05:04 :par ailleurs, puisque ça peut être quelqu'un d'autreque vous qui va utiliser votre classeque vous codez, et bien ça peut être un peu compliquéà utiliser. Donc là on garde un boule et un,
00:05:12 :et si jamais on arrive à ajouterl'élément, donc c'est le cas ici puisquesi l'élément n'est pas dans la liste, et bienon ne passe pas dans cette condition, et on va tout simplementutiliser la méthode happened pour ajouterl'élément dans ma liste. Donc si on arrive jusque là,
00:05:24 :et bien on retourne true, et donccette variable résultat sera égale à true,la condition sera vraie ici,et on va pouvoir ensuite par exemple afficher l'élémentdans une interface graphique, puisqu'il aura étécorrectement ajouté dans ma liste.
00:05:36 :Donc voilà pour la méthode ajouter,la méthode enlever elle va être un peu plus simple,on va tout simplement vérifier déjà si l'élémentest dans la liste, donc on va dire là encoreif élément in self, si l'élémentest dans la liste, et bien on le supprime,avec la méthode remove, qui agit directement
00:05:50 :sur ma liste, donc sur self,on enlève cet élément, et si ça marche,donc si on arrive à l'enlever, là encore on retournetrue, et si par contrel'élément n'est pas dans la liste, et biença veut dire qu'on n'a pas besoin de l'enlever,et là dans ce cas-ci on va retourner false.
00:06:04 :Vous avez remarqué qu'on aurait pu mettre un else,on aurait pu faire ça comme ceci, ça auraitfait exactement la même chose.C'est juste que, en fait, quand on a justeune structure conditionnelle ici, avec unif, et qu'on retourne true à l'intérieur de cettestructure conditionnelle, on n'est pas forcément
00:06:18 :obligé de mettre un else, puisquesi je fais ça comme ceci,donc si on rentre dans cette structure conditionnelle,on retourne true, et on ne va pas plus loin.
00:06:26 :Si on ne rentre pas dans cette structure conditionnelle,et bien c'est comme si tout ce bloc de code n'existait pas,et on retourne directement false.
00:06:32 :Donc on n'est pas obligé dans ce cas-ci de mettre le else,si on a juste une structure, ça marcheaussi en mettant directement le return après.
00:06:38 :Là c'est vraiment à vous de voir ce que vous préférez,je sais qu'il y en a qui préfèrent mettrele else, puisque c'est peut-être visuellementun peu plus clair que là on a unecondition et une autre, donc un if et un else.
00:06:48 :Moi je me suis habitué àréduire un peu le nombre de lignes de code,et avoir cette syntaxe ici, quand j'ai deux retournescomme ça à la suite, je sais généralementque c'est parce que j'ai une condition ici,au bout d'un moment vous allez vous habituer,et vous allez finalement enlever ce else
00:07:02 :qui est un peu superflu.Donc voilà comment créer nos propres méthodes pourajouter et enlever des éléments denotre liste, on va pouvoir le tester maintenant.
00:07:10 :Donc je vais faire liste.ajouter,on va ajouter des pommes une première fois,je vais réessayer une deuxième foispour voir si notre structure conditionnellefonctionne bien, puisque normalement on n'est pascapable avec cette liste ici d'ajouterdeux fois le même élément, puisqu'on a prévu ce cas de figureici. Je vais également aussi
00:07:26 :au début essayer d'ajouter pour l'instant un nombre,donc on va essayer d'ajouter 0, et là on devra avoirune erreur, donc si je lance le scripton a bien ici valueErroret le message d'erreur que l'on avait renseignéici qui nous dit qu'on ne peut ajouter que deschaînes de caractère, donc ça ça marche bien.
00:07:40 :Si j'enlève ici ma ligne dans laquelle onajoute un nombre, que je relance le scripten essayant d'ajouter cette fois-cideux fois le même élément, on a bien icipomme qui est déjà dans la liste, donc là encore çafonctionne bien. Si je fais liste.enlever
00:07:53 :et que j'essaie d'enlever les pommes,et que ensuite je fais un printde ma liste, donc je vais relancer mon scriptet là on a donc lqui n'est pas défini, oui puisque j'ai mis listeet non pas l. Donc là notre instance ici
00:08:05 :elle s'appelle liste et non pas l, donc j'ai faitune petite erreur, je relance le script.Donc là on a bien pomme qui est déjà dans la listepuisqu'on a essayé de l'ajouter une deuxième fois, donc çane marche pas. Ensuite on enlève l'élément
00:08:15 :pomme, et donc ensuite logiquementquand on print notre liste, la liste elle estvide puisque on a ajouté un item eton l'a enlevé. Si j'enlève ces deux
00:08:23 :lignes ici, que je ne fais qu'ajouter l'itempomme et que je relance mon script, cette fois-cion aura bien une liste qui contient uniquementl'item pomme. Et donc je peux en ajouter
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.