Python 101 : le guide complet du débutant | Alexander O. | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Python 101 : le guide complet du débutant

teacher avatar Alexander O., Web Developer & Cyber Security Expert

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Promo du cours

      1:45

    • 2.

      Introduction à Python

      4:53

    • 3.

      Note importante pour travailler avec Python on

      4:23

    • 4.

      Comment utiliser Tonny

      4:16

    • 5.

      Comment travailler avec le code Visual Studio

      6:41

    • 6.

      Hello World

      6:31

    • 7.

      Introduction à la section des types de données

      1:21

    • 8.

      Travailler avec des chaînes dans son cours

      8:53

    • 9.

      Autres types de variables

      4:49

    • 10.

      Opérateurs booléens mis à jour

      4:13

    • 11.

      Opérateurs arithmétiques mis à jour

      5:33

    • 12.

      Travailler avec la section des cordes - Intro

      1:29

    • 13.

      Manipulation de base des cordes

      5:35

    • 14.

      Indexation des chaînes et découpage

      8:50

    • 15.

      Méthodes de chaînes courantes

      7:19

    • 16.

      Plus de manipulation des cordes

      10:58

    • 17.

      Contrôler la section de flux et des boucles

      1:41

    • 18.

      Introduction aux algorithmes à être

      5:40

    • 19.

      Instructions If else

      11:46

    • 20.

      Vérificateur de mot de passe simple

      4:38

    • 21.

      Introduction aux boucles

      4:16

    • 22.

      Boucles For and While

      10:01

    • 23.

      L'instruction BREAK la

      13:16

    • 24.

      Essayer except

      7:11

    • 25.

      lettre de motivation

      6:42

    • 26.

      Défi de programmation

      17:37

    • 27.

      Intro à la section des fonctions intro

      1:01

    • 28.

      Définir et appeler des fonctions

      3:16

    • 29.

      Paramètres et arguments univ

      7:15

    • 30.

      Arguments de mots-clés récapit

      4:27

    • 31.

      Variables locales et globales

      5:19

    • 32.

      Section sur les structures de données - Intro

      1:04

    • 33.

      Listes

      7:34

    • 34.

      Utiliser des boucles dans une liste list

      2:57

    • 35.

      Dictionnaires se

      7:57

    • 36.

      Dictionnaires imbriqués Th

      4:53

    • 37.

      Ensembles

      6:57

    • 38.

      Des ensembles et boucles de défi en programmation

      5:52

    • 39.

      Dictionnaires et boucles de défi de programmation

      12:31

    • 40.

      Projet de système d'authentification

      4:22

    • 41.

      Étape 1 : créer la fonction d'enregistrement

      6:18

    • 42.

      Étape 2 Créez la fonction de connexion

      7:04

    • 43.

      Étape 3 créer le système d'authentification

      8:42

    • 44.

      Intro à la section de gestion des fichiers

      1:17

    • 45.

      Lire et écrire sur des fichiers

      8:04

    • 46.

      Lire et écrire des saisies dans des fichiers texte

      7:54

    • 47.

      Méthodes de lecture et d'écriture

      9:25

    • 48.

      Gestion des erreurs de fichier

      7:44

    • 49.

      Plusieurs blocs exceptés

      3:33

    • 50.

      La déclaration finale

      5:03

    • 51.

      Introduction à la section des bibliothèques et des modules

      0:54

    • 52.

      Introduction aux bibliothèques et aux modules modules

      4:32

    • 53.

      Créer un module personnalisé

      6:14

    • 54.

      Comment faire pour wakeover avec un module standard

      3:36

    • 55.

      Génération de mot de passe avec des modules aléatoires et en chaîne

      7:12

    • 56.

      Le module datetime

      6:54

    • 57.

      Travailler avec une bibliothèque externe

      8:48

    • 58.

      Introduction au projet d'outil de cryptage et de décryptage tro

      3:34

    • 59.

      Tâche 1 Créez la clé de chiffrement

      6:11

    • 60.

      Tâche 2 : créer les fonctions de cryptage et de décryptage functions

      8:35

    • 61.

      Tâche 3 - ajouter l'interface utilisateur

      15:26

    • 62.

      Intro de la section Oop

      1:08

    • 63.

      Introduction à l'OOP

      4:52

    • 64.

      Créer un cours de base

      12:56

    • 65.

      Création d'un cours de base Partie 2

      4:09

    • 66.

      Encapsulation (1080p)

      6:02

    • 67.

      Héritage

      5:52

    • 68.

      Polymorphisme

      3:26

    • 69.

      Aperçu du projet final

      4:48

    • 70.

      Partie 1 - création de l'interface utilisateur

      4:39

    • 71.

      Partie 2 : ajout de la fonction d'enregistrement de l'utilisateur

      4:28

    • 72.

      Partie 3 : ajout de la fonction de connexion

      6:24

    • 73.

      Partie 4 : ajout de l'outil de vérification de la force du mot de passe

      12:20

    • 74.

      Partie 5 - hacher les mots de passe des utilisateurs

      8:01

    • 75.

      Partie 6 : ajout de l'outil d'audit

      10:12

    • 76.

      Partie 7 ajouter la fonction de journal de l'affichage

      5:28

    • 77.

      Partie 8 - ajout du menu de connexion

      7:05

    • 78.

      Conclusion du projet final

      1:44

    • 79.

      Conclusion du cours

      1:10

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

11

apprenants

--

À propos de ce cours

Python 101 : le guide complet du débutant a été conçu pour vous permettre d'acquérir les compétences de base en programmation Python, essentielles dans le paysage de sécurité d'aujourd'hui. Adapté spécifiquement pour les amateurs et les professionnels de la cybersécurité, ce cours vous fera passer des bases de Python à la création de scripts qui automatisent les tâches de sécurité, traitent les données sensibles en toute sécurité et interagissent efficacement avec les ressources système.

À qui s'adresse ce cours ? ?

  • Les étudiants qui souhaitent développer leurs compétences en Python pour des postes de niveau débutant.

  • Les analystes de sécurité actuels qui veulent améliorer leurs boîtes à outils avec Python pour automatiser des tâches.

  • Les passionnés d'informatique et de sécurité avec peu ou pas d'expérience en programmation qui souhaitent utiliser Python dans un contexte de sécurité.

Aucune expérience préalable en programmation n'est requise. Juste la volonté d'apprendre et d'explorer !

Ce que vous apprendrez

Grâce à des exercices pratiques, des exemples concrets et un apprentissage basé sur des projets, vous acquerrez :

  • Les bases de Python : commencez à partir de zéro avec la syntaxe Python, les variables, les types de données, les structures de contrôle et les fonctions.

  • Gestion des données pour la sécurité : gérez et traitez les données avec les listes, les dictionnaires et les fonctionnalités de gestion de fichiers de Python, indispensables pour travailler avec les journaux, les adresses IP et les identifiants.

  • Gestion de fichiers et automatisation : ouvrez, lisez et écrivez des fichiers pour automatiser les tâches répétitives et rationaliser le traitement des données.

  • Pratiques de programmation sécurisées : apprenez à gérer les mots de passe, les données de hachage et les informations sensibles en suivant les meilleures pratiques de sécurité.

  • Introduction à la programmation orientée objet : découvrez comment les classes et les objets peuvent vous aider à construire du code modulaire et réutilisable pour des applications de sécurité.

  • Applications pratiques de cybersécurité : créer des scripts pour résoudre des tâches de sécurité, comme le contrôle des tentatives de connexion, le filtrage des adresses IP suspectes et le cryptage de base.

Les points forts du cours

  • Projets axés sur la cybersécurité : appliquez ce que vous apprenez dans des projets qui simulent des scénarios de sécurité réels.

  • Guide étape par étape : chaque module s'appuie sur le précédent, ce qui facilite le suivi, même si vous êtes novice en programmation.

  • Apprentissage pratique : approfondissez chaque compétence en réalisant des laboratoires, des exercices et des quiz s’

  • Codez en suivant des exemples : suivre des exemples sur le thème de la cybersécurité pour appliquer Python d'une manière logique pour vos tâches de sécurité.

Pourquoi Python pour la cybersécurité ? ?

Python est l'un des langages les plus polyvalents en matière de cybersécurité. Il offre flexibilité, simplicité et un vaste écosystème de bibliothèques parfait pour l'analyse des données, l'automatisation et la détection des menaces. Que vous analysiez les journaux, que vous analysiez le trafic réseau ou que vous créiez des outils personnalisés, Python peut vous permettre de travailler plus efficacement et d'avoir un impact sur votre rôle de sécurité.

Rejoignez le cours dès aujourd'hui ! !

Faites votre premier pas dans la programmation Python et commencez à développer des compétences qui soutiendront votre carrière en cybersécurité. À la fin de ce cours, vous saurez utiliser Python en toute confiance pour automatiser des tâches, analyser les données et créer des scripts axés sur la sécurité.

Inscrivez-vous dès maintenant et préparez-vous à exploiter la puissance de Python pour la cybersécurité !

Rencontrez votre enseignant·e

Teacher Profile Image

Alexander O.

Web Developer & Cyber Security Expert

Enseignant·e


My passion is teaching people through online courses in a fun and entertaining manner.  I have been teaching online for about 3 years now and during this period, I have created over 25 different courses on different platforms including my own personal platform - The Web Monkey Academy.

What would you like to learn?

Would you like to learn how to build and manage your WordPress website? Would you like to learn advanced skills that will make you a true WordPress developer? Would you like to learn how you can establish a successful career as a web developer? Would you like to learn the basics of information and cyber security?

 If you want to do any of these things, just enroll in the course. I'm always improving my courses so that they stay up to dat... Voir le profil complet

Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Promo du cours: Êtes-vous intéressé à la fois par la cybersécurité et par la programmation Python ? Si la réponse est oui, vous êtes au bon endroit. Bonjour, je m'appelle Alex. Je vous souhaite la bienvenue dans mon cours très spécial de programmation Python pour la cybersécurité. Il s'agit maintenant d'un cours que j'ai conçu spécifiquement pour les professionnels et les passionnés de cybersécurité. Qui aimerait en savoir plus sur la programmation Python, mais d'une manière pertinente pour la cybersécurité ? Alors, que signifie exactement un cours de Python pour la cybersécurité ? Je veux simplement que tout le code, les programmes et les outils que nous allons créer ensemble dans ce cours seront liés à la cybersécurité. Maintenant, si vous n'avez jamais écrit le monde du code de votre vie auparavant, si vous êtes complètement nouveau dans si vous êtes complètement nouveau le monde de la programmation, ne vous inquiétez pas. Je vais vous apprendre toutes les bases de la programmation. Et bien sûr, je vais vous enseigner les bases de Python, telles que les variables et les types de données, flux de contrôle et les boucles, les fonctions, structures de données, la programmation orientée objet, gestion de fichiers, et bien plus encore. En cours de route, nous allons également créer ensemble différents types d'outils de cybersécurité, tels qu'un outil de vérification de la solidité des mots de passe, un outil d'audit et un outil de cryptage Enfin, pour le projet de classe, nous allons construire ensemble un système d'enregistrement des utilisateurs. Je dois également mentionner que ce cours comprendra des tonnes de quiz, d' exercices de codage pour vous tester, vous mettre au défi et vous assurer que vous êtes sur la bonne voie Donc, si vous souhaitez ajouter la compétence Python à votre CV, peut-être que vous essayez d' obtenir une promotion ou de vous forger un nouveau cheminement de carrière, ce cours de programmation Python pour la cybersécurité sera parfait pour vous. J'espère donc que vous vous inscrivez au cours aujourd'hui, et j'espère vous voir sur les chaises intérieures. 2. Introduction à Python: Bienvenue officiellement dans les bases de Python pour les professionnels de la cybersécurité. Je m'appelle Alex, et je vais être ton instructeur. Le but de cette vidéo est maintenant vous souhaiter officiellement la bienvenue au cours et de vous donner quelques conseils sur la meilleure façon de le suivre Tout d'abord, en quoi consiste exactement ce cours ? Qu'est-ce que j'entends par Python pour la cybersécurité ? Eh bien, tous les exemples, les tests, les défis, les exercices de codage, eh bien, plupart d'entre eux seront adaptés aux projets de cybersécurité pertinents. titre d'exemple, nous allons écrire du code sur la façon de chiffrer les mots de passe, de hacher les mots de passe, de créer des comptes utilisateurs, scanner des ports, etc. donc utiliser dans ce cours les types de projets, d'outils ou de tâches que vous exécuteriez normalement dans un véritable environnement de cybersécurité Nous allons donc utiliser dans ce cours les types de projets, d'outils ou de tâches que vous exécuteriez normalement dans un véritable environnement de cybersécurité. C'est pourquoi il s'agit d'un cours de Python pour la cybersécurité. Donc, si vous êtes un professionnel de la cybersécurité et que vous souhaitez en apprendre un peu plus sur Python afin de créer projets ou des outils de cybersécurité pertinents, ce cours sera parfait pour vous. Je dois également mentionner que si vous n'avez jamais écrit de ligne de code de toute votre vie, vous arrivez ici complètement à l'aveuglette. Ne vous inquiétez pas, je suis là pour vous. Je vais commencer par les bases, et progressivement nous allons progresser vers l'écriture de programmes plus sophistiqués. Le cours est donc divisé approximativement en une dizaine de sections différentes. Cela peut changer à mesure que je modifie le cours et que j'ajoute ou supprime du contenu. Tout dépend. Mais nous allons recommencer depuis le début, d'accord ? Qu'est-ce que la programmation ? Nous allons écrire des lignes de code très simples. Et puis, à la fin du cours, nous allons créer nous-mêmes un système d'authentification très puissant ainsi qu'un très, très puissant vérificateur de mots de passe Ce sera le projet de ce cours. Et je peux vous garantir que si vous vous concentrez sur le cours, vous faites tous les exercices, les tests, je peux vous garantir qu'à la fin de ce cours, vous aurez les connaissances nécessaires pour être capable d' écrire de très bons programmes liés à la cybersécurité. Maintenant, je voudrais mentionner une chose à propos de la programmation en général, surtout si vous n'avez jamais écrit de ligne de code de toute votre vie auparavant. Ça va prendre du temps, d'accord ? Il vous faudra un certain temps avant devenir vraiment compétent et travailler couramment avec un langage de programmation Maintenant, Python, en particulier, est relativement facile par rapport aux autres langages de programmation existants. Mais même Python prend du temps, d'accord ? Ne soyez donc pas frustré si au début, au cours des premières semaines, vous avez encore du mal à écrire quelques lignes de code, vous commettez des erreurs. C'est tout à fait naturel. Pensez-y comme si vous essayez d'apprendre un langage verbal réel. Peut-être que vous essayez d' apprendre à parler, je ne sais pas, le grec, le finnois ou le suédois ou quoi que ce soit d'autre. Vous n'allez pas le récupérer automatiquement et très rapidement, n'est-ce pas ? Cela va prendre du temps. Cela peut prendre plusieurs mois, peut-être même jusqu'à un an. Au début, vous serez capable de dire des choses simples comme «   Bonjour ». Je m'appelle Alex. Mais ensuite, pour construire une phrase complète, cela commencera à prendre du temps, n'est-ce pas ? Vous devrez déterminer, d' accord, dans cette langue, l'adjectif vient avant le pronom ou si le nom vient avant le verbe , vous savez, tout ce Cela prend du temps. Donc, au tout début, vous ferez de nombreuses erreurs. Cela peut devenir frustrant, mais n'abandonnez pas, d'accord ? Je vous garantis que si vous vous concentrez, vous vous entraînez autant que possible. Vous faites les tests et les défis que je vous ai proposés dans ce cours. Je vous garantis qu'un jour, vous allez vous réveiller et vous rendre compte soudainement que je suis en train de devenir assez bon en programmation avec Python. Donc, rester là, ce n'est qu'une partie du processus. Toute cette frustration au tout début, ce n'est qu'une partie du processus. Restez là, et je vous promets que vous serez récompensés. Maintenant, encore quelques points à mentionner très rapidement, nous allons travailler avec une plate-forme particulière appelée replet, ne vous inquiétez pas, vous n'avez pas à payer pour cela C'est totalement gratuit. Je parlerai de Weblte un peu plus tard dans les vidéos suivantes Mais gardez cela à l'esprit. Si vous travaillez avec un Mac, Linux ou Windows, vous pourrez suivre ce cours. De plus, si vous rencontrez des difficultés ou si quelque chose n'est pas clair, vous pouvez toujours me contacter. Je me ferai un plaisir de vous aider de toutes les manières possibles. Encore une fois, bienvenue dans les bases de Python pour les professionnels de la cybersécurité. J'espère que vous trouverez ce cours très instructif et très utile. J'espère sincèrement qu' à la fin de ce cours, vous aurez appris à programmer avec Python. Merci donc encore une fois de inscription. Et maintenant, commençons. 3. Note importante pour travailler avec Python on: Avant de commencer le cours proprement dit , je dois attirer votre attention sur un point. C'est très, très important. En ce qui concerne l' application que j'ai utilisée pour créer ce cours en particulier, cette application a été rechargée, d'accord ? Replt est cette plate-forme sur laquelle vous pouvez écrire et travailler avec n'importe quel type de code à partir de n'importe quel langage de programmation Et bien sûr, Python fonctionne très, très bien sur Replate. J'ai donc initialement utilisé replate pour créer le cours. Ainsi, tout au long de ce cours, tout le code avec lequel je vais travailler sera écrit sur la plateforme de replet J'ai choisi p parce qu'il répondait à trois critères principaux. Tout d'abord, son utilisation était gratuite. La deuxième est qu'il est assez facile à utiliser. Et puis, troisièmement, c'est une plate-forme assez puissante qui peut exécuter à peu près n'importe quel type de code. Malheureusement, au cours des derniers mois, ils ont apporté de très grands changements à la plate-forme utilisateur. Plus précisément, ils l'ont fait parce qu'ils voulaient intégrer l' IA, ce qui est compréhensible. Bien sûr, nous vivons à l'ère de l'IA, et toutes ces plateformes veulent paraître très modernes et, vous savez, la meilleure solution et l'un des moyens d'y parvenir sont simplement d'intégrer l' IA, ce qui est très bien. Mais le but de ce cours est de vous enseigner les fondamentaux et les bases de Python. Nous n'avons donc pas encore besoin de l'aide de l'IA. L'IA est fantastique une fois que vous avez déjà appris à travailler avec Python. Et puis, bien sûr, vous pouvez utiliser l'IA pour vous aider. Mais comme nous apprenons Python pour la toute première fois en tant que débutant complet, cela ne marchera pas pour nous. Donc, ce que j'ai fait, c'est que je vais vous montrer deux autres alternatives pour exécuter votre code Python sur votre ordinateur. Encore une fois, ne vous inquiétez pas, comme je l'ai dit plus tôt, dans ce cours, tout le code que j'écris sera sur plt, mais vous allez écrire votre propre code soit sur Thonny, soit sur du code Visual Studio C'est le code qui compte, d'accord ? La plateforme sur laquelle vous écrivez le code n'est pas la chose la plus importante, d'accord ? Il existe tellement d'autres plateformes. Le plus important, c'est le code. Donc, au lieu de plt, d'accord, je vais vous montrer comment travailler avec Thonny, ce qui serait en fait l'option que je vous recommande car elle est extrêmement facile à installer et à utiliser Il est également gratuit, et il est disponible pour Mac, pour Linux pour Windows. Je vais donc vous montrer comment installer puis travailler avec Thonny Maintenant, si pour une raison ou une autre, Thonny ne fonctionne pas pour vous, vous n'aimez pas Thonny, je vais vous proposer une alternative qui sera bien sûr Visual Studio Code, qui est bien plus puissant que Thonny, mais aussi un peu Maintenant, juste pour vous faire savoir, pour travailler avec Visual Studio Code, si vous voulez suivre cette voie, nous devrons d' abord installer Python avant de pouvoir travailler avec Visual Studio Code. Si vous travaillez avec Thonny, vous n'avez pas besoin d'installer Python sur votre ordinateur. Encore une fois, ne vous inquiétez pas. Je vais tout vous expliquer, d'accord ? Tout d'abord, dans la vidéo suivante, je vais vous montrer comment installer et travailler avec Thonny Ensuite, la vidéo suivante expliquera comment installer et utiliser Visual Studio Code. Bien entendu, je vais également vous montrer comment télécharger et installer Python sur votre ordinateur. Je m'excuse donc pour cette petite confusion. Encore une fois, je ne savais pas quand j'ai créé ce cours au départ. Je ne savais pas que nous allions procéder à une refonte complète de l'interface utilisateur avec le plus grand nombre de personnes procéder à une refonte complète de l'interface utilisateur avec le plus grand nombre de Je m'en excuse donc. Mais j'espère que, si je vous donne des alternatives, deux alternatives différentes compenseront le problème. Donc, si vous avez des questions ou des préoccupations, hésitez pas à me contacter. Je me ferai un plaisir de vous aider. Vous pouvez soit utiliser la fonction de messagerie la plateforme sur laquelle vous suivez ce cours, soit me contacter à Alex sur labsyba.com C'est mon e-mail. Vous pouvez me contacter pour me demander de l' aide ou des questions, part de vos préoccupations, de tout ce que vous voulez savoir ou pour quoi vous avez besoin d'aide, mais il vous fera plaisir de vous aider. Je vous remercie donc de l' attention que vous portez à cette question. Et maintenant, laissez-moi vous montrer comment télécharger, installer et utiliser l'application Thonny 4. Comment utiliser Tonny: Je vais donc vous montrer comment installer et utiliser Thonny. C'est probablement l'interface utilisateur la plus simple, et elle est parfaite, surtout si vous débutez dans le monde de Python. Donc, tout ce que vous avez à faire est d' aller sur thorny.org, non ? Et puis, ici, vous pouvez télécharger la version pour le système ouvert sur lequel vous travaillez. Nous avons pour Windows, nous avons pour Mac, Linux. Assurez-vous donc d' installer ou de télécharger la bonne version. J'ai déjà téléchargé mien, alors laissez-moi venir ici et je vais ouvrir l' application pour qu'elle fonctionne, d'accord ? Et je vais dire installer pour moi uniquement, puis cliquer sur Suivant. J'accepte le contrat, cliquez sur suivant, cliquez sur suivant. Nous pouvons créer une icône de bureau, cliquer sur Suivant, Installer. Alors voilà. Et c'est simplement comme ça que vous pouvez installer Thonny sur votre ordinateur. Maintenant, laissez-moi vous montrer exactement comment utiliser cette application. C'est très, très facile. Attendons qu'il soit installé. OK, c'est installé. Je vais cliquer sur Terminer. Maintenant, je vais lancer le programme. Et c'est vrai, donc je suis sur mon bureau. C'est le raccourci. Je vais donc aller de l' avant et diriger Thonny. Et ici, bien sûr, vous pouvez modifier la langue, les paramètres initiaux, etc. Je vais juste les garder tels quels. Cliquez sur Allons-y. Et voilà. Voici donc essentiellement l'interface pour Thonny. Encore une fois, c'est très, très facile. Maintenant, à titre d'exemple très, très rapide, permettez-moi de vous montrer comment cela fonctionnerait. Je vais continuer, d'accord, et taper en caractères imprimés entre crochets, puis un programme très, très simple, bonjour tout le monde. D'accord. Et maintenant, je vais exécuter ce code en particulier en cliquant sur le bouton Exécuter ici ou vous pouvez appuyer sur la touche F cinq de votre clavier. Je vais cliquer là-dedans. Et puis ici, vous pouvez voir que c' est le résultat de mon code. Vous pouvez donc, bien entendu, modifier l'apparence de l' interface. Vous pouvez faire glisser la fenêtre du shell un peu plus haut si vous le souhaitez. Et vous pouvez également venir ici pour les outils. OK, tu peux aller dans les options. Et puis, si vous le vouliez, vous pourriez accéder au thème et à la police, et vous pourriez changer de thème, n'est-ce pas ? Donc, personnellement, j'aime toujours opter pour le thème sombre. Mais bien sûr, c'est totalement subjectif. Si vous préférez le thème de la lumière, vous pouvez vous en tenir à cela. Mais je vais opter pour le thème sombre. Et bien sûr, vous pouvez également modifier la taille de police, la famille de polices de votre texte. Si tu préfères, tu peux le faire ici, et c'est tout. Donc, si je voulais enregistrer ce fichier en particulier , il me suffit de cliquer sur le bouton Enregistrer ici. Ensuite, il me suffit de taper le nom de ce fichier, et je vais l'appeler un exemple, d'accord ? Et c'est tout. Il va donc l'enregistrer automatiquement sous forme de fichier Python. Et laissez-moi l'enregistrer sur mon bureau. Et je vais continuer tout de suite, cliquez sur Enregistrer. Et voilà, l'exemple sur PY est maintenant le fichier Python. Et bien sûr, je pourrais également créer un nouveau fichier en cliquant simplement sur le bouton « Nouveau » de l'éditeur. Et là encore, j'ai une nouvelle fenêtre pour le nouveau code, et c'est à peu près tout. Il s'agit donc d'une interface très, très simple pour exécuter du code Python. Une question que vous pourriez vous poser ici est la suivante : est-il possible de placer la fenêtre shell sur le côté droit de la fenêtre principale ? Malheureusement, au moment où j'ai enregistré cette vidéo, non, ce n'est pas possible. Je dirais donc que c'est probablement le seul inconvénient. D'accord, mais ce n'est pas vraiment un gros problème. Thonny, encore une fois, est extrêmement facile. Je vais exécuter la grande majorité du code Python, et vous ne devriez pas avoir de problèmes avec cette application en particulier. C'est donc à peu près ainsi l'on fonctionne avec l'application Thonny Merci d'avoir regardé. Je te verrai au prochain cours. 5. Comment travailler avec le code Visual Studio: Montrez comment installer le code Visual Studio. Maintenant, le truc avec Visual Studio Code , c'est que pour pouvoir l'utiliser, vous devez d'abord installer Python sur votre ordinateur. Donc, tout d'abord, allez sur python.org, et vous pouvez vous rendre ici pour télécharger et trouver la version pour votre ordinateur Je suis sous Windows, donc je vais juste utiliser le Python 3.140 Et je vais commencer tout de suite et simplement enregistrer l'application. Il est installé. Alors ici, je vais l'ouvrir et simplement l'installer. Maintenant, c'est très, très, très important, d'accord ? Dans cette première fenêtre, veuillez cocher ces deux cases, d'accord ? Utilisez donc les privilèges d'administrateur lors de l'installation de pi point X. Et surtout le chemin add python.x2 OK ? Vous devez cocher ces deux cases, et maintenant je vais cliquer sur Installer maintenant, puis sur S, et c'est à peu près tout ce que vous devez faire. Lors de l'installation de Python sur votre ordinateur. Je vais juste attendre que cela s'installe. Ça ne devrait pas prendre trop de temps, et voilà. OK, je vais donc cliquer sur Fermer. Vous pouvez maintenant accéder au code de Visual Studio sur Visual studio.com Vous trouverez ici les différentes versions de Visual Studio Code. Nous avons pour Windows, nous avons pour Mac. Et bien sûr, nous en avons aussi pour Linux. Maintenant, j'ai déjà téléchargé l'application Visual Studio Code, elle se trouve donc ici. Je vais donc commencer tout de suite et l'installer. Je vais donc accepter l'accord. Cliquez sur Suivant et, bien sûr, créez une icône de bureau. Je vais cocher cette case, cliquer sur Suivant, puis sur Installer. Et voilà. Encore une fois, l'installation ne devrait pas prendre trop de temps, généralement quelques secondes. Et voilà, OK, donc je vais y aller tout de suite, cliquer sur Terminer, et automatiquement, il devrait se lancer ici. OK, donc c'est peut-être la toute première chose que vous verrez. Si vous voyez d'autres fenêtres, je pense que dans la plupart des cas, c'est parce que j'ai déjà installé Visual Studio Code auparavant. Normalement, lorsque vous l'installez pour la toute première fois, vous devriez voir une fenêtre AI ou quelque chose comme ça. Il suffit de le fermer. Si vous avez une autre fenêtre ici, vous pouvez simplement cliquer sur Don ou Sortir de la fenêtre, n'est-ce C'est tout simplement ce que nous recherchons. On cherche, genre, une fenêtre blanche ici. OK ? C'est le point de départ. Donc, la première chose à faire est passer ici à vos extensions, et vous voulez installer les extensions Python qui se trouveront ici, Python. Je vais donc continuer tout de suite, cliquez sur Installer. Et voilà. Il va donc être installé. Cela ne devrait pas prendre trop de temps, juste quelques secondes, et voilà. Il a donc été installé avec succès. Encore une fois, je vais continuer tout de suite, fermer cette fenêtre, non ? Et maintenant, si je voulais exécuter un code Python, tout ce que je veux faire est d' aller ici dans File. OK, je peux cliquer sur Nouveau fichier. Et comme nous venons d' installer l'extension Python, nous avons maintenant le lien vers le fichier Python ici. Je vais donc cliquer dessus, et maintenant vérifier ça, d'accord ? Je vais taper le code d'impression très simple. Bonjour tout le monde. OK ? Maintenant, je vais continuer et cliquer sur ce bouton pour lancer le fichier. Cependant, comme c'est la toute première fois que nous exécutons ce fichier, nous ne l'avons pas encore enregistré. Nous devons d' abord le sauvegarder, d'accord ? Nous devons lui donner un nom. Je vais donc appeler celui-ci simplement un test, d'accord ? Pour tester, cliquez sur Enregistrer. Et maintenant, vous pouvez voir que c'est le point de test PY. OK, donc ici en bas, non ? C'est le terminal et vous pourriez avoir une sorte de message d'erreur vous disant  : « Oh, nous ne pouvons pas ouvrir ce fichier, vous savez, peu importe ». C'est bon. Il vous suffit de revenir en arrière et de cliquer sur le fichier Run Python. Et maintenant, vous pouvez voir que cela fonctionne réellement. Il fonctionne. Ici vous pouvez voir Hello World. En fait, permettez-moi d' ajouter une autre ligne juste pour le prouver. Je vais donc imprimer bonjour et je vais dire que j'aime le code VS. Bien, allons-y, relançons le programme. Et maintenant, vous pouvez voir qu'il est écrit « Bonjour tout le monde », j'aime le code VS. Donc, là-haut, vous aurez votre fenêtre principale dans laquelle vous allez écrire votre code, votre interface d'éditeur, puis votre terminal. Cependant, nous pouvons modifier l' apparence de l'interface. Une chose que j'aime faire d'habitude, d'accord, serait d'aller ici, afin que nous puissions activer/désactiver la barre latérale principale Je vais le désactiver, supprimer la barre latérale principale, pour que l'interface utilisateur occupe maintenant toute la fenêtre Cependant, juste en bas du terminal, je vais cliquer avec le bouton droit de la souris et dire déplacer vers, puis je vais le déplacer vers la barre latérale secondaire. C'est juste ma préférence personnelle. J'aime avoir le terminal à droite de ma fenêtre principale, d'accord ? Cependant, bien sûr, si vous préférez l'avoir sous votre fenêtre principale, c'est parfaitement bien. C'est totalement subjectif. Mais c'est comme ça que je l'aime. Alors voilà. Voici comment vous pouvez exécuter votre code à l'aide de VS Studio. Encore une fois, vous aurez des options ici si vous le souhaitez. Vous pouvez accéder ici à Fichier, créer un nouveau fichier. Vous pouvez ouvrir n'importe quel fichier Python que vous avez enregistré. Vous pouvez accéder aux préférences ici. Vous pouvez passer ici aux thèmes, puis bien sûr, vous pouvez changer le thème des couleurs. Tu peux choisir Kimb Dark ou, tu sais, changer l'apparence Cela dépend entièrement de vous. Mais c'est ainsi que vous pouvez travailler avec le VS dans l'application Visual Studio Code. C'est un peu plus compliqué que Thonny, mais il est bien sûr plus puissant C'est donc à vous de choisir l'une de ces deux applications que vous préférez Vous pouvez choisir celle avec laquelle vous souhaitez travailler. Merci donc d'avoir regardé, et je vous verrai au prochain cours. 6. Hello World: OK, maintenant que Thonny est prêt, ou peut-être que vous utilisez Visual Studio Code. Peu importe. Il est temps pour nous d'écrire notre tout premier programme. Et ce programme sera un programme très simple qui imprimera les mots « Bonjour tout le monde ». D'accord ? Alors regarde ça, d'accord ? Je vais dire imprimer, espace puis crochets entre guillemets doubles. Bonjour tout le monde. OK. Ensuite, je vais cliquer sur le bouton Exécuter. Et voilà Hello World. Tout, tout premier programme avec Python. Maintenant, je vais vous expliquer tout cela. voyez, en Python ou, en fait, dans n'importe quel langage de programmation, vous aurez toujours des fonctions intégrées qui feront quelque chose pour vous Dans ce cas, print est une fonction intégrée qui a déjà été codée en Python Donc, lorsque vous utilisez cette fonction print, Python sait que, oh, d'accord, vous voulez afficher quelque chose, n'est-ce pas ? C'est donc ce que fait Print. Et maintenant, chaque fois que vous voulez imprimer du texte, vous devez toujours le mettre entre guillemets doubles. Eh bien, en fait, il arrive parfois que vous n'ayez pas nécessairement besoin de guillemets doubles. Nous allons y arriver. Ne t'inquiète pas. Mais dans la plupart des cas, pour faire preuve de prudence, vous devez placer le texte entre guillemets doubles. Maintenant, si je devais supprimer les guillemets et exécuter le programme, vous voyez maintenant que nous finissons par avoir un problème. C'est une erreur de syntaxe car à l'heure actuelle, Python ne comprend pas ce qui se passe. Où sont les guillemets ? De plus, vous devez avoir votre texte entre crochets. Donc, si je devais ajouter les guillemets doubles ici, sans les crochets, essayons de relancer le programme et de voir ce qui se passe. Et puis, encore une fois, vous pouvez voir qu'en ce moment, cela indique toujours qu'il manque la parenthèse Ainsi, lorsqu'il s'agit d'exécuter certains types de fonctions, vous devez suivre certaines règles . Ainsi, dans le cas de l'impression de texte, vous devez les placer entre parenthèses et entre guillemets doubles Donc, encore une fois, je vais lancer le programme, et le voilà. Bonjour tout le monde fonctionne. Je vais commencer tout de suite et fermer l'assistant. Et voilà. OK. Passons à autre chose. Rendons cela un peu plus intéressant. Et si je voulais imprimer Hello World, disons, cinq fois, non ? Maintenant, évidemment, je pourrais simplement copier, d'accord ? Nouvelle ligne de texte, collez, collez, cinq fois, d'accord ? Maintenant, si je participais au programme, voilà. Bonjour tout le monde, bonjour le monde, bonjour le monde, bonjour le monde. Mais regarde ça. Laisse-moi plutôt essayer d'imprimer deux fois. Et au lieu de les placer sur des lignes différentes, laissez-moi les mettre exactement sur la même ligne. Nous avons donc imprimé Hello World, imprimé Hello World, lancé, et maintenant nous avons un problème. Le problème que nous avons ici est le suivant : « Hé, qu'est-ce qui se passe ? Python ne comprend pas quand vous avez plusieurs fonctions exactement sur la même ligne. Et c'est en quelque sorte universel avec tous les langages de programmation, d'accord ? Chaque fois que vous appelez plusieurs fonctions, vous devez les placer sur des lignes distinctes. C'est le moyen idéal pour écrire du code. Parce que si j'y pense, d'accord, si vous démarrez ou si le programme vous autorisait, le langage vous permettait d'exécuter plusieurs fonctions exactement sur les mêmes lignes et tout ça. Votre code peut finir par devenir très, très difficile à lire, en particulier pour les autres développeurs. Ainsi, lorsque vous l'avez sur des lignes séparées, il devient plus propre, plus présentable Et surtout, votre langage de programmation, dans ce cas Python, comprendra ce qu'ils essaient de faire. OK, il y a une autre chose dont tu dois être consciente. Maintenant, je vais rendre les choses un peu compliquées. Ce que je vais faire ici, c'est créer ce que l'on appelle une variable, d'accord ? Dans ce cas, je vais appeler ma variable text. Égal. Et maintenant, dans ce cas, bonjour tout le monde. Le texte est donc une variable. Une variable. Vous pouvez considérer une variable comme quelque chose qui stockera un type particulier de valeur, d'accord ? Il n'est pas toujours nécessaire que ce soit du texte, il peut s'agir de chiffres. Cela peut être n'importe quoi. Dans ce cas, pour le moment, c'est un texto. C'est un bout de texte qui dit bonjour à tout le monde. Le texte variable a donc la valeur hello world. Maintenant, si je venais ici et que je disais, imprimez le texte entre parenthèses Que pensez-vous qu' il va se passer ? Eh bien, ça va dire bonjour tout le monde, parce que nous avons assigné à la variable text la valeur hello world. Mais remarquez que nous ne l'avions pas entre guillemets. C'est parce que nous disons à Python que, Hey, Python, nous voulons que vous imprimiez la valeur du texte variable. Si je suis venu ici et que j'ai plutôt attribué les guillemets doubles au texte, que pensez-vous qu'il va imprimer ? Eh bien, il va imprimer du texte. OK ? Ainsi, chaque fois que vous souhaitez imprimer les valeurs de vos variables, vous n'avez pas besoin de les encapsuler entre guillemets doubles Je vais donc y aller. heure actuelle, supprimez les guillemets, relancez le programme et laissez-le fonctionner Hello world. Il est donc évident que nous allons approfondir ces fonctions variables et autres choses de ce genre Mais je voulais juste vous donner un tout petit aperçu de ce à quoi vous attendre et, bien sûr, vous permettre d'écrire votre tout premier programme en Python fur et à mesure que nous progresserons dans le cours, vous commencerez à en apprendre un peu plus sur les règles de programmation Python, lesquelles vous devez encapsuler votre texte entre guillemets, sur les cas dans lesquels vous devez utiliser des guillemets, etc. Nous allons aller beaucoup plus loin. Mais c'est tout pour écrire notre tout premier programme. Merci d'avoir regardé. Je te verrai au prochain cours. 7. Introduction à la section Types de données: Bienvenue officiellement dans la toute première section principale du cours de Python lui-même. Et ici, nous allons parler de variables et de types de données. Écoutez, je vous garantis que quel que soit le langage de programmation que vous essayez d'apprendre, ce sera généralement la toute première section, car au cœur de chaque programme, qu'il soit basique ou avancé, il tournera autour de certaines données, qu'il s'agisse de chaînes ou d'entiers, vous allez avoir des données impliquées dans chaque Dans cette section, nous allons donc parler des différents types de données disponibles. Nous allons également parler des opérations d'intimidation. Supposons, par exemple, que vous vouliez dire que quelque chose n'est pas vrai ou quelque chose est faux, des choses comme ça. Et puis, bien sûr, les opérateurs arithmétiques, d'accord ? Comment additionner, soustraire, multiplier, vider en Python, mathématiques de base, nous allons apprendre tout cela dans cette section Ensuite, bien sûr, à la fin de la section, il y aura un exercice de codage que je voudrais que vous essayiez. Donne-le à tous. Ne t'inquiète pas. Si vous ne parvenez pas à le résoudre, je vous fournirai également la solution. Félicitations. Nous sommes sur le point de commencer notre voyage dans le monde de Python. Commençons. 8. Travailler avec des cordes: Eh bien, bon retour. Passons maintenant un peu plus de temps à parler des chaînes de caractères. Jusqu'à présent, nous avons travaillé avec la chaîne hello world, et j'ai dit que chaque fois que vous enveloppez votre texte, vous devez généralement utiliser des guillemets doubles. Cependant, ce n'est pas toujours vrai. Par défaut, le texte est placé entre guillemets doubles. Cependant, vous pouvez réellement vous en tirer en utilisant des guillemets simples. Alors permettez-moi d'aller ici tout de suite et de le modifier. J'utilise des guillemets simples. J'appuie sur Exécuter, et vous pouvez voir que cela fonctionne parfaitement. Il n'est donc pas toujours nécessaire d' utiliser des guillemets doubles. La question naturelle que vous pourriez vous poser ici est, d'accord, alors quand utilisons-nous le single ? Quand utilise-t-on le double ? Est-ce que c'est vraiment important ? Dans la plupart des cas, cela dépend vraiment de vos préférences personnelles, que vous soyez un utilisateur de devis unique ou un utilisateur de devis doubles. Par défaut, la plupart des programmeurs ont tendance à utiliser les guillemets doubles Et il existe des cas où vous pourriez même utiliser les deux dans la même chaîne. Par exemple, et si je voulais dire quelque chose comme s'il avait dit « bonjour », non ? Alors permettez-moi d'aller ici tout de suite et dire qu'il a dit Kremer Et je vais te dire bonjour. Comment pourrions-nous l' imprimer avec succès ? Parce que si nous cliquons sur Exécuter maintenant, cela va nous donner un message d'erreur, d'accord ? Nous devons mettre ces textes, ces lettres entre guillemets. Mais comment s'y prendre ? Eh bien, nous pourrions le faire. Je pourrais aller ici tout de suite, ajouter un seul arc de guillemets. Oh, désolée, il doit être à l'intérieur. Donc, les guillemets simples sont d'abord, d'accord ? Et maintenant, pour ce qui est des mots qu'il a dit bonjour, je vais utiliser les guillemets doubles pour mettre exactement le mot bonjour lui-même. Et puis chaque fois que c'est assez courant dans les langages de programmation, d'accord ? Chaque fois que vous avez un guillemet d'ouverture, vous souhaitez également avoir un guillemet de fermeture. Je vais donc ajouter le guillemet simple ici. Et maintenant, si je clique sur Exécuter, vous pouvez voir maintenant que cela fonctionne réellement. Nous pourrions faire exactement le contraire. Je pourrais commencer par un double guillemet, d'accord ? Et puis je vais venir ici tout de suite, bonjour  » entre guillemets simples puis sur les guillemets doubles fermants, courir, et vous verrez que cela fonctionne parfaitement bien. Mais que se passerait-il si je voulais de très longues cordes, non ? J'ai donc mon Ipsum generto ici. Alors laisse-moi juste prendre ce premier paragraphe ici, d'accord ? Copie, viens ici. Maintenant, je pourrais tout emballer aussi grand que possible à l'intérieur du maximum entre guillemets doubles, cliquer sur Exécuter, et tout fonctionnera parfaitement bien. Mais que se passerait-il si je voulais vraiment créer de l'espace, et donc, par exemple, avoir de l'espace ici ? Je viens ici maintenant et j'ajoute de l'espace, non ? Maintenant, tout est un peu désorganisé. Je clique sur Exécuter, et maintenant nous allons avoir un message en forme de flèche. Cela ne fonctionne plus car Python ne peut pas comprendre l'espace entre les lignes de texte. C'est donc là que les guillemets triples entreront en jeu. Alors regarde ça, d'accord. Je vais en ajouter un, deux, trois. D'accord. Oups, désolée pour ça. Ça fait trois. D'accord. Et bien sûr, je vais venir ici tout de suite et ajouter les trois derniers guillemets. Et maintenant, si je clique sur Exécuter et que le tour est joué, vous pouvez voir que cela fonctionne réellement. Il existe donc certains cas où vous souhaiterez peut-être utiliser des guillemets triples si vous avez un type d'espacement très spécifique Il est également généralement utilisé pour, par exemple, la documentation, l'écriture de lignes de code, des choses comme ça. C'est là que vous utiliseriez le triple guillemet. Maintenant, nous pouvons également combiner des chaînes de caractères. C'est bon. Donc, à titre d'exemple, laissez-moi vous montrer rapidement, laissez-moi créer une nouvelle variable ici et dire X, d'accord ? Égale, puis entre guillemets doubles, je vais dire bonjour. D'accord ? Ensuite, je pourrais créer une deuxième variable Y égale le monde. D'accord. Et maintenant, si je voulais combiner les deux, je pourrais dire imprimer entre parenthèses, très simplement, X plus Y. Maintenant, si je clique sur Exécuter, c'est parti Bonjour tout le monde. Mais si nous voulions ajouter un espace entre hello et world, tout ce que je peux faire, c'est soit ajouter l'espace dans Hello ici. J'ai donc ajouté l'espace après le O, cliquez sur Exécuter. Vous avez Hello World, ou je pourrais faire le contraire en ajoutant simplement un espace au début de W, cliquant sur Exécuter, et voilà, vous obtenez exactement le même résultat. Maintenant, rendons cela un peu plus sophistiqué. Ce programme est juste un peu plus sophistiqué. Je vais vous présenter une nouvelle fonction appelée input. Jusqu'à présent, nous avons travaillé avec l'impression. Permettez-moi maintenant de vous présenter votre contribution. Donc, la saisie est essentiellement une fonction qui demandera à l'utilisateur de fournir quelque chose, d'accord ? Je vais donc parler d'entrée. Et puis, entre parenthèses, je vais dire quelque chose, s'il vous plaît. D'accord. Donc, si je cours, oh, désolée pour ça. Si je lance la commande, vous pouvez dire tout de suite que vous dites quelque chose, s'il vous plaît, et maintenant si je dis, Bonjour, je m'appelle Alex et j'appuie sur Entrée, rien ne se passe, d'accord ? Parce que notre programme ne fait que demander à l'utilisateur de dire quelque chose, et c'est tout. Cela ne changera rien à ce que l'utilisateur a réellement dit. Donc, pour que cela soit un peu plus avancé, je vais y retourner. D'accord. Supprimons cela et créons une nouvelle variable. Je parlerai de la réponse de l'utilisateur. Ce sera le nom de ma variable. Et au fait, permettez-moi de dire quelque chose très rapidement. C'est une bonne étiquette, une bonne étiquette de programmation. Chaque fois que vous créez des noms pour vos variables ou vos fonctions et que vous combinez deux mots, dans ce cas, en ce moment, je combine utilisateur et réponse. Le deuxième mot, la première lettre, doit généralement être en majuscules. C'est pourquoi le R pour réponse est ici en majuscule. Je dis juste, d'accord ? Alors gardez cela à l'esprit. Donc, utilisez une réponse égale, d'accord ? Et je vais parler de contribution. Et maintenant, entre parenthèses, je vais dire quelque chose, s'il vous plaît. D'accord ? Cependant, je vais venir ici. Je vais maintenant utiliser la fonction d'impression entre crochets, je vais dire réponse de l'utilisateur. C'est ça. C'est assez simple. Je vais commencer tout de suite, exécuter la commande. Il dit, dites quelque chose s'il vous plaît, donc je vais dire que je m'appelle Alex. Appuyez sur Entrée, et c'est parti. Maintenant, ça veut dire que je m'appelle Alex. vous avons donc présenté avec succès une nouvelle fonction, à savoir les entrées qui demanderont à l'utilisateur de fournir quelque chose. Nous avons expliqué comment utiliser le maximum entre guillemets simples, le maximum entre guillemets doubles, ainsi que les guillemets triples. Je vous ai également montré comment combiner des chaînes en créant plusieurs variables et en utilisant simplement l'opérateur plus pour les combiner. Donc, petit à petit, nous maîtrisons mieux en mieux Python et les chaînes de caractères. Merci donc d'avoir regardé la vidéo, et bien sûr, je vous verrai au prochain cours. 9. Autres types de variables: Examinons maintenant une autre forme de type de données. Jusqu'à présent, nous avons travaillé avec des cordes, non ? Mais examinons maintenant les virgules flottantes et les nombres entiers, également appelés simplement nombres. C'est bon. Alors allons-y, supprimons ce programme, et permettez-moi tout d'abord de créer une variable X égale à quatre. OK ? Et alors Y est égal, disons, à 6,0. Maintenant, la différence évidente entre les deux est que X n'a pas de point décimal Pourquoi Y a-t-il le 6.0 ? D'accord ? En fait, permettez-moi de rendre cela un peu plus raisonnable. Passons à la version 6.3, juste à titre d'exemple, non ? Donc, y, dans ce cas, serait une virgule flottante car il a une virgule décimale, tandis que quatre sera le nombre entier Donc, si je continuais tout de suite, que j'imprimais X plus Y et que je lançais mon programme. Vous pouvez voir que nous allons obtenir le numéro 10.3. C'est assez simple, non ? Cependant, nous pourrions faire certaines choses comme , par exemple, si vous vouliez convertir 10,3 en tant que nombre flottant, si vous vouliez le convertir en entier, nous pourrions simplement utiliser une nouvelle fonction appelée fonction entier Donc, ce que je vais faire ici c'est à l'intérieur de ce premier support, je vais ouvrir un autre support et ajouter INT. D'accord, donc INT, désolé. Je suis désolée pour ça. SI NON. OK, donc INT est une fonction qui représente un entier, non ? Et bien sûr, puisque nous avons ouvert la fonction entière, nous allons également devoir la fermer. Permettez-moi donc d'ajouter le support de fermeture. Et maintenant, si je devais exécuter mon programme, vous pouvez voir qu'il a converti 10,3 en dix à cause de la fonction INT integer C'est la première fois que nous ajoutons une fonction à l'intérieur d' une autre fonction. Nous avons d'abord la fonction d'impression, puis à l'intérieur de la fonction d'impression, nous avons la fonction entier. C'est donc une chose dont vous devez être conscient lorsqu'il s'agit de programmer en Python. Vous pouvez avoir une fonction à l'intérieur d'une autre fonction, et en fait, vous pouvez avoir trois ou quatre fonctions les unes au lieu des autres, condition que la hiérarchie soit correcte. Dans ce cas, pour le moment, je ne peux pas faire entrer la fonction entière en premier puis l'imprimer. En fait, tu sais quoi ? Essayons-le, d'accord ? Pourquoi pas ? Je vais y aller tout de suite. Imprimez, d'accord ? Et ensuite INT, d'accord, que va-t-il se passer ? Que va-t-il se passer ? Je vais cliquer sur Exécuter. Et voilà. Donc, même si c'est plutôt bien, ça n'a pas vraiment marché. Je veux dire, nous avons obtenu le X plus Y. La bonne réponse est 10,3 Mais malheureusement, il n'a pas converti les résultats en un entier réel. Python a donc ignoré la toute première partie, qui est la fonction entière puis a simplement dit : OK, imprime X plus Y. Et puis, bien sûr, il nous a dit qu' il y avait une sorte de problème de syntaxe Il faut donc faire attention chaque fois que vous essayez d' ajouter des fonctions à l'intérieur d'une autre fonction, il doit y avoir une hiérarchie et elle doit être correcte. Inversons donc cette course à nouveau, et voilà. De même, si je voulais convertir les résultats en un nombre flottant, je pourrais le faire également. Donc, par exemple, n'est-ce pas, si je change le Y ici en cinq, n'est-ce pas ? Mais au lieu de neuf, ce qui serait la réponse évidente ici, je voulais que ce soit 9.0. Je vais changer la fonction entière ici en float. C'est donc le contraire, non ? Alors jetez un œil à ceci. Je vais cliquer sur Exécuter, et voilà. Il est désormais 9.0. Vous savez, il y a de fortes chances que vous n'ayez pas besoin d' utiliser la fonction integer ou float dans vos programmes. Tout dépend du type de programme que vous allez créer. Néanmoins, il est important de comprendre ces concepts que vous pouvez ajouter. Vous pouvez convertir un type de données en un autre, et vous pouvez également avoir une fonction dans une autre. Merci donc d'avoir regardé. Je te verrai au prochain cours. 10. Opérateurs booléens à jour: Un autre type de données que vous devez connaître est celui des opérations Bian ou des valeurs booléennes En général, il y en aura deux. Vous avez le vrai ou le faux, et cela dépendra en grande partie du résultat de certains types d'opérations. Maintenant, par exemple, ici, j'ai la variable X égale cinq, la variable Y égale dix. Maintenant, j'ai ma toute première fonction d'impression qui dit que X est égal à Y. La seconde est que X est inférieur à Y. Donc, avec les bollans, vous avez soit vrai, soit faux À votre avis, quelle serait la réponse pour la toute première impression ? Eh bien, la réponse serait évidemment fausse parce que cinq n'est pas égal à dix, tandis que la seconde devrait être vraie parce que X est, en fait, inférieur à Y. Donc, si je lance ce programme, vous pouvez voir que nous avons le faux et le vrai ce que nous appelons les valeurs de Bollan ou les opérateurs de Bollan, et nous les utilisons généralement chaque fois que nous essayons de créer des boucles ou des instructions conditionnelles créer des boucles Ne t'inquiète pas. Nous allons en parler dans la section suivante. Mais en général, nous pouvons vouloir écrire un programme qui vérifie si quelque chose s'est produit, puis si cela s' est produit, c'est-à-dire, si c'est vrai, alors faites quelque chose. Ou nous pouvons aussi dire, si cela ne s'est pas produit, donc, si c'est faux, alors faites autre chose. Nous allons donc utiliser les opérateurs et les valeurs bullan un peu plus tard, mais le truc avec les valeurs et les opérations booléennes, c' est qu'elles fonctionnent avec opérateurs de comparaison tels your equal to less than is equal to », Mais nous avons également ce que nous appelons les opérateurs logiques. Les opérateurs logiques seraient des choses comme N ou non. Donc, à titre d'exemple, permettez-moi de vous donner un autre programme ici. Permettez-moi tout d'abord de dire que A est égal à vrai. OK ? Et alors B est égal à faux. Au fait, veuillez noter que le vrai et le faux ne sont pas des chaînes de caractères. Et ce ne sont pas des chaînes parce que vous pouvez voir qu'avec le vrai, cela commence par un T majuscule, et avec le faux, cela commence par le F. Donc Python sait automatiquement que, accord, vous avez affaire à des lingots ici Donc, si je voulais écrire ici une fonction d'impression qui dise quelque chose comme, disons, A et B, laissez-moi en écrire une autre, imprimer. Disons A ou B, puis à la dernière impression je vais dire nota A. Quelles seront, selon vous, les réponses aux trois Généralement, chaque fois que vous utilisez les opérateurs logiques et que vous comparez deux valeurs ou plus, elles doivent toutes être vraies chaque fois que vous utilisez l'instruction and. Si l'une d'elles est fausse, alors la réponse sera fausse, d'accord ? C'est le contraire avec. Donc, si vous dites vrai ou faux, ce sera vrai. C'est vrai et faux, la réponse sera fausse. Et puis évidemment, pour le dernier point ici, pas A ne sera faux parce que pas A signifie que le contraire du vrai est faux. Donc, si je lance le programme maintenant, vous verrez une fois de plus que A et B vrai et faux seront toujours faux, tandis que vrai ou faux sera vrai alors que A ne sera pas faux. Encore une fois, les opérateurs et les valeurs de Bollin fonctionnent également avec des opérateurs logiques, tels que votre ou non Et, bien entendu, vos opérateurs de comparaison tels que votre égal à ne sont pas inférieurs à, supérieurs à, etc. Nous allons donc travailler avec des opérateurs booléens fur et à mesure de notre progression dans le cours. Merci d'avoir regardé. Je te verrai au prochain cours. 11. Mise à jour des opérateurs arithmétiques: Parlons d' autres opérateurs et commençons par les opérations arithmétiques Et ce ne sont que, vous savez, les mathématiques ou les mathématiques de base que nous avons apprises quand nous étions enfants, n'est-ce pas ? Vous avez donc, vous savez, une fois un, deux, deux, trois, plus un, dix, moins sept, ce genre de choses, n'est-ce pas ? Donc, ce que j'ai fait ici, c'est que j'ai attribué la valeur de dix à la variable A et la valeur de trois à la variable B. Et j'ai écrit plusieurs opérations arithmétiques ici Nous avons A plus B, A moins B, A fois B, A divisé par B, A, module B, qui renverra simplement le reste lorsque nous divisons A par B, puis le dernier sera un B exponentiel, qui augmentera la valeur de A par la puissance de B. Alors, quels seront les résultats ici ? Laissez-moi exécuter le programme, et bien sûr, dix plus trois font 13, dix moins trois font sept, dix fois trois font 30, 10/3 feront 3,33 33, puis dix pertes de modèles, trois seront Et bien sûr, dix fois dix fois dix seront égaux à 8 000, non ? OK, donc je pense que vous connaissiez évidemment les réponses à toutes ces opérations. Mais allons plus loin. Je vais le supprimer, d'accord ? Et j'ai d'autres opérations ici. Et le premier est ce que nous appelons un opérateur d'assignation. Vous pouvez le voir juste là, il est écrit « plus égal », n'est-ce pas ? Permettez-moi d'ajouter ces nouvelles lignes, et voilà. D'accord, nous avons donc des plus égaux. Cela signifie simplement que nous allons dire que X est égal à X plus cinq. C'est essentiellement la même chose. Donc, X plus égal à cinq, c'est exactement la même chose que de dire que X est égal à X plus cinq. Ce n'est qu'une forme abrégée d'écriture de ce texte. Alors laissez-moi simplement supprimer ceci. Alors, selon vous, quelle serait la réponse à cette question ? La réponse ici sera évidemment 15 parce que dix plus cinq font 15. Maintenant, tu peux faire le contraire, d'accord ? Vous pouvez dire « moins » puis « égal ». La réponse ici serait évidemment cinq, car dix moins cinq feront cinq. Et vous en avez d'autres, bien sûr, comme la multiplication a, qui nous donnera 50. Et puis il y a aussi la division, qui nous donnera deux, deux points oh. C'est ce que nous appelons les opérateurs d'assignation. Maintenant, je voudrais attirer votre attention sur une dernière chose, et c'est ce que nous appelons la priorité des opérateurs Permettez-moi tout d'abord de supprimer le code , faire glisser vers le haut et de l'imprimer sur une nouvelle ligne. Permettez-moi de copier cette commande et de descendre ici, puis de l'imprimer. Très bien, alors jetez un œil à ça. OK, nous avons deux expressions différentes, d'accord ? Le premier dit : deux plus trois fois quatre. Eh bien, la deuxième , c'est que nous avons un crochet deux plus trois, puis quatre fois. Quels seront, selon vous, les résultats des deux expressions ? Encore une fois, cela pourrait vous rappeler les calculs que vous faisiez à la maternelle ou au primaire. Mais je trouve toujours cela assez fascinant parce qu'ici, nous allons obtenir deux résultats différents. Vous pouvez donc mettre la vidéo en pause et essayer deviner quels seraient les résultats des deux expressions. Si vous avez vos résultats, allons-y dès maintenant et courons. Et le premier ici aura 14 ans tandis que le second en aura 20, pourquoi ? Parce que dans la première expression ici, nous avons deux opérateurs. Nous avons l'opérateur arithmétique plus, puis nous avons la multiplication Python effectuera d' abord la multiplication avant l'addition. Donc trois fois quatre ça va faire 12, 12 plus deux, ça va être égal à 14. Cependant, ici, dans la deuxième expression, il va en fait effectuer l'ajout en premier parce qu'ils sont entre crochets. C'est pourquoi. Donc, sauf erreur de ma part, en général, vous aurez la parenthèse tout en haut des précédents Si vous n'avez pas de parenthèse, il vérifiera l' exponentiation S'il n'y a pas d' exponentiation, on passe à la multiplication, on passe à Je vais passer aux modulos, à l' addition, puis enfin à la soustraction Et puis, dans une expression très complexe, si vous avez des opérateurs de comparaison, ceux-ci viendront ensuite, puis les opérateurs logiques. Mais il n'y a pas besoin d'aller plus loin. Ici, nous avons simplement deux opérateurs principaux. Nous en avons trois. Nous avons la parenthèse, qui aura bien sûr priorité sur la multiplication Donc deux plus trois font cinq, cinq multiplié par quatre égale 20. Encore une fois, c'est ce que nous appelons la priorité des opérateurs Encore une fois, pour être honnête, nous n'allons pas vraiment travailler avec eux dans ce cours, mais vous devez néanmoins en être conscient. Merci d'avoir regardé. Je te verrai au prochain cours. 12. Travailler avec la section des cordes - Introduction: Bienvenue dans la section suivante où nous allons maintenant nous concentrer spécifiquement sur le type de données des chaînes. Je sais que nous avons déjà parlé de cordes. Cependant, nous devons approfondir ce sujet en particulier et pourquoi ? Eh bien, c'est parce que la grande majorité du temps le type de données avec lequel vous allez travailler sera constitué de chaînes. Oui, vous travaillerez avec des entiers et d'autres types de données, mais les chaînes représenteront généralement entre 80 et 90 % des types de données que vous utilisez Dans cette section, nous allons donc aller beaucoup plus loin. Je vais vous montrer comment vous pouvez manipuler des chaînes. Supposons, par exemple, que vous ayez deux morceaux de chaîne, que vous souhaitiez extraire certaines lettres de la chaîne. Vous voulez extraire des lettres de cette autre chaîne, les assembler, des choses comme ça. Tu apprendras à faire de telles choses. Vous allez apprendre comment convertir des chaînes entières en majuscules ou en minuscules, comment les découper et faire bien d'autres choses. Je pense donc que vous allez apprécier cette section. Et aussi, tout comme pour la première section, la fin de cette section, il y aura également un exercice de codage. Essayez donc l'exercice de codage. J'espère que vous serez en mesure de le faire avec succès. Mais si vous ne le pouvez pas, je vais également vous fournir la solution afin que vous puissiez comparer votre code avec le mien. Alors, sans perdre plus de temps, commençons. 13. Manipulation de base des cordes: Vous connaissez déjà les différentes manières d'imprimer vos variables de chaîne. Ce que j'ai sur mon écran ici, que j'ai créé la variable nom d'utilisateur et que je lui ai attribué la valeur de cyber sous forme de chaîne, puis j'ai simplement dit « Imprimer le nom d'utilisateur ». Cela a bien sûr abouti à une impression cybernétique très, très simple, très basique. Et maintenant, à partir de la quatrième ligne, j'ai attribué exactement la même valeur cyber à la variable nom d'utilisateur. Mais notez qu' aux lignes cinq et six, je montre deux manières différentes d'imprimer la variable. J'aurais pu dire : bienvenue dans le monde de la programmation, puis virgule, puis le nom de la variable, qui est, bien sûr, nom d'utilisateur, cyber, et le résultat est le bienvenu dans le monde de la programmation, cyber Et puis, à la sixième ligne, au lieu d'utiliser le signe plus, j'utilise le symbole plus, et c'est ce que nous appelons concaténation chaque fois que vous utilisez le symbole plus, et vous obtenez exactement le Notez toutefois qu'il y a une légère différence d'espacement. Avec le symbole virgule, vous avez tendance à avoir un peu plus d'espacement entre votre chaîne et le nom réel de votre variable Néanmoins, les deux méthodes fonctionnent plutôt bien. Tout est une question de choix. Cependant, laissez-moi vous montrer quelques autres méthodes de base pour manipuler votre chaîne Supposons, par exemple, je voulais imprimer dix fois en ligne, n'est-ce pas ? Au lieu de créer en utilisant le nom cyber, en utilisant le nom cyber, en utilisant le nom cyber dix fois, je pourrais simplement ajouter le symbole astérisque puis dire dix fois Et puis il ne me reste plus qu'à imprimer le nom d'utilisateur. Maintenant, si je dirige le programme, vous pouvez constater que nous avons dix fois plus de cybercybercybercyberattaques. Et si je veux un espace entre mes mots, je peux simplement ajouter un espace entre la lettre R et le code de fermeture. Et si je lance à nouveau le programme, alors vous y allez, nous avons du cybercybercyberespace. C'est ce que nous appelons la répétition, n'est-ce pas ? Une autre fonction que je voulais vous faire connaître concernant les chaînes est la longueur d'une chaîne. Nous pouvons déterminer la longueur d'une chaîne. En d'autres termes, nous pouvons déterminer le nombre de caractères d'une chaîne. Donc, par exemple, ici, si je voulais savoir combien de personnages jouent dans le cyberespace, me suffit de venir ici. Après la fonction d'impression, je peux introduire une autre fonction appelée fonction de longueur, qui est, bien sûr, LN, puis je devrai ajouter ma fermeture, la diviser par là. Et maintenant, si je lance le programme, pouvez-vous deviner quelle en sera la valeur ? La valeur sera de cinq car cyber est composé de cinq caractères et cinq lettres. Maintenant, vous vous demandez peut-être : OK, tout va bien, mais en quoi est-ce pertinent ? Comment appliquer cela dans le monde de la cybersécurité en particulier ? Je suis presque sûr que vous avez déjà vu sur des sites Web où ils vous demandent de vous connecter. Vous commencez à saisir votre mot de passe, mais les caractères réels ne s'affichent pas. Au lieu de cela, il se peut que vous voyiez le symbole du tiret ou le plus souvent, l' astérisque à leur place Nous pouvons utiliser les connaissances que nous avons acquises jusqu' à présent pour créer un scénario similaire. Alors regarde ça, d'accord ? Je vais créer une nouvelle variable dès maintenant et l'appeler password. Et maintenant, ajoutons le mot de passe réel. Je vais dire Swordfish, qui n'est pas vraiment le meilleur mot de passe, mais tant pis Nous allons opter pour l'espadon. Alors maintenant, je veux imprimer sordfsh, pouvoir simplement dire « imprimer un mot de passe Donc, si je lance le programme, il indiquera que c'est de l'espadon, mais nous voulons remplacer chaque lettre de l'espadon par le symbole astérisques Donc, en gros, nous devrions avoir neuf astérisques à la place des lettres elles-mêmes. Alors, que faisons-nous ? Je peux créer une autre variable dès maintenant et l'appeler le mot de passe de soulignement masqué Et maintenant, ce sera égal à quoi ? Je vais ajouter mes codes et maintenant ajouter le symbole astérisque. OK ? Le symbole astérisque, et maintenant multipliez-le à nouveau par la longueur des caractères de notre chaîne de mots de passe Et voilà. Alors maintenant, si je lance le programme, cela ne fonctionne pas. Oh, pardonne-moi. Pour le mot de passe d'impression, nous devons modifier la troisième ligne pour masquer mot de passe, car nous n' imprimons plus le mot de passe. Oups. C'était un peu gênant. OK, donc nous allons imprimer le mot de passe masqué maintenant, et si je lance le programme, c'est parti D'accord, nous avons maintenant neuf symboles astatiques car SetFish lui-même est composé de neuf lettres Et juste pour vous prouver que cela fonctionne vraiment, si j'ajoutais trois autres caractères, des chiffres, dans ce cas 123, et que je recommence, vous pouvez voir que le nombre de symboles astatiques a augmenté de trois Au lieu de neuf, il y en a maintenant 12. C'est ainsi que vous pourriez recréer quelque chose très similaire dans votre programme du monde réel Si vous souhaitez créer un système de mots de passe masqués, vous pouvez utiliser ce type de concepts Merci donc d'avoir regardé la vidéo. Je te verrai au prochain cours. 14. Indexation et découpe des chaînes: Eh bien, bon retour. Parlons maintenant quelques concepts très importants lorsqu'il s'agit de traiter les chaînes de caractères. Nous avons le concept d'indexation. Maintenant, ne vous inquiétez pas, nous parlerons beaucoup plus tard de l' indexation Mais maintenant, permettez-moi de vous faire une brève introduction, non ? Supposons, par exemple, que j'ai mon texte ici , qui parle de cybersécurité. Et si nous voulions spécifiquement, pour une raison ou une autre, extraire la toute première lettre du mot cybersécurité ? La première lettre ici serait C, non ? Je pourrais donc faire quelque chose comme dire d'abord, puis souligner le caractère égal au texte, et maintenant je vais utiliser mes crochets Maintenant, je dois indiquer la position d'index de la lettre que je souhaite cibler. Désormais, dans le domaine de la cybersécurité, C est la première lettre. Alors, selon vous, quel sera mon numéro d'index ici ? Non, ce n'est pas un, ça va être zéro N'oubliez pas qu'en programmation en général, pas seulement en Python, mais aussi en programmation générale, votre indexation part de zéro et non d'un Donc, si je voulais maintenant imprimer le contenu de ma variable appelée premier caractère, la réponse ici sera C. De même, si je remplace celle-ci par un, maintenant ce sera Y. Donc, voici l'indexation, et nous allons travailler avec elle tout au long de ce cours Maintenant, le deuxième concept ici va être le concept de sl sin. Le glaçage nous permet de prélever une partie de la ficelle. Aujourd'hui, la cybersécurité est une chaîne assez longue. Et si nous voulions uniquement cibler les cinq premiers personnages, qui seraient des cyberpersonnages ? Comment ferions-nous cela ? Eh bien, ici, je peux ajouter ma position d'index pour le tout premier caractère qui sera zéro. Et puis où est-ce que je veux m'arrêter ? Cinq. C'est ce que nous appelons le tranchage. Le tout premier chiffre ici représente l'endroit à partir duquel nous voulons commencer le découpage Dans ce cas, pour le moment, j'ai ajouté zéro parce que je voulais commencer dès la première lettre. Et puis combien de personnages voulons-nous ? Nous voulons les cinq personnages. Alors maintenant, si je lance le programme, ce sera Chi Burr. Et si nous voulions uniquement extraire le T sécurisé, n'est-ce pas ? Nous ne voulons pas l'étiqueter comme cybernétique. Nous voulons l'étiqueter « sécurité » uniquement. Une chose que je pourrais faire ici, c'est que je pourrais décider de simplement utiliser l'indice S, qui sera zéro, un, deux, trois, quatre, cinq. OK ? Ça pourrait être cinq. Et maintenant j'ajoute mes deux points. Je pourrais indiquer le nombre de lettres que je souhaite que le découpage contienne Cependant, si je n' indique pas de valeur ici, Python utilisera automatiquement par défaut la fin de la chaîne. Donc maintenant, si je lance le programme, il sera écrit sécurité. Tu as vu comment ça a marché ? J'ai indiqué, OK, je veux commencer par S et le numéro d'index de S ici sera de cinq. Et comme je n'ai pas indiqué où je voulais que le découpage s'arrête, Python ira jusqu'à la toute fin C'est pourquoi nous avons la sécurité. De même, je pourrais faire presque le contraire. Je pourrais laisser le départ vide, et maintenant je pourrais aller ici. Et si j'ai indiqué, disons, cinq à titre d'exemple, quelle sera, selon vous, la valeur ici ? Lorsque vous n'indiquez pas votre position de départ, Python démarre automatiquement. La position par défaut sera au tout début. Alors, selon vous, quelle sera la réponse à cette question ? La réponse ici va être cybernétique ? Parce que même si nous n'avons pas indiqué le début, Python reprendra par défaut le tout début, c'est-à-dire C. Ensuite, cinq caractères seront C, Y , BR, et ce sera Psi bur. Mais ce n'est pas tout. Nous pourrions également utiliser le concept d'indices négatifs. Alors, par exemple, regarde ça, d'accord ? Je vais aller ici, non ? Et si je voulais cibler la sécurité, je pourrais commencer par la fin, et je sais que la sécurité se compose de huit caractères, donc je vais dire moins huit. Et maintenant, je vais ajouter deux points et mon défaut jusqu'à la fin. Et maintenant, si je lance le programme, voilà. C'est une question de sécurité, car Python va commencer par la fin , c'est-à-dire Y, puis huit lettres vers la gauche. Il s'arrête à S car S est la huitième lettre. C'est le huitième personnage. Lorsque vous commencez par la fin, c'est pourquoi nous avons la sécurité comme solution. Vous vous demandez peut-être, d'accord, comment cela sera-t-il applicable à la cybersécurité ? Vous êtes-vous déjà demandé comment les logiciels antimalware et antivirus pouvaient scanner et détecter les En règle générale, l' extension de fichier comporte un point EXE. Alors, par exemple, non ? Par exemple, si le nom d'un fichier est égal à CMD IOP, vous savez, quelque chose de bizarre, Et puis pointez sur EXE. Ce serait un exemple du type typique de nom de fichier malveillant que vous aurez. Alors, comment pouvons-nous écrire un programme qui analysera puis détectera dès qu'il détectera l'extension point EXE, il sait que, d'accord, il pourrait s'agir d'un malware. Nous n'avons pas encore parlé de l'instruction If. Nous allons en parler dans la section suivante, mais supposons maintenant que c'est bon, si le nom du fichier est OK. Et maintenant, si j'ajoutais entre crochets, si je voulais cibler le point EXE depuis la fin, car on ne sait jamais combien de temps le nom du fichier va se trouver avant le point EX droit. Il est toujours préférable de cibler dès la fin. Je sais que moins quatre, en partant de la fin, si c'est égal, à quel point EXE ? Si je sais que les quatre derniers caractères du nom du fichier sont égaux au point EXE, alors je sais que ce sera probablement un Milware Alors maintenant, je peux simplement dire prints, puis entre crochets, je peux dire que ML Ware a trouvé, vous savez, quelque chose comme ça. C'est ainsi que le concept de découpage peut être appliqué dans le monde de la cybersécurité Maintenant, avant de terminer cette vidéo, permettez-moi de vous parler d' une autre fonction. C'est utile lorsqu'il s'agit de travailler avec des chaînes. Et ce sera la fonction split. Il s'agit d'une fonction qui divise une chaîne en une liste de chaînes souples en fonction d'un délimiteur spécifié De quoi est-ce que je parle ? Supposons, par exemple, que je revienne à mon texte et que cela évoque la cybersécurité. Maintenant tu peux dire ça en deux mots, non ? Il ne s'agit plus d'un seul mot : cybersécurité. J'ai maintenant deux mots : cybersécurité. Donc, si je voulais partager ça, je pourrais dire des mots. D'accord ? Égal au texte, et maintenant divisé par des points. OK ? J'attache la fonction split au texte variable parce que je souhaite diviser la cybersécurité. Alors maintenant, si j' imprimais simplement les mots, quel en sera le résultat selon vous ? Ce sera la cybersécurité, puis la sécurité. Et si vous vous demandez, d'accord, comment allons-nous appliquer cela à la cybersécurité ? Jerman Vix Video Web va commencer à se pencher sur les applications de cybersécurité telles que le découpage en tranches, fractionnement et bien 15. Méthodes de cordes courantes: Bon retour. Continuons donc à parler des différents types de méthodes ou fonctions que nous appliquons généralement aux chaînes et d' une méthode très courante. En fait, deux fonctions très courantes seraient plutôt les fonctions de conversion du texte en majuscules ou en minuscules Donc, dans mon exemple ici, mon texte variable est égal à la cybersécurité. Si je voulais tout convertir en majuscules, je dirais simplement du texte et non des majuscules, ouvrez de nouveaux crochets, et le tour est joué Et si je voulais tout convertir en minuscules, je ferais exactement le contraire Ce sera un point de texte imprimé LWA. Point ova, ouvrez de nouveaux crochets, et le tour est joué. Donc, si je gère le programme en ce moment, vous pouvez voir que nous avons la cybersécurité en majuscules, puis la cybersécurité en minuscules Ce sont donc deux nouvelles fonctions que vous devez connaître point opa point LA. Mais il existe également une fonction permettant de réduire les espaces blancs. Supposons, par exemple, que j'ai ma variable de mot de passe ici. J'ai de l'espace, et mon vrai mot de passe est swordfish, puis laissez-moi ajouter un peu plus d' Si je voulais supprimer tous les espaces blancs inutiles, je dirais simplement des empreintes, des crochets, puis un mot de passe, et maintenant, un strip. Encore une fois, la fonction strip, nous pouvons également l'utiliser pour supprimer tout espace blanc inutile, lancer le programme, et le tour est joué. Espadon sans espace vide. Mais nous pouvons également remplacer des caractères dans nos chaînes. Disons, par exemple, laissez-moi simplement vous donner un exemple ici. Supposons que mon message soit égal à, et disons, d'accord, utilisez un mot de passe. Disons que le mot de passe actuel est mot de passe un, deux, trois. Juste à titre d'exemple, non ? Mais ensuite, nous avons voulu imprimer quelque chose qui dirait, d' accord, utilisez un mot de passe, puis expurgé D'accord ? Nous ne voulons pas afficher le mot de passe lui-même. C'est similaire à ce que nous avons fait dans la leçon précédente où nous avons utilisé le symbole Asteris pour remplacer les caractères. C'est apparenté mais légèrement différent. Alors laisse-moi te montrer de quoi je parle, d'accord ? Je vais donc venir ici tout de suite. Et je vais dire : créons une nouvelle variable. Disons qu'un message de soulignement sécurisé, accord, sera égal à now message, point, et maintenant à une nouvelle fonction appelée replace D'accord ? Je souhaite remplacer le mot de passe actuel par un autre mot de passe. Donc, entre crochets, je vais maintenant mettre le mot de je vais maintenant mettre le passe que je veux remplacer c'est-à-dire le mot de passe un, deux, trois, une virgule, et maintenant les lettres, les caractères ou la chaîne par lesquels trois, une virgule, et maintenant les lettres, les caractères ou la chaîne je veux le remplacer Dans ce cas, maintenant, je vais ouvrir mes crochets, et en majuscules, et en majuscules, je peux dire expurgé. Juste à titre d'exemple, non ? Alors maintenant, il ne me reste plus qu'à imprimer entre crochets un message de soulignement sécurisé Et maintenant, si je lance un programme, voilà, utilisez une tête de réduction des mots de passe Vous pouvez donc utiliser la fonction replace pour simplement remplacer une partie particulière de votre chaîne par autre chose, et voici comment vous allez procéder. Pour résumer, permettez-moi de vous montrer une dernière chose, à savoir trouver des sous-chaînes. Supposons, par exemple, que nous ayons une variable appelée email, est égale, disons, à admin at labsyb.com Je suis sûr, bien sûr, vous avez dû rencontrer ce problème tant de fois auparavant , lorsque vous essayez de créer un nouveau compte sur un site Web, et ils vous demanderont de fournir une adresse e-mail. Si vous avez saisi quelque chose de faux, par exemple, le système sera en mesure de détecter que cette adresse e-mail n'est pas valide, car il pourrait vérifier si le symbole arobase a été inclus dans votre Donc, si le symbole publicitaire n'est pas là, il sait évidemment que, d' accord, ce que cette personne a tapé ne peut pas être une adresse e-mail Je vais donc vous montrer comment écrire un programme très simple pour vérifier si le symbole at se trouve dans la chaîne. À partir de là, mon adresse e-mail est égale à admin at labsar.com. Voyons si le symbole publicitaire s'y trouve, d' accord ? Je vais dire « Moi ». D'accord ? Si je sais que nous n' avons pas encore parlé de cette déclaration particulière , ne vous inquiétez pas, nous en parlerons beaucoup plus en détail dans la section suivante. Mais pour l'instant, notez simplement que c'est une instruction que Python utilise pour vérifier si quelque chose est vrai. Je vais donc dire si et maintenant envoyer un e-mail, puis un point, très bien. C'est la fonction que nous pouvons utiliser pour vérifier si quelque chose existe dans notre chaîne. C'est donc la fonction de recherche. Et maintenant, nous devons spécifier ce que nous recherchons exactement entre crochets et maintenant les codes, le symbole At. Nous essayons donc de vérifier si le symbole at existe, et d'un moyen de vérifier qu'il existe bel et bien. C'est dans une chaîne, c'est en disant qu' il n'est pas égal à moins un. Ensuite, nous ajoutons nos deux points. Donc, le fait de ne pas être égal à moins un est une façon de dire : OK, quelque chose existe. D'accord ? Donc, ici, nous disons si vous avez trouvé le symbole publicitaire dans l'e-mail et qu'il n'est pas égal à moins un. Cela confirme donc que, oui, le symbole publicitaire se trouve bien dans notre chaîne. Maintenant, nous pouvons faire quelque chose. Nous pouvons dire imprimer, et maintenant entre crochets, nous pouvons dire format de courrier électronique valide. Alors maintenant, si je lance mon programme, voilà. Format d'e-mail valide car le symbole publicitaire a bien été trouvé. Si je supprime le symbole publicitaire et que je lance à nouveau le programme, vous pouvez voir que rien n' est imprimé parce que le symbole publicitaire n' est plus là. Ce n'est pas un e-mail valide pour Matt. J'y retourne. J'ajoute à nouveau le symbole publicitaire, je lance, et maintenant vous pouvez voir qu'il fonctionne à nouveau. Donc, pour vous donner un bref récapitulatif, nous voulons tout d'abord rechercher le symbole publicitaire dans une adresse e-mail qui nous a été fournie Nous allons donc dire si, puis nous recherchons spécifiquement le symbole d'ajout. Donc, si le symbole publicitaire est présent et que nous vérifions s' il est présent avec valeur différente de moins un, donc si le symbole d'ajout est bien présent, il suffit d'imprimer un format d'e-mail valide. Prenez donc note de la fonction de recherche. Voilà pour la vidéo, merci de l'avoir regardée. Je te verrai au prochain cours. 16. Plus de manipulation des cordes: Eh bien, revenez, alors laissez-moi vous expliquer quelques opérations supplémentaires en utilisant la fonction split, ainsi qu'une bonne vieille indexation J'ai donc deux notes sur mon écran. J'ai une adresse e-mail et aussi une URL. Maintenant, en regardant l'adresse e-mail, si nous voulions extraire le domaine en particulier ? Nous voulions donc extraire labsyba.com et simplement nous débarrasser de l'annonce Admin. Comment allons-nous procéder ? Eh bien, tout d'abord, attribuons un e-mail variable à B admin sur labsyba.com. OK. Donc, ce que je vais faire maintenant, c'est créer une autre variable qui contiendra désormais ce que nous recherchons. Je vais donc appeler cela un domaine. Et maintenant c'est là que la magie opère, d'accord ? Nous voulons diviser notre chaîne, nous voulons séparer admin de labsyb.com Donc, entre admin et labsyb.com, qu' est-ce que le Je vais donc dire e-mail et maintenant diviser, et maintenant entre crochets, d'où allons-nous nous séparer ? Nous allons nous séparer du symbole At, d'accord ? Et maintenant que nous cherchons le deuxième élément, lorsque vous séparerez l'administrateur de labsab.com de l'annonce, une partie sera admin, l'autre sera labsab.com Nous voulons donc passer au deuxième élément, et ce sera un. L'un d'eux sera l'abréviation de labsbdt com. Il ne nous reste plus qu'à imprimer un domaine. Et si je lance un programme, c'est labsbadt Si je changeais un à zéro à la place, cela représentera désormais le premier élément, qui sera admin. Donc, si je réexécute un programme en ce moment, vous pouvez voir qu'il est devenu admin. Ainsi, chaque fois que vous essayez de diviser une chaîne en deux, en utilisant la fonction de division, vous devez d'abord indiquer, OK, où voulez-vous commencer la division. Dans ce cas, pour le moment, nous définissons à partir du symbole publicitaire. Donc, juste au milieu, sur la gauche, se trouvera la valeur de l' indice de zéro. Sur la droite se trouve la valeur d'indice de un. Et comme nous recherchons spécifiquement le domaine, nous changeons de zéro à un. Nous courons à nouveau, et voilà, labcyba.com. Maintenant, qu'en est-il du deuxième exemple ici, l'URL ? Que recherchons-nous exactement ici ? Supposons que nous voulions extraire le fichier lui-même. Nous ne sommes donc pas intéressés par l' ensemble de gctpslabs.com, FurslashPat, Tout ce que nous cherchons, c'est simplement le nom du fichier. Comment pouvons-nous en extraire un fichier ? Donc, ce que je vais faire très simplement, c'est dire que l'URL est égale, et laissez-moi simplement saisir ceci. Laisse-moi juste le copier. Et je vais le coller. Et voilà. OK, donc encore une fois, je vais créer une nouvelle variable qui contiendra désormais la valeur de ce que nous recherchons. Appelons celui-ci, le nom du trait de soulignement du fichier sera désormais égal à l'URL, n'est-ce pas ? Et maintenant, divisez les points, et maintenant jetez un œil à ceci. Je regarde l'URL, d'accord ? Cette URL complète. Quel symbole pensez-vous que nous pourrions utiliser pour diviser la chaîne en plusieurs parties ? Oui, ça devrait être évident que ce sera la barre oblique, non ? Parce que vous pouvez voir juste là qu'il y en a partout. Nous allons donc partager notre ficelle. Nous allons cracher notre URL à l' aide de la barre oblique. Et maintenant, comment cibler le fichier ? Vous souvenez-vous de l'indexation négative ? Eh bien, nous commençons par le bout de notre chaîne. Donc dans ce cas, en ce moment, que recherchons-nous, nous cherchons le tout premier élément depuis la fin, et maintenant quoi sera négatif ? Négatif. Cela va donc commencer à partir du fichier. Ça va commencer de droite à gauche, non ? Il ne nous reste plus qu' à imprimer le nom du trait de soulignement du fichier Et ils devraient faire l'affaire. Allons-y et lançons le programme. Et voilà. Nous avons le nom du fichier. Ainsi, en utilisant la fonction split et une indexation négative, nous avons pu cibler spécifiquement le nom du fichier Permettez-moi de vous donner un autre exemple. Et ici, nous allons extraire quelques chaînes de caractères. Sans utiliser la fonction split, nous allons simplement utiliser la valeur de l'indice. Permettez-moi donc de fournir à nouveau l'adresse e-mail, et je vais dire admin at labsba.com OK, et si nous voulions extraire à la fois le nom d'utilisateur et le domaine ? Nous voulons donc extraire le nom d'utilisateur qui est admin, puis le domaine qui est labsyb.com Comment pensez-vous que nous pouvons le faire ? Eh bien, tout d'abord, je peux dire que mon nom d'utilisateur sera égal à celui un e-mail et maintenant, souvenez-vous du fonctionnement des index début puis à la fin Nous voulons donc commencer par le tout début de notre chaîne. Nous allons donc dire deux points. Nous allons laisser le côté gauche vide car nous allons recommencer depuis le tout début. Et maintenant, voyons voir. A sera le numéro d'indice zéro, non ? Ainsi, A est zéro, D est un, M est deux, I est trois, N est quatre, et bien sûr, le symbole d'ajout est cinq. Donc je vais dire ici tout de suite, cinq, d'accord ? Ensuite, je peux dire que le domaine est égal à l'e-mail et maintenant, à l'intérieur , nous voulons commencer par le sixième index qui sera L, deux-points, puis laisser ce champ vide parce que nous allons jusqu'à la fin de la chaîne, et maintenant cela devrait fonctionner. Donc, tout ce que nous avons à faire c'est de dire imprimer. Maintenant, disons, utilisons un nom. OK, puis, utilisez un nom, puis imprimez le domaine entre crochets et deux-points. OK. Domaine Com. Et voilà. Exécutons le programme, et le tour est joué. Le nom d'utilisateur est Admin. Le domaine est lobsaba.com. Ouais. Mais attendez une minute. Avant de boire le champagne, faisons un autre test, d'accord ? Je vais changer d'administrateur ici pour « Je ne sais pas ». Disons, Alex, par exemple. Ne lancez jamais le programme. Euh oh, ta ta, da ta, da, da, da, da, da. Nous avons un problème. Vous pouvez voir maintenant que le programme a mal fonctionné. Il ne fonctionne plus correctement. Au lieu d'utiliser le nom Alex, nous avons Alex at. Et au lieu de labsyb.com, nous avons absyba.com. Qu'est-ce qui se passe ici. voyez, en essayant d'extraire nos chaînes en étant très précis dans les valeurs d'index que nous voulons cibler, le programme s' appuiera fortement sur l'adresse e-mail réelle, avec dans les valeurs d'index que nous voulons cibler, le programme s' appuiera fortement sur l'adresse e-mail réelle, le bon nombre de caractères à la fois avant et après le symbole at. Cela dépend donc fortement de cela, mais nous ne voulons pas que le programme soit suffisamment flexible pour toujours pouvoir extraire avec précision le nom d'utilisateur et le domaine quelle que soit la longueur de l'adresse e-mail réelle. Alors, que pouvons-nous faire ? Eh bien, n'oubliez pas que le symbole publicitaire est l'endroit où se déroulent toutes les actions. À gauche du symbole d' ajout se trouve notre nom d'utilisateur, à droite, le domaine. Nous pouvons donc cibler spécifiquement la valeur d'indice du symbole At. Et comment s'y prendre ? Pour le nom d'utilisateur, e-mail, en ce moment, encore une fois, nous allons laisser la première partie de la colonne vide parce que nous commençons depuis le tout début, n'est-ce pas ? Et maintenant, pour cibler le symbole at réel, c'est la valeur de l'indice. Je vais dire e-mail à nouveau et maintenant index par points, et maintenant entre crochets, coder le symbole arobase. Donc maintenant, je dis que le nom d'utilisateur commence toujours par le tout début de la chaîne et se termine une fois que vous avez atteint la valeur d'index du symbole at. De même, nous pouvons faire quelque chose très similaire avec le domaine. On peut dire domaine. Bien, commençons par le début , ici, par email point index. Et maintenant, que visons-nous à nouveau ? Nous ciblons le symbole publicitaire. Cependant, nous voulons cibler spécifiquement le tout premier caractère, le tout premier index après le symbole d'ajout. Alors, que pensez-vous que nous allons faire ? Nous sommes les bonnes personnes, nous allons dire plus un. Plus un. Alors maintenant, je dis : OK, commencez par la valeur d'indice de At, puis ajoutez-y une valeur. Il va donc aller dans AD, puis en ajouter un. OK, maintenant, labs.com. Alors maintenant, si je lance le programme, voilà. Cela fonctionne sur axlabs.com Si je redonne à Alex le statut d'administrateur et que je lance le programme, vous pouvez voir qu'il fonctionne Essayons quelque chose de complètement différent, d'accord ? Disons Jack Daniels sur superyahoo.com, quelque chose de bizarre, non ? Lancez le programme, et voilà. Jack Daniels puis domainsoperyahoo.com. Voici donc comment extraire vos chaînes avec succès et efficacité sans utiliser la fonction de division. Il suffit d'utiliser les valeurs d'index, et nous y marquons spécifiquement la valeur d'index du symbole d'ajout, car rappelez-vous, encore une fois, que le symbole d'ajout est l' endroit où se déroule toute l'action. À gauche du symbole publicitaire se trouve un nom d'utilisateur à droite, le domaine. J'espère donc que vous avez apprécié la vidéo. Merci d'avoir regardé. Je te verrai au prochain cours. 17. Intro à la section Flux de contrôle et boucles: Officiellement à la troisième section, et maintenant le téléphone commence vraiment. Maintenant, nous commençons à franchir une étape plus ou moins approfondie dans le monde de la programmation Python car nous allons parler ici de flux de contrôle et de boucles. Jusqu'à présent, dans les deux sections précédentes, nous avons parlé de chaînes et d'entiers, et les programmes étaient pour la plupart assez jolis, basiques, n' est-ce pas ? Vous pouvez soit avoir une entrée soit nous fournir des chaînes et des entiers, puis nous disons : OK, je vais faire ceci, ceci et cela, puis simplement imprimer, n'est-ce Mais maintenant, avec le flux de contrôle et les boucles, si nous voulions dire : OK, s'il y a quelque chose comme ça, alors faisons-le. Mais si quelque chose n'est pas ça, faisons autre chose. Il s'agit du flux de contrôle et des boucles. Et si, par exemple, nous avions une liste ? OK ? Cela peut être une liste de noms, une liste de livres, une liste de mots de passe, non ? Ensuite, nous avons voulu, genre, examiner chaque mot de passe de cette liste et faire quelque chose, non ? Peut-être voulions-nous prendre chaque mot de passe et le chiffrer, ou peut-être voulons-nous prendre chaque mot de passe et vérifier ensuite si le mot de passe est réellement fort ou faible en fonction de plusieurs types de conditions, nous allons aborder cela dans cette section Ce sera l'une des sections principales de ce cours en particulier, et je suis très heureuse de vous parler du flux de contrôle et des boucles. Commençons. 18. Introduction aux algorithmes: vais faire une pause dans Raplt et parler un peu des algorithmes, car croyez-le ou non, nous allons en fait commencer à travailler avec concepts légèrement plus avancés en programmation Python Et il est très, très important que vous compreniez ce que sont les algorithmes, car ils sont essentiels, pas seulement pour Python, mais pour tout type de langage de programmation d'ailleurs. Maintenant, si je devais vous donner définition standard de ce qu'est un algorithme, c'est essentiellement comme un ensemble d' instructions à suivre pour arriver à un résultat particulier, d'accord ? Dans ce cas, en ce moment, vous pouvez voir ce texte. J'y ai écrit quelques trucs. La toute première déclaration indique que si l'ordinateur fonctionne rapidement, Terminez. Maintenant, qu'est-ce que je veux dire ici ? Je dis simplement que, écoutez, si notre ordinateur fonctionne très, très bien, il fonctionne très, très rapidement. Il n'est pas nécessaire de vérifier quoi que ce soit. C'est bon, non ? C'est pourquoi j'ai dit « terminer ». Mais je remarque qu'à la troisième ligne, j'ai dit, sinon, vous pourriez aussi dire quelque chose comme des fesses, non ? Mais dans un langage de programmation, nous n'utilisons pas but, nous utilisons se. D'accord ? Donc, cela signifie essentiellement que si la déclaration précédente n' est pas correcte, donc si l'ordinateur ne fonctionne pas vite, accord, alors que devons-nous faire maintenant Nous devons d'abord vérifier s'il y a un virus. Ensuite, il se peut que nous devions désinstaller des programmes inutiles, puis que nous devions éventuellement augmenter la rampe. Donc, si nous suivons ces trois étapes, un ordinateur sera assuré de fonctionner plus rapidement. C'est un algorithme, non ? Et les deux mots clés ici sont le IF et s. Nous allons beaucoup travailler là-dessus dans ce cours. Et si vous devez un jour travailler avec un autre type de langage de programmation, vous rencontrerez toujours des instructions IL. Ce sont les éléments fondamentaux de tout programme. J'espère que vous comprenez ce que nous avons fait ici. C'est assez simple. Je vais le rendre un peu plus avancé, d'accord ? Juste un petit peu, non ? Permettez-moi d'ouvrir le deuxième onglet. Imaginez donc que vous vous habillez en fonction de la météo. OK ? Donc, dès la première déclaration, nous avons établi un scénario, n'est-ce pas ? Notre programme vérifie donc ce que nous devons porter en fonction de la météo. Nous avons donc le tout premier résultat. S'il fait beau, d'accord, nous pouvons porter nos lunettes de soleil. Cependant, remarquez la troisième ligne, elle passe à autre chose si ce n'est plus simplement autre. Pourquoi ? Eh bien, parce que le temps peut prendre différentes formes. Il peut faire beau, il peut pleuvoir, il peut neiger, il peut être nuageux Il y a beaucoup plus d' options, non ? Dans le tout premier document, il n'y a que deux conditions. La première condition est la suivante : d'accord, l'ordinateur fonctionne-t-il vite ou ne fonctionne-t-il pas vite ? C'est ça. Rien de tel que : Oh, est-ce que l'ordinateur fonctionne à 25 % de sa capacité ? Fonctionne-t-il à 50 % de sa capacité ? Nous n'avons aucune autre condition. Il n'y en a que deux. Soit l'ordinateur tourne vite, soit il n'est ni A ni B. C'est pourquoi je travaillerais parfaitement ici. Cependant, dans cet exemple, nous avons plus de deux options car, encore une fois, nous avons affaire à la météo. Donc, s'il fait beau, nous pouvons porter des lunettes de soleil. Sinon, s'il pleut. OK, on peut prendre un parapluie. Sinon, s'il neige, on peut mettre un manteau épais, non ? Mais maintenant, regardez la toute dernière ligne. Cela dit simplement le contraire. Pas autrement si c'est le cas. Parce qu'en gros, nous concluons le programme ici. Nous disons : OK, nous avons vérifié s'il fait beau, nous avons vérifié s'il pleut, nous avons vérifié s'il neige Donc, si c'est le cas, aucune de ces trois ne sera une journée normale. Sinon, habillez-vous normalement. OK ? Donc, encore une fois, la toute première est simplement eLS, car il y a deux conditions. le second cas, nous avons l'instruction s if car il y a plus de deux conditions. En fait, il existe quatre résultats différents en fonction de la météo. C'est pourquoi nous ne pouvons plus simplement travailler avec les identifiants. Nous devons introduire l'instruction s if. J'espère donc que vous comprenez pourquoi nous avons utilisé l'instruction Is ici et pourquoi nous en avons utilisé une autre ici. Si ce n'est pas le cas, j'espère qu'une fois que nous aurons commencé à créer de véritables programmes, en utilisant les algorithmes, vous le comprendrez beaucoup mieux. Mais il s'agit d'une introduction au monde des algorithmes ainsi qu'aux instructions Is else if. Merci d'avoir regardé. Je te verrai au prochain cours. 19. Instructions If else: Dans la vidéo précédente, nous avons donc brièvement abordé les concepts des algorithmes ainsi que les instructions Is if. Maintenant, nous allons le mettre en œuvre. Nous allons en fait écrire un programme qui demanderait un numéro de 1 à 9 à l'utilisateur Maintenant, si le nombre est supérieur à quatre, nous allons nous demander pourquoi tant ? Sinon. signifie que s'il s' agit de quatre ou moins, nous allons dire pourquoi si peu. Maintenant, la toute dernière ligne, je l'ai floue pour une raison particulière, car une fois que nous aurons écrit ce premier programme, nous allons ajouter une condition supplémentaire Je ne veux pas encore vous montrer en quoi consiste cette condition supplémentaire. Concentrons-nous donc sur l'écriture de ce programme, non ? Alors laisse-moi juste m'en débarrasser. D'accord. Et permettez-moi de le supprimer. OK. La première partie du programme est donc demander un numéro compris entre 129. Alors, que pouvons-nous faire ici ? Eh bien, tout d'abord, nous pouvons créer une variable appelée N. Très bien, pour le nombre. Et nous allons réussir. N'oubliez pas que nous avons travaillé avec la fonction de saisie. OK ? Je vais donc dire input parce que c'est la fonction pour laquelle je demanderais une entrée à l'utilisateur. Je vais donc dire saisir, et je vais dire entrer un nombre compris entre 129. OK ? Tout d'abord, assurons-nous que cela fonctionne. OK, entrez un chiffre de 1 à 9, laissez-moi juste créer un espace de 1 Courez à nouveau. OK. D'accord. La première ligne fonctionne donc. Maintenant, nous voulons vérifier si le nombre est compris entre ou inférieur à quatre, n'est-ce pas ? Je vais donc dire si c'est bon. Et puis l'entier, parce que nous voulons convertir le nombre que nous avons fourni, nous voulons le convertir en entier car l'utilisateur peut être très méchant. Ils pourraient décider de fournir, par exemple, 1.1, 4.5, 7.6, quelque chose comme ça. Nous voulons donc tout conserver sous forme de nombre entier. Je vais donc encapsuler notre variable maintenant dans la fonction entière, n'est-ce pas ? Je vais donc dire que je suis un entier N, maintenant un espace, puis le symbole supérieur à quatre, d'accord. Et maintenant, faites très attention. Je vais ajouter le double point, d'accord ? Vous devez l'ajouter chaque fois que vous travaillez avec vos instructions eLS, d'accord ? C'est ce que je vais dire. Et maintenant, par défaut, Python a écrit cette ligne pour moi, mais je vais expliquer pourquoi. OK ? Maintenant, entrez, et maintenant je vais dire autre chose si, toutefois, toutefois, c'est OK. Et maintenant je vais dire « oui ». Et puis nouveau retrait de ligne, impression. Et puis je vais dire, si peu. OK. Je vais donc y aller tout de suite. Oh, au fait, assurez-vous que vous avez aussi le double virgule dans votre s , d'accord ? Allons-y maintenant et lançons le programme, et voyons voir. Entrez donc le chiffre 1 à 9, je vais dire six Appuyez sur Entrée. Vous pouvez le voir juste là, cela fonctionne vraiment. Pourquoi tant ? Exécutons à nouveau le programme. Je vais dire trois, trois juste là, puis expliquer pourquoi si peu. Donc, comme vous pouvez le constater, cela fonctionne réellement. Maintenant, je vais y revenir une fois de plus , d'accord ? Donc, tout d'abord, la moitié N, qui sera la variable qui acceptera l'entrée de l'utilisateur, et l'entrée en question, entrez un nombre compris entre 129. OK ? Nous allons donc maintenant créer une condition qui vérifiera la valeur de ce nombre. Nous avons donc décidé de convertir l'entrée en un entier. C'est pourquoi nous avons l'INT. Une question que vous pourriez avoir ici est, attendez une minute, Alex. Auparavant, lorsque nous avions une fonction à l'intérieur d'une autre fonction, nous devions utiliser les crochets, non ? C'est vrai, ce n'est pas vraiment une fonction, d'accord ? C'est plus un algorithme, une sorte de boucle qui vérifie la valeur de quelque chose. Ce n'est pas une fonction en soi. C'est pourquoi nous n'avons pas le nombre entier entre crochets, d'accord ? Il va donc vérifier si le nombre entier, s'il est supérieur à quatre, s' imprimé, pourquoi tant ? Vous voyez, ce qui signifie que si le chiffre est quatre ou moins de quatre, imprimez, pourquoi si peu. On peut dire que cela fonctionne bien. Et la seule chose à laquelle vous devez faire attention , c'est le double point après le quatre et aussi après le s. Et puis c'est aussi très bonne pratique selon laquelle chaque fois que vous marchez avec instructions IL ou s si vous avez une bonne indentation, je ne l'ai pas fait, d'accord ? Je n'avais pas mes relevés imprimés directement sous les relevés E et L. Ce n'est pas bon du tout. C'est une très, très mauvaise syntaxe de programmation. Donc, vous voulez toujours avoir une indentation correcte, d'accord ? Ayez-le chaque fois que vous travaillez avec les relevés EL. OK. Maintenant, je vais ramener notre programme. Et regardez ça. J'ai ajouté une condition supplémentaire disant que et si le nombre est un nombre spécifique, c' est-à-dire cinq. Eh bien, nous voulons dire Bingo. OK ? Alors, comment allons-nous procéder exactement ? OK ? Laisse-moi m'en débarrasser. OK. Maintenant, regarde ça. Je vais venir ici où c'est écrit, imprimer pourquoi, et je vais appuyer sur Entrée parce que nous voulons ajouter le s i entre l' instruction If d'ouverture et l' instruction s de clôture, d'accord ? Alors maintenant, je vais dire L, c'est la forme abrégée de l'écriture s if. Donc, au lieu de dire sf, nous utilisons LF en Python. OK ? Donc L si le nombre entier N est égal ou, désolé, le nombre entier N. S'il est égal à cinq, l'égal sera double sinus égal, pas seulement un, d'accord ? Sinon, si le nombre entier fourni par l'utilisateur est de cinq, je vais maintenant ajouter le double point, puis je vais dire, désolé, je vais dire imprimer. Et puis entre parenthèses, Bingo. OK ? Je vais donc m'y atteler tout de suite. Nous sommes au programme. Et maintenant, voyons si cela fonctionne réellement. Tout d'abord, je vais en taper trois, d'accord ? OK, donc ça marche toujours. Pourquoi si peu ? OK. Essayons-en huit. Pourquoi tant ? OK. Et maintenant, si je dis cinq et que j'appuie sur Entrée, devinez quoi ? Il ne s'agit pas de dire bingo, mais de dire pourquoi. Tu veux savoir pourquoi ? Parce que le programme Python s'exécute ligne par ligne. Maintenant, regardez la hiérarchie ici. La toute première condition que Python vérifie est de voir si le nombre est supérieur à quatre. Et comme cinq est supérieur à quatre, il dit immédiatement : OK, pourquoi tant ? Il ne faut même pas aller plus loin pour vérifier si le nombre est égal à cinq, car la toute première déclaration dit essentiellement : «   Hé, si le nombre est supérieur à quatre, alors imprime pourquoi tant ». Donc pour te le prouver, ce que je vais faire ici, d'accord ? Je vais dire qu'il faut vraiment changer la hiérarchie ici. Nous allons donc vérifier, premier temps, si le nombre entier est réellement égal à cinq. OK, que ce soit la toute première chose, ça vérifie. Et maintenant, ici, nous allons vérifier si le nombre entier est supérieur à quatre. J'ai donc simplement changé la hiérarchie. Donc, la toute première chose à vérifier maintenant c'est si le nombre entier est réellement égal à cinq, cela signifie bingo, sinon s'il n'est pas égal à cinq et supérieur à quatre, nous allons dire y tellement. Sinon, si ce n'est pas égal à cinq, et s'il n'est pas supérieur à quatre, imprimez y si peu. OK ? Exécutons le programme. Je vais donc venir ici tout de suite, courir, laissez-moi d'abord, ajouter cinq maintenant et voir, entrer, et voilà. Bingo. J'ai vraiment travaillé. Exécutons à nouveau le programme. Et si j'en tapais deux ? Entrez, pourquoi si peu ? Un, encore une fois, allons-y avec sept. Entrez, pourquoi tant ? Vous pouvez le voir maintenant, cela fonctionne. La hiérarchie de vos commandes est donc extrêmement importante lorsque vous travaillez avec Python ou Pgamming en général Lorsque vous vérifiez les conditions, gardez toujours à l'esprit que si une condition est satisfaite, Python imprime immédiatement les résultats. Cela n' ira pas plus loin dans les lignes restantes de votre programme. La hiérarchie de vos conditions, des conditions vérifiées, vos commandes est donc très importante. Et puis, bien sûr, aussi ce peu que vous savez, savoir où ajouter les deux points, des choses comme ça. C'est une chose à laquelle vous finirez par vous habituer. Cela peut sembler un peu accablant au tout début, mais au fur et à mesure que vous commencerez à écrire de nouveaux programmes, vous finirez par vous y habituer. C'est donc tout pour travailler avec les instructions E L L if. Merci d'avoir regardé. Je te verrai au prochain cours. 20. Vérificateur de mots de passe simple: Bien, écrivons notre tout premier code lié à la cybersécurité et celui-ci vérifiera si le mot de passe d' un utilisateur est réellement valide ou non. N'hésitez pas à essayer d'écrire le code vous-même. Si ce n'est pas le cas, laissez-moi vous montrer comment vous allez procéder. La première chose à faire est d' indiquer quel est le mot de passe. Je vais appeler que la variable ici est stockée dans le mot de passe du score. Fournissons une valeur pour le mot de passe. Je vais opter pour quelque chose de très, très générique. Disons, mot de passe un, deux, trois. Ce sera le véritable mot de passe. D'ailleurs, je ne sais pas si je l'ai déjà mentionné , mais en Python, si vous souhaitez ajouter un commentaire ou un indice dans votre code, vous pouvez le faire en utilisant le symbole du hashtag, puis en tapant votre commentaire. Je l'ai peut-être déjà mentionné . Si ce n'est pas le cas, eh bien, voilà. OK, donc le mot de passe de démarrage ici sera le mot de passe un, deux, trois. Nous devons maintenant demander à l' utilisateur de fournir le mot de passe. Ensuite, une fois qu'ils ont fourni le mot de passe, nous pouvons exécuter une instruction EL qui vérifiera si le mot de passe qu'ils ont saisi est réellement correct ou non S'il est correct, nous pouvons dire accès accordé Dans le cas contraire, nous dirons que l'accès est refusé. Donc, la première chose que je vais faire maintenant est recueillir les informations de l'utilisateur. Permettez-moi simplement d'ajouter mon commentaire et de demander l'entrée de l'utilisateur dans un premier temps. Ce que nous allons faire maintenant, c'est appeler l'entrée utilisateur. Nous pouvons l'appeler le mot de passe saisi. Il s'agira de la variable qui stockera l'entrée. Donc, là, j' aime bien la suggestion que Python nous a donnée. Il indique simplement que le mot de passe saisi est égal à des imputations, puis nous allons demander à l'utilisateur de fournir son mot de passe La prochaine chose que nous devons faire maintenant est de voir si les mots de passe correspondent réellement ou non. Nous voulons nous assurer que tout ce qu'ils saisiront ici correspondra au mot de passe que nous avons enregistré. D'ailleurs, c'est incroyable de ne pas savoir si vous voyez exactement la même chose sur votre propre écran, alors que Python écrit littéralement le code entier pour moi. Je vous promets que c'est la toute première fois que j' écris ce code sur Replet Je vous promets que je n'ai jamais écrit ce code auparavant. C'est incroyable de voir à quel point c'est si intelligent, si intelligent. Il sait exactement ce que je veux taper, et c'est exactement ce que je veux faire. Je veux dire, si le mot de passe terminé est égal au mot de passe enregistré. Qu'allons-nous faire ? Nous allons imprimer. Puis entre crochets, accès à la chaîne accordé, désolé pour cela. Alors, qu'allons-nous imprimer ? Nous allons imprimer des supports, des manteaux. Accès refusé. Et voilà. Laisse-moi enlever la couche supplémentaire juste là. Voilà. C'est là notre code. Très simple, très direct. Laissez-nous l'essayer. Je vais courir et maintenant je vais demander le mot de passe. Essayons James 123. Est-ce que cela a fonctionné ? Non, accès refusé. Eh bien, ça n'a pas marché. Fuyons. Le programme une fois de plus. Essayons le mot de passe. Mot de passe, un, deux, trois, appuyez sur Entrée, puis c'est parti, l'accès a été accordé, notre code fonctionne correctement. Bien entendu, il ne s'agit que d'un simple bloc de code. Il ne s'agit pas de l'ensemble du programme lui-même, mais il s'agit de la toute première étape vers la création d'un vérificateur de mots de passe plus complet pour Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 21. Introduction aux boucles: Parlons maintenant des boucles, qui sont facilement l'un des aspects les plus importants de tout type de programme ou de langage de programmation. Mais que sont-ils exactement ? Eh bien, ils sont généralement utilisés pour répéter un bloc de code plusieurs fois jusqu'à ce qu'une condition spécifiée soit remplie ou pour un nombre défini d'itérations En d'autres termes, une boucle s'exécutera jusqu'à ce que tous les éléments d'une séquence ou d'une liste aient été traités, ou la boucle continuera de s'exécuter tant qu' une condition reste vraie ou qu'elle est satisfaite. Donc, en gros, c'est une boucle. Je continuerai encore et encore jusqu'à ce que quelque chose finisse par arriver. Aujourd'hui, ils sont très importants car ils nous aident à automatiser les tâches répétitives. Ainsi, au lieu de devoir répéter la même tâche encore et encore, nous pouvons simplement écrire une boucle qui exécutera automatiquement cette tâche pour nous, et bien sûr, nous utilisons des boucles pour créer des programmes efficaces qui s'adapteront en fonction des conditions dynamiques. Et en ce qui concerne les boucles, il en existe deux types principaux. La première sera la boucle à quatre. Regarde ça, d'accord ? Nous avons une liste de 129, d'accord ? Chiffres. Et nous pouvons écrire un programme très simple qui dira : «   Hé, imprime chaque chiffre ». Donc, en gros, imprimez un, deux , trois, quatre, cinq, six, sept, huit, neuf. Mais au lieu d'avoir à écrire chaque ligne pour chaque numéro, vous savez, imprimer une, deuxième ligne, imprimer deux, troisième ligne, imprimer trois, nous pouvons simplement écrire une boucle qui parcourra tous les numéros de cette liste, puis imprimer ces chiffres jusqu'à ce que, bien sûr, le dernier chiffre imprimé, qui est neuf. Ce sera la définition ou un exemple plutôt d'une boucle à quatre. La seconde est la boucle W. Supposons, par exemple, que l'heure se situe entre 12 h 01 et 16 h 59. Donc, tant que l'heure de la journée se situe entre cette plage, disons bonjour Notez la différence entre les deux structures. D'accord ? La première ici, qui est la boucle fol, a déjà, par exemple, une liste ou une séquence prédéfinie Et tant que nous avons des éléments dans cette liste en particulier, faites quelque chose. La boucle Wil est un peu différente car elle indique : « OK, tant que cette condition continue d'être satisfaite ou que cette condition continue d'être vraie, quelle est la condition ici ? Tant que l'heure se situe entre 12 h 13 h et 16 h 59 , bon après-midi. D'accord. En fin de compte, les boucles doivent avoir un point de terminaison, sinon elles s'exécuteront indéfiniment. En gros, une boucle peut écraser l'ensemble du programme. Regardons l' exemple ci-dessous. Et si les chiffres de cette liste étaient du numéro un à l' infini, n'est-ce pas ? Cela signifie que le programme continuera à imprimer les chiffres encore et encore, et il ne s'arrêtera jamais. Cela bloquera facilement le programme. Et si dans cet exemple pour le moment, il n'y a pas de période spécifiée. Et si le programme vérifie simplement si c'est pendant la journée ou à n'importe quel moment de la nuit, dites bonjour. Eh bien, il s'agira toujours d'imprimer un bon après-midi, bon après-midi, un bon après-midi, un bon après-midi. Et cela finira également par faire planter le programme. Il est donc très, très important que chaque fois que nous travaillons avec des boucles, il doit toujours y avoir un certain type de condition qui sera finalement satisfaite pour que cette boucle se termine. Dans le cas contraire, le programme se bloquera. Merci d'avoir regardé la vidéo, je vous verrai au prochain cours. 22. Boucles pour et pendant: Retournez maintenant à notre dossier d'administrateur. Et je vais vous donner deux exemples. Un pour la boucle des quatre et un autre pour la boucle de Wil. Donc, pour créer nos quatre boucles, créons d'abord la liste. Dans ce cas, pour l'instant, je vais fournir le nom de la liste sous forme de noms, d'accord ? C'est égal, et ensuite je vais mettre mes crochets ici. Et ajoutons quelques noms. J'ai donc Alex. J'ai Nancy. Et j'ai James. Enfin, disons que j'ai Violetta Honnêtement, je viens de trouver ce nom. Violetta. OK. Nous avons donc ici une liste de quatre noms différents, non ? Alex, Nancy, James, puis Violeta. Une chose que je peux maintenant faire pour le moment est que nous pouvons créer une variable qui représenterait chaque élément de la liste. Un peu comme nous avons attribué des valeurs à des variables comme, vous savez, X est égal à quatre, Y est égal à sept Je peux maintenant venir ici et simplement dire quatre. OK ? Et maintenant, je vais dire quatre X dans les noms. OK ? Quels sont ceux ici, permettez-moi d'ajouter les deux points juste là. Donc, ce que nous avons fait avec cette déclaration ici, c'est que nous disons, d'accord, nous allons utiliser X pour représenter chaque nom de cette liste. X sera donc égal à Alex qui sera la première boucle qui s'exécutera. La deuxième boucle X sera désormais égale à Nancy, elle fonctionnera. La troisième boucle sera désormais égale à X pour James. Enfin, la toute dernière boucle sera X égale à Violet. C'est essentiellement ce que cela fait ici. Nous parlons donc de X dans les noms. Et maintenant, nous devons dire au programme : OK, que devons-nous faire ? Eh bien, nous devrions imprimer le nom X. D'accord. Je vais courir, et voilà. Alex, Nancy James et Violetta. Mais si je voulais pimenter un peu ce programme et dire quelque chose comme, vous savez, bonjour, puis le nom de cette personne. Nous allons donc passer une bonne journée à Alex. Bonjour, Nancy. Bonjour James. Et, bien sûr, bonjour Violetta. Comment allons-nous nous y prendre ? Eh bien, à l'intérieur de la fonction d' impression, je vais ajouter une chaîne qui dira tout d'abord bonjour. Je vais bien. Ensuite, nous allons avoir la virgule, qui, soit dit en passant, n' est qu'une partie de l'impression elle-même Cela ne fait pas partie du programme proprement dit, si vous voyez ce que je veux dire. Cela fait partie de la chaîne. En gros, c'est ce que j' essaie de dire. Nous pouvons également le faire sans le coma, en fait, vous savez quoi ? Permettez-moi de supprimer la virgule, juste pour ne pas vous embrouiller. Alors je vais te dire bonjour, d'accord ? Ensuite, je vais ajouter un espace parce que nous voulons qu'il soit un espace entre la chaîne réelle, bonjour, puis le nom de la personne. C'est pourquoi j'ai ajouté l' espace juste là, d'accord ? Et puis ici, je vais ajouter le signe plus, puis X. Donc, en gros, associer la souche «   bonjour » au nom de la personne. Lancez le programme, et voilà. Bonjour, Alex. Bonjour, Ansy Bonjour, James. Bonjour Violetta Maintenant, si je supprime cet espace parce que je veux que vous le compreniez très bien. Si je supprime cet espace maintenant et que je lance le programme à nouveau, vous pouvez voir tout de suite que tout est brouillé, d'accord ? n'y a pas d'espace entre le matin et le jour suivant le nom de la personne. C'est pourquoi, encore une fois, j'ai ajouté l'espace juste ici entre le G et les guillemets fermants, d'accord ? Donc, je veux dire, encore une fois. Et voilà. Voici un exemple de boucle à quatre boucles très simple. Tout d'abord, nous avons créé une liste de noms. Nous avons attribué cette liste complète ici aux noms des variables. Ensuite, nous devons créer une autre variable qui représentera chaque élément, chaque nom de cette liste. Nous avons donc défini quatre X dans la liste appelée noms et maintenant la fonction « Bonjour », plus le nom de la personne dans cette liste. Voici un exemple de vos quatre boucles. Maintenant, ce que je vais faire, c'est créer une boucle sauvage. Maintenant, pour ce faire, descendons ici. Et oui, nous pouvons exécuter plusieurs programmes et fonctions dans le même fichier, n'est-ce pas ? Donc, ce que je vais faire maintenant, c'est créer ce que l' on appelle un compteur. OK, donc le compteur est égal à zéro. Maintenant, qu'est-ce que je fais exactement ici ? Qu'est-ce que ce compteur ? N'oubliez pas qu'avec les boucles Wil, elles continuent de fonctionner tant qu' une condition est remplie. C'est la différence entre une boucle de chute et une boucle de temps. Avec la boucle automnale, nous avons une liste d'articles, n'est-ce pas ? La boucle parcourra donc simplement tous les éléments de cette liste. Mais pendant un certain temps, il doit y avoir une sorte de condition qui sera présentée. Ensuite, nous allons dire à Python que, tant que cette condition particulière continue d'être satisfaite, exécute la boucle. Donc, la condition pour le moment est que même si notre compteur est inférieur à trois, voyez-vous maintenant que nous disons : «   Hé, tant que notre compteur, tant que le chiffre ici est inférieur à trois, continuez à faire quelque chose. Et vous pouvez voir que Python nous donne déjà une idée de la marche à suivre. Eh bien, je vais dire imprimer, puis je vais ajouter un texte juste là, la chaîne. Bonjour OK ? Et voilà. Maintenant, ce que nous disons ici, c'est repartir de zéro, d'accord ? Commencez à zéro, puis vérifiez si zéro est inférieur à trois. S'il est inférieur à trois, imprimez Hello. Cependant, nous n'avons pas vraiment terminé. Pourquoi ? Eh bien, parce que nous n'avons pas spécifiquement demandé à Python d'ajouter un nouveau nombre au compteur. Donc, au lieu de zéro, il deviendra désormais un. Vérifiez si un est inférieur à trois , puis imprimez bonjour. Nous ne l'avons pas encore dit à Python car une boucle peut aller dans les deux sens. Nous pouvons soit continuer à additionner soit un, deux, trois à zéro, soit aller dans la direction opposée, puis au lieu de zéro allant à un, cela pourrait être zéro allant à moins un, moins deux, moins trois, moins quatre. Et dans ce genre de scénario, ces chiffres seront toujours inférieurs à trois, et la condition ne sera jamais satisfaite, ou plutôt elle le sera toujours , ce qui fera planter le programme. Nous devons donc dire explicitement à Python que, hé, une fois que vous avez lancé la toute première boucle où zéro est inférieur à trois, ajoutez-en un au compteur. Je vais donc entrer tout de suite et je vais dire contre, puis plus égal à un. C'est notre façon de dire : OK, Python, le tout début de la boucle sera zéro. Vérifiez si zéro est inférieur à trois. S'il est inférieur à trois, imprimez hello et ajoutez-en un au compteur. Il y en aura donc désormais un à moins de trois. Python dit que oui, un est en effet inférieur à trois. Ça va mettre un terme à « bonjour ». Il va en ajouter un à nouveau, donc un deviendra deux. Python va vérifier, OK, c'est deux de moins de trois, oui, c'est moins de trois, affiche bonjour. Ensuite, il va en ajouter un à nouveau. Cela devient donc trois. Enfin, Python dira que, d'accord, trois n'est pas inférieur à trois parce que trois est égal à trois, puis il mettra fin à la boucle. C'est vrai. Allons-y maintenant et courons. Et voilà. Bonjour, bonjour, bonjour. Vous pouvez voir juste là qu'il s'est arrêté à trois boucles, car la toute première boucle sera nulle. La deuxième boucle sera pour une personne. La troisième boucle sera pour deux. Si je venais ici et que je disais : OK, moins de sept points, maintenant vous pouvez voir que nous en avons, encore , 40, un, deux, trois , quatre, cinq, six, bonjour. Voilà donc la différence entre la boucle à quatre et la boucle sauvage. Vous pouvez voir maintenant qu' avec les quatre boucles, nous avons notre liste ou notre méthode, puis la boucle passera en revue chaque élément ce tableau et elle fera quelque chose. Mais pour la boucle de Wile, nous devons tout d'abord spécifier, OK, quel est le point de départ Ensuite, nous allons maintenant fournir la condition suivante : OK, tant que cela est égal à ceci ou que c'est inférieur à cela, ou que c'est ceci, faites quelque chose, puis ajoutez-en une ou supprimez-en une ou faites simplement quelque chose pour vous assurer que la boucle commence réellement à s'exécuter. C'est la différence entre la boucle à quatre et la boucle entière. Bien entendu, nous allons travailler beaucoup plus avec quatre boucles et quatre boucles dans ce cours Mais merci d'avoir regardé. Je te verrai au prochain cours. 23. L'instruction BREAK: Passons maintenant à la déclaration de rupture, car elle est très, très puissante, et nous allons travailler avec elle dans ce cours. Mais avant cela, je voudrais simplement vous montrer une manière différente d' imprimer les noms dans cet exemple particulier. heure actuelle, nous disons bonjour , puis plus, puis X. X, bien sûr, étant la variable représentant chaque nom de notre liste. Une autre façon d'écrire cela serait de faire quelque chose comme ça. Tout d'abord, je vais supprimer le plus X. D'accord. Mais maintenant, je vais venir ici dès le début. Je vais taper F, OK. Et maintenant, ici, je vais ajouter mes bretelles frisées, pas les bretelles habituelles, mais les bretelles bouclées Et maintenant, je vais simplement taper X. D'accord ? Je peux exécuter le programme, et vous pouvez voir maintenant que nous avons exactement les mêmes résultats. Il s'agit ici d'un moyen différent et aussi plus efficace d' imprimer les valeurs des variables une liste ou d'un tableau en un coup d'œil. Hein ? Et nous allons marcher comme ça à l' avenir. Maintenant, la déclaration de rupture, quoi consiste exactement la déclaration de rupture ? Il est utilisé lorsque nous voulons terminer une boucle plus tôt que prévu. Par exemple, dans ce flop auquel nous assistons actuellement, il suffit de passer en revue tous les noms de passer en revue tous les noms notre liste, puis d' imprimer « bonjour », puis le nom de la personne, n'est-ce pas ? Mais que se passerait-il si, pour une raison ou une autre, nous voulions mettre fin à la boucle dès que James serait atteint, nous ne voulions pas publier « Bonjour Violeta parce que nous n' aimons pas Violeta, n'est-ce pas C'est là que nous pourrions utiliser l'instruction break pour terminer la boucle plus tôt. Pour le démontrer, je vais écrire un programme complètement différent, d'accord ? Alors faisons-le correctement ? Je vais taper, disons, des chiffres. Je vais créer une nouvelle liste ici où les nombres sont égaux, et je vais les mettre entre crochets ici. Et allons-y avec une série de chiffres. Je vais opter pour un, trois. Allons-y avec sept, huit, dix, et allons-y avec 11, et ajoutons-en un de plus, voire le numéro 14. OK ? Nous avons donc une liste de nombres ici, et ce que nous voulons faire maintenant, c'est créer une boucle qui parcourra tous les nombres. Cependant, une fois que le premier nombre pair a été atteint, nous voulons terminer la boucle, ce qui signifie qu'une fois le nombre huit atteint, nous allons terminer la boucle, elle doit donc être exécutée quatre fois. La première boucle pendant 1 seconde p pour trois, la troisième, recherchez sept, la quatrième boucle pour huit. Alors réfléchis à ça, non ? Nous allons d'abord créer la boucle d'automne, puis nous allons introduire l'instruction I. Donc, le I sell me vérifiera, d'accord, est-ce que ce nombre est vraiment pair ou impair ? S'il est pair, interrompez la boucle car nous avons trouvé le premier nombre pair. S'il ne s'agit pas d'un nombre pair, s'il s'agit d'un nombre impair, poursuivez la boucle. Alors, comment allons-nous procéder ? Tapez pour entrer dans la boucle d'automne 4, disons Num. OK, Num représentera les chiffres. Au fait, je ne sais pas si je l'ai déjà mentionné , mais je pense qu'il est temps que je le fasse. Tu vois, je n'ai saisi que le numéro. Vous pouvez voir en ce moment sur mon écran Python suggère déjà en chiffres parce que Python est en fait assez intelligent, n'est-ce pas ? Donc, dans ce genre de situation en ce moment, si vous êtes satisfait de la suggestion que le programme vous a donnée, vous pouvez simplement appuyer sur la touche de tabulation de votre clavier, et vous obtiendrez exactement le même résultat, n'est-ce pas ? Je dois donc pardonner de ne pas pouvoir parler. J'ai enregistré le numéro de l'onglet. Ou la touche tactile de mon clavier, et maintenant j'ai quatre chiffres numériques. Je vais ajouter mes deux points. OK ? Maintenant, je vais ajouter l'instruction If, et voudriez-vous y jeter un œil ? Je vous promets que je n' ai jamais écrit ce programme auparavant, mais je pense que Python est tellement intelligent J'ai déjà une idée de ce que je pourrais rechercher. Oui, je veux si num, puis le pourcentage deux sont égaux à zéro. Alors c'est quoi exactement ? Qu'est-ce qui se passe ici ? Cela signifie que nous allons vérifier si le nombre qui a été extrait, s'il est divisible par deux et le reste est égal à zéro, alors nous savons avec certitude qu' il s'agit d'un nombre pair Si vous divisez sept par deux, vous obtiendrez 3,5, 3,5. Il en restera toujours la moitié. Mais lorsque vous divisez huit par deux, la réponse est quatre. Ce n'est pas 4.1, ce n'est pas 4.2. Ce n'est pas 4,5, c'est quatre. C'est ainsi que nous pouvons vérifier si le nombre est réellement pair. Donc, si le chiffre est pair, que devons-nous faire ? Disons imprimer. OK. Et maintenant je vais ajouter la chaîne F. OK, et maintenant la chaîne elle-même a trouvé le premier nombre pair. OK, ajoutons ma virgule. Et maintenant, je veux afficher le chiffre réel, bretelles bouclées, et quel sera ce chiffre ? Ça va être engourdi. OK. Génial Nous avons donc ajouté ce que le programme doit faire si le nombre est, en fait, un nombre pair. Prince dit : OK, nous avons trouvé le premier chiffre, et maintenant rompez la boucle. Nous n'avons plus besoin de la boucle pour fonctionner. Casse-le, c'est fini. Nous avons trouvé le premier chiffre maléfique. Nous partons d'ici. El Assurez-vous de vos onglets. N'oubliez pas que la tabulation est extrêmement importante, d'accord ? E et L s doivent être sur le même onglet, non, dans le même retrait, non ? Donc, il suffit d'imprimer, disons simplement d'imprimer. J'ajoute mes crochets , puis mes manteaux, toujours à la recherche de ce chiffre pair. Et voilà. OK. Allons-y maintenant. Lancez le programme, et le tour est joué. Je cherche toujours ce chiffre pair. Je cherche toujours ce chiffre pair. Je cherche toujours ce chiffre pair. Oh, regardez, nous avons trouvé le premier nombre pair, et le nombre est huit. Il s'agit de l'utilisation de l'instruction break. Maintenant, utilisons-le dans un environnement sauvage L. Maintenant, pour ce faire, je vais faire tout le chemin jusqu'ici. Et créons un programme très simple qui demanderait à l'utilisateur de taper quelque chose ou de taper une lettre en particulier, et tant que la lettre n'est pas égale à Q, continuez à demander à l' utilisateur une nouvelle lettre, d'accord ? C'est donc essentiellement la condition qui doit être remplie. Ainsi, pendant que l'utilisateur tape ABCDEF, tant que ce n'est pas Q, continuez à lui demander de saisir une nouvelle lettre Je vais donc dire que même si c'est vrai, ce que cela fait pour le moment, c'est une fonction ou une boucle très simple en Python qui a automatiquement créé une condition qui est toujours vraie sauf si quelque chose d'autre se produit. N'oubliez pas qu'avec les boucles sauvages, une condition particulière doit être continuellement satisfaite pour que continuellement satisfaite pour la boucle fonctionne réellement, puis elle doit être interrompue une fois qu'une condition très spécifique a été remplie. Nous allons donc supposer maintenant que la condition est toujours vraie, et maintenant je vais taper les entrées de l'utilisateur. Il s'agira de la variable qui représentera la lettre que l' utilisateur saisira réellement. Je vais donc dire que l'entrée de l'utilisateur est égale, et maintenant la saisie, souvenez-vous de la saisie de la fonction, qui demandera maintenant à l' utilisateur de taper quelque chose. Je vais donc dire, entrez une lettre, puis entre crochets, je vais dire, Oh, tapez Q. D'accord. Tapez Q pour quitter le programme. OK ? Nous donnons donc le choix aux utilisateurs ici présents, d'accord ? Vous pouvez soit simplement taper une lettre, soit si vous voulez quitter le programme, tapez simplement Q, d'accord ? Je vais donc appuyer sur Entrée. Tapons maintenant la condition dont nous avons besoin pour vérifier si l' entrée est réellement Q. Je vais donc entrer tout de suite, ajouter l'instruction If. Nous allons donc vérifier si l'entrée utilisateur est égale à Q. Que devons-nous faire ? Eh bien, je vais dire imprimer. Entre parenthèses. Et je dois dire que vous avez choisi de quitter le programme. Choisissez de quitter le programme. Appuyez sur Entrée, et le tour est joué. Et maintenant qu'ils ont choisi de le faire, oh, permettez-moi d'ajouter les derniers guillemets ici. Comme ils ont choisi de quitter le programme, nous allons maintenant rompre la boucle. Sinon, je vais venir ici tout de suite et dire « imprimer ». Et maintenant, les codes F sont tapés. Et maintenant, souvenez-vous, entre crochets, je vais dire « utilisateur » sur les entrées de partition Et voilà. D'accord ? Allez-y tout de suite. Lancez le programme. OK, alors maintenant il est écrit «  Entrez une lettre », je vais dire « Y ». Appuyez sur Entrée. OK ? Maintenant, il est écrit : OK, vous avez tapé Y. Entrez une autre lettre, je vais dire A. Encore une fois, il fonctionne jusqu'à ce que je tape Q, et maintenant il a terminé le programme Et ici, nous combinons l'instruction our Wil, la Wile Loop plutôt que l'instruction break Alors laissez-moi le relire. Je sais que vous avez peut-être une question, pourquoi n'avons-nous pas saisi le s parce que nous avons l' instruction I. Alors, où est le s ? Eh bien, nous pourrions en fait ajouter le s. Il sera juste ici, et je vais juste dire oui. Et puis l'octet de tabulation ici imprimé, vous l'avez saisi. Je peux donc y aller dès maintenant. Exécutez à nouveau exactement le même programme. OK ? Je viens ici en ce moment, en tapant G. Cela fonctionne bien, en tapant , en tapant Q, entrant, et maintenant cela fonctionne exactement de la même manière. Donc, une chose que vous devez comprendre ici est que la raison pour laquelle l'instruction else est en fait facultative ici est que nous travaillons avec la boucle wild true, la condition. Il va donc automatiquement supposer que la condition sera toujours vraie. Et maintenant, nous utilisons l'instruction break ici pour contrôler intentionnellement le moment où la boucle se terminerait réellement. La déclaration L n'est donc vraiment pas nécessaire ici. La boucle sera toujours exécutée parce que nous avons dit « Wild true » et nous ne nous arrêterons par l'instruction break qu'une fois que l'utilisateur aura saisi la lettre Q. Donc, en fait, l'instruction Ls ici n'est pas nécessaire Vous pouvez toujours le saisir. Le programme fonctionnera toujours parfaitement. Mais chaque fois que vous marchez avec les instructions wild true puis break, vous n'avez plus besoin d'ajouter la condition Ls. Nous avons donc fait pas mal de choses dans cette vidéo en particulier. J'espère que vous avez pu suivre et que vous comprenez maintenant comment l' instruction break est utilisée. Merci beaucoup d'avoir regardé la vidéo. Je te verrai au prochain cours. 24. Essayer sauf les instructions: Eh bien, revenez. Dans la leçon précédente, nous avons créé avec succès ce programme particulier qui acceptera les entrées, nombres positifs de la part de l'utilisateur. Il étudiera les nombres dans une liste, et il continuera de le faire jusqu' à ce que l'utilisateur saisisse le mot terminé. Et à la fin, il imprimera s'il y avait un nombre pair, il imprimera quel était le premier chiffre pair et finira par imprimer tous les numéros de la liste. Cependant, nous avons découvert que lorsque nous avons exécuté le programme et que nous avons ajouté, disons, par exemple, au lieu d' un entier réel tel que huit ou neuf, nous avons ajouté, disons, 8,6, n'est-ce pas ? Lorsque nous appuyons sur Entrée, nous avons fini par avoir cette flèche de valeur de message de flèche particulière. Maintenant, si nous lançons à nouveau le programme, et au lieu de 8,5, j'ai dit, vous savez, IOF, j'ai saisi des lettres à la place, j'appuie sur Entrée Vous pouvez constater une fois de plus que nous avons exactement la même erreur. Et c'est parce que notre programme a été créé telle sorte qu'il ne devrait recevoir que des nombres positifs. Si nous lançons le programme une fois de plus et que j'ai saisi, disons, moins six, ce qui est un nombre négatif et que j'ai appuyé sur Entrée, vous pouvez voir que cela fonctionne en quelque sorte Il accepte le moins six parce qu'il s'agit d'un nombre réel. Il se trouve que c'est négatif. Mais cela va tout de même à l'encontre de l'objectif, car nous voulons que l'utilisateur saisisse uniquement des nombres positifs. Il n'aurait donc même pas dû accepter ce chiffre négatif de six. Nous avons donc quelques problèmes avec notre programme en particulier, et nous devons maintenant introduire ce que l'on appelle le bloc « essayer puis accepter ». Le bloc tri en Python fait donc essentiellement partie de ce que nous appelons un mécanisme de gestion des exceptions, qui nous permettrait essentiellement de détecter et de gérer les erreurs susceptibles de survenir lors de l' exécution de notre code. Ainsi, si une erreur se produit à l'intérieur du bloc tri, le programme ne plantera pas. Au lieu de cela, l'erreur sera détectée et le code contenu dans le bloc d'exception associé sera alors exécuté. N'oubliez pas qu' il ne s'agit pas seulement les utilisateurs de faire une erreur chaque fois qu'ils saisissent leurs entrées. Il est également possible qu'un pirate informatique essaie délibérément d' insérer des valeurs que le programme n' acceptera pas dans le but de le faire planter. C'est pourquoi nous devons toujours nous assurer que nos programmes, chaque fois qu'ils acceptent des entrées de l'utilisateur, chaque fois qu'ils acceptent des entrées de l'utilisateur, soient créés et conçus de manière à ce qu'ils soient capables gérer les mauvaises entrées de l'utilisateur. Alors, comment allons-nous maintenant détecter des erreurs particulières ? Eh bien, je vais venir ici. On fait une pause, d'accord ? Donc, si nous commençons ici, c'est parce que c'est ici que nous allons vérifier si l'utilisateur a ajouté le mot fini ou un chiffre réel. Donc, après la pause, non ? Après la pause, parce que la pause va vérifier, d'accord, c'est fait ? Si ce n'est pas fait, il va maintenant s'exécuter. C'est ici que nous allons maintenant taper les mots ou plutôt le mot essayer car c'est là que nous voulons que le programme attrape une flèche s'il y en a une. Alors maintenant, il va falloir essayer, puis deux points. Et maintenant, c'est ici, nous pouvons simplement cliquer dessus. D'accord, permettez-moi de le présenter ici. Nous disons donc ici que si l' utilisateur tape « terminé », il suffit de casser le programme. Je suis désolée, romps la boucle. Toutefois, s'il s'agit d'un nombre réel, vérifions-le pour voir s'il est positif. Donc, à l'heure actuelle, nous avons la variable de crédit NUM Nous avons ajouté l'entrée utilisateur à NUM. Alors maintenant, voyons si c'est positif. Le moyen le plus simple de vérifier serait de simplement dire si le nombre est inférieur à zéro. C'est le moyen le plus simple de vérifier. Si le nombre est en fait inférieur à zéro, nous allons dire imprimer, veuillez saisir un nombre positif. Maintenant, c'est parce qu'après ça viendra. Maintenant, voyez s'il s'agit en fait d'un nombre positif, nous allons simplement l'ajouter. Nous allons ajouter deux nombres à la variable num, et c'est tout. D'accord ? Enfin, comme nous avons essayé, nous allons le fermer en utilisant l'instruction accept. Donc, en gros, ce que nous faisons ici, nous disons : Hé, si la valeur fournie par l'utilisateur était, en fait, inférieure à zéro, alors imprimez, entrez un nombre positif. Mais que se passe-t-il si l'utilisateur n'a pas saisi de numéro ? Et s'ils tapaient des lettres ou des chaînes, en gros, non ? C'est donc là que l' exception va maintenant entrer en jeu. Nous allons donc dire sauf erreur de valeur, d'accord ? Donc, s'il y a une erreur réelle dans la valeur elle-même parce qu' il ne s'agit pas d'un nombre, allez maintenant dire « imprimer », entrez un nombre valide. Et c'est tout. Essayons donc de voir si cela fonctionnera. Je vais donc commencer tout de suite, lancer le programme. D'accord ? Donc, ce que je vais faire maintenant, c'est que je vais passer à moins six, appuyer sur Entrée. Vous pouvez voir ici qu'il est écrit : «  Veuillez saisir un nombre positif ». Mais que se passerait-il si je tapais une chaîne comme celle-ci, par exemple, elle dit maintenant, veuillez entrer un nombre valide Voyez comment cela fonctionne, n'est-ce pas ? Alors laissez-moi vous expliquer tout cela une fois de plus. En gros, ici même où nous acceptons les informations de l'utilisateur. Nous voulons vérifier qu' il s'agit bien d'un nombre positif. Le meilleur moyen est que si ce nombre est inférieur à zéro, alors nous savons qu'il est négatif, nous pouvons l'imprimer. Entrez un nombre positif. Si, par contre, il est supérieur à zéro, nous savons que c'est un nombre positif. Nous pouvons commencer dès maintenant et ajouter le nombre à la liste des numéros. Et maintenant, nous devons dire : OK, mais que se passerait-il s'il y avait une véritable erreur dans le type d'entrée que l'utilisateur a inséré ? Ce n'était peut-être pas un chiffre positif. R, ce n'était peut-être même pas un chiffre négatif. Peut-être que c'était comme des lettres des mots ou autre chose. Nous pouvons alors dire : « Veuillez saisir un numéro valide ». C'est là que l'exception entre en jeu. Voilà pour les instructions try and except. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 25. Déclaration continue: Avant de terminer la section sur les boucles et le contrôle de flux, je voudrais jeter un œil à une autre déclaration, à savoir l'instruction continue. Jusqu'à présent, nous avons travaillé avec l'instruction break, est bien sûr utilisée pour mettre fin à la boucle une fois qu'une condition particulière est remplie. Mais que se passerait-il si, pour une raison ou une autre, nous voulions simplement sauter une itération ou une partie d'une boucle en particulier Nous ne voulons pas vraiment mettre fin à la boucle. Nous voulons simplement sauter une étape en particulier. C'est là que continue entre en jeu. Permettez-moi de vous donner un exemple. Permettez-moi de supprimer ce code. Disons que pour un nombre qui n'est pas compris dans la plage 16. Maintenant, vous vous demandez probablement ce qu'est exactement la gamme. Ici, Range est simplement une fonction intégrée à Python, qui générera des nombres compris entre une certaine plage Dans ce cas, pour le moment, nous disons les chiffres de 1 à 6. Cependant, gardez à l'esprit que lorsque vous travaillez avec la fonction de plage, le premier chiffre ici, qui est un, sera inclus tandis que le dernier chiffre, qui est six, ne sera pas inclus pour être exclusif. Si je devais simplement dire, d'accord, il suffit d'imprimer puis , entre crochets, d'imprimer le numéro. Vous allez voir maintenant que nous allons en avoir un, deux, trois, quatre, cinq. Veuillez garder cela à l'esprit. Maintenant, la fonction par défaut imprimera un, deux, trois, quatre, cinq. Mais que se passerait-il si nous voulions en sauter trois dans ce cas ? Si nous voulons en imprimer un, deux, quatre, puis cinq, comment allons-nous procéder ? C'est là que la déclaration continue va entrer en jeu. Mais avant tout, je dois créer l'instruction If pour vérifier si le nombre est égal à trois, n'est-ce pas ? Alors maintenant, je dis que si c'est égal à trois, il suffit de continuer. Je n'ai pas besoin d'ajouter l'énoncé ici car lorsque vous travaillez avec l'énoncé continu, il est compris. Python dira simplement qu'une fois j'aurai atteint trois, je vais l'ignorer. Je vais en sauter trois, puis simplement continuer avec le reste de la boucle. Maintenant, si je devais exécuter le programme, vous pouvez voir qu'il y en a un, deux, quatre, puis cinq. C'est essentiellement ainsi que fonctionnerait l'instruction continue. Permettez-moi de vous donner un autre exemple très rapide. Et si j'étendais la gamme de 1 à 11, disons. Mais maintenant, nous voulions vérifier les nombres pairs, puis simplement conserver ces nombres pairs, nous voulons uniquement imprimer les nombres impairs. Encore une fois, comment allons-nous procéder ? Voyons d'abord s'il est divisible par deux. Je vais donc dire pourcentage, puis deux ici sont égaux à zéro dans ma colonne. Maintenant, je vais simplement dire continuer, puis imprimer le numéro Maintenant, s'il s'agit d'un programme sterni, vous pouvez voir que c'est simplement un, trois, cinq, sept et neuf C'est ainsi que fonctionne réellement l' instruction continue. Permettez-moi de passer une minute à parler un peu plus en détail de la fonction de portée. Il y a encore une chose. Cela, vous devez être au courant. Le truc avec la fonction range, c'est qu'elle peut en fait accepter trois valeurs. À titre d'exemple, laissez-moi simplement ajouter mon hashtag. Par exemple, avec la plage, vous pouvez avoir quelque chose comme un, dix, puis deux. La fonction de plage peut accepter trois paramètres différents, non ? Donc, si vous vous demandez, qu'est-ce que cela va être exactement ? Eh bien, le tout premier chiffre représente la valeur de départ, qui est un , le second représente la valeur d'arrêt, qui sera dix, tandis que la troisième valeur actuelle en représentera deux, qui seront les étapes à sauter Par défaut, laissez-moi simplement vous montrer comment cela fonctionne actuellement. Si je devais venir ici maintenant et dire ensuite un, dix ou deux. À titre d'exemple, permettez-moi supprimer le segment «   continuer » ici OK. Si j' imprime ces chiffres maintenant, vous verrez qu'il y a maintenant un, trois, cinq, sept et neuf ans ? Parce que nous les ignorons toutes les deux. L'étape sera deux, donc on va passer à un, on va passer à trois, on va sauter à cinq et ainsi de suite. Si je devais changer cette valeur maintenant à trois, pouvez-vous deviner quelles seront les valeurs ? Maintenant, ça va être 14 ou 7. Donc, si je lance le programme, voilà 147. Vous travaillerez peut-être ou non avec la fonction de plage à l'avenir, mais j'ai simplement pensé qu'il était important que vous compreniez au moins que la fonction de plage peut accepter jusqu'à trois paramètres différents. La première valeur ici est le numéro de départ, seconde est le numéro d'arrêt, puis la dernière valeur est le numéro d' étape et gardez à l'esprit que la valeur d'arrêt est toujours exclusive. Cela ne sera pas inclus dans les résultats réels de cette fonction de plage particulière. Dernière chose à mentionner, dernière chose à mentionner, vous pouvez également tomber sur une déclaration particulière appelée déclaration de passe. Ça se passe comme ça. Au lieu de continuer, par exemple, vous verrez passer. Pass ne fait vraiment rien. Honnêtement, c'est vraiment utilisé pour transmettre des commentaires. Peut-être que le développeur du programme ne veut pas encore exécuter quelque chose mais veut vivre comme un nœud. C'est à cela que sert principalement le laissez-passer. Nous n'allons pas du tout travailler avec. Ainsi, par exemple, ici, je pourrais dire quelque chose comme « OK, passe », puis je peux ajouter mon hashtag et je peux dire que j' ajouterai la fonction plus tard Juste à titre d'exemple. Permettez-moi lancer le programme, et vous pouvez voir maintenant le programme fonctionne toujours de toute façon, il ne va pas vraiment faire quoi que ce soit en tant que tel. C'est à peu près ça. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 26. Défi de programmation: Ok, Dookie, il est maintenant temps pour nous d'essayer rassembler tout ce que nous avons appris jusqu'à présent pour écrire un programme Et le programme que nous voulons est celui qui demandera à l'utilisateur de continuer à saisir un nombre positif sinon s'il veut quitter le programme, il pourra simplement taper les mots ou le mot terminé pour quitter le programme. Donc, en gros, nous disons : «   Hey, utilisateur, continue d'ajouter un nombre positif. Continuez à ajouter le numéro. Continuez à ajouter des chiffres. Chaque fois que vous êtes prêt à quitter le programme, tapez simplement terminé, n'est-ce pas ? Maintenant, alors que l'utilisateur saisit les chiffres deux, trois, quatre, neuf, 11, peu importe, nous voulons ajouter ces chiffres à une liste. Nous voulons être en mesure de suivre tous les numéros que les utilisateurs continuent de nous fournir. Nous allons donc ajouter ces numéros à une liste. Mais nous voulons également que le programme vérifie les numéros eVo ajoutés par l' utilisateur et garde trace du tout premier numéro EVO fourni afin que nous puissions imprimer et dire à l'utilisateur que « Hé, c'est le premier chiffre pair que vous avez ajouté, puis nous pouvons indiquer quel était ce numéro ». Sinon, si l'utilisateur n' a ajouté que des nombres impairs, nous pouvons simplement dire « OK, aucun nombre pair n' a été trouvé dans votre liste ». Maintenant, une fois que l'utilisateur a ajouté plusieurs numéros et qu'il finalement décidé de quitter le programme, nous voulons que le programme imprime tous les numéros ajoutés par l'utilisateur. Et si l'utilisateur n' a même jamais ajouté un seul numéro, dites simplement qu'il n'y a pas de guerre des nombres, ce n'est pas difficile. OK. Abordons donc cette question étape par étape. Tout d'abord, nous allons vouloir une liste, non ? Appelons cette liste par des numéros, d'accord ? Nous allons donc ajouter tous les numéros saisis par l'utilisateur. Nous allons les ajouter à cette liste appelée numéros. Donc, évidemment, nous allons utiliser la fonction de saisie pour, vous savez, inviter l'utilisateur à ajouter des nombres, n'est-ce pas ? OK. Et nous allons devoir créer une boucle sauvage dans ce scénario, car nous voulons que l'utilisateur continue à ajouter un chiffre ou à en fournir un jusqu'à ce qu'il choisisse de quitter le programme. Nous pouvons donc dire, vous savez, que c'est vrai, puis l'utilisateur continue d'ajouter un chiffre. Ensuite, nous voulons vérifier si le numéro fourni par l'utilisateur était réellement un nombre pair. OK ? Nous allons donc avoir une sorte de déclaration El qui vérifiera si le nombre, s'il est défaisable par deux, vous savez, s'il est égal à zéro, vous savez , puis imprimera un nombre pair, vous savez, des choses comme ça Vous savez, sinon, dites simplement non, chiffres pairs ont été trouvés. Mais quoi d'autre ? N'oubliez pas que nous voulons également continuer à ajouter les numéros fournis par l'utilisateur. Nous voulons les ajouter à la liste appelée numéros. Nous allons donc devoir ajouter l'entrée utilisateur à la liste des numéros, n'est-ce pas ? Et nous allons utiliser une nouvelle fonction appelée Append Très bien, ne t'inquiète pas. Je vais vous montrer comment cela fonctionne. Que devons-nous suivre d'autre ? C'est à peu près tout pour le moment, non ? Donc, tout d'abord, nous créons notre liste appelée numéros, et là nous allons devoir demander à l'utilisateur d'ajouter les numéros, vérifier si les nombres sont pairs. Une fois que le tout premier nombre pair a été trouvé, laissez le programme le suivre puis, à la fin, imprimez quel était ce nombre pair. Et puis, bien sûr, également à la fin du programme, la plupart des utilisateurs ont décidé de le quitter, d'imprimer simplement tous les numéros ajoutés par l'utilisateur. Alors, faisons-le, d'accord ? Nous allons déplacer cela et commencer. Tout d' abord, créons notre liste vide qui contiendra tous les numéros fournis par l'utilisateur. Donc les nombres sont égaux, puis vides, d'accord ? C'est donc la première étape que nous allons faire. Maintenant, demandons à l' utilisateur d'ajouter le numéro. Je vais donc dire que pendant et maintenant, avec deux points, nous voulons demander à l'utilisateur de fournir des chiffres. Cependant, nous devrons affecter les entrées des utilisateurs à une variable. Disons donc l'utilisateur sur le trait de soulignement. OK, cela représente tout ce que l'utilisateur ajoute. saisie par l'utilisateur ici est égale à des crochets, et maintenant demandons à l'utilisateur de saisir un nombre positif. OK ? Ou entre parenthèses, ils peuvent également simplement taper le type fait pour terminer. OK ? Jusqu'ici, tout va bien, nous avons attribué des numéros. Nous avons notre liste vide juste là. Cela collectera les numéros fournis par l'utilisateur Nous avons maintenant créé une boucle pour inviter l'utilisateur à continuer ajouter un nombre positif ou à taper terminé » s'il décide de terminer. Donc, ce que nous allons faire maintenant , c'est vérifier si l'utilisateur a réellement tapé les lettres finies ou tapées OK D'accord, parce que nous ne voulons pas que le produit continue fonctionner si l'utilisateur décide de taper OK. Je vais donc dire si l'utilisateur On the score input est égal à done. Si ce sont vraiment types créés, qu' allons-nous faire ? Vous l'avez deviné, nous allons rompre la boucle. Très bien, permettez-moi d'ajouter un peu d'espace ici. OK ? C'est bon. Nous avons donc vérifié si Dieser avait saisi le texte s'il avait rompu la boucle Cependant, s'ils ont saisi un nombre positif réel, que voulons-nous que le programme fasse ? Nous voulons que le programme ajoute ce numéro à la liste des numéros. OK ? Alors, comment allons-nous procéder ? Nous avons besoin de quelque chose pour représenter les chiffres qui seront fournis par l'utilisateur. Dans ce cas, pour l'instant, ne vous y trompez pas. La variable de saisie utilisateur ici représente simplement l'entrée ici, entrez un nombre positif ou tapez terminé pour terminer. C'est ce que cela représente ici. Les chiffres réels eux-mêmes devront créer une nouvelle variable pour cela. Donc, pour la variable ici, je vais dire num. OK, num sera égal à deux, je ne sais pas, souvenez-vous de la fonction entière qui convertira tout ce que l'utilisateur saisit. Ce ne sera donc pas un entier et soulignera maintenant l'entrée. OK ? Donc, en gros, peu importe ce que l'utilisateur tape sur cette ligne où nous disons «   entrez un nombre positif », si l'utilisateur tape en 5.2, par exemple, d'accord ? Convertissez 5.2 en un entier, qui sera désormais égal à cinq, puis attribuez cinq à la variable appelée nombre NUM. Maintenant, l'étape suivante consiste à ajouter ce numéro que l'utilisateur a ajouté à la liste des numéros. Et comment s'y prendre ? Je vais taper des chiffres et maintenant vérifier ce point ajouter. Et maintenant entre parenthèses NUM. Donc, ici, cet ajout va être la fonction qui va maintenant commencer à ajouter les numéros ajoutés par l'utilisateur à la liste des numéros. Revoyons-le encore une fois. Donc, tout d'abord, nous avons notre liste vide appelée numéros. Créons la boucle appelée Wil qui demandera l'utilisateur de continuer à ajouter un nombre positif. Cependant, s'ils ont tapé Done, si l'entrée utilisateur est égale à done, interrompez la boucle, inutile de continuer Mais si l'utilisateur a réellement ajouté des nombres réels, attribuez ces numéros à une variable appelée Num NUM, et commencez maintenant à ajouter ces nombres à la liste des nombres. Jusqu'ici tout va bien, que voulons-nous faire d' autre ? Nous voulons vérifier si un nombre pair est ajouté. Alors, qu'allons-nous faire ? Nous allons créer une boucle à quatre. OK ? Cette boucle va parcourir tous les nombres de la liste des numéros , puis trouver le tout premier nombre pair. Alors jetez un œil à ceci. Je vais dire quatre nombres N dans quoi ? En chiffres. C'est exact. Maintenant, ajoutons deux points. Créons une instruction I L. Donc, si le nombre divisé par deux est égal à zéro, que voulons-nous que le programme dise ? Nous voulons programmer pour dire imprimer. Et maintenant, nos crochets. Additionnons notre chaîne F, puis nous pouvons dire que avons trouvé le premier nombre pair. Et puis, bien sûr, les bretelles bouclées, puis le NUM. OK ? Sinon, si le numéro ajouté par l'utilisateur n'est même pas simplement cassé. Détruisons-le, d'accord ? Maintenant, nous pouvons ajouter notre instruction pour faire quelque chose, nous pouvons dire deux points et maintenant nous allons dire imprimer lorsque vous dites qu' aucun chiffre pair n'a été saisi par l'utilisateur. Et voilà. Cependant, encore une fois, l'identification est très, très importante Gardez à l'esprit que ce s est inférieur à quatre, d'accord ? Donc ce n'est pas plutôt Is. C'est la déclaration des quatre. Donc, assurez-vous simplement de ne pas commettre l'erreur. Ils seront très, très, très, très importants Il s'agit donc essentiellement de quatre, puis de numération en chiffres. Si un nombre divisé par deux est égal à zéro, nous avons trouvé le tout premier chiffre , puis nous imprimons quel est le nombre. Sinon, il suffit de rompre la boucle une fois que ce nombre a été trouvé, une fois que le tout premier nombre positif a été trouvé. Désolé, le premier chiffre pair a été trouvé. Et puis, si aucun chiffre pair n' a été ajouté par l'utilisateur, il imprime simplement qu'aucun chiffre pair n'a été saisi par l'utilisateur. OK. Enfin, vous devrez désormais imprimer tous les numéros que l' utilisateur a ajoutés à la fin du programme. Je vais donc venir ici tout de suite, ajouter la nouvelle instruction If et simplement dire le numéro if. Donc, si l'utilisateur a réellement ajouté des chiffres, donc s'il s'agit de chiffres, devinez quoi, imprimez-les simplement. Maintenant, nous allons dire F et encode maintenant les chiffres que vous avez entrés R, puis les bretelles bouclées. Maintenant, les chiffres. Sinon, ça va être s. Simply imprime. d'autres termes, si l'utilisateur n'a pas ajouté de chiffres, on peut dire qu'aucun chiffre n'a été saisi par l'utilisateur. Oh. Essayons. Je vais y aller tout de suite. Lancez le programme. Et, oh, nous avons donc un petit problème ici. Il est écrit la ligne 23. OK, imprimer F. Qu'est-ce que j'ai fait de mal ici ? Oh, il ne devrait pas y avoir de place. Désolée. Il ne devrait pas y avoir de place juste là. Vous voyez comment un seul espace peut tout gâcher. C'est un peu exaspérant, mais oui. Ainsi, chaque fois que vous utilisez les chaînes F, assurez-vous qu'il n'y a pas d'espace entre le F et votre code. Essayons donc encore une fois. Courez. OK, je vais donc en ajouter un. Bien, ajoutons-en trois. Ajoutons-en quatre. OK, ajoutons-en cinq. Ajoutons huit. Ajoutons six. Et maintenant je vais taper OK, Enter, et voilà. Le premier chiffre pair était quatre, et maintenant nous avons saisi les autres chiffres qui sont un, trois, quatre, cinq, huit et six Vous pouvez donc voir maintenant que le programme fonctionne réellement. Permettez-moi donc de passer en revue le programme une fois de plus. Tout d'abord, nous avons créé une liste appelée numéros. Cela contiendra tous les nombres positifs ajoutés par l'utilisateur. Ensuite, nous avons créé la boucle while qui invite continuellement l'utilisateur à continuer d'ajouter un nombre positif, ou s'il choisit de ne pas le faire, il peut simplement taper le mot terminé pour terminer le programme. Nous devions donc maintenant vérifier si l'utilisateur avait réellement saisi terminé Et au fait, laisse-moi même essayer. OK, allons-y, et tapons simplement terminé instantanément et voyons. Eh bien, voilà. Le programme fonctionne donc très, très bien. Donc, il vérifie pour voir, hé, cet utilisateur a-t-il bien saisi ? Oh, ça l'a fait. OK, donc si nous avons tapé OK, il suffit de rompre la boucle Nous n'avons plus besoin d' exécuter la boucle car l'utilisateur a saisi done Donc dans ce cas, en ce moment, dans ce scénario où l'utilisateur a saisi terminé, en gros, tout ce trouve ici n'est absolument pas pertinent, d'accord ? Le programme Python va passer directement de l'instruction break à simplement dire «   Hey, tout d'abord, jusqu'ici ». Tout d'abord, dites : « Hé, aucun chiffre pair n'a été saisi par l'utilisateur ». Enfin, aucun chiffre n'a été ajouté par l'utilisateur. Donc, tous les nombres entiers vont tout ignorer Mais que se passe-t-il si l'utilisateur a réellement saisi un chiffre ? Que voulons-nous que le programme fasse ? Eh bien, nous voulons ajouter ce numéro à notre liste de numéros. Nous devons donc affecter l'entrée utilisateur à une variable. Dans ce cas, nous avons créé actuellement une variable appelée Num qui représentera l' entrée fournie par l'utilisateur. Et nous avons également ajouté l'INT. En fait, essayons et voyons. Je vais dire 4.5 Entrez et oh oh, oh, oh. OK. Il y a un petit problème ici, avez-vous un message d'erreur ? Ne t'inquiète pas. Je vais vous montrer comment nous pouvons gérer les erreurs dans la prochaine vidéo. OK, B, laisse-moi refaire celui-ci une fois de plus, d'accord ? Et tapez, disons, cinq, d'accord ? Tapez cinq, tapez huit, c'est fait. OK, donc ça marche toujours bien. Nous nous sommes donc assurés d'avoir attribué les numéros ajoutés par l'utilisateur à la variable appelée NOM, puis nous avons ajouté NOM à la liste des numéros en utilisant cette fonction particulière en écrivant les nombres à point ajouter et à numération , d'accord ? Maintenant que l'utilisateur a effectivement ajouté des chiffres, nous voulions que le programme vérifie si l'un de ces nombres était pair. Ce faisant, nous avons dû créer une boucle qui parcourt tous les nombres de la liste des numéros. Et ensuite, si le nombre était divisible par deux sans aucun reste, dites simplement : OK, nous avons trouvé le tout premier nombre pair, imprimez ce nombre Sinon, si l'utilisateur n'a pas ajouté de nombre pair, dites simplement qu'il n'a saisi aucun chiffre pair. Et à la fin de la journée, il suffit d'imprimer les numéros ajoutés par l'utilisateur. Et si l'utilisateur n'a ajouté aucun chiffre, dites simplement qu'aucun numéro n'a été terminé par l'utilisateur. C'est exactement ce que nous avons fait ici. Alors, n'hésitez pas à suivre ce programme autant de fois que vous le souhaitez. J'espère que c'était relativement simple. Et bien sûr, comme toujours, si vous avez des questions sur ce que nous avons fait ici et que vous n'êtes pas, vous savez, vous êtes tout nous avons fait ici et que vous n'êtes pas, vous savez, à fait sûr, n'hésitez pas à me contacter je serai ravie répondre à toutes vos questions. Jomini Vernick Video Web va donc maintenant commencer à examiner comment nous pouvons gérer les erreurs dans 27. Introduction à la section Fonctions: Passons à la toute nouvelle section où nous allons examiner les fonctions, et je vous garantis qu'aucun cours programmation ne sera complet sans parler de fonctions, d'accord ? Les fonctions sont extrêmement importantes, et croyez-le ou non, nous avons déjà travaillé sur certaines fonctions, et nous avons même déjà créé certaines de nos propres fonctions. Dans ce cours. C'est juste que tu ne le sais pas encore. Donc, dans cette section, nous allons nous concentrer sur les fonctions. Je vais vous montrer comment créer vos propres fonctions personnalisées, puis comment vous pouvez utiliser ce que l' on appelle les paramètres, d'accord ? Avec quoi voulons-nous que notre fonction fonctionne ? Quels types de données , des choses comme ça. Nous allons également examiner les arguments des mots clés, les variables locales et globales, et bien plus encore. Et comme dans les sections précédentes, il y aura un exercice de codage à la fin de la section. Alors, s'il vous plaît, essayez-le. J'espère que tu seras en mesure de réussir. Si ce n'est pas le cas, ne vous inquiétez pas, je vais vous fournir la solution. Alors, sans perdre plus de temps, commençons à parler des fonctions. 28. Définir et appeler des fonctions: Bien, alors bienvenue dans cette nouvelle section de Bn où nous allons examiner les fonctions, n'est-ce pas ? Et jusqu'à présent, tout va bien, nous avons en fait travaillé avec un certain nombre de fonctions prédéfinies dans Python. Ainsi, des fonctions telles que l' impression, la saisie, la plage , etc. exécutent toutes un type d'opération particulier. Mais que se passerait-il si nous voulions créer nos propres fonctions personnalisées ? Comment pouvons-nous le faire ? Eh bien, pour ce faire, nous allons d'abord définir le nom de la fonction, puis décider si cette fonction acceptera ou non ce que nous appelons des paramètres. Ensuite, nous pouvons également dire : OK, cette fonction ajoutera ces nombres ou elle va faire quelque chose. Enfin, nous pouvons choisir de renvoyer une valeur dans cette fonction. Donc ça va être quelque chose comme ça. Vous aurez DEF, qui sera la fonction qui définira le nom de la fonction, puis vous pourrez choisir d'avoir des paramètres à l'intérieur de cette fonction, d'accord ? Ensuite, nous aurons le corps fonctionnel. Donc, vous savez, ajoutez A plus B, ajoutez ceci, faites ceci, divisez ceci, vérifiez si cette boucle est vraie, des trucs comme ça. En gros, peu importe ce que fera la fonction. Enfin, nous pouvons choisir de renvoyer une valeur, qui d'ailleurs sera facultative. Nous n'avons pas toujours besoin de renvoyer une valeur chaque fois que nous créons notre propre fonction. Permettez-moi de vous donner un exemple très, très basique. Disons que nous voulions créer une fonction qui imprimerait les mots «   Bonjour tout le monde », n'est-ce pas ? Nous pouvons dire DF, puis je peux appeler ma fonction Grit. Donc, le nom de ma fonction sera GET, puis je pourrai ajouter mes crochets entre deux points, puis terminer le hub. Au fait, notez que je n'ai ajouté aucun paramètre entre crochets ici. Les paramètres sont facultatifs, d'accord ? Cependant, je vais entrer tout de suite et définir ensuite ce que la fonction fera réellement. Je vais dire imprimer. Maintenant, je vais fournir les mots « Bonjour tout le monde ». Et maintenant, il ne me reste qu'à appeler la fonction. Et comment puis-je m'y prendre ? Je vais vous saluer. Et puis les paquets, et voilà. Alors maintenant, si vous voulez exécuter le programme, voilà, il dit simplement bonjour à tout le monde. Donc, encore une fois, nous avons commencé par donner le nom « greet » à notre fonction. Et puis nous avons maintenant indiqué ce que la fonction devait faire. La fonction doit imprimer hello world chaque fois que nous appelons ou utilisons cette fonction. Et puis ici, nous appelons simplement la fonction en disant simplement grit, puis entre crochets, et le tour est joué Voici donc l'un des types de fonctions les plus élémentaires que nous puissions créer. Mais c'est tout. Jerman Vanex Video Ware va maintenant commencer à examiner les paramètres et les arguments des fonctions. Je te verrai alors. 29. Paramètres et arguments: Eh bien, bon retour. Parlons maintenant des paramètres et des arguments. voyez, un paramètre est essentiellement une entrée que nous pouvons ajouter à une fonction afin de personnaliser son comportement. Dans ce cas, à l'heure actuelle, dans l'exemple précédent, le nom de la fonction, qui est grid, ne comportait aucun paramètre. Il est pratiquement vide. C'est pourquoi lorsque nous avons dit «   OK, imprimez, puis simplement bonjour tout le monde », puis que nous avons appelé la fonction, elle a simplement simplement dit bonjour tout le monde. Mais que se passe-t-il si nous voulons maintenant ajouter un paramètre particulier à l'intérieur ? Dans ce cas, tout de suite, je vais venir ici et dire mon nom. D'accord ? Donc, le périmètre ici est appelé nom, et maintenant je veux que ma fonction dise bonjour et ensuite le nom qui sera fourni. Je vais donc venir ici tout de suite. Utilisons la chaîne F, et maintenant je vais ajouter mes accolades, plutôt des crochets bouclés, et lui donner un nom. D'accord ? Alors maintenant, jetez un œil à ceci. Lorsque j'appelle ma fonction en ce moment, je peux ajouter ce que nous appelons l'argument. Lorsque vous transmettez une valeur à la fonction, elle devient un argument. Notez la différence entre les paramètres et les arguments. Ici, lorsque nous définissons la fonction pour la première fois, nous allons utiliser le paramètre. Le paramètre dit essentiellement  : « Hé, nous vous fournissons cette entrée, et je vais utiliser cette entrée pour personnaliser comportement de la grille de fonctions ». Cependant, une fois la fonction créée, nous avons indiqué ce qu' elle est censée faire. Dans ce cas, maintenant, bonjour, puis nommez le périmètre. Lorsque nous appelons cette fonction, lorsque nous voulons fournir une valeur, elle devient ce que nous appelons un argument. Donc dans ce cas, maintenant, si je voulais saluer, disons Alice, par exemple, n'est-ce pas ? le moment, c'est Alice qui est l'argument, et si je devais exécuter le programme, c'est parti. Il est écrit : « Bonjour Alice ». Et si je voulais saluer, disons, Bob ? Hein ? Bob, allons-y, lançons le programme, et le tour est joué. Bonjour Bob. Ce sont des périmètres et des arguments. Cependant, nous pouvons également avoir plusieurs paramètres dans notre fonction. Jusqu'à présent, nous n'avons travaillé qu' avec un seul paramètre, le nom. Et si nous voulions créer une fonction qui additionnerait deux nombres ? Comment allons-nous nous y prendre ? Eh bien, nous pouvons commencer par définir le nom de la fonction. Je vais donc appeler celui-ci Add Numbers. Ajouter des numéros sera le nom de la fonction. Et maintenant, à l'intérieur, nous allons fournir deux paramètres qui seront A et B, deux points, d'accord ? Maintenant, renvoyez A plus B. Nous n'avons pas encore parlé de la fonction de retour ou de l'instruction de retour. Ce que le retour fait ici, c'est qu'il va simplement renvoyer la valeur d'une opération particulière. Dans ce cas, pour le moment, les valeurs de A et B seront renvoyées lorsqu' elles seront additionnées. C'est ce que fait le retour. Alors maintenant je vais venir ici et vous dire quel est le résultat. D'accord ? Le résultat sera égal pour additionner des nombres. D'accord ? Et maintenant, à l'intérieur, je peux ajouter les deux chiffres que je veux ajouter, disons cinq et six. ne me reste plus qu'à imprimer le résultat. Et voilà. Si je veux ma fonction, voilà 11. Tu vois comment ça marche ? Tout d'abord, nous avons créé une fonction, mais en utilisant la fonction définie appelée additionner des nombres. C'est le nom de notre fonction. Ensuite, nous avons dit : OK, notre fonction va recevoir deux paramètres, A et B. Et maintenant, avec le retour, nous définissons essentiellement ce que la fonction va faire. Il va renvoyer la valeur de A plus B. Maintenant, il suffit de créer une variable qui stockera la valeur de notre fonction. Alors maintenant, la variable ici s'appelle résultat, qui est égale au numéro d'annonce. Le nom de la fonction appelle maintenant avec les deux valeurs cinq et six, et maintenant nous avons simplement imprimé le résultat, qui est égal à 11. C'est exactement ainsi que fonctionnent également le paramétrage des arguments et la fonction de retour Au fait, avant de terminer la vidéo, un petit mot sur le décompte de retour. Il est utilisé à deux fins principales, d'accord ? Le premier objectif est généralement de quitter une fonction. Vous pouvez donc l'utiliser pour arrêter l'exécution d'une fonction. La deuxième consiste à renvoyer une valeur réelle. Donc, à titre d'exemple, permettez-moi de vous montrer très rapidement. Si je disais définir puis saluer. OK, permettez-moi d'ajouter des paramètres vides ici. Et j'ai dit : « Imprimez bonjour ». Et puis j'ai dit « retour d'accord », mais après le retour sur une autre ligne, je dis aussi « imprimer Et puis, disons, disons, comme des manteaux, bonjour Jack, vous pouvez même voir en ce moment que dans notre replet, le texte lui-même est un peu ajusté, qui signifie que Python n' exécutera pas cette ligne en particulier Donc, si je devais courir, vous pouvez le voir maintenant, cela ne fait absolument rien, mais c'est parce que je n'ai pas encore appelé la fonction. Alors permettez-moi de venir ici et de vous dire bonjour, puis entre crochets, et voilà Donc, si je devais exécuter la fonction maintenant, vous verrez que tout ce qu'elle dit sera « bonjour ». Pourquoi ? Parce que le retour ici signifie que, hé, arrêtez l'exécution de la fonction, cela ne devrait pas dépasser cette ligne particulière Et c'est pourquoi nous n'avons que bonjour. Cependant, si je devais supprimer l'instruction return et que je relançais le programme, vous pouvez voir maintenant qu'il dit bonjour puis bonjour Jack. s'agit donc d'une autre utilisation de l'instruction return, mais vous pouvez l'utiliser pour arrêter l'exécution d'une fonction, ou comme je vous l'ai montré plus tôt, vous pouvez utiliser l'instruction return pour renvoyer une valeur particulière. Merci d'avoir regardé la vidéo, je vous verrai au prochain cours. 30. Arguments de mots-clés: Eh bien, revenez. Je veux que nous parlions maintenant des arguments liés aux mots clés, n'est-ce pas ? Fonctions Python, elles nous permettent essentiellement de transmettre des arguments en utilisant des noms de paramètres. Les noms de paramètres sont ce que nous appelons des mots clés. Ils rendront le code plus lisible et plus flexible, en particulier lorsque nous avons affaire à de nombreux paramètres. Jusqu'à présent, nous avons eu affaire à des paramètres tels que A, B, X, Y, mais laissez-moi vous montrer autre chose, d'accord ? Je vais créer une nouvelle fonction et appelons cette fonction describe, underscore person, d'accord ? Cette fonction va donc décrire le nom, l' âge et disons la ville de quelqu'un , n'est-ce pas ? Permettez-moi donc d'y ajouter les crochets. Et maintenant, ici, nous pouvons ajouter l'argument mot-clé. Je vais donc dire le nom, l'âge, puis la ville. OK. Et maintenant, pour ce qui est de la fonction elle-même, oh, désolée, j'ai oublié d'ajouter les deux points. Et maintenant, la fonction elle-même, que va-t-elle faire ? Nous voulions imprimer, OK, John a 30 ans et vit à Londres, juste à titre d'exemple, Je vais donc dire print, bracket et maintenant la chaîne F. OK ? Et maintenant des manteaux et maintenant des bretelles bouclées L'espace du nom est bouclé, encore une fois, les accolades sont désormais appelées périmètre d'âge Le support est vieux. Et je vais laisser Python faire le reste pour moi. Et voilà. Donc, en gros, la fonction dira : OK, Alex a 100 ans et vit à New York, juste à titre Alors jetez un œil à ceci. Je vais appeler la fonction pour que vous puissiez voir tout de suite que je vais appeler Alice. Merci, Python, d'avoir fourni cette suggestion. Je vais donc dire qu'Alice a 25 ans et vit à Donc, si je dirige la fonction en ce moment, vous pouvez voir qu' Alice a 25 ans et vit à C'est assez simple, non ? Cependant, jetez un œil à ceci. Je peux également appeler la fonction en fournissant les valeurs des paramètres eux-mêmes. Regarde ça, d'accord ? Je peux dire décrire une personne. Et maintenant, entre parenthèses, au lieu de dire «   OK, Alex, 30 ans, Londres », je peux plutôt dire que l'âge est égal à 30 ans. Et maintenant le coma. Et puis je peux dire que le nom signifie que Bob City est San Francisco. Tu as vu ce que j'ai fait en ce moment ? Au lieu de fournir directement les valeurs réelles des arguments, j'ai simplement dit : « Hé, je vais passer les valeurs dans les arguments des mots clés. L'âge sera donc de 30 ans. Il s'appelle Bob, la ville est San Francisco. Et, bien sûr, faites attention au fait que Bob et San Francisco sont des cordes. C'est pourquoi ils ont des codes doubles. Alors que 30 est un entier. Ce n'est pas une ficelle. C'est pourquoi il n'y a pas de codes. Donc, si je dirige la fonction, vous pouvez voir qu' il est écrit que Bob a 30 ans et vit à Malgré le fait qu' ici, l'âge passe avant tout. Nous n'avons pas dit que le nom était égal à Bob, puis à l'âge ou à la ville. Non. C'est parce que Python va simplement utiliser ce que nous avons décrit dans la fonction elle-même. Peu importe l' ordre de tous les arguments. Python s'en fout. Tout ce qui intéresse Python, c'est : OK, vous m'avez donné les arguments du mot-clé, très bien. Et maintenant c'est l'ordre. Il va examiner la fonction qui dit : OK, imprime d'abord le nom, puis s'il est âgé de 8 ans et vit en ville Ce sont donc ce que nous appelons les arguments des mots clés. Il est peu probable que nous travaillions avec eux plus tard dans ce cours, mais néanmoins, vous devez au moins en être conscient lorsque vous travaillez avec Python. Merci donc d'avoir regardé la vidéo, je vous verrai au prochain cours. 31. Variables locales et globales: Eh bien, bon retour. Une dernière chose dont je voudrais que nous parlions avant de terminer la section des fonctions sera le concept de portée variable. voyez, en Python, ou en fait, dans n'importe quel langage de programmation, nous avons à la fois des variables locales et globales. Les variables ont une portée qui déterminera où elles sont accessibles. Désormais, les variables qui se trouvent à l'intérieur d' une fonction seront locales à cette fonction, et vous ne pourrez pas y accéder en dehors de cette fonction. Alors que les variables définies en dehors de toute fonction sont globales par exemple, d'accord ? X est égal, disons, à 12, non ? C'est ce que nous appelons une variable globale. Pourquoi ? Parce que c'est tout seul. Il n'est à l'intérieur d'aucune fonction , d'une boucle ou de tout autre élément, il est autonome. C'est juste que X est égal à 12. Cependant, si je créais ma propre fonction et que je disais définir, souligner, modifier, variable, crochet, deux-points, et que maintenant je disais, X est égal à trois Le X ici sera ce que nous appelons une variable locale car il se trouve à l'intérieur de la fonction qui est modifiée sur la variable score. Donc, la variable globale de X est 12, la variable locale de X est trois parce que, encore une fois, ces trois se trouvent à l'intérieur de la fonction modifivariable Alors jetons un coup d' œil à ça, d'accord ? Je vais demander à ma fonction d' imprimer la valeur de X, d'accord ? Et maintenant, je vais appeler la fonction modifier la variable. Quelle sera, selon vous, la valeur de X ici ? La valeur de X ici sera trois car nous appelons simplement la fonction variable modifiée, dont la valeur de X est déjà égale à trois. Donc, si je lance ma fonction, vous pouvez voir qu'elle est là. Mais que se passerait-il si je voulais dire que la variable globale X est égale à 12. Je veux imprimer cette valeur. Tout ce que j'ai à faire est d'appeler la commande d'impression par défaut ou la fonction d'impression quatre, Python, puis de simplement dire print X. Maintenant, si je lance le programme à nouveau, vous pouvez en voir trois et maintenant 12. Encore une fois, comme cette impression est ici, ce n'est pas la même impression qui est sous la fonction de modification de variable. Cette impression ici est destinée à produire ou à imprimer la valeur de X, qui est la valeur locale qui se trouve à l'intérieur de la variable de modification de la fonction. Cependant, cette impression X w remarque ici à nouveau l'indentation Ce n'est pas à l'intérieur de cette fonction, c'est à l'extérieur. Le X ici sera donc celui qui appartient à la variable globale, qui est 12. C'est la différence entre les variables globales et les variables locales. Si vous souhaitez obtenir cette valeur particulière de X, qui est trois, vous devez toujours appeler la fonction qui héberge ou qui contient cette valeur particulière, qui est, bien entendu, une variable modifiée. Mais la variable globale, vous pouvez y accéder n'importe où tant qu'elle ne se trouve pas dans la fonction. Cependant, nous pouvons réellement modifier la valeur de nos variables globales à l'intérieur d'une fonction. Oui, nous pouvons le faire. Regarde ça, d'accord ? Je vais retourner à ma réception ici, non ? Et juste en dessous, je vais dire global X. En utilisant simplement l' instruction appelée global, nous pouvons modifier la valeur globale de X. Donc maintenant, je dis X global, X est égal à trois. Dans ce cas, pour le moment, nous modifions simplement la variable globale. C'est ce que nous sommes en train de faire en ce moment, nous allons simplement modifier la variable globale de X. Donc, si j'appelle, si je lance mon programme, vous pouvez voir tout de suite que la variable modificatrice de fonction X égale à trois en produira trois. Et comme nous avons modifié la variable globale de X pour qu' elle soit désormais trois au lieu de 12, même lorsque j'appelle la fonction d'impression qui se trouve en dehors de la fonction variable modifiée, elle en produira toujours trois car, encore une fois, dans cette fonction, nous avons modifié la variable globale X. Nous avons modifié le volume 12-3 en utilisant le mot-clé global ici C'est ainsi que vous pouvez également modifier les variables globales à l'intérieur d'une fonction locale. Merci beaucoup d'avoir regardé la vidéo. Je te verrai au prochain cours. 32. Section Structures de données - Intro: Bienvenue dans la section des structures de données. Ici, nous allons nous concentrer sur trois principaux types de structures de données. Nous allons parler de listes, de dictionnaires et de sets. Et, bien sûr, je vais vous souligner les différences entre les trois. Vous allez donc apprendre exactement ce qui différencie une liste d'un dictionnaire. Vous allez apprendre exactement ce qu'est un set. Ensuite, une fois que vous aurez appris à créer vos propres ensembles, dictionnaires et listes, nous apprendrons à y intégrer des boucles. Supposons, par exemple, que vous ayez une liste de mots de passe et que vous vouliez une boucle pour parcourir chaque mot de passe et faire quelque chose, vous allez apprendre à faire quelque chose similaire dans cette section particulière. Et, bien sûr, il y aura une grande variété d'exercices de codage différents, alors essayez-les. Il y aura également deux défis de programmation, que je vais bien sûr vous expliquer comment les résoudre. Et, bien sûr, comme pour toutes les autres sections à la fin, nous allons avoir le principal exercice de codage que je veux que vous essayiez. Alors, s'il vous plaît , assurez-vous de le faire sans perdre plus de temps, allons-y. 33. Listes: Très bien, commençons donc par parler de listes. Maintenant, les listes ne sont pas quelque chose de nouveau pour nous. En fait, nous avons déjà travaillé avec un certain nombre de listes. Nous avons eu des listes de noms, des listes de voitures, etc. Mais une chose à propos des listes, c'est qu' elles sont ce que nous appelons mutables. Cela signifie que nous pouvons réellement modifier les éléments ou éléments que vous avez dans une liste, n'est-ce pas ? Nous pouvons donc ajouter à la liste. Nous pouvons supprimer de la liste et modifier les éléments qui existent déjà dans cette liste particulière. Maintenant, ici, j' ai une liste de mots de passe compromis. Donc, le mot de passe habituel, un, deux, trois , quatre, cinq, QW, TY, etc. Maintenant, je voudrais vous montrer certaines choses que nous pouvons faire ici, n'est-ce pas ? Je peux dire imprimer, d'accord ? Et maintenant, entre crochets, je peux appeler cette liste des mots de passe compromettants. Maintenant, je peux fournir le numéro d'index de l' article que je souhaite mettre en vente. Dans ce cas, pour le moment, il s'agit du numéro d'indice zéro. Si je lance mon programme, vous pouvez voir que ce sera un mot de passe. Donc, la première chose que je veux que vous compreniez, c'est que les éléments d'une liste ont tous des numéros d'index commençant à zéro. Donc, si je devais imprimer l'index numéro deux, quelle serait, selon vous, la réponse ? Oui, ça va être QWERTY. OK, c'est la première chose que je veux que tu comprennes. Vient ensuite le fait que nous pouvons exécuter différents types de fonctions sur notre liste. Par exemple, je peux dire, laissez-moi appeler à nouveau la liste, et maintenant je peux ajouter cette fonction ici appelée append Ajouter ici, en termes techniques, c'est ce que nous appelons une méthode Les méthodes sont également des fonctions, mais ce sont des types de fonctions très particuliers. Nous parlerons des méthodes un peu plus tard. Mais pour l'instant, comprenez simplement que nous avons des fonctions très spéciales que nous avons appelées méthodes que vous pouvez appliquer directement sur les listes et elles feront quelque chose. Donc, à l'heure actuelle, un pend ajouterait le nouvel élément que nous voulons à notre liste Par exemple, je peux ouvrir mes crochets. Et disons que nous ajoutons de l' espadon. D'accord ? C'est un autre mot de passe très, très populaire utilisé par beaucoup de gens, d'accord ? J'ai donc ajouté le poisson salé à la liste. Donc, si j'y retourne maintenant et que j'imprime mes mots de passe compromis, vous verrez que Sordfsh a été ajouté à C'est donc la toute première méthode ou fonction que je veux que vous compreniez que vous pouvez utiliser avec votre liste. La prochaine sera ce que nous appellerons la fonction d'extension. voyez, un stylo avec un stylo, vous pouvez ajouter ce que vous savez, des éléments individuels, etc. Avec Extend, vous pouvez réellement ajouter tous les éléments d'une autre liste. titre d'exemple, j'ai ma première liste juste là, celle des mots de passe compromis. Supposons que nous ayons créé une autre liste de mots de passe compromis. D'accord ? C'est égal, et maintenant permettez-moi d' ouvrir les crochets. Et ajoutons un nouveau lot de mots de passe. Voyons voir. Nous avons l'un des de passe les plus courants que les gens utilisent souvent. OK, disons un, deux, trois, A, B, C, que diriez-vous de ça Et permettez-moi d'en ajouter une autre. Et parlons d' un chien, d'un chat, d'un os. Tu sais, juste quelque chose, non ? D'accord, nous avons donc maintenant deux listes différentes, non ? Un pour les mots de passe compromis, puis un autre pour les nouveaux mots de passe compromis. Alors regarde ça, d'accord ? Je peux venir ici tout de suite et dire «   compromettez les mots de passe et maintenant prolongez ». Et maintenant, entre parenthèses, je peux ajouter du nouveau à ce mot de passe compromis. Donc, en gros, je joins les nouveaux mots de passe à l'ancienne liste de mots de passe. Et maintenant, si je lance mon programme, vous pouvez voir que 123 ABC et dog cat Bone ont été ajoutés à ma liste de mots de passe compromis. Maintenant, une autre méthode que je veux que vous connaissiez est tout le contraire de l'ajout qui va être supprimé Permettez-moi donc tout d'abord de supprimer notre première ou deuxième liste et je vais modifier cette ligne ici, puis dire « supprimer ». Et maintenant, entre crochets, juste à titre d'exemple, d'accord, je peux fournir ce que je veux supprimer, c' est-à-dire un, deux, trois, quatre, cinq. Disons donc que je voulais supprimer cet élément en particulier très, très facilement. Je vais simplement dire « Ne pas supprimer, exécuter », et maintenant vous pouvez constater que 12, trois, quatre ou cinq ne figurent plus dans la liste des mots de passe compromis. C'est très, très simple. Une autre solution que nous pouvons faire est de simplement effacer. Nous pouvons effacer la liste complète à titre d'exemple. Donc, si je devais venir ici tout de suite, remplacer Supprimer par Clare, n'est-ce pas ? Je n'ai pas besoin de quoi que ce soit entre crochets. Donc, juste Clare et Iron, voilà, il sera vide. Il n'y a plus rien dans la liste. Il existe donc de nombreuses autres méthodes avec lesquelles vous pouvez marcher. Je pense qu'il y en a environ 11. Mais laisse-moi t'en donner deux autres, non ? Une autre méthode que nous pouvons utiliser sera l'inverse, n'est-ce pas ? Donc, en gros, cela va simplement inverser l'ordre des éléments de la liste. Cela va inverser l'ordre. Donc si je lance ça, voilà, ça commence par euh, laissez-moi entrer et revient en arrière jusqu'au mot de passe Et puis une autre chose que je veux vous montrer qui peut être très utile serait la méthode de copie. Donc, par exemple, laissez-moi venir ici et je vais créer une sauvegarde, d'accord ? Alors sauvegardez et soulignons les comptes, d'accord ? Je peux attribuer la sauvegarde à mes comptes de sauvegarde variables et je peux désormais dire des mots de passe égaux, et maintenant des mots de passe compromis, et maintenant des points, des copies et maintenant entre crochets. D'accord, donc en gros, ce que je fais en ce moment, c'est faire une sauvegarde de cette liste, de cette liste passe de compromis, puis l'attribuer aux comptes de sauvegarde variables Donc maintenant, si je devais imprimer les comptes de sauvegarde et que je m'enfuyais, vous verrez que nous avons exactement la même liste, exactement les mêmes éléments. C'est donc ce que vous utiliseriez pour créer des sauvegardes ou copier les éléments d'une liste particulière. Donc, comme je l'ai dit, vous en avez quelques autres comme sort, pop, etc. Nous parlerons des méthodes un peu plus tard dans le cours. Mais pour l'instant, c'est l' introduction aux listes et aux méthodes que vous pouvez utiliser pour les utiliser. Merci d'avoir regardé. Je te verrai au prochain cours. 34. Utiliser des boucles dans une liste: Continuez à travailler avec nos listes, et je veux que nous essayions d'écrire un programme qui imprimera simplement les jours de forte activité. Maintenant, ce que vous voyez sur mon écran est une liste de tentatives de connexion par jour. Écrivons donc un programme qui parcourra cette liste, puis imprimera les jours de forte activité. Toutefois, pour déterminer ce que serait une activité élevée, supposons dix tentatives de connexion ou plus. OK. Pour ce faire, créons une variable qui stockera les jours de forte activité. Je peux donc dire « élevé » puis souligner l'activité pendant les vingt jours. OK. Maintenant, cela équivaudra, disons, à des tentatives. OK ? Nous voulons créer une boucle à quatre boucles qui parcourra la liste, d'accord ? Nous avons donc nos crochets ici, puis je peux dire tentative, d'accord, quatre, souvenez-vous maintenant de tentative où vérifions-nous le nombre de tentatives ? Il figurera dans la liste des tentatives de connexion. Je vais donc parler des tentatives de connexion. Nous n'en avons pas encore parlé, mais vous pouvez également inclure une instruction if directement dans une boucle à quatre boucles. Nous voulons donc créer une boucle qui parcourra notre liste, puis si le nombre de tentatives est de dix ou plus, nous allons imprimer une journée de forte activité. Essayez donc de tenter de vous connecter. Maintenant, si la tentative est supérieure ou égale à dix. Tu as compris, d'accord ? Alors maintenant, que devrait-il se passer ? Imprimons simplement. Et puis, entre parenthèses, nous pouvons dire quelque chose comme les jours de forte activité, côlon, puis le coma, jours d'activité intense Alors maintenant, si je lance le programme, et voilà. Les jours de haute activité, nous en avons dix, 12, 15 et 20. C'est ainsi que nous pouvons exécuter une boucle en quatre pour parcourir notre liste, puis l' imprimer ou faire autre chose. Je vais donc vous proposer un exercice, un défi dans la prochaine vidéo. Veuillez le parcourir et essayer de répondre aux questions. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 35. Dictionnaires: Parlons des dictionnaires. Et tout comme pour les listes, vous pouvez modifier, ajouter, supprimer des éléments dans vos dictionnaires. Cependant, la principale différence entre vos listes et vos dictionnaires est que, contrairement à votre liste où vous avez des éléments ou des valeurs individuels ou des éléments dans votre dictionnaire, nous allons avoir ce que nous appelons une paire clé-valeur Par exemple, je peux avoir un dictionnaire appelé user info, et maintenant c'est égal à ce que je vais utiliser les accolades. D'accord, nous utilisons généralement les accolades pour les dictionnaires Donc, ici, je peux avoir des informations comme le nom d'utilisateur, qui serait admin. Donc, ici, le nom d'utilisateur sera la clé tandis que admin sera la valeur de la clé. Nous pouvons également avoir un mot de passe, d'accord ? Et disons que le mot de passe ici est « laissez-moi entrer » à titre d'exemple. Et nous pourrions même en avoir une autre, par exemple, la dernière connexion. OK, dernière connexion, appelle-moi, et je pourrai avoir une date, disons, 22/10/2024, juste à titre d'exemple, non Notez donc que chaque fois que vous ajoutez vos paires clé-valeur dans votre dictionnaire, la virgule apparaît à la fin de chaque ligne Mais pour la toute dernière paire clé-valeur, il n'est pas nécessaire d'ajouter la virgule à la fin, n'est-ce pas ? Il suffit donc d'en prendre note. C'est donc ce que nous appelons un dictionnaire, n'est-ce pas ? Nous avons nos paires clé-valeur, nom d'utilisateur, la valeur est admin, nous avons le mot de passe clé, la valeur est laissez-moi entrer. Et bien sûr, nous avons la clé de dernière connexion, puis nous avons la date comme valeur. À partir de là, je pourrais décider d' imprimer les informations. Je pourrais venir ici et dire « imprimer ». Et maintenant, si je voulais imprimer, disons, le nom d'utilisateur, je commencerais par indiquer les informations de soulignement de l'utilisateur, et maintenant les crochets habituels, je dirais simplement le nom d'utilisateur, et c'est Alors maintenant, si vous voulez exécuter, vous pouvez voir que l'administrateur a été fourni. Voici donc comment vous pouvez imprimer les valeurs des clés de votre dictionnaire. Il vous suffit d'indiquer la clé dont vous souhaitez imprimer la valeur et le programme se chargera du reste. Eh bien. Maintenant, comme je l'ai dit avec les dictionnaires, vous pouvez facilement ajouter ou modifier les éléments de votre dictionnaire Donc, par exemple, si je voulais ajouter de nouvelles informations, comme, disons, l' e-mail de l'utilisateur, il me suffit de venir ici et de simplement dire «  venir ici et de simplement dire information de soulignement de l'utilisateur », OK Maintenant, je vais avoir les crochets habituels, et maintenant je vais simplement ajouter la clé ici, qui sera envoyée par e-mail. Et puis, très simplement, je vais juste dire égal à égal, et maintenant je peux ajouter l'adresse e-mail ici. Disons simplement admin sur labcyber.com. D'accord. Juste à titre d'exemple, non ? Donc, si je devais venir ici maintenant et imprimer les informations utilisateur, laissez-moi simplement retirer la clé qui s'y trouve. Nous voulons donc imprimer toutes les informations de l'utilisateur ici. Je lance le programme, et le voilà. Il va tout imprimer. Le nom d'utilisateur est donc admin. Le mot de passe est « laissez-moi entrer ». La dernière connexion est à cette date, puis l'e-mail qui se trouve juste à côté est admin at labsyber.com Nous pourrions également le mettre à jour. Nous pourrions également mettre à jour les informations de notre dictionnaire. Encore une fois, par exemple, si je voulais mettre à jour, disons le mot de passe, n'est-ce pas ? Je peux donc dire les informations sur le score de l'utilisateur Oder, et maintenant entre crochets, bien sûr, la clé ici sera le mot de passe, n' est-ce pas ? Donc mot de passe. Maintenant, je dois fournir le nouveau mot de passe. Appelons-le donc poisson SOD. Poisson doux. Et voilà. Si je lance mon programme, vous pouvez maintenant voir que le mot de passe est bel et bien changé en SOD fish Ainsi, tout comme pour vos listes, vous pouvez ajouter de nouvelles paires clé-valeur à votre dictionnaire, vous pouvez également modifier les valeurs des clés existantes. De plus, tout comme pour les listes, nous avons une variété de méthodes que nous pouvons réellement appliquer à notre dictionnaire. Donc, la toute première méthode dont je veux parler ici sera la méthode G, qui récupérera la valeur associée à une clé. Donc, par exemple, laissez-moi supprimer toutes ces informations ici, n'est-ce pas ? Si je voulais imprimer les informations utilisateur, ou lorsque j'obtiens le nom d'utilisateur, la valeur du nom d'utilisateur clé, tout ce que je dois faire ici est de dire «  imprimer les informations point utilisateur » , puis « point G. D'accord ». Et maintenant, encore une fois entre crochets, je vais ajouter la clé qui est le nom d'utilisateur. Donc, cet endroit devrait imprimer le nom d'utilisateur. Si je cours, il y a admin. Donc, comme pour votre liste, nous avons utilisé un stylo, une copie, etc. Nous avons également exactement les mêmes méthodes pour le dictionnaire, et get right here est l'une d'entre elles. Une autre méthode sera des clés où vous pourrez simplement imprimer toutes les clés que nous avons dans un dictionnaire. Permettez-moi donc de supprimer toutes les informations ici. Donc, si je cours, voilà. Nous avons toutes les clés qui sont le nom d'utilisateur, le mot de passe et la dernière connexion. Nous avons également le contraire , qui serait celui des valeurs. Donc c'est en quelque sorte des clés. Je vais changer celle-ci ici en valeurs et si je cours, nous allons maintenant avoir toutes les valeurs répertoriées dans la sortie. Maintenant, nous pouvons également créer une boucle qui parcourra notre dictionnaire. Et comment pouvons-nous le faire ? Eh bien, nous pouvons utiliser les quatre boucles parce que nous avons un dictionnaire. N'oubliez pas que les quatre boucles fonctionnent bien avec les listes, les dictionnaires, etc. Donc je vais dire quatre, et maintenant je dois dire Key, d'accord ? Donc, pour la clé puis la valeur virgule, et maintenant pour les informations de soulignement de l'utilisateur, nous devons ajouter une autre méthode appelée items items et maintenant les crochets, les deux-points, et le tour est joué C'est ainsi que vous allez créer votre boucle qui parcourra votre dictionnaire. Il va donc indiquer une valeur virgule à quatre touches, puis dans le dictionnaire des noms, puis vous allez y ajouter la méthode items Et maintenant, il ne nous reste plus qu' à imprimer les informations. Je vais donc dire imprimer. Et utilisons la chaîne F. Donc, nos crochets habituels d'abord. Et maintenant, la corde F et maintenant les manteaux, bretelles bouclées pour maintenir et afficher la touche, et maintenant nous aurons deux points, et maintenant les autres accolades pour contenir ce qui doit contenir ce qui Et maintenant, si je cours, voilà, utilisez le nom Admin, le mot de passe, laissez-moi entrer et, bien sûr, la date de dernière connexion. Vous pouvez donc également utiliser des boucles pour parcourir vos dictionnaires, vos listes, etc. Voilà pour les dictionnaires. Joy dans la vidéo suivante, où nous allons maintenant examiner ce que nous appelons dictionnaires imbriqués. Je te verrai alors. 36. Dictionnaires imbriqués: Et retour. Dans la leçon précédente, nous avons parlé des dictionnaires, mais nous allons maintenant aller plus loin en parlant des dictionnaires imbriqués. Donc, en gros, des dictionnaires à l'intérieur d'un autre dictionnaire. Jusqu'à présent, nous n'avons eu affaire qu' à une seule information utilisateur. Mais que se passerait-il si nous avions plusieurs utilisateurs, non ? Comment pouvons-nous créer cela ? Donc, ce que je vais faire ici, c'est changer le nom informations utilisateur en informations d' identification utilisateur, n'est-ce pas ? Ce sera le nouveau nom d'un dictionnaire, et maintenant des bretelles bouclées Nous pouvons maintenant ajouter le tout premier dictionnaire NSTA qui contiendra les informations destinées à l'administrateur Je vais donc venir ici, taper Admin. Ce sera notre premier utilisateur. Et maintenant, les lettres de créance, les bretelles bouclées. Allons-y avec le mot de passe. mot de passe est ici. Les deux points, puis nous pouvons passer à admin 123. D'accord ? Donc, le premier utilisateur ici , admin, le mot de passe sera admin 123, et nous pouvons ajouter un autre identifiant qui serait la dernière connexion Donc, dernière connexion, inscrivons celui-ci dans nos codes. Nous allons nous connecter. Maintenant, deux points. Ajoutons les dates. Disons, quelque chose comme 202-04-1019 D'accord. À titre d'exemple, il y a une petite flèche juste ici. Laissez-moi voir ce que je fais de mal exactement ? Ah, ici avec un mot de passe, la colonne devrait être à l'extérieur. J'ai fait une erreur là-bas. OK, c'est beaucoup mieux. Il s'agit donc du premier dictionnaire Nesta que nous avons tant qu'administrateur qui contient les paires clé-valeur Il contient le mot de passe clé, et la valeur d'un mot de passe ici sera admin 123. Et puis l'autre clé ici sera la dernière connexion, et la valeur est, bien sûr, 2024, 1019 Mais nous pouvons ajouter un autre dictionnaire. Je vais dire virgule. Maintenant, nous pouvons ajouter un autre utilisateur. Appelons cette personne « utilisateur 1 ». Et je vais juste laisser Repl faire le reste, remplir toutes les informations et le tour est joué Le jour du mot de passe sera donc celui de l' utilisateur un, un, deux, trois, puis la dernière connexion sera également Non, changeons la date ici par autre chose. Alors allons-y avec un 06, puis peut-être un 14. Très bien, pour de la variété. Voici donc ce que nous appelons un dictionnaire imbriqué Le dictionnaire se trouve à l'intérieur d'un autre dictionnaire. Et bien sûr, nous pouvons accéder aux informations assez facilement. Donc, par exemple, si je voulais imprimer le mot de passe de l'administrateur, comment puis-je le faire, d'accord ? Je peux simplement dire imprimer. Et maintenant, entre parenthèses, je vais dire que les identifiants de l'utilisateur soulignent, d'accord ? Et maintenant, les crochets ordinaires et les doubles couches intérieures, je vais dire admin. OK. Nous voulons maintenant imprimer le mot de passe de l'administrateur. Encore une fois entre crochets, ajoutons le mot de passe. Et voilà. Donc, si je lance le programme en ce moment, vous pouvez dire qu'il indique Admin un à trois, car en disant «   Hé, imprimez à partir du dictionnaire des informations d'identification de l'utilisateur », nous voulons que vous imprimiez la valeur du mot de passe clé appartenant à l'administrateur utilisateur. C'est pourquoi nous avons Admin 123. Ou je pourrais dire, accord, imprimer entre crochets, informations d'identification de l'utilisateur, et imprimons le dernier identifiant de connexion de l'utilisateur 1. Comment allons-nous procéder ? Encore une fois, c'est très simple. Je vais simplement entrer ici et dire « utilisateur 1 », et maintenant « nouveaux crochets », puis simplement saisir la dernière clé de connexion, dernière sur le score, « login ». Et voilà. Alors courez, et voilà 202-04-0614 Voici donc un exemple de dictionnaires imbriqués. Et cela peut être particulièrement utile si vous essayez de créer des fonctions ou des programmes pour les pare-feux un outil d'enregistrement des pasteurs ou un outil qui vérifie les informations d'identification des utilisateurs, etc., n'est-ce pas ? Vous pouvez utiliser des dictionnaires imbriqués pour ce type de programme Merci donc d'avoir regardé, et bien sûr, je vous verrai au prochain cours. 37. Ensembles: Continuez avec les structures de données, et la prochaine étape sera ce que nous appelons des ensembles. Maintenant, sur mon écran, il apparaît que j'ai deux listes différentes qui sont similaires dans les éléments qu'elles contiennent. Notez toutefois que les mots de passe compromis utilisent des crochets réguliers, tandis que les nouveaux mots de passe de compromis utilisent des accolades Croyez-le ou non, cela est extrêmement important car les crochets réguliers indiquent que ces éléments figurent dans une liste, tandis que les accolades indiquent que les éléments ne figurent pas dans une liste, mais à l'intérieur d'un ensemble La question naturelle à l'heure actuelle serait donc quelle est la différence entre une liste et un ensemble ? Il y en a pas mal. Le fait est qu'avec vos articles dans une liste, vous pouvez les commander. Tu peux les commander. Vous pouvez les référencer à l'aide d'un numéro d'index, alors que dans un ensemble, ils ne sont pas dans un ordre particulier. Ils sont commandés, non ? En fait, je te le prouve. Si je devais imprimer dès maintenant les mots de passe compromis, n'est-ce pas ? Ensuite, j'imprime également les nouveaux mots de passe compromis, je regarde la commande. Pour la liste elle-même, vous pouvez voir qu'elle suit le même mot de passe de commande, 1234 QWERTY Mais avec le set, c'est presque un peu aléatoire. Il est parti à 123, quatre heures, puis est passé à ABC 123, il est allé à Monkey, et ainsi de suite. Donc, en ce qui concerne les ensembles, les articles ne sont pas dans un ordre particulier. Une autre différence majeure est que votre liste autorisera les doublons, Ainsi, par exemple, je pourrais ajouter 123, quatre à nouveau dans ma liste. Cependant, si je devais faire de même dans mon set, vous remarquerez la différence. Donc, si je cours, encore une fois, vous pouvez voir en ce moment dans la liste que 1234 se répète. Dans le set, 1234 est répertorié qu'une seule fois. Ce n'est pas autorisé. Vous n'êtes pas autorisé à avoir des doublons dans vos sets. C'est pourquoi chaque fois que vous essayez de créer une fonction ou un programme impliquant, exemple, une liste d'éléments qui devraient être uniques, comme de passe, des adresses e-mail ou des comptes utilisateurs, vous devez utiliser des ensembles pour ceux-ci plutôt que des listes, car vous savez que, d' accord, aucun utilisateur ne peut avoir exactement les mêmes informations d'identification. Il sera donc plus idéal d'utiliser un ensemble. Les sets sont donc généralement beaucoup plus rapides à parcourir. Le programme peut parcourir un ensemble beaucoup plus rapidement qu'une liste. Maintenant, les deux sont mutables. Vos listes et vos ensembles sont modifiables, ce qui signifie que vous pouvez apporter des modifications Vous pouvez ajouter des éléments, déplacer des éléments, les modifier. Et c'est à peu près tout. Mais tout comme pour vos listes, nous avons également des opérations ou des méthodes que nous pouvons utiliser sur nos ensembles Nous les appelons en fait des opérations mathématiques comme union, intersection, différence. Laisse-moi juste te montrer, d'accord ? Permettez-moi de le supprimer ici. Et maintenant, permettez-moi de venir ici et de travailler avec deux ensembles différents. D'accord ? Je pense que je n'ai plus besoin de cette ligne, en fait. OK, donc ici, nous en avons défini une, nous en avons défini deux, puis les deux ont deux adresses IP. Maintenant, je pourrais décider de trouver des adresses IP communes aux deux ensembles, n'est-ce pas ? Je pourrais donc dire, par exemple, adresses IP de soulignement communes seront désormais égales à set one, et maintenant à union D'accord ? Alors intersection, non ? Intersection et maintenant, définissez-en deux. L'intersection ici est donc ce que nous appelons un opérateur qui trouvera les éléments communs dans les deux ensembles. Donc, si je devais intervenir maintenant et dire imprimer, adresses IP communes et je cours, adresses IP communes et je cours, vous verrez que la version 10.0.0.1 est courante dans les deux C'est pourquoi il est imprimé. Mais nous avons également ce que nous appelons l'opérateur mathématique de l'Union. Je peux donc remplacer un symbole ici par le symbole syndical. Ce que cela fera, c'est un peu comme la méthode d' extension d'une liste où vous ajouterez les éléments d'une liste à une autre. Donc pour le moment, si je cours, vous pouvez voir que nous avons maintenant toutes les adresses IP. Cependant, notez que, s'agit d'un ensemble, l'adresse IP 10.0.0.1 présente dans les deux ne sera répertoriée qu' l'adresse IP 10.0.0.1 comme il s'agit d'un ensemble, l'adresse IP 10.0.0.1 présente dans les deux ne sera répertoriée qu'une seule fois, Nous avons un autre opérateur ici, qui sera l'opérateur de différence. Il suffit d'utiliser le signe moins. Maintenant, cela va faire sorte que vous trouverez des éléments présents dans un ensemble, mais pas dans l'autre. Donc, si je l'exécute maintenant, vous pouvez voir que 192 one.one.01 est un élément présent dans le premier ensemble, mais absent dans le second Nous pouvons donc faire le contraire, d'accord ? Je peux dire set deux moins set un, et maintenant cela nous donnera le 19216 eight.one.102, qui est, bien sûr, présent dans le set deux, mais pas présent dans le set un mais pas Nous avons également des méthodes telles que votre ajout, suppression, Clare. Ainsi, par exemple, si je voulais ajouter une nouvelle adresse IP pour en définir une, il me suffit de dire définir une adresse et maintenant ajouter un point, et maintenant entre crochets, je entre crochets peux ajouter la nouvelle adresse IP, donc je peux dire 192.168.0.10 Très bien, juste à titre d'exemple. Alors maintenant, si je devais en imprimer un, courir, et le tour est joué. Vous pouvez voir maintenant que 192-16-8010 a en fait été ajouté pour en définir Vous pouvez également avoir d'autres méthodes comme supprimer, effacer, etc. N'hésitez pas à la rechercher sur le site Web de Python si vous le souhaitez. Voilà pour les sets, merci d'avoir regardé. Je te verrai au prochain cours. 38. Programmer des ensembles de défis et des boucles: Reviens. Maintenant, je vais vous présenter un exercice qui comporte deux tâches. Et sur mon écran, vous pouvez voir que nous avons un dictionnaire des différents journaux. Vous pouvez y voir les paires clé-valeur, le nom d'utilisateur, puis les adresses IP, puis les statuts, n'est-ce pas ? Les deux tâches sont donc les suivantes. Tout d'abord, nous voulons identifier et imprimer toutes les adresses IP uniques figurant dans les journaux. Ensuite, il faut rechercher une adresse IP spéciale qui pourrait exister. S'il existe, nous allons imprimer quelque chose. S'il n'existe pas, nous pouvons imprimer autre chose. Vous pouvez donc mettre la vidéo en pause et essayer de résoudre vous-même ces deux tâches. Un indice que je vais donner est que nous allons certainement devoir travailler avec une sorte de boucle à quatre boucles. J'allais parcourir chaque journal, puis surtout rechercher le val des adresses IP, et nous allons devoir transmettre les résultats dans un ensemble, car souvenez-vous qu'avec les ensembles, nous n'aurons pas de doublons Et comme nous recherchons des adresses IP uniques, ensembles seraient la solution idéale. Vous pouvez donc mettre la vidéo en pause et l'essayer vous-même. Si ce n'est pas le cas, je vais vous expliquer comment nous pouvons résoudre les deux problèmes. Donc, tout d'abord, pour ce qui est de la première tâche, nous devons identifier toutes les adresses IP uniques. Donc, une chose que nous pouvons faire pour le moment est simplement de créer un ensemble qui stockera ces adresses IP uniques. Et je vais appeler cela un ensemble d'adresses IP uniques. OK. Et maintenant, ce que je vais faire, c'est parce que c'est un set, je vais ouvrir mes zones frisées Mais maintenant, pensez-y, d'accord ? Nous voulons passer en revue chaque journal. Ensuite, recherchez la valeur de la clé IP. Alors regarde ça, d'accord ? Je vais dire log, et maintenant je vais ouvrir mes crochets parce que nous voulons cibler la clé, à savoir l'adresse IP. Donc, en gros, nous disons : OK, pour chaque journal, accédons à l'adresse IP, et maintenant je vais présenter ma boucle à quatre en disant quatre journaux de connexion. Hein ? Nous avons donc créé les quatre boucles qui parcourront chaque journal dans notre dictionnaire de journaux, et nous rechercherons spécifiquement la valeur de la clé IP. Donc, puisque nous avons tout regroupé dans un ensemble, il ne nous reste plus qu'à imprimer. Et puis, entre crochets, nous pouvons dire quelque chose comme des adresses IP uniques, deux points, puis simplement ajouter une virgule, et maintenant des adresses IP de soulignement uniques Et voilà. Je suis sûr que vous vous attendiez à ce que cela prenne encore quelques lignes de code. Félicitations si vous avez pu résoudre ce problème vous-même, il s' agisse de deux ou trois lignes, de quatre lignes ou de cinq lignes qu'il s' agisse de deux ou trois lignes, de quatre lignes ou de cinq lignes, car il existe d'autres moyens de résoudre le problème, mais c'est de loin le moyen le plus court et le plus efficace. Alors laissez-moi lancer le programme dès maintenant, juste pour m'assurer qu'il fonctionne, et voilà. Génial. Nous avons donc tout là-dedans, 182, 168, 11, un point cinq, un à deux, un point quatre, puis un point trois. Génial. Cool. D'accord. Ensuite, il y aura la deuxième tâche. OK ? Alors, que cherchons-nous ici ? Nous recherchons une adresse IP spéciale égale à 182168, un point quatre Nous pouvons donc dire qu'une adresse IP spéciale est égale à 192.168.14. Alors, qu'allons-nous faire maintenant ? Nous devrons utiliser l' instruction Is parce que nous disons « OK, si cette adresse IP spéciale a été trouvée là-dedans, faites ceci, sinon, faites autre chose ». Je vais donc dire si l' adresse IP de soulignement spéciale se trouve dans ce que N se trouvait dans notre ensemble unique Je suis désolée, des adresses IP uniques, des adresses IP soulignement plutôt uniques. Que voulions-nous faire ? Nous voulions dire imprimer, puis nous pouvons dire, vous savez, qu' adresse IP spéciale a été trouvée, d'accord ? Sinon. Oh, désolée pour ça Et puis on peut dire autre chose Imprimer. Et puis aucune adresse IP spéciale n'a été trouvée. Et voilà. OK. Allons-y, lançons le programme, et le tour est joué. L'adresse IP spéciale a bien été trouvée. Maintenant, si je remplace quatre par dix, juste pour m'assurer que cela fonctionne réellement, et que je relance le programme, voilà juste pour m'assurer que cela fonctionne réellement, . Aucune adresse IP spéciale n' a été trouvée. Encore une fois, félicitations si vous avez réussi à résoudre vous-même l'une ou l'autre des tâches ou les deux. Si ce n'est pas le cas, ne vous inquiétez pas. Tout cela fait partie du processus d'apprentissage, mais je vais maintenant vous donner un exercice que vous devrez essayer vous-même. Je te verrai donc au prochain cours. 39. Des dictionnaires et des boucles du défi de programmation: Bon retour. J'ai donc décidé d' ajouter une tâche supplémentaire pour en faire la troisième tâche, et cela va être un peu plus compliqué. Et cette tâche va impliquer de compter le nombre de tentatives de connexion infructueuses par utilisateur. Donc, en gros, nous allons parcourir chaque journal, compter le nombre de fois où un utilisateur en particulier a échoué dans son statut, puis simplement imprimer qu'Ale a, vous savez, quatre flures, Bob a un échec et ainsi de suite, vous savez, quelque chose comme ça Vous pouvez donc mettre la vidéo en pause et essayer de résoudre vous-même cette tâche. Si ce n'est pas le cas, examinons les deux ensemble. Donc, comme je l'ai dit plus tôt, j'ai mon fichier de bloc-notes ici parce que je veux que nous abordions cela de manière logique, Allons-y donc étape par étape. La toute première question est la suivante. Allons-nous avoir affaire à un ensemble, un dictionnaire ou à une liste ? Réfléchissons-y, non ? Il ne peut évidemment agir d'un ensemble car les ensembles n'acceptent pas les doublons Donc, si nous voulons utiliser un set ici et que Bob a échoué une tentative de connexion, la deuxième fois que Bob échoue, set ne l' acceptera pas car n' oubliez pas que les sets n' acceptent pas les doublons Les ensembles ne fonctionneront donc pas ici. Ce ne peut pas être une liste non plus, car pensez-y, d'accord ? Nous devons associer le nom d'utilisateur au nombre de fois où ils ont échoué, et ce sont les dictionnaires qui sont parfaits pour travailler avec des paires clé-valeur La clé ici sera donc le nom d'utilisateur, puis la valeur sera le nombre de fois où le statut de ce nom d'utilisateur en particulier a échoué. Nous allons donc travailler avec un dictionnaire. Nous avons donc besoin d'un dictionnaire pour stocker le nom d'utilisateur et leurs tentatives de connexion échouées respectives, n'est-ce pas ? OK. Maintenant, que devons-nous faire pour connaître le nombre de fois que chaque utilisateur a rempli le formulaire ? Nous devons créer une boucle à quatre. Donc, pour qu'une boucle passe par chaque journal, n'est-ce pas ? Et puis une boucle, lorsqu'elle traverse un journal, que recherchons-nous exactement ? Nous voulons rechercher le statut qui indique un échec. Le succès ne nous intéresse pas. L'échec nous intéresse. Nous pouvons donc dire si le statut. Donc, si le statut est égal à un échec. Que voulons-nous faire ? Nous voulons identifier le nom d'utilisateur associé à cet échec. Alors, extrayons le nom d'utilisateur, d'accord ? Nous allons extraire le nom d'utilisateur et ensuite le stocker dans une variable appelée, disons, nom d'utilisateur, n'est-ce pas ? Nous pouvons donc stocker les noms d'utilisateur dans la variable username. Donc, une fois ce nom d'utilisateur trouvé, laissez-moi corriger cet extrait. OK, donc une fois qu'un nom d'utilisateur a été détecté comme ayant un statut ou un échec, il y a deux scénarios possibles ici. Réfléchis-y, d'accord ? C'est soit la toute première fois que le nom d'utilisateur échoue, soit cela peut être la deuxième, la troisième ou la quatrième fois. Essentiellement, ce n' est peut-être pas la première fois. D'accord ? Nous devons donc créer des conditions pour les deux, afin de pouvoir dire si c'est la première fois. D'accord ? Nous pouvons dire, non, le nom d'utilisateur ici, le score est nul parce que c'est la première fois, d'accord ? Cependant, si ce n'est pas la première fois, si ce n'est pas la première fois, nous devons en ajouter un, d' accord, puis l'ajouter à leur enregistrement précédent. Donc, si c'est la toute première fois, vous partez de zéro, vous en obtenez un. Mais si ce n'est pas la première fois, si c'est la deuxième ou la troisième fois, nous allons simplement en ajouter un à votre précédent enregistrement. J'espère que cela a du sens. Enfin, nous pouvons simplement imprimer tentatives de connexion infructueuses. D'accord ? Vous pouvez donc à nouveau suspendre la vidéo et essayer de résoudre vous-même cette tâche. Si ce n'est pas le cas, écrivons le programme ensemble. OK, alors que faisons-nous, tout d'abord ? Nous sommes en train de créer notre dictionnaire. Donc je vais dire que le dictionnaire a échoué , d'accord ? Les bagues, puis les bretelles bouclées, seront vides parce qu' il n'y a rien dedans pour Viendront donc ensuite les quatre boucles. Je vais dire pour les journaux de connexion, deux points. Et maintenant, que recherchons-nous ? Nous cherchons à vérifier si le nom d'utilisateur a le statut d'échec. Plus précisément, nous cherchons à vérifier si le statut est un échec. Je vais donc dire que je me connecte, et maintenant nous voulons cibler le statut, n'est-ce pas ? Donc, si le statut ici est le même, je suis désolée. Il devrait y en avoir à l'extérieur. Donc, si le statut est égal à ce qu'est un échec. Si cela équivaut à un échec, que recherchons-nous ? Nous voulons extraire le nom d'utilisateur. Je vais donc dire que le nom d'utilisateur sera égal à. Et maintenant, extrayons le nom. Je vais dire log, et maintenant entre crochets, nom d'utilisateur. Permettez-moi d'ajouter les codes juste là. Et voilà. OK, alors qu' avons-nous fait jusqu'à présent ? Tout d'abord, nous avons créé le dictionnaire des tentatives infructueuses. Nous avons maintenant créé nos quatre boucles pour parcourir chaque journal dans les journaux, puis rechercher tout journal dont le statut est équivalent à un échec. Lorsque vous trouvez ce statut équivalent à un échec, extrayons le nom d'utilisateur, puis attribuez-le à la variable nom d'utilisateur. Maintenant, souvenez-vous qu'il y aura deux conditions. Est-ce la première fois que ce nom d'utilisateur affiche le statut d' échec ou n'est-ce pas la première fois ? Alors, jetez un œil à ceci. Je vais dire que si Use a name Okay, ce n'est pas le cas. Comment vérifier si c'est la première fois ? Si ce n'est pas dans les tentatives infructueuses ? D'accord ? Donc, en disant, si c'est la première fois que nous découvrons que l'enregistrement de cet utilisateur a échoué, nous pouvons vérifier qu'en disant « utiliser le nom » ne figure pas dans les tentatives infructueuses. Que voulons-nous faire ? Nous voulons parler de tentatives infructueuses. Et maintenant, entre parenthèses, utiliser un nom sera égal à zéro. Cependant, si c'est le cas, je suis désolée pour cela. Permettez-moi de faire des tentatives infructueuses. Tentative. En fait, je m'excuse. J'ai fait une erreur lors de mes tentatives. Qu'elle soit T pour le S ta ta ta ta. Je m'excuse. Permettez-moi d'y ajouter mon T et d'y ajouter mon T. D'accord, donc, si ce n'est pas la première fois, si c'est la deuxième ou la troisième fois, que faisons-nous ? Nous parlons de tentatives infructueuses. Et maintenant, utilise un nom. Utiliser un nom sera égal plus un. Parce que nous allons augmenter la valeur. Si c'était un avant, maintenant ça va devenir deux, si c'était deux avant, maintenant ça va devenir trois et ainsi de suite. Je tiens à souligner le fait que remarquez les deuxièmes tentatives infructueuses ici, c'est à l'extérieur. Ce n'est pas dans cette déclaration If, d'accord ? Parce que c'est ici, la ligne 21 22 est juste pour vérifier si le nom d'utilisateur n'existait pas auparavant. Et maintenant, le deuxième champ tente ici, c'est pour vérifier si la tentative infructueuse a déjà été enregistrée précédemment et maintenant nous l' incrémentons d' Il ne nous reste plus qu'à imprimer Okay. Ensuite, assurez-vous que c' est à l'extérieur, imprimez. Et maintenant, entre crochets, nous pouvons dire quelque chose comme tentatives de connexion complètes par utilisateur, puis laisser tomber, puis nous pouvons simplement ajouter des tentatives de soulignement remplies Et voilà. OK, alors j'espère que cela devrait fonctionner. Je vais lancer le programme, et voilà. Génial Bob avait donc trois ans. Alice avait deux ans et Dave un. Je pense que c'est correct. Bob en a un ici, un, un trois. OK, Alice l'a fait. Alice a réussi ici. OK, c'est un échec, deux, d'accord. Et puis Dave en est un. Et, bien sûr, Carol n'a pas lancé parce qu' elle n'avait qu'une seule bûche, et elle a réussi. C'est donc à peu près tout pour résoudre cette tâche particulière. Une fois de plus, nous avons créé un dictionnaire appelé «   Failed Tentatives ». Nous avons créé une boucle pour parcourir chaque journal, puis dire : « D'accord, si nous trouvons un état d'échec, nous voulons d'abord vérifier, extraire le nom d'utilisateur associé à cet échec, puis vérifier si le nom d'utilisateur a déjà figuré dans nos tentatives infructueuses ou si c'est la première fois. Si c'est la première fois, je leur attribue la valeur zéro, puis si ce n'est pas la première fois, ajoute simplement un à leur valeur précédente. Au fait, il se peut que vous ayez une certaine confusion ici : attendez, Alex, pourquoi est-ce qu' ici à la ligne 21 22, si c'est la première fois que le record est un échec, que le NM a un record d'échec, pourquoi ne pas dire égal à un ? PAR Z OU ? La raison en est qu'à la ligne 23, nous allons quand même en ajouter une à la valeur, que ce soit la première ou la deuxième fois, donc cela n'a même pas d'importance. J'espère que vous comprenez bien ce que je dis, parce que ça va aller. Donc, si c'est la toute première fois, accord, tout d'abord, le programme dira : OK, votre numéro de champ de Ts est zéro à la ligne 22, puis à la ligne 23, il en ajoutera un malgré tout. C'est pourquoi nous avons assigné zéro ici et pas un. Si nous en attribuons une ici, alors automatiquement, celui qui n'a échoué qu' une seule tentative aura désormais deux à son palmarès. Et pour vous le prouver, vous pouvez voir qu'à l'heure actuelle, Dave a échoué qu'une seule tentative de connexion, n'est-ce pas ? Si je suis venu ici maintenant et que je remplace zéro un et que je lance le programme, regardez ça. Dave en a maintenant deux. C'est pourquoi nous avons créé ce 10 en premier, car nous savons qu'à la ligne 23, à l'étape suivante, un utilisateur sera ajouté au dossier de cet utilisateur, que ce soit pour la première ou la deuxième fois. J'espère donc que vous comprenez ce que nous avons fait là-bas. Merci de votre attention, et bien sûr, je vous verrai au prochain cours. 40. Projet de système d'authentification: Très bien, alors bienvenue au défi de programmation où nous allons créer pour nous-mêmes un système d' authentification très basique Nous allons appliquer tout ce que nous avons appris jusqu'à présent , des variables aux fonctions, aux boucles et, bien sûr, aux dictionnaires les plus récents, d'accord ? Maintenant, j'ai déjà écrit le programme. Il s'agit de la sortie. Donc, la façon dont le programme va fonctionner est la suivante. Au tout début, l' utilisateur aura trois options pour s'inscrire, connecter ou simplement quitter le programme. Maintenant, s'ils disent trois, cela quittera immédiatement le programme et mettra fin à l'ensemble du système d'authentification. Cependant, s'ils devaient en choisir un et appuyer sur Entrée, ils seront désormais marqués par X et fourniront un nom d'utilisateur. Je vais y aller avec John, laisse-moi te fournir mon mot de passe comme mot de passe, et voilà. L'inscription sera couronnée de succès. Maintenant, si je devais en saisir un nouveau, et que j'essayais d'utiliser exactement le même nom d'utilisateur John pour créer un nouveau compte, le système vérifiera si , Oh, John existe déjà, essayez un autre nom d'utilisateur. Notre programme va donc vérifier si le nom d'utilisateur existe déjà. Maintenant, pour le numéro deux, si nous essayons de nous connecter, le nom d'utilisateur sera demandé . Maintenant, si je dis John, c'est vrai, et que je fournis le bon mot de passe, vous pouvez voir maintenant qu'il s'agit d' connexion réussie. Bon retour. Maintenant, si j'ai essayé de me reconnecter avec exactement le même nom d'utilisateur, John, mais que cette fois j'ai utilisé un mot de passe manifestement erroné, le nom d'utilisateur ou le mot de passe sera invalide , veuillez réessayer. Ce sera donc notre système d'authentification de base. C'est ainsi que cela va fonctionner. Et ce que je veux faire maintenant, c'est apporter mon fichier de bloc-notes ici juste pour vous donner une idée de ce avec quoi nous allons travailler Donc, évidemment, nous allons avoir besoin d'un dictionnaire qui stockera les informations d'identification de l'utilisateur, car nous allons devoir comparer et voir si le nouveau nom d'utilisateur que l'utilisateur souhaite saisir a déjà été créé auparavant, si le mot de passe est correct, des choses comme ça. Et nous allons utiliser un dictionnaire parce que nous devrons créer la paire clé-valeur, en les utilisant avec un logiciel de mot de passe. Les utiliser sera la clé, puis la valeur de la clé sera le mot de passe. Les dictionnaires seront donc utiles ici. Nous allons avoir besoin de deux fonctions différentes. La toute première fonction sera d'enregistrer l'utilisateur, puis l'autre sera de se connecter à l'utilisateur. Maintenant, pour que la fonction réelle d'enregistrement de l'utilisateur soit effective, de quoi avons-nous besoin ? Tout d'abord, nous allons devoir demander à l'utilisateur de fournir son nom d'utilisateur , puis nous devrons avoir une sorte de déclaration EL qui vérifiera si le nom d'utilisateur existe déjà. S'il demande un autre nom d'utilisateur. Toutefois, s'il s'agit d'un nouveau nom d'utilisateur, le programme peut demander le mot de passe. Une fois que l'utilisateur a fourni à la fois son nom d'utilisateur et son mot de passe, nous devrons créer le nom d'utilisateur, le mot de passe, la clé, la valeur, le paiement. Je vais vous montrer exactement comment procéder. Une fois cela fait, nous pouvons alors dire que l'enregistrement a été réussi, ce qui est assez simple. Pour que la fonction se connecte à l'utilisateur existant, encore une fois, nous devrons demander à l'utilisateur de fournir le nom d'utilisateur et le mot de passe. Ensuite, nous devrons vérifier si le nom d'utilisateur correspond au mot de passe déjà enregistré dans le dictionnaire. Si c'est faux, nous allons imprimer le nom d' utilisateur et le mot de passe non valides. Sinon, si c'est vrai, si le mot de passe et le nom d'utilisateur correspondent, on peut dire que la connexion est réussie. Enfin, la troisième étape consistera à créer le véritable système d'authentification dans lequel l'utilisateur aura trois options pour s'inscrire, se connecter ou quitter. Et en fonction de l' option choisie par l'utilisateur, il faudrait appeler la fonction correspondante. Nous allons donc créer ce système d'authentification à partir de zéro. Tu es excitée ? J'espère que tu l'es. Allons-y directement. 41. Étape 1 : construisez la fonction d'enregistrement: La première chose que nous allons faire sera donc de créer la fonction qui enregistrera l'utilisateur. Cependant, créons un dictionnaire qui sera utilisé pour stocker les informations d'identification de l' utilisateur. Donc, pour le dictionnaire, nous pouvons l'appeler user underscore credentials accord, d'égal à égal, et ensuite nous aurons nos bretelles Colly. C'est bon. Maintenant, pour ce qui est de la fonction réelle d'enregistrement de notre utilisateur, permettez-moi d'y ajouter la note très rapidement. Fonction d'enregistrement de l'utilisateur. OK. Définissons la fonction. Je vais mourir et puis disons enregistrer un utilisateur de soulignement Appelez. Maintenant, de quoi avons-nous besoin ? Tout d'abord, nous devons demander à l'utilisateur de saisir son nom d'utilisateur. Nous pouvons l'attribuer à une variable. Appelons la variable nom d'utilisateur equals. Demandons maintenant à l'utilisateur de fournir le nom d'utilisateur saisi, puis nous pouvons lui dire «   entrez votre nom d'utilisateur ». OK. À titre d'exemple, appuyons sur Entrée. Laissez-moi laisser un espace entre les deux points et les codes juste là pour qu'il y ait un peu d'espace. Donc, pour le moment, nous devons vérifier si le nom d'utilisateur fourni par l' utilisateur existe déjà. Permettez-moi d'ajouter un nœud ici sur une ligne séparée. Ajoutons la note, vérifions si le nom d'utilisateur existe déjà. Alors, comment allons-nous procéder ? Eh bien, nous pouvons le faire en utilisant l'instruction If. Je vais dire si le nom d'utilisateur et maintenant dans les informations d'identification de l'utilisateur. Encore une fois, Python nous a déjà donné le code. Si le nom d'utilisateur indiqué dans les informations d'identification, Colon, laissez-nous imprimer le nom d'utilisateur existe déjà, veuillez choisir un autre nom d'utilisateur. Je crois que j'aime bien ça. Cependant, je vais supprimer le retour. Nous n'en avons pas besoin. Donc, si le nom d'utilisateur n'existe pas, s'il s'agit d'un tout nouveau nom d'utilisateur, nous pouvons alors ajouter notre s. Que devons-nous faire d'autre maintenant ? Nous devons demander à l'utilisateur son mot de passe. Je vais dire autre chose. Créons un mot de passe variable, puis attribuons-le aux entrées, puis entre crochets, disons « Entrez un mot de passe ». Appelez, puis ajoutons le code de fermeture, et le tour est joué. À partir de maintenant, la prochaine étape que nous devrons faire est de créer la paire clé-valeur pour le nom d'utilisateur et le mot de passe. Maintenant, comment allons-nous procéder ? Eh bien, nous allons le faire en appelant les informations d'identification de l'utilisateur du dictionnaire. OK. Maintenant, regarde ça. Je vais ouvrir mes crochets et je vais fournir la clé qui sera le nom d'utilisateur et qui est maintenant égale au mot de passe. C'est ainsi que nous pouvons créer la paire clé-valeur. Vous indiquez le nom de votre dictionnaire, puis entre crochets, vous indiquez le nom de la clé égal à sa valeur, et il est là. Ensuite, la dernière étape sera désormais de simplement imprimer l'enregistrement réussi. Et voilà. Maintenant, essayons quelque chose. Je vais appeler cette fonction et voyons si elle fonctionne réellement. Je vais dire enregistrer l'utilisateur, les crochets, les deux points, et le tour est joué. Essayons ça. Nous n'avons donc pas besoin de deux points ici. Excuse-toi. Nous n'avons pas besoin de deux points ici. Exécutons le programme. Très bien, entrez un nom. Je vais dire John, saisissons un mot de passe. Disons simplement John pour le mot de passe. John, entrez à nouveau et il est indiqué que l'inscription est réussie. Cependant, notez que le programme est terminé, et c'est parce que nous n' avons pas de véritable boucle qui s'exécutera continuellement pour demander à l'utilisateur de fournir un nouveau nom d'utilisateur, un nouveau mot de passe. Que pouvons-nous faire pour exécuter ce programme indéfiniment ? Eh bien, nous pouvons introduire la boucle while true. Ici, juste en dessous de la fonction d'enregistrement de l'utilisateur, je ne vais pas appeler une boucle qui dit while puis true. Cependant, l'indentation va être très, très importante. Je vais mettre tout cela sous onglet pour m' assurer que tout correspond à la réalité. Écoutez, permettez-moi d'ajouter ma colonne juste là, et voilà, maintenant le programme va fonctionner en continu. Voyons s'il vérifiera réellement si le nom d'utilisateur que nous fournissons existe déjà. Exécutons à nouveau le programme. C'est bon. Donc, je vais choisir celui-ci avec Mark. Le mot de passe est un mot de passe OK, très bien. Inscription réussie. Vous pouvez maintenant voir qu'il demande un autre nom d'utilisateur. Essayons Nancy, Password, allons-y avec SOD, Fish. Cela fonctionne. Maintenant, essayons à nouveau d' utiliser Mark, Enter et maintenant il est indiqué que nom d'utilisateur existe déjà, veuillez choisir un autre nom d'utilisateur. Génial Nous pouvons voir ce moment que la première partie de notre programme, celle qui vérifie si celle qui enregistre l' utilisateur et vérifie si le nom d'utilisateur existe déjà, vous pouvez voir dès maintenant que cela fonctionne parfaitement bien et que c'est génial. Rejoignez-moi dans la prochaine vidéo où nous allons maintenant passer à la deuxième étape, où nous allons créer la fonction permettant de connecter l'utilisateur. 42. Étape 2 Construisez la fonction de connexion: Bon retour. Passons maintenant à la deuxième étape où nous allons créer une fonction 2, connecter un utilisateur existant. Ce que je vais faire, c'est pousser la fonction ici jusqu' au bout et en dehors, ajouter une nouvelle note qui dit fonction 2, connecter l'utilisateur. De quoi avons-nous besoin ? Créons d'abord le nom de la fonction qui sera def, disons, login underscore user Et ajoutons deux points. De quoi aurons-nous besoin ? Nous allons avoir besoin du nom d'utilisateur et du mot de passe. Supposons que le nom d'utilisateur soit égal et maintenant saisissez-le, nous allons demander à l'utilisateur de fournir son nom d'utilisateur. Entrez votre nom d'utilisateur. Colon, ajoutons de l'espace juste là. OK, il y aura ensuite le mot de passe, je vais dire que le mot de passe est égal, puis entrez votre mot de passe, produisez directement. Nous allons maintenant vérifier si le nom d' utilisateur correspond bien au mot de passe que nous avions dans la section d'inscription. Je vais ajouter ma note très rapidement. Vérifiez si le nom d'utilisateur et le mot de passe correspondent. Alors, comment s'y prendre ? Le bon vieux nom d'utilisateur if and now et le nom d'utilisateur soulignés sont désolés. J'utilise un nom dans les informations d'identification utilisateur et, comme le nom d'utilisateur et le mot de passe doivent être vérifiés et que de passe doivent être vérifiés et l'utilisateur souligne les informations d'identification et maintenant les crochets, utilisez un nom égal au mot de passe Regardez ce que nous avons fait ici, nous vérifions que si le nom d'utilisateur déjà enregistré dans le dictionnaire ( informations d'identification utilisateur) et maintenant la paire clé-valeur pour le nom d'utilisateur et le mot de passe correspondent réellement, alors nous pouvons imprimer, je vais dire « imprimer », disons simplement « bienvenue ». C'est très, très simple. Sinon, si cela ne correspond pas, nous pouvons imprimer. Maintenant, nous pouvons dire que mon mot de passe n'est pas valide , veuillez réessayer. C'est bon. Ça y est. C'est assez simple. Ce que je vais faire maintenant, c'est appeler les deux fonctions enregistrer l'utilisateur, puis me appeler les deux fonctions enregistrer l'utilisateur, connecter au score utilisateur. Cependant, nous devons faire très attention au fait que la boucle réside actuellement à l'intérieur de la fonction de registre. Ce n'est pas à l'extérieur. Nous devons exécuter notre boucle indépendamment de la fonction d'enregistrement et de la fonction de connexion. Ce que je vais faire, c'est découper le vrai, le découper, puis le coller tout seul à l'extérieur tant que c' est vrai. Cependant, tout le reste doit en relever. Je vais tout mettre sous table , laissez-moi le refaire et voilà Ça y est. Vous pouvez voir maintenant que les informations d'identification de l'utilisateur, puis la boucle Wile, sont indépendantes de l'extérieur Maintenant, le Wil est vrai, toute la boucle commence par l'enregistrement de l'utilisateur, puis par la connexion de l'utilisateur, en vérifiant s' il y a des correspondances, des choses comme ça. Cela devrait fonctionner. Je vais commencer dès maintenant à exécuter le programme et à nous laisser voir. Je vais fournir le premier nom d'utilisateur. Allons-y avec Mark et le mot de passe sera un enregistrement d'administrateur réussi. Essayons maintenant de nous connecter en tant que Mark. Je vais dire Mark puis admin Désolé, Mark puis Admin, et voilà. Bon retour. Cela fonctionne avec succès. Nous en sommes maintenant à la phase d'enregistrement. Si j'essaie maintenant de créer un autre compte avec Mark, cela indiquera que le nom d'utilisateur existe déjà. Veuillez choisir un autre nom d'utilisateur. Allons-y avec Nancy. Mot de passe pour Nancy, allons-y avec le mot de passe. OK, maintenant vous pouvez voir le message « Désolé », nom d'utilisateur ou mot de passe invalide, veuillez réessayer. Cela se produit parce que, compte tenu de la façon dont le programme est écrit actuellement, il se déroule étape par étape que l' étape précédente ait été réussie ou non . Ici, vous pouvez le voir démarrer avec la phase d'enregistrement qui a fonctionné. Je suis ensuite passé à la phase de connexion qui a fonctionné. Il est maintenant de nouveau venu ici pour la phase de connexion. Désolé pour la phase d'enregistrement à nouveau, j'ai vu que le Mac existe déjà en tant qu'utilisateur. Il a donc été dit de choisir un autre nom d'utilisateur. Cependant, il n'arrête pas de demander à l'utilisateur de créer un autre nom ici, il est passé directement à la phase de connexion où il a vérifié si Nancy existait Nancy n'existait pas. C'est pourquoi le nom du mot de passe américain est invalide , veuillez réessayer. À l'heure actuelle, il est revenu à la phase d'enregistrement. Si je répète Nancy, vous pouvez maintenant dire que c'est demander le mot de passe à Nancy parce que c'est en phase d'enregistrement. Maintenant, en tapant Admin, il est indiqué que l'enregistrement a réussi. Essayons maintenant de nous connecter car Night est passé à la phase de connexion. Je dis que le mot de passe de Nancy Nancy est admin, mais je vais taper quelque chose de différent, Entrez, puis le mot de passe américain est invalide , veuillez réessayer. Nous pouvons constater à l'heure actuelle que le programme fonctionne à environ 80 %. La phase d'enregistrement et la phase de connexion fonctionnent, cependant, si nous devions le faire idéalement, lorsque nous essayons de créer un nouveau compte utilisateur, et si nous essayons d'utiliser un nom d'utilisateur qui existe déjà, le programme ne devrait pas passer à la deuxième étape, qui consiste simplement à connecter l' utilisateur jusqu'à ce que celui-ci ait effectivement fourni un tout nouveau nom d'utilisateur pour l'enregistrement. Nous allons résoudre ce problème dans la troisième et dernière partie de cette mission. 43. Étape 3 : créer le système d'authentification: Je vais passer à la dernière partie de notre mission, qui consiste à créer le véritable système d'authentification. Cela invitera l' utilisateur à s'inscrire, se connecter ou peut-être même à quitter le système. Maintenant, ce que je vais faire, tout d'abord, c'est supprimer les fonctions ici, m'inscrire et me connecter. Je vais également supprimer la boucle while ici parce que nous allons l' exécuter à un endroit différent. Je vais maintenant modifier l'indentation et m' assurer que les fonctions enregistrent l' utilisateur et l'utilisateur de connexion sur la même ligne Cela devrait se trouver ici sous la fonction d'utilisateur de connexion et le voilà. Commençons par créer le système d'authentification. Je vais ajouter mes notes et appeler celui-ci le menu principal. Nous pouvons maintenant définir notre fonction ici, le système de soulignement d'authentification Et voilà. De quoi avons-nous besoin ici ? Nous devons demander à l'utilisateur de s'inscrire, de se connecter ou de quitter le site. Nous allons imprimer quelques déclarations. Commençons par imprimer et je vais dire, disons, un système d' authentification de base Ce sera au sommet. Ensuite, imprimons la toute première option pour l'utilisateur. Nous pouvons dire qu'un registre sera la première option, puis imprimer l'option numéro deux, ce sera une connexion à deux points. Alors la dernière option ici serait trois , puis appelons-la une sortie. Ça y est. Nous avons nos trois options ici. Maintenant, l'utilisateur devra en ajouter un, deux ou trois. Créons une variable qui représentera cette option particulière. Je vais appeler cette option une option, option sera égale à l'entrée, et maintenant demandons à l' utilisateur de saisir votre choix. Nous demandons à l' utilisateur en ce moment : « Hé, indique-nous ce que tu veux faire ». Nous allons devoir créer le scénario if dans lequel nous vérifierons si l'utilisateur choisit la première option, qui est l' enregistrement, nous pouvons appeler la fonction d'enregistrement utilisateur. S'ils choisissent la deuxième option, nous pouvons appeler la fonction utilisateur de connexion ou s'ils quittent, nous pouvons simplement mettre fin à la boucle. Je vais dire tout de suite que si l'option ici est égale, et maintenant je peux en dire une. Colon. Que ferons-nous si ce fromage est la première option ? Eh bien, nous pouvons appeler la fonction register underscore user. Très, très simple. Maintenant, si ce sera si. Si c'était la deuxième option, qu'allons-nous faire ? Nous allons appeler la fonction login underscore user. Maintenant, pour le dernier, si l' option est égale à trois, que devons-nous faire ? Nous pouvons imprimer. Ensuite, codez, on peut dire quitter le système. Et voilà, puis nous pouvons dire autre chose : si l'utilisateur fournit l' option quatre, cinq ou six, qui n'existe pas, alors nous pouvons dire, sinon, imprimer, puis entre crochets, nous pouvons dire « choix non valide », puis nous pouvons dire «  veuillez choisir parmi les options un, deux ou trois ». Ça y est. Ça y est. Enfin, nous pouvons exécuter le système d'authentification. Nous pouvons le faire en disant simplement « système d'authentification », et le tour est joué. Il y a une chose que nous n'avons pas encore ajoutée. Je ne sais pas si vous pouvez voir ce que c'est, mais c'est la boucle. Parce qu'à l'heure actuelle, ce programme ne s'exécutera qu'une seule fois, mais nous voulons que l'utilisateur continue à se connecter, à s'enregistrer ou à quitter Que faisons-nous ? C'est là que nous devrons faire appel à la vraie boucle Wild. Mais où pensez-vous que nous allons le mettre ? Nous allons le placer juste dessous de la fonction de notre système d'authentification. C'est là que je vais dire absolument vrai. Maintenant, souvenez-vous que tout ce qui se trouve ici devra relever de la pure tradition. Assurez-vous donc que votre identification est correcte, puis nous devrons également ajouter l'instruction break pour terminer la boucle Maintenant, où allons-nous terminer la boucle, nous terminons la boucle où l'utilisateur choisit l'option trois, qui consiste à quitter le système. Juste en dessous, en dessous de l'impression, je vais dire break et voilà je vais dire break et voilà , nous espérons que notre programme devrait fonctionner sans aucun problème. Laisse-moi y aller maintenant et le gérer. Nous avons un problème ici, c'est parce que la pause sort de la boucle, regardez ça. Oh, ouah, l'indentation est tellement importante. Vous pouvez le constater dès maintenant si tout cela n'est pas la même indentation que l'instruction while Alors, revenons ici et indentionnons-les correctement, et voilà Vous pouvez même voir que je fais également des erreurs avec mon indentation Assurons-nous donc que tout le reste est correctement indenté. Essayons de lancer le programme une fois de plus. Heureusement, cela fonctionne maintenant. Laissez-nous le tester. Je vais opter pour l' option numéro un. Tout d'abord, enregistrons Mark et son mot de passe est admin. Génial. Essayons maintenant de passer à l'option numéro deux pour nous connecter, utilisez le nom. Prenons l'exemple de Nancy, mot de passe, disons, Bob. Mais maintenant, le nom est invalide En utilisant le nom du mot de passe, veuillez réessayer. Cela fonctionne évidemment très bien. Essayons à nouveau de nous enregistrer en tant que Mark. Vérifiez une fois de plus si le programme détectera que Mark existe déjà Mark dit : OK, nom existe déjà, veuillez choisir un autre nom d'utilisateur. OK. Essayons de nous connecter cette fois en tant que Mark. Laissez-nous fournir le mot de passe qui est admin et qui dit «  Bienvenue à nouveau ». J'ai vraiment travaillé. Essayons de nous connecter à nouveau en tant que Mark. Mais cette fois, utilisons un autre mot de passe, un mot de passe long, puis il est écrit : « Nom d'utilisateur ou mot de passe non valide, veuillez réessayer ». Il semble qu'il fonctionne correctement. Le test final consiste à sortir, entrer et le tour est joué. En sortant du système, la boucle est terminée, le programme est terminé. Ça y est. Nous avons créé avec succès un programme, qui est un système d'authentification de base qui permettrait à un utilisateur s'enregistrer, de se connecter ou simplement de quitter le programme. Bien entendu, nous avons ajouté des contrôles pour garantir qu' aucun compte dupliqué ne puisse être enregistré. Nous avons également ajouté des contrôles pour nous assurer que les noms d'utilisateur et les mots de passe correspondent, et le tour est joué. Félicitations. J'espère que vous avez apprécié cette mission, ce défi. Merci d'avoir regardé. Je te verrai au prochain cours. 44. Introduction à la section de traitement des fichiers: Bienvenue dans cette section où nous allons parler de la gestion des fichiers, et croyez-le ou non, c'est officiellement le début des sujets les plus avancés sur la programmation Python, car ici, vous allez apprendre comment écrire des programmes capables de créer des fichiers et même de les modifier. Et peut-être plus important encore, vous allez apprendre exactement comment gérer les erreurs de fichiers. Supposons, par exemple, que quelque chose se soit produit dans votre programme, que cela n'ait pas tout à fait fonctionné comme prévu. Vous allez apprendre exactement comment modifier ou concevoir votre programme de manière à ce que ce type d'erreur traité de manière professionnelle. Cela va donc être une section très, très intéressante. Et, bien entendu, vous allez également apprendre les différents types de méthodes que nous pouvons appliquer à nos fichiers, exemple comment lire un fichier, ou peut-être même écrire dans un fichier ou même ajouter ou modifier un fichier en particulier Et bien sûr, vous allez également apprendre à gérer les erreurs de fichier dont j'ai déjà parlé en utilisant les blocs multiples sauf et aussi l' instruction finally. Alors, sans perdre plus de temps, passons à la gestion des fichiers. 45. Lire et écrire sur des fichiers: Très bien, parlons de la gestion des fichiers et pour le moment, le seul fichier avec lequel nous travaillons est le fichier point py principal. C'est juste un fichier Python et rien de plus. Cependant, nous pourrions créer d'autres types de fichiers. Et si nous voulions écrire un programme qui demanderait à l'utilisateur de fournir son nom d'utilisateur ou son mot de passe, puis que nous stockions ces informations utilisateur dans un fichier séparé. Comment pouvons-nous le faire ? Eh bien, nous pouvons le faire de différentes manières. C'est ce que tu vas apprendre ici. La première chose que je veux vous montrer, c'est comment créer un fichier. Il existe une instruction appelée with, puis une fonction appelée crochets ouverts. Cela aura pour effet que la fonction open accepte généralement deux paramètres. Vous devrez fournir le nom du fichier avec lequel vous souhaitez travailler, puis le deuxième paramètre sera celui que vous souhaitez faire à ce fichier. Peut-être souhaitez-vous lire le fichier, écrire dans le fichier, ajouter le fichier, etc. Par exemple, disons que je souhaite ouvrir un fichier appelé example point TXT. C'est un fichier texte devenu virgule, et maintenant je dois fournir l'opération Est-ce que je veux ouvrir ce fichier ? Est-ce que je veux lire le contenu du fichier ? Qu' est-ce que je veux faire ? Je veux écrire dans le fichier, donc je vais utiliser W pour représenter la bonne fonction, la bonne opération. Et maintenant, pour terminer, je vais parler d'un fichier. Ici, c'est généralement la syntaxe. Vous allez dire ouvert , puis entre crochets indiquer le nom du fichier, puis l'opérateur associe W pour écriture, R pour lecture, etc., puis vous indiquerez un fichier. Maintenant, je vais passer à la nouvelle ligne et dire file point w. C'est la fonction que nous allons utiliser pour écrire la chaîne ou ce que nous voulons écrire dans le fichier. Entre parenthèses, je vais dire bonjour à tout le monde. C'est ce que je veux écrire dans le fichier. Maintenant, regarde ça. Je vais y aller. Maintenant, remarquez que je n'ai encore qu'un seul fichier, le point principal PY. Mais si je devais exécuter le programme, vous voyez maintenant qu'il est écrit un point d'exemple. Même si je n'ai pas créé ce fichier auparavant, chaque fois que vous écrivez dans un fichier, si ce fichier n' existait pas auparavant, Python le créera automatiquement pour vous. Maintenant, si je devais ouvrir mon exemple au texte, vous pouvez voir maintenant qu'il est écrit « Bonjour tout le monde ». Et si je venais ici maintenant et que j'écrivais une autre bonne fonction et que je dis que c'est génial. Que pensez-vous qu' il va se passer ? Allons-y et lançons le programme. Si je reviens à mon exemple, doc TXT, maintenant vous pouvez voir qu'il est écrit « Bonjour tout le monde », c'est génial. Maintenant, il a ajouté cela, c'est génial à notre dossier. Permettez-moi d'y retourner et de fermer ceci. Permettez-moi de supprimer la deuxième fonction de fichier. Maintenant, nous pouvons voir que hello world est en fait dans l'exemple point TXT. Mais que se passerait-il si dans notre console, nous voulions afficher le contenu de l'exemple point TXT. Ce que je vais faire ici, c'est dire avec open again et maintenant entre crochets, encore une fois, le nom du fichier, par exemple TXT. Nous allons maintenant utiliser la fonction R à la place. C'est ce que nous utilisons pour lire le fichier. Je vais dire sous forme de fichier, deux points. Et si nous voulions imprimer le contenu du fichier ? Je peux attribuer une variable appelée content equals, et maintenant je vais utiliser un fichier de fonction point rouge. Cette fonction ici, le fichier (point rouge nous permet de lire le contenu de notre fichier. Il va transmettre le contenu à la variable content. À partir de là, il ne nous reste qu'à dire « impressions » puis, entre crochets, qu'est-ce que nous imprimons, nous imprimons du contenu ». OK. Maintenant, je vais courir et c'est là, dans une console, vous pouvez voir que Hello World est affiché. Il s'agit essentiellement d'une introduction à la lecture de fichiers, à l'écriture dans des fichiers. Une question que vous vous posez peut-être est la suivante : d'accord, pouvons-nous réellement créer nos fichiers sans utiliser l'instruction with ? La réponse est en fait oui, nous pouvons le faire sans utiliser l'instruction with. Comment ferions-nous cela ? Eh bien, permettez-moi tout d' abord de supprimer la programmation ici. Ce que nous devons faire, tout d'abord, c'est dire que le fichier est égal, puis ouvrir. Ce sera la véritable fonction ouverte elle-même. N'oubliez pas qu'open accepte deux paramètres. Maintenant, nous devons ouvrir notre exemple de point TXT, maintenant ce que nous voulons faire, c'est écrire dans le fichier. Je vais dire W. Permettez-moi simplement de supprimer, laissez-moi supprimer cet exemple de fichier texte à points. Laissez-moi le supprimer. Nous partons de zéro. Maintenant, je l'ai dit à Python, je veux que vous créiez ce fichier appelé example point TXT. Que voulons-nous maintenant écrire dans le fichier ? Je vais entrer tout de suite et dire file point write. Parce que maintenant j'écris dans le fichier, puis entre crochets , fournissons la chaîne hello world. Maintenant, il ne me reste plus qu' à fermer le dossier. Lorsque vous ouvrez un fichier que vous lisez un fichier ou que vous êtes dans un fichier, par défaut, le fichier doit être ouvert pour que cette opération puisse avoir lieu. Ce que vous voulez toujours faire c'est vous assurer que le fichier est fermé une fois l' opération terminée. Si vous ne le faites pas, programmes risquent de perdre de mémoire et le système peut être très vulnérable à différents types d'attaques Donc, pour fermer le fichier très simplement, le point W du fichier ferme. Et c'est tout. Maintenant, si je lance à nouveau le programme, vous pouvez dire par exemple que le texte se trouve là-bas, je peux ouvrir le fichier et c'est tout à fait normal. La raison pour laquelle nous préférons ou la plupart des développeurs préfèrent utiliser l'instruction W est qu' avec l'instruction With, permettez-moi d'annuler tout cela. Avec l'instruction W, vous remarquerez que nous n'avons pas eu à fermer le fichier manuellement. Python est suffisamment intelligent pour savoir que, lorsque vous utilisez l'instruction W, dès que vous avez effectué l'opération que vous souhaitez effectuer sur le fichier, fermez-le automatiquement. C'est pourquoi les développeurs utilisent souvent l'instruction with. Vous n'avez plus besoin de fermer le fichier car Python le fera automatiquement. De plus, c'est aussi plus propre, vous avez moins de lignes de code. C'est pourquoi l'instruction Wi est généralement utilisée conjointement avec la fonction open. Merci d'avoir regardé. Je te verrai au prochain cours. 46. Lire et écrire des entrées dans des fichiers texte: Voyons maintenant comment lire et écrire dans des fichiers texte. Supposons, par exemple, que nous voulions créer un programme qui accepterait une entrée de l'utilisateur. Supposons que l'utilisateur ait été invité à fournir son nom d'utilisateur , puis que nous voulions stocker ce nom d'utilisateur dans un fichier séparé. Comment pouvons-nous le faire ? Eh bien ? Tout d'abord, assignons une variable qui acceptera les entrées de l'utilisateur. Je vais appeler ma variable username equals et maintenant la fonction d'entrée. Entrez maintenant votre nom d'utilisateur, c'est assez simple. Maintenant, souvenez-vous de la leçon précédente sur la syntaxe ouverte, je vais dire avec et maintenant ouverte et, bien sûr, souvenez-vous que open acceptera deux paramètres. Tout d'abord, le fichier avec lequel vous souhaitez travailler, puis l'opérateur, je vais créer un fichier appelé users point txt. Ensuite, nous allons ajouter l'idée fonctionnelle W à écrire, puis je vais dire un fichier. Que voulons-nous faire maintenant ? Nous voulons écrire le nom d'utilisateur dans le fichier. Ce que je vais faire maintenant, c'est très simple : archiver, écrire. Maintenant entre crochets, le nom d'utilisateur. Ensuite, pour faire bonne mesure, nous pouvons imprimer quelque chose une fois que nous pouvons imprimer quelque chose l'utilisateur a fourni le nom d'utilisateur. Disons imprimer et je dirais que le nom d'utilisateur a été ajouté au fichier, titre d'exemple. Allons-y maintenant. Lancez le programme. Entrez votre nom d'utilisateur, je vais dire Alex, appuyez sur Entrée et maintenant il est indiqué que le nom d'utilisateur a été ajouté au fichier et vous pouvez voir les utilisateurs TextiFle a été créé et si je l'ouvre, vous pouvez voir qu'il est juste là Alex. Jusqu'ici, tout va bien. Cependant, si je reviens en arrière et que je lance à nouveau le programme, et que cette fois, j'ai utilisé un nom d'utilisateur différent, j'ai dit Alice, j'appuie sur Entrée. Si je vais voir mes utilisateurs ou si j'envoie le fichier par SMS, vous pouvez voir maintenant qu' Alice a remplacé Alex En effet, chaque fois que vous acceptez les entrées de vos utilisateurs, vous les stockez dans un fichier texte. Lorsque vous utilisez le bon opérateur, il remplacera simplement tout ce qui existait auparavant dans ce fichier Et si on ne le veut pas ? Et si nous voulions simplement continuer à ajouter des fichiers ou des noms d'utilisateur à notre fichier sans remplacer les précédents ? Comment s'y prend-on ? Tout d'abord, permettez-moi d' effacer mon historique, supprimer le texte à points du fichier pour nos utilisateurs. Faisons comme si nous partons de zéro ? Au lieu d'utiliser la fonction W, je vais utiliser A, qui représente un stylo. Avec un stylo, nous pouvons continuer à demander à l'utilisateur de fournir un nouveau nom d'utilisateur et une fois qu'il aura ajouté de nouveaux noms d'utilisateur, ils seront stockés dans notre fichier et les anciens noms d'utilisateur ne seront pas remplacés Je vais relancer le programme. Fournis mon nom d'utilisateur, Alex. Vous pouvez maintenant voir que nous avons le fichier txt à points de nos utilisateurs, Alex, comme nous l'avons fait avec le bon opérateur. Mais maintenant, si je reviens en arrière, je lance le programme à nouveau et cette fois, je dis Ale. Que se passe-t-il maintenant, je vais sur mon textifle à points d'utilisateur, puis vous me dites nous avons Alex, nous avons Alice Vous pouvez voir qu'Alex n'a pas été remplacé. D'ailleurs, si vous souhaitez enregistrer vos noms d'utilisateur sur des lignes séparées, il suffit d' écrire le nom d'utilisateur du fichier Nous pouvons simplement dire « Plus » maintenant, regardez ceci. Vous voulez dire barre oblique avant, désolée, barre oblique arrière, puis N. Donc, ici, c'est ce que nous utilisons pour créer des lignes Tout ce que vous ajoutez sera ajouté sur une nouvelle Donc, ce que je vais faire ici, c'est supprimer à nouveau le DotExfile des utilisateurs. Laissez-moi exécuter le programme une fois de plus. Alex, appuyez sur Entrée. Exécutons à nouveau le programme. Cette fois, je vais dire Alice. Appuyez sur Entrée. Maintenant, si j'ouvre TextFile à mes utilisateurs, vous pouvez voir qu'Alex et Alice sont sur des lignes séparées Voici la différence entre votre opérateur droit et votre opérateur d'ajout Mais que se passerait-il si nous voulions lire les données, les noms d'utilisateur du fichier ? Comment pouvons-nous le faire ? Eh bien, je vais juste venir ici, dire avec open again, entre crochets, et je vais dire users TXT, alors qu' allons-nous faire ? Codes R. Ensuite, en tant que fichier, Colm, nous voulons maintenant créer une boucle à quatre boucles. Je vais dire quatre noms pour les noms du fichier. En ce qui concerne les noms d'utilisateur du fichier, que voulons-nous faire ? Nous voulons imprimer. Je vais dire imprimer , puis nous pouvons dire, utiliser un nom. Colon et maintenant je vais ajouter le coma et maintenant nommer Dot Strip. Il s'agit d'une nouvelle fonction qui aura ses propres crochets vides et voilà. Maintenant, si je lance le programme, Alex, et voilà, utilisez-les comme s'ils étaient ajoutés au fichier. Maintenant, grâce à notre fonction ici, nous lisons le fichier, il va indiquer le nom d'utilisateur, Alex, le nom d'utilisateur Alice, puis le nom d'utilisateur Alex à nouveau parce que l'utilisateur TextFile a Alex Alice Alex C'est ainsi que nous pouvons lire le contenu de notre fichier. D'ailleurs, la bande de points ici est une méthode très souvent utilisée chaque fois que nous manipulons des fichiers. Maintenant, nous l'utilisons pour supprimer tous les espaces blancs en début ou en trillage d'une chaîne. Cela peut inclure des éléments tels que vos espaces, coups de couteau ou même un nouveau caractère de ligne Il s'agit simplement d'un moyen très efficace de garantir que le texte que nous produisons ou imprimons le soit de la manière la plus efficace possible, la manière la plus efficace possible sans espace inutile C'est pourquoi le strip est très souvent utilisé chaque fois que nous manipulons des fichiers texte. Maintenant, c'est complètement optionnel. En fait, vous n'êtes pas obligé d'utiliser la méthode du strip. Si je supprime la méthode du strip et que je ferme simplement mon support normalement, si je lance le programme, il fonctionnera exactement de la même manière. Permettez-moi de vous donner un nouveau nom. Disons Mandy. À titre d'exemple. Voilà. Nous avons le nom d'utilisateur Alice, le nom Alex, nom Mandy, voilà, ça va toujours fonctionner Mais vous pouvez voir maintenant que nous avons espace supplémentaire, les lignes entre le nom d'utilisateur Alex, le nom d'utilisateur Alex nom d'utilisateur Mandy parce que nous utilisons le nouveau caractère de ligne, la nouvelle chaîne de ligne ici pour ajouter chaque entrée sur une ligne séparée C'est à peu près tout pour lire et écrire dans des fichiers texte. Merci d'avoir regardé. Je te verrai au prochain cours. 47. Méthodes de lecture et d'écriture: Eh bien, revenez. Maintenant, avant de poursuivre, je voulais vous faire savoir qu'il existe différentes méthodes pour écrire et lire nos fichiers. présent, nous avons eu affaire à la méthode des points de fichier, qui est, bien sûr, très simple. Donc, si je lance le programme en ce moment, il créera mon point d'exemple THD. Je l'ouvre et voici Hello World. Désormais, l'écriture par points est utile et elle est utilisée chaque fois que nous écrivons des chaînes individuelles ou très simples dans notre fichier. Hello world est très simple, très simple. Mais que faire si nous voulions écrire plusieurs chaînes ou écrire de grandes quantités de texte ? L'écriture de fichiers ne sera plus utilisée. Il va falloir utiliser une autre méthode. Par exemple, si j' avais une liste de noms, laissez-moi créer mes noms de liste. Permettez-moi d'ajouter le prénom, Alex, et laissez-moi ajouter le nouveau caractère de ligne barre oblique permet à Python d'ajouter les noms restants Nous avons Alex, Bob, Caroline, Dave et Fred. Si je voulais écrire ces chaînes, je ne peux plus utiliser le fichier, je devrai utiliser une autre méthode. Ce que je vais faire maintenant, c'est la largeur habituelle, ouvrir, puis entre crochets, puis se rappeler que nous devrons ouvrir notre fichier (par exemple, point CXt puis W, bien sûr, deux, écrire que nous avons deux points, puis je vais dire, désolé, en tant que fichier, puis deux points Vous pouvez maintenant voir le fichier en pointillé sur les lignes droites, puis nos noms. Écrivez le fichier par points sur des lignes Ceci est utilisé chaque fois que nous écrivons plusieurs chaînes ou que nous écrivons de gros morceaux de texte dans notre fichier. Si je lance un programme en ce moment, et que je l'ouvre, vous y allez, nous avons les noms juste là. Veuillez en être conscient. À l'avenir, si vous voulez créer des programmes avancés qui nécessiteront l'écriture de grandes quantités de texte ou de chaînes dans un fichier particulier, créer des programmes avancés qui nécessiteront l'écriture de grandes quantités de texte ou de chaînes dans un fichier particulier, vous préférerez utiliser les lignes d'écriture du fichier au lieu de l'écriture par points habituelle. Tout comme pour l'écriture, nous avons également différentes méthodes de lecture. Maintenant, jusqu'à présent, nous avons utilisé le très simple read the file dot read laissez-moi simplement copier du code ici. Permettez-moi de le transmettre ici très rapidement. Jusqu'à présent, nous avons eu affaire à un code comme celui-ci. Nous aurons un fichier, puis nous dirons « content e calls file point read » et le voilà. Si je gère un programme en ce moment, très, très simple, nous avons Alex Bob, Caroline, Dave et Fred. OK. L'avantage d'utiliser le point RED est qu'il permet de lire le fichier entier en une seule fois, ce qui est excellent lorsque vous travaillez avec de très petits fichiers. Cependant, si vous avez affaire à des fichiers volumineux, cela fonctionnera toujours. Ne vous méprenez pas. Je vais continuer à travailler, il va toujours tout lire. Le problème est cependant que, il va lire l' intégralité du fichier en une seule fois, il devra utiliser beaucoup de mémoire pour charger tout le texte de ce fichier en une seule fois. C'est là le problème. Ce n'est pas très efficace lorsque vous traitez grandes quantités de texte dans un fichier, comme de gros fichiers. Vous souhaitez utiliser une autre méthode. Maintenant, laissez-moi vous montrer. Je vais créer un nouveau programme ici et dire « ouvert ». Supposons maintenant que l'exemple TXT, dans ce scénario, contient de grandes quantités de texte, c'est un très gros fichier. Je vais énoncer comme d'habitude, ajouter notre nom de fichier, puis R, puis dire un fichier. Maintenant, regarde ça. Je vais dire que la ligne est égale à la ligne lecture du point du fichier. Remarquez la différence. Ce n'est plus une lecture de fichier, c'est maintenant une ligne de lecture par point de fichier, puis je peux créer ma boucle et dire while line. Lorsque notre fichier est ouvert, il contient du texte. Nous voulons imprimer la ligne. Nous pouvons également dire que la ligne est égale à la ligne de lecture du point du fichier. Et voilà. Si je devais relancer le programme, vous verrez maintenant que nous avons peu près exactement les mêmes résultats. Vous ne remarquerez pas vraiment la différence, car nous avons quand même affaire à un petit fichier. Cependant, gardez à l'esprit qu'à l'avenir, comme avec la bonne méthode, si vous devez traiter grandes quantités de fichiers à lire, vous devez utiliser une ligne de lecture par points. S'il s'agit d'un très petit fichier, le point de fichier Read sera utilisé. C'est idéal pour ces scénarios. Cependant, nous n'en avons pas terminé. Il existe une autre méthode qui consiste à lire les lignes par points du fichier. Cela permet de lire toutes les lignes en même temps et nous les renverrons sous forme de liste de chaînes où chaque élément est une ligne du fichier. En d'autres termes, il combine les avantages de votre lecture et votre ligne de lecture en lisant le fichier entier en une seule fois, tout comme le fichier lu par points. Cependant, il va stocker chaque ligne en tant qu' élément individuel dans une liste. Permettez-moi donc de vous donner un exemple. Je vais y retourner. Je vais modifier ceci pour changer la deuxième ligne. Égal aux lignes de lecture par points du fichier. Maintenant, au lieu d' utiliser la boucle Wil, je vais passer à la boucle à quatre. Je vais dire quatre lignes, deux points, et maintenant nous pouvons simplement imprimer entre crochets. Ou mieux encore, ajoutons la méthode des bandes afin de supprimer tout espacement inutile Voilà, si je devais exécuter le programme, c'est parti. Alex, Bob, Caroline, Dave et Fred. Encore une fois, vous ne remarquerez la différence lorsque vous traitez un très petit fichier. Encore une fois, gardez à l'esprit que si vous avez affaire à des fichiers volumineux, vous devez utiliser soit la ligne de lecture soit les lignes de lecture. La dernière méthode que je veux vous montrer sera la ligne for dans le fichier. Le but ici est de lire le fichier ligne par ligne de manière efficace en mémoire. Je vais y retourner. Permettez-moi de supprimer les lignes. Nous avons avec un exemple ouvert un fichier TXT, RS. Maintenant, je vais dire pour la ligne dans, je pourrais dire fichier, pour la ligne dans le fichier, maintenant il suffit d'imprimer une bande de points et de ne jamais lancer le programme, voilà. Cette approche est en fait très similaire à l'utilisation de votre ligne de lecture, mais elle est en fait plus concise et considérée comme la meilleure pratique pour lire fichiers volumineux, car chaque itération récupère une seule ligne, donc l'utilisation de la mémoire sera faible En résumé, si vous souhaitez lire un fichier de petite taille, la lecture habituelle de notre fichier sera la meilleure solution. Si vous lisez un fichier volumineux, vous pouvez utiliser votre ligne dans le fichier. C'est mieux que la ligne de lecture par points de votre fichier, et également meilleure que les lignes de lecture par points de votre fichier. Maintenant, je tiens également à souligner qu'en plus des modes pour votre mode lecture, votre mode d'ajout , votre mode d'écriture, nous avons également modes supplémentaires tels que votre mode lecture et écriture, votre mode écriture et lecture, ainsi que votre mode d'ajout et de lecture Par exemple, au lieu de R ici, je peux dire R puis plus. Tout cela s'appelle le mode lecture et écriture. Cela va ouvrir un fichier à fois pour la lecture et pour l'écriture. N'oubliez pas que le fichier doit exister et que son contenu peut être lu et modifié. Votre fichier doit déjà exister pour que vous puissiez utiliser ce mode particulier. Nous avons également le mode écriture et lecture, qui sera W puis plus. Ceci ici ouvrira un fichier pour la lecture et écriture, mais il était destiné à remplacer tout contenu existant. Enfin, bien sûr, vous avez votre mode Append plus, qui est le mode Ajouter et lire Cela ouvrira un fichier pour la lecture et l'écriture, en ajoutant du nouveau contenu à la fin sans modifier le contenu existant N'hésitez pas à jouer avec ces modes et voir comment ils modifient votre fichier. Merci d'avoir regardé. Je te verrai au prochain cours. 48. Gérer les erreurs de fichiers: Au fur et à mesure que vous progressez dans votre parcours tant que programmeur Python ou en tant que programmeur en général, je veux que vous adoptiez une habitude qui impliquera d'écrire des programmes ou de concevoir capables de gérer les erreurs potentielles de manière élégante Vous voyez, la plupart des programmeurs créent tous ces excellents programmes qui peuvent faire ceci, faire cela Cependant, si quelque chose ne va pas, peut-être que l'utilisateur du programme a ajouté un type d' entrée ou peut-être utilisé des chiffres au lieu de lettres ou quelque chose comme ça. Souvent, ces programmes finissent par se bloquer parce que le programmeur n'a pas conçu le programme telle sorte que si de telles erreurs potentielles se produisent, le programme sache comment les gérer Nous avons brièvement parlé de la gestion des erreurs lorsque nous avons parlé des boucles, mais nous allons maintenant aller un peu plus en profondeur. Sur mon écran en ce moment, j'ai un programme très simple qui lit le fichier, l'exemple point TXT. Mais notez cependant que ce programme, le court bloc de code, repose sur ce fichier, exemple point TXT réellement existant. Et si j'avais fait une erreur ou si j'avais utilisé le programme, l'utilisation du programme, avait fait une erreur. Au lieu de l'exemple point TXT, nous avons l'exemple point TXT. Maintenant, ce fichier n'existe pas. Ce n'est pas dans mon annuaire. Si je lance le programme, vous pouvez maintenant voir que nous avons une erreur. Python nous dit que, hé, désolé, aucun fichier ou répertoire de ce type, erreur «   fichier introuvable ». Ça n'a pas l'air bien. Nous voulons écrire nos programmes de manière ce que, si une telle erreur se produit, ils puissent la gérer de manière très élégante et professionnelle. Ce que nous voulons faire maintenant, c'est me permettre de revenir ici et d' ajouter un exemple de point TXT. Nous allons utiliser le bloc Try except. Nous en avons parlé lorsque nous avons parlé de boucles, mais parlons-en à nouveau. Ce que vous voulez faire, c'est dans le bloc de code où il est possible que l'erreur se produise, par exemple ici, une chose que vous voulez faire est commencer par dire « essayer ». Essayez maintenant de vous assurer qu'il est correctement indenté , car le code après l'essai devrait se trouver en dessous Maintenant, nous disons, OK, essayez d' ouvrir ce point d'exemple de fichier THD. S'il existe et tout ça, vous pouvez imprimer le contenu du fichier. Mais que faire si le fichier n'existe pas ? Maintenant, nous pouvons dire sauf, puis sous exception, nous pouvons dire imprimer, puis nous pouvons dire quelque chose comme fichier introuvable. Ajoutons une colonne juste là pour except. Ça y est. En gros, nous disons : « Hé, essayez d'exécuter ce bloc de code si, pour une raison ou une autre, le fichier n'est pas trouvé et imprimez simplement le fichier introuvable Si je lance le programme en ce moment, tout fonctionne correctement car le fichier existe. Cependant, si je change le nom du fichier et que je lance le programme, vous pouvez voir de manière très professionnelle qu'il indique simplement que le fichier est introuvable. C'est parce que nous utilisons le bloc try except. Bien que cela fonctionne bien, pour aller plus loin, je veux que vous commenciez à utiliser ce que nous appelons les exceptions communes liées aux fichiers. Il en existe une grande variété. Python comporte des exceptions spécifiques pour de nombreuses erreurs courantes liées aux fichiers. La première et la plus courante est l' erreur « fichier introuvable », comme nous l'avons fait ici. Au lieu de simplement dire « essayer sauf là où vous avez l'exception », vous pouvez maintenant saisir l'erreur «   fichier introuvable ». Ici, nous demandons à Python de vérifier spécifiquement si l' erreur est due au fait que le fichier n'a pas été trouvé. Si je réexécute mon programme en ce moment, vous pouvez voir qu'il fonctionne toujours parfaitement. Cependant, il s'agit d'un moyen beaucoup plus propre et plus efficace de gérer l'erreur, car ici, nous vérifions spécifiquement si l'erreur s'est produite parce que le fichier n'existe pas. Le bloc try except gère à lui seul toutes les erreurs. Que le fichier n'ait pas été trouvé, qu'il s'agisse d'une flèche d'autorisation d'une flèche de répertoire ou d'une erreur système ouverte, il s'occupera de tout. Donc oui, cela fonctionnera très bien. Je vais m'occuper de la flèche. Mais encore une fois, une méthode plus propre sera de spécifier le type d'erreur auquel vous vous attendez réellement. Nous avons donc l'erreur « fichier introuvable ». Nous avons également une erreur d' autorisation. Peut-être, par exemple, que le fichier en question n'est accessible qu' à un administrateur. Maintenant, il essaie d'être accessible à un utilisateur normal. De toute évidence, vous allez avoir l'erreur suivante : «   Désolé, vous n' avez pas la permission ». Dans ce scénario, il suffit dire, vous savez, désolé, que vous n'êtes pas autorisé à consulter ce fichier, et c'est tout ce que nous devons faire. Donc, si vous vous attendez à une erreur d'autorisation, vous devez utiliser le bloc de code contenant la flèche d' acceptation des autorisations. Nous avons également une flèche de répertoire. Peut-être que l'utilisateur essayait d'ouvrir un répertoire qui n'existe plus. Entrez simplement ici, puis vous tapez est une erreur de répertoire », et elle est là. Et maintenant, à partir de là, nous pouvons spécifier le message d'impression exact. Donc dans ce cas, ce sera quelque chose comme Sorry. Vous n'êtes pas autorisé à accéder à ce répertoire ou à ce SOI. Ce répertoire n' existe pas, quelque chose comme ça. Ensuite, la dernière sera l' erreur du système d'exploitation. Il s'agit généralement de l'exception générale pour les autres erreurs liées aux fichiers. Peut-être que le disque est plein, peut-être que c'est un problème d'entrée-sortie, quelque chose comme ça. Donc, tout ce que vous avez à faire pour le moment est de simplement dire sauf, puis O error. Ensuite, vous pouvez simplement taper quelque chose comme, désolé, une erreur s'est produite ou une erreur du système ouvert s'est produite, quelque chose comme ça. C'est exactement comme ça que ça fonctionnerait. Encore une fois, vous devez adopter cette approche professionnelle assurer en permanence que vos blocs de code, chaque fois code, chaque fois qu'une erreur se produit, ont été conçus vous assurer en permanence que vos blocs de code, chaque fois qu'une erreur se produit, ont été conçus de manière à pouvoir gérer toute erreur potentielle en utilisant le bloc try except puis pour l' instruction accept elle-même, vous pouvez spécifier l'erreur exacte laquelle vous vous attendez. Merci d'avoir regardé. Je te verrai au prochain cours. 49. Multiples sauf les blocs: Bon retour. Dans la vidéo précédente, nous avons parlé de la gestion des flèches ainsi que des différents types d' erreurs spécifiques, sauf celles liées aux fichiers avec lesquelles nous devrions travailler. Mais que se passerait-il si nous voulions vérifier la présence de plusieurs types d'erreurs ? Peut-être qu'en plus du fichier introuvable, il est possible que le fichier ait été trouvé, alors peut-être que les autorisations pour le fichier ne sont pas correctes ou peut-être que le répertoire n'était pas correct, quelque chose comme ça. Nous voulons créer un programme, un bloc de code capable de gérer plusieurs types d' erreurs et d'imprimer des messages d'erreur différents pour chaque erreur. Dans l'état actuel des choses, j'ai une erreur qui est l'erreur de fichier introuvable et il va imprimer le fichier introuvable. Mais que se passerait-il si je voulais également inclure la permission Al ? C'est très, très simple. Tout ce que je dois faire, c'est simplement ouvrir un autre bloc, puis simplement dire « accepter , puis « autoriser ». J'ajoute deux points et maintenant je peux imprimer entre crochets, puis dire «   désolé, vous n' avez pas la permission ». Pour accéder à ce fichier. C'est tout ce que j'ai à faire. Ajoutons une autre flèche, donc je peux dire sauf, puis je peux dire flèche du système d'exploitation. Peut-être qu'il y a eu un problème avec le système d'ouverture. Ensuite, je peux utiliser deux points, puis je peux dire « imprimer », puis entre crochets, il y a une flèche du système d'exploitation. Et si je voulais ajouter un autre bloc de code capable de gérer tout autre type de flèche potentiel ? Tout ce que j'ai à faire est de répéter, sauf maintenant, la touche « exception » sous la forme E. En gros, cette ligne gérera tout autre type d'erreur susceptible de se produire. Ensuite, je vais simplement dire « publier un message général » et « imprimer », puis je vais simplement dire qu'une flèche inattendue s'est produite. Nous voulons maintenant souligner le E ici. Ce E va représenter la flèche. Ce que je vais faire maintenant, c'est utiliser la chaîne F comme d'habitude. Et puis les bretelles bouclées, je vais ajouter le E juste La dernière ligne ici gérera tout autre type d' erreur et le système indiquera qu'une erreur inattendue s' est produite, puis vous spécifierez le type d'erreur à cause de la variable E que nous avons créée ici et c'est tout. Je vais exécuter mon programme, et bien sûr, vous pouvez le voir, il fonctionnera parfaitement bien. C'est ainsi que vous pouvez créer plusieurs blocs sauf qui géreront différents types d'erreurs potentielles susceptibles de se produire. Pour regarder. Je te verrai au prochain cours. 50. La déclaration finale: Lorsqu'il s'agit d'ouvrir des fichiers avec Python, oubliez pas que nous n'avons pas toujours d'utiliser l'instruction with. La raison pour laquelle nous utilisons with la plupart du temps est qu'avec l'instruction with, le fichier sera automatiquement fermé une fois qu'il aura été consulté. Dans le scénario actuel où nous travaillons simplement avec la fonction d'ouverture pour ouvrir le fichier, nous devons fermer le fichier manuellement en disant «   fichier qui se ferme ». le cas contraire, le fichier restera ouvert, ce qui pourrait entraîner des erreurs. La question qui se pose actuellement est la suivante : comment gérerons-nous les erreurs dans ce scénario particulier ? Eh bien, nous devrons utiliser le dernier bloc. Maintenant, tout en haut, je vais commencer par essayer comme d'habitude, puis me rappeler, bien sûr, que tout doit être essayé. Maintenant, à la cinquième ligne, c'est ici que nous allons ajouter l'acceptation. Cherchons maintenant l'erreur « fichier introuvable ». Colon. Si le fichier n'a pas été trouvé, nous pouvons simplement imprimer le fichier introuvable. Cependant, et si le fichier était effectivement trouvé, il n'y a pas d'erreur. Ce que nous allons faire maintenant, c'est enfin le dire. Maintenant, s'il s'agit d'un fichier, attendez. Maintenant, nous disons, enfin, s'il n'y a aucun message d'erreur, si le fichier a effectivement été trouvé, que devons-nous faire maintenant ? Nous pouvons simplement imprimer le contenu et maintenant nous pouvons également fermer le fichier. En fait, pour faire bonne mesure, n'est pas nécessaire, mais pour faire bonne mesure, nous pouvons simplement imprimer le fichier fermé, à titre d'exemple. Bien sûr, si je lance le programme en ce moment, vous pouvez voir qu'il fonctionne parfaitement et il indique même que le fichier est fermé. À première vue, ce programme semble bon pour le moment. n'y a pas eu d'erreur, le fichier a été trouvé il a été imprimé et, bien entendu, le fichier a également été fermé. Cependant, nous n'avons pas encore terminé. Parce qu'en fait, si je devais délibérément changer le nom du fichier pour que nous obtenions l'erreur « fichier introuvable », si je lance mon programme , vous pouvez le constater maintenant, nous avons toujours la méthode désagréable habituelle d' affichage ou de gestion des erreurs. C'est comme si le bloc de code try except ne fonctionnait pas du tout. Qu'est-ce qui se passe ici ? Vous devez également garder à l'esprit que si vous n'utilisez pas l'instruction width, vous devrez non seulement fermer manuellement votre fichier, mais également l' initialiser dès le début Parce qu'à l'heure actuelle, Python ne sait même pas vraiment quel est le fichier lui-même, quelle est la valeur par défaut du fichier ? Un fichier n'est pas équivalent à l'exemple suivant : si le fichier n'était pas trouvé, comment Python le saurait-il, s' il y a en fait une flèche ici, quelle sera la valeur par défaut que la variable de fichier doit avoir ? C'est là que nous devrons tout en haut, dire que file est égal à none. Au tout début, nous initialisons la variable de fichier, nous lui attribuons la valeur par défaut none Il s'agit d'une pratique courante lorsqu'il s'agit ressources qui peuvent ou non être allouées avec succès. L'utilisation de non ici permettrait d'obtenir une valeur par défaut très sûre qui empêchera toute opération accidentelle sur une variable non initialisée C'est une autre chose que vous devez garder à l'esprit. heure actuelle, si je lance le programme une fois de plus, il fonctionne bien. Si je change délibérément le nom du fichier pour produire le message d'erreur, vous pouvez voir maintenant qu'il a géré l'erreur avec élégance C'est exactement pourquoi, lorsqu'il s'agit de gérer des fichiers, nous utilisons généralement l' instruction with , car avec l'instruction with, vous n'avez pas à initialiser vos variables ou vos fichiers et vous n'avez pas non plus à les fermer manuellement L'instruction W est si puissante qu'elle initialise automatiquement nos fichiers et variables et ferme le fichier automatiquement une fois qu'il a été consulté Néanmoins, vous devez en être conscient si vous vous trouvez dans un scénario ou dans un code de programmation dans lequel l' instruction width n'est pas utilisée, comment géreriez-vous les erreurs ? Comment fermeriez-vous le fichier manuellement ? Bien sûr, comment initialiseriez-vous également le fichier manuellement ? Merci d'avoir regardé. Je te verrai au prochain cours. 51. Section Bibliothèques et modules intro: Bienvenue dans la section des bibliothèques et des modules. Et, bien sûr, ici, vous allez apprendre à travailler avec eux. Que sont exactement les bibliothèques et les modules ? Considérez-les comme des programmes qui ont déjà été écrits par d'autres développeurs Python. N'oubliez pas que la communauté Python est importante. Vous avez des développeurs qui ont écrit leur propre type de code. Il y a peut-être un programmeur qui a déjà écrit son propre code pour chiffrer un mot de passe Ainsi, au lieu d' avoir à écrire un tel programme à partir de zéro, vous pouvez simplement l' importer dans votre propre programme. Puis modifiez-le pour faire autre chose. C'est donc en quelque sorte l'intérêt de travailler avec des bibliothèques et des modules. Dans cette section, vous allez découvrir les différents types de bibliothèques et de modules, ainsi que les différences entre les bibliothèques et les modules. Et bien sûr, nous allons également avoir différents défis et exercices de codage. Alors, sans perdre plus de temps, allons-y. 52. Introduction aux bibliothèques et aux modules: Bienvenue dans une toute nouvelle section, et nous allons parler ici de bibliothèques et de modules. Alors, c'est quoi exactement ? Dessinons un scénario, non ? Et si nous voulions écrire un programme capable de hacher du texte brut, n'est-ce pas ? Supposons, par exemple, que nous voulions stocker les mots de passe dans un fichier. De toute évidence, nous voudrions les hacher. Nous ne voulons pas stocker les mots de passe en texte brut. Alors, comment écririons-nous un programme capable de hacher ces mots de passe ? Il y a deux options, d'accord ? Nous pouvons soit décider d'écrire le programme à partir de zéro, ce qui peut prendre beaucoup de temps, soit tout simplement utiliser un module qui contient déjà le code dont nous avons besoin pour hacher notre texte Un module est donc généralement un fichier Python qui contient déjà du code. Il peut s'agir de fonctions, variables, de classes, d' instructions, etc., qui répondent à un objectif spécifique, tandis qu'une bibliothèque, comme vous l'avez peut-être imaginé, est souvent un groupe empaqueté de ces modules organisés autour d'un objectif plus large. Vous pouvez donc considérer les modules comme des fonctions très spécifiques ayant un objectif très spécifique, alors qu'une bibliothèque serait une collection de tels modules. À titre d'exemple, nous avons le point datetime pi. Il s'agit d'un module qui possède des fonctions spécifiques pour marcher avec les dates et les heures. Nous avons également une bibliothèque appelée HH Lib, la bibliothèque HH, qui serait la bibliothèque que nous devrions utiliser pour hacher notre Maintenant, qu'avons-nous dans la bibliothèque de hachage ? Nous avons différents types d'algorithmes. Nous avons le MD Five, qui créera un hachage de 128 bits Nous avons le Shall , qui générera un hachage de 160 bits, le Shaw 256, qui générera les 25, six et, bien sûr, le Shell cinq et deux, qui généreront un hachage de 512 bits Il existe également d'autres types de fonctions dans cette bibliothèque, comme le hash leap point u, qui accepte deux paramètres, données de nom que nous pouvons ensuite utiliser pour créer un hachage avec un nom d' algorithme spécifique À l'avenir, les bibliothèques peuvent donc être intégrées. Nous les appelons bibliothèques standard. Cela sera fourni par défaut avec votre installation Python ou nous pouvons également utiliser des bibliothèques externes. Nous les appelons des tiers. Ces bibliothèques ne sont pas fournies avec votre installation Python, vous devrez donc les installer vous-même manuellement Elles sont développées par la communauté Python. Donc, une fois de plus, les modules ont un code très spécifique qui remplit fonction très spécifique, tandis que les bibliothèques seront une collection de ces modules. Une autre chose que je veux que vous sachiez , c'est qu'au sein de la communauté Python, vous pouvez également entendre parler d'un autre terme appelé packages. Les packages se situent quelque part entre les modules et les bibliothèques en ce sens qu' ils constituent également une collection de modules, mais les objectifs des modules ont tendance à être très étroitement liés. Elles ne sont pas aussi vastes que les bibliothèques. Ainsi, par exemple, vous pouvez avoir votre package de courrier électronique et dans le package de courrier électronique, vous aurez des modules tels que email point message, your email point mime, your email point Utils et bien plus encore Un autre avantage des packages est qu'ils peuvent nous permettre d'organiser ces modules dans une structure hiérarchique en utilisant des dossiers et des sous-dossiers. Ainsi, chaque package contiendra généralement le fichier int PY. Ce qui indique à Python que, hé, ce répertoire en particulier n'est pas une bibliothèque. Il s'agit en fait d'un package. C'est ainsi que nous pouvons aider Python à différencier le package de la bibliothèque. Le package contiendra un fichier spécifiquement appelé fichier ini point py. C'est donc tout pour les bibliothèques, les modules et les packages. German Vinexway nous ne commencerons pas à travailler avec eux. 53. Créer un module personnalisé: Commencez à travailler avec les modules et bibliothèques standard de Python. Je veux que nous créions notre propre module personnalisé, Je veux que nous créions notre propre module personnalisé puis que nous utilisions ce module dans l'un de nos programmes, d'accord ? Voici donc notre fichier de programme principal ici, le point principal pi. Ce que je vais faire, c'est créer un nouveau fichier, d'accord, puis l'appeler maths sur le score de l'annonce. Point PY. OK ? Ce sera le fichier qui contiendra notre propre module personnalisé. Maintenant, le module que nous allons concevoir sera très simple, il prendra deux nombres et les additionnera. OK ? Rappelez-vous donc comment nous avons créé nos fonctions personnalisées. Nous avons utilisé la fonction fine. Et maintenant, je vais ajouter le nom de la fonction, qui sera ajouté aux nombres carrés, puis à deux variables. Il va falloir additionner deux chiffres. Nous pouvons utiliser n'importe quelle lettre pour les représenter. Je vais utiliser F et V, juste à titre d'exemple, puis ajouter ma colonne à la fin. Maintenant, qu'est-ce que je veux que la fonction fasse ? Je veux ajouter F et V. Donc je vais dire renvoyer la valeur de F plus V. Et voilà. Nous avons maintenant un module personnalisé qui ajoutera deux variables, F et V, puis nous transformerons le résultat. OK. Si je devais revenir à mon fichier PI principal maintenant, et que je voulais utiliser ce module que nous avons conçu dans le fichier Method ad Pi, ce que je vais faire maintenant, c'est que je devrai utiliser la fonction appelée Import. C'est la fonction que nous devons maintenant utiliser pour importer notre module personnalisé. Ce sera donc le nom du fichier, qui est écrit en maths sur le score de l'annonce. OK ? Et maintenant, que devons-nous faire ? Nous devons fournir deux chiffres. OK ? Je peux donc dire que le numéro un est égal à cinq, puis le numéro deux est égal à sept. OK ? Juste à titre d'exemple. D'accord. Maintenant, nous voulons imprimer les résultats de l'ajout du numéro un et du numéro deux. Donc, oh, au fait, pardonne-moi. Il ne doit pas y avoir d'espace entre le numéro un et le numéro deux. Pardonne-moi. Puisque c'est une variable, d'accord ? Donc, pas d'espaces dans les noms des variables, excusez-moi. Nous voulons donc imprimer ce résultat. Je peux donc attribuer une variable appelée résultat égale à quoi ? Je vais maintenant intégrer le module personnalisé, qui était basé sur les mathématiques sur le score et OK. Et maintenant, point, quelle était la fonction ? La fonction que nous avions dans notre méthode Ad file est d'ajouter des numéros de soulignement. OK ? Alors maintenant, je vais revenir à mon fichier principal et maintenant dire « ajouter des traits de soulignement ». Et maintenant, entre parenthèses, qu'ajoutons-nous ? Nous ajoutons le numéro un et le numéro deux. Et voilà. ne me reste plus qu'à imprimer les résultats pour le moment . Je dirais des impressions, puis entre crochets, ajoutons un code, puis je peux dire que la somme est, et je peux ajouter une virgule, puis simplement dire résultat, et le voilà Et maintenant, si je lance le programme, voilà, il dit que la somme est 12. Donc, pour vous donner un bref récapitulatif, nous avons tout d'abord créé un fichier séparé, et nous avons remarqué que les fichiers se trouvent dans le même dossier OK, c'est très, très important. Nous avons donc créé un fichier appelé Mth Underscore ad, qui devait être notre module personnalisé Nous avons défini le nom de la fonction étant Ajouter des numéros de soulignement. Il prend deux variables quelconques, F et V, puis nous renvoyons la valeur de l' ajout de ces deux variables. Pour en revenir à notre fichier principal, la première chose à faire était d' importer ce module personnalisé, qui est une annonce de soulignement mathématique ici Nous devons maintenant fournir les valeurs de nos deux variables. Je ne veux pas que tu te perdes. Ne pensez pas cela, car dans notre module personnalisé, nous avons utilisé F et V. Par conséquent, dans le fichier principal, F doit être égal à cinq, puis V doit être égal à sept. Pourquoi utilisons-nous le numéro un, le numéro deux ? Gardez toujours à l'esprit que ces variables, ces paramètres, ne représentent pratiquement rien. C'est juste une façon de dire à la fonction d'AtlPyn que, dans cette fonction, nous allons accepter deux variables, puis nous allons les additionner Nous aurions pu utiliser n'importe quelle lettre ici. Nous aurions pu utiliser B, C, Z. Nous aurions pu utiliser X. Nous aurions pu utiliser n'importe quoi. Nous aurions pu utiliser le numéro un. Deuxièmement, nous avons utilisé n'importe quel nom, importe quel nom pour représenter ces paramètres, d'accord ? Donc ne pensez pas que, oh, les paramètres que vous spécifiez ici doivent être les mêmes ici, non, d'accord ? Tout ce que Python devrait savoir, c' est que, OK, cette fonction va prendre deux variables. Il va prendre deux nombres puis les ajouter, d'accord ? Donc ici, nous avons dit que le numéro un est égal à cinq, le numéro deux est égal à sept. Et maintenant c'est la partie la plus délicate, d'accord ? Ligne six. Nous voulons imprimer les résultats J'ai donc créé un v appelé result, qui serait désormais égal à tout d'abord au nom du module qui est math point add puis point parce que nous voulons ajouter la fonction que nous avons créée La fonction ici est «   Ajouter des numéros soulignés ». Nous l'avons donc ajouté aux maths sur l'annonce de partition, et maintenant, entre parenthèses, il suffit de saisir le numéro un, le numéro deux, puis la dernière chose est d'imprimer les résultats Nous avons donc dit que la somme était puis le résultat, et c'est ainsi que nous en sommes arrivés là. Alors félicitations. Vous avez écrit votre tout premier module personnalisé, et vous avez également réussi à l' importer et à l'utiliser. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 54. Comment woker avec un module standard: Bon retour. Ainsi, lors de la leçon précédente, nous avons créé avec succès notre propre module personnalisé, et nous avons pu l'importer et l' utiliser dans notre fichier principal. Mais maintenant, je veux vous montrer comment importer certaines des bibliothèques et modules standard fournis avec Python. Permettez-moi donc de supprimer tout ce code, et je vais laisser le mot clé Import, la fonction principale, et le nom du module que nous allons importer sont appelés aléatoires. Il s'agit d'un module intégré à Python qui nous permettrait de créer ou de générer des nombres aléatoires à partir d'une séquence En fait, permettez-moi de vous montrer un peu de la documentation ici. Vous pouvez voir que Python possède un module intégré appelé random. Et le truc avec le hasard, c' est qu' il est si puissant, qu'il comporte tellement de méthodes. Jetez un œil à la méthode de choix. Cela renverra un élément aléatoire de la séquence donnée. Je vais utiliser cette méthode particulière pour générer une lettre aléatoire. Alors regarde ça, d'accord ? Je vais d'abord créer une variable appelée lettres , puis égale à deux, et je vais taper toutes les lettres ici, A à Z, d'accord ? Nous voulons donc que notre programme génère une lettre aléatoire à partir de cette liste, d' accord, à partir de cette séquence. Alors, comment allons-nous procéder ? Eh bien, je vais créer une nouvelle variable appelée random dos appelée Letter, d'accord ? Et maintenant, je vais dire random Remember, la séquence, tout d'abord, nous devons ajouter le nom du module ou de la bibliothèque, donc c'est aléatoire ici. Et maintenant, la méthode, qui est le choix, va être le point et maintenant le choix. Et maintenant, entre parenthèses, des lettres. C'est tout ce que j'ai à faire. Et maintenant, que faisons-nous ? Nous imprimons et je peux dire que la lettre choisie au hasard est. Ensuite, je peux ajouter ma virgule, puis simplement ajouter une lettre de soulignement aléatoire Et voilà. C'est tout ce que nous avons à faire. Alors maintenant, si je lance le programme, il est là. La lettre choisie au hasard est M. D'accord. Essayons de relancer le programme. Peut-être que nous choisirons une autre lettre que je devrais. Et voilà. Maintenant c'est C. Encore une fois, maintenant c'est A. Une fois de plus, c'est V. Vous pouvez voir maintenant que cela fonctionne réellement. Bref récapitulatif, qu'avons-nous fait ? Tout d'abord, nous avons importé le module standard appelé random qui contient une liste de différents types de méthodes permettant de générer une lettre aléatoire. La première chose que nous avons faite a donc été de créer une variable de lettres qui contiendra toutes les lettres de A à Z, puis nous avons attribué une autre variable appelée lettre aléatoire qui contiendra désormais la lettre réelle qui sera générée. Il s'agit en fait d'une lettre aléatoire qui a été générée. Ensuite, nous avons dit random bin le nom du module , puis nous avons ajouté la méthode qui est point Choice, puis entre crochets, des lettres Et maintenant, nous avons simplement imprimé la lettre aléatoire choisie à la quatrième ligne. Voilà, merci d' avoir regardé la vidéo. Je te verrai au prochain cours. 55. Génération de mots de passe avec des modules aléatoires et des chaînes de caractères: Eh bien, revenez. Dans la leçon précédente, nous avons appris avec succès comment générer une lettre aléatoire en utilisant le module aléatoire ainsi que la méthode du choix aléatoire des points. Une question que vous pourriez vous poser ici est si nous voulions générer plusieurs lettres et pas une seule ? Ce que nous devons faire, c'est d'abord changer la méthode du choix aléatoire des points au choix aléatoire des points, car maintenant c'est au pluriel Nous avons affaire à plus d'une lettre. Une autre chose à propos des choix aléatoires en tant que méthode de fonctionnement est qu'ils accepteront deux paramètres au lieu d'un. La première sera ce que nous appelons la population, qui est essentiellement de là que nous tirons les lettres. Ensuite, le second sera le nombre réel de lettres que nous voulons générer. Donc dans ce cas, pour l' instant, je vais dire que K est égal à trois. C'est bon. Maintenant, je peux changer le texte d'impression de lettre en lettre, puis changer E en R. Maintenant, si je lance le programme, nous avons KJ, je peux le réexécuter Nous avons QMW, non ? Vous pouvez donc garder cela à l'esprit. Cependant, nous voulons aller plus loin pour générer un mot de passe aléatoire. Nous ne nous contentons donc plus de lettres. Nous allons maintenant combiner des lettres avec des majuscules et des chiffres, etc. Et je suis sûr que vous avez déjà vu générateurs de mots de passe aléatoires. C'est peut-être sur le site Web où on vous demande de créer un compte. Vous souhaitez créer un compte, puis ils vous proposent de générer un mot de passe, que vous pourrez ensuite modifier ultérieurement. Je vais vous montrer comment créer notre générateur de mots de passe aléatoires, et nous allons simplement utiliser cinq lignes pour ce faire. En fait, quatre lignes, juste quatre lignes, d'accord ? Tu ne me crois pas. Jette un œil à ça. Donc, tout d'abord, nous allons garder l' importation aléatoire parce que nous voulons évidemment randomiser les lettres et les chiffres, mais nous allons importer une bibliothèque appelée chaîne parce que nous allons manipuler nos chaînes, qui incluront des lettres, des chiffres, etc. Nous avons donc une chaîne d'importation, et maintenant je vais créer une variable qui représentera le mot de passe. Je vais l'appeler mot de passe égal à mot de passe. Et je me souviens que lors de la leçon précédente, je vais parler de choix aléatoires, ok point, parce que maintenant nous allons avoir affaire à plusieurs lettres. Et maintenant, entre parenthèses, souvenez-vous que le premier paramètre cette fonction ou méthode sera la population. Nous devons indiquer à la fonction d'où elle doit tirer la ficelle des lettres. Le truc avec la bibliothèque de chaînes c'est que je vais juste vous montrer ici, le module de chaînes plutôt, nous avons une variété de méthodes, ou dans ce cas, nous les appelons constantes, d'accord ? Nous pouvons donc dire string point Ask the score letters. Cela fera apparaître des lettres à la fois majuscules et minuscules Ensuite, nous pouvons préciser. Nous pouvons dire string point Ask lowercase Cela n'affichera que des lettres minuscules, puis nous aurons pour les majuscules, les chiffres, les chiffres hexadécimaux, ponctuation, Nous avons donc toutes ces méthodes, toutes ces constantes avec lesquelles nous pouvons travailler lors de l'importation du module de chaîne. Alors laisse-moi emporter celui-ci. Ce que nous allons faire maintenant, c'est pour les choix aléatoires, nous voulons tirer sur le point pour demander et maintenant souligner les lettres. OK ? Nous allons tirer des lettres au hasard. Et puis en plus, nous voulons aussi saisir quels chiffres, nous voulons également avoir des chiffres dans notre mot de passe. Donc, en gros, nous disons la fonction, nous disons à Python que , pour le choix des lettres, pour le mot de passe, nous allons saisir des lettres majuscules et minuscules , puis aussi des chiffres. Et puis, bien sûr, le deuxième paramètre, nous devons spécifier le nombre de lettres et de chiffres qui figureront dans notre mot de passe. Je vais dire que K est égal, et allons-y avec dix. OK ? Donc un mot de passe assez fort. Et maintenant, il ne nous reste plus qu'à faire quoi ? Il suffit d'imprimer. Nous allons imprimer. Et je vais dire généré. Mot de passe ainsi généré. OK. Et puis laissez-moi ajouter ma virgule puis mon mot de passe C'est ça. Nous allons générer le mot de passe. Et maintenant, essayons-le, d'accord ? Je vais donc commencer tout de suite, lancer le programme, et voilà. Nous avons K, nous avons six, nous avons F majuscule, nous avons six, zéro Smoleta, H, J, zéro, W majuscule, puis le capital Vous pouvez donc voir maintenant qu'il a créé avec succès un mot de passe de dix caractères. Nous avions également des lettres majuscules , des lettres minuscules et quelques chiffres. Mais que se passerait-il si, au lieu d'avoir les caractères séparés par une virgule et des codes, nous voulions tout réunir pour n'avoir qu' une seule chaîne Comment allons-nous procéder ? Nous devrons utiliser une fonction spéciale appelée fonction de jointure, d'accord ? C'est en fait une méthode. Donc, ce que vous voulez faire maintenant, c'est ici où il est indiqué que les choix sont aléatoires, nous allons ajouter cette fonction très spéciale appelée jointure par points, et ça se passe comme ça, d'accord ? Nous allons avoir un seul code, puis les joindre par points, et maintenant nous allons devoir ouvrir un crochet pour couvrir tout ce qui se trouve ici et là. Donc, cela va générer le mot de passe, mais ensuite tous les personnages seront joints pour y accéder. Maintenant, si je lance le programme une fois de plus, c'est parti. Maintenant, ça a l' air beaucoup mieux. Je peux le relancer, et voilà. Lancez-le encore une fois, et voilà. C'est donc incroyable de constater qu' avec seulement quatre lignes de code, nous avons pu créer notre propre générateur de mots de passe aléatoires. Bien entendu, nous avons dû utiliser deux modules standard, le module random, puis le module string, et bien sûr, deux lignes de code supplémentaires, et le tour est joué. Alors c'est tout. Merci d' avoir regardé la vidéo. Je te verrai au prochain cours. 56. Le module datetime: Continuons à travailler avec les modules standard. Et le prochain sera très, très important car non seulement c'est un module très utile, mais il est également pertinent pour le monde de la cybersécurité. Et je parle du module date/heure. Il s'agit d'un module que vous pouvez utiliser pour afficher des éléments tels que votre heure, la date actuelle. Vous pouvez manipuler la date et ainsi de suite. Alors laissez-moi vous montrer comment travailler avec. Je vais supprimer tout cela et simplement dire import puis date/heure, d'accord ? Supposons maintenant que nous voulions enregistrer la date et l'heure actuelles. vais venir ici et je vais dire que le temps de soulignement actuel est égal, d'accord ? Et maintenant, nous devons appeler le module qui est la date, l'heure, le point, et maintenant la méthode, qui sera utilisée pour afficher la date et l'heure actuelles. Et il est également appelé point date-heure maintenant. Il est intéressant de noter que dans le module daytime, vous avez une fonction appelée day time now qui est réellement utilisée. Donc, tout ce que j'ai à faire à partir de maintenant, c'est simplement de dire « imprimer ». Ensuite, entre parenthèses, je peux dire que la date et l'heure actuelles sont l'espace, puis vous pouvez ajouter ma virgule ici, puis simplement dire « actuel » sur la partition, heure et voyons voir Je vais lancer le programme, et voilà. La date et l'heure actuelles sont le 27 octobre 2024, et c'est l' heure exacte, comme vous pouvez le voir. Cependant, je voudrais vous présenter autre chose. voyez, étant donné qu'ici nous avons jour puis le jour, c'est un peu redondant, non ? Je veux dire, le code fonctionne toujours parfaitement bien. Ne vous méprenez pas. Le code fonctionne. Mais si vous voulez être très professionnel à ce sujet, une chose que nous pouvons faire est dire, vous savez quoi ? À partir du module de jour, importons spécifiquement la méthode de la date et de l'heure. Donc, ce que je vais faire maintenant, c'est ici, je vais dire à partir de datetime, importer le jour Et maintenant, ce qui est beau, c'est qu'ici, nous n'avons plus besoin de dire point diurne, mais vous pouvez simplement supprimer tout cela. Et dites simplement « point diurne » maintenant. Parce que pour le moment, nous avons dit à Python que, à partir du module appelé daytime, je veux que vous importiez spécifiquement la classe ou la méthode appelée datetime Maintenant, si je lance le programme à nouveau, vous pouvez voir qu'il fonctionne toujours parfaitement bien C'est juste que c' est une façon un peu plus professionnelle et une bien meilleure façon d'écrire votre code. Maintenant, je veux que nous allions ce programme un peu plus loin et que nous combinions le module diurne avec le module aléatoire. Nous allons donc essentiellement générer des activités aléatoires telles que la connexion, déconnexion, le téléchargement de fichiers, le changement de mot de passe, vous savez, des choses qu'un utilisateur peut faire sur un système informatique, nous allons les générer de manière aléatoire et les générer également avec des horodatages, d'accord ? Je vais donc y retourner. Et juste après le module de jour, nous allons maintenant importer des données aléatoires. D'accord ? Maintenant, indiquons les différents types d' actions que nous allons randomiser Je vais donc dire que les actions sont égales, et maintenant nous pouvons créer notre liste. Et ajoutons-en une variété, d'accord ? Tout d'abord, allons-y, connectez-vous par une virgule. Allons-y également avec Logout. D'accord, nous avons quelques suggestions ici, comme s'inscrire, réinitialiser le mot de passe, et d'accord, je pense que j'aime bien ces quatre suggestions. Je pense que quatre c'est suffisant, d'accord ? Donc différentes actions comme la connexion, la déconnexion, l'enregistrement, la réinitialisation du mot de passe Nous allons donc randomiser ces actions. Permettez-moi d'ajouter un trait de soulignement entre la réinitialisation et le mot de passe. Chaque fois que vos chaînes comportent plus d'un mot, s'il s'agit de deux mots, utilisez toujours un trait de soulignement pour les joindre C'est une bien meilleure façon d' écrire vos Donc, une chose que je vais faire maintenant est ici, je vais faire en sorte que l'heure actuelle soit égale au point diurne maintenant. Cependant, nous devons également créer une variable qui contiendra l'action aléatoire Je vais donc venir ici tout de suite et dire que l'action de soulignement de l'utilisateur équivaut désormais à un choix aléatoire de points Et puis, entre parenthèses, les actions. Et voilà. Et tout ce que nous avons à faire pour le moment, c'est simplement d' imprimer que l'utilisateur exécute une action de scie à un moment donné. Nous pouvons donc le faire. Je vais dire imprimer et maintenant la chaîne F, et je dirais que l'utilisateur a joué et maintenant nos accolades pour représenter l'action Ce sera donc l'action de l'utilisateur sur le score. Et maintenant, je peux dire « à et puis les bretelles bouclées », l' heure actuelle souligne Ajoutez les codes de fermeture, fermez le support, et c'est tout. Alors allons-y maintenant et lançons le programme, et voilà. L'utilisateur a effectué un enregistrement sur S et ainsi de suite. Réexécutons-le. J'ai effectué la connexion cette fois-ci, d'accord, j'ai défini un mot de passe. Comme vous pouvez le constater, cela fonctionne. Et si, comme dans la leçon précédente, nous voulions que l'utilisateur exécute plusieurs actions ? Qu'est-ce que tu vas faire très simplement ? Nous allons venir ici, changer nos choix en choix. Et puis n'oubliez pas que nous devrons indiquer nombre d'actions que nous voulons randomiser Je vais dire que K est égal à deux, et maintenant ici, je peux dire que l'utilisateur a effectué, gardons le texte imprimé tel quel. Exécutons à nouveau le programme. Et maintenant, vous pouvez voir qu'il est écrit « utilisateur a effectué », vous avez dit « connexion par mot de passe », réexécutez », et maintenant « identifiant » et maintenant « logo ». C'est ainsi que vous pouvez travailler avec le module diurne conformément au module aléatoire pour simplement générer des actions aléatoires à différents moments. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 57. Travailler avec une bibliothèque externe: Pour terminer cette section sur les bibliothèques et les modules, je dois vous montrer comment vous pouvez travailler avec une bibliothèque externe. Et celle avec laquelle nous allons travailler sera une bibliothèque très, très puissante, et ce sera la bibliothèque de cryptographie Et en fait, permettez-moi de passer en revue la documentation. Cette bibliothèque en particulier est donc développée et maintenue par la communauté Python. Vous pouvez vous rendre sur Cryptography point IO si vous souhaitez en savoir plus Mais ici, ils nous fournissent des idées sur la façon d'importer réellement la bibliothèque et particulier une fonction particulière, qui est la fonction Fernet OK ? C'est ce qui est principalement utilisé pour chiffrer et crypter les messages. Alors laissez-moi vous montrer comment nous allons travailler avec cela. Et j'ai ajouté quelques notes ici parce qu'il est très important que vous compreniez étape par étape comment notre programme va réellement fonctionner, car pour être honnête, cela peut être assez confus, d'accord ? Je ne vais pas mentir. N'oubliez pas qu'en matière de chiffrement, nous pouvons chiffrer une clé, c'est vrai, nous allons utiliser un chiffrement, que nous pouvons ensuite utiliser pour chiffrer Mais ensuite, nous pouvons également déchiffrer le message qui a été crypté, d'accord ? Donc, la façon dont cela fonctionne est que, tout d' abord, en utilisant la fonction frente, nous devrons générer la clé que nous allons utiliser à la fois pour le chiffrement et le chiffrement puis nous pouvons transmettre cette clé à notre algorithme de chiffrement N'oubliez pas que dans le monde du chiffrement, nous allons utiliser des chiffrements qui combinent un algorithme et la clé pour le chiffrement et le chiffrement proprement dits Il s'agit donc essentiellement de quatre étapes. Tout d'abord, nous générons notre clé. Nous disons donc que frente ne génère pas de clé. Cela générera la clé, puis nous pourrons passer la clé à notre algorithme de chiffrement Et maintenant, pour chiffrer le message lui-même, nous allons dire chiffrer parce que maintenant il contient la clé et le Et puis, entre crochets, notre message de fonction est encodé par points. Et puis, au contraire, pour déchiffrer, on peut dire que le message déchiffré sera égal Et maintenant entre crochets parce que nous sommes en train de déchiffrer le message crypté le message crypté Nous allons donc le transmettre , puis ajouter la dernière méthode de décodage par points pour déchiffrer notre message Commençons donc par le début, d'accord ? La première chose que je vais faire est d'importer. Je vais donc dire qu'à partir du cryptographe P point Fernet, nous allons importer la classe de OK ? C'est la toute première étape. Maintenant, n'oubliez pas que la première étape consiste à générer la clé. Je vais donc dire que la clé est égale, et maintenant Fern génère la clé du score. Cela créera une clé. Et maintenant, nous pouvons dire que cipher sera égal à Fernet puis À ce stade, j' aimerais que nous imprimions d'abord la clé générée que nous avons créée. Je peux donc venir ici tout de suite et dire imprimer, puis entre crochets, disons clé générée. OK ? Ainsi, narré, puis clé, peut ajouter deux points, puis une virgule, puis un point clé sur le code C'est bon. Donc, voici cette fonction particulière que nous allons utiliser pour afficher la clé sous forme de chaîne. Maintenant, la prochaine étape sera de chiffrer le message. Alors, que faisons-nous ? Nous pouvons dire que le message est égal. Ajoutons le message. Ici, la valeur par défaut est « hello world ». Rendons les choses un peu plus complexes. Je vais dire bonjour à tout le monde. Il s'agit d'un message de circuit. OK, je pense que c'est bon. Il s'agit d'un message de circuit. OK ? C'est donc le message que nous allons tout d' abord chiffrer puis déchiffrer Je vais donc venir ici tout de suite et dire crypté sur le message de scope. Nous allons maintenant chiffrer le message, et pour ce faire, nous allons dire chiffrement par points chiffrés, puis entre crochets, nous allons transmettre le message et la méthode de codage par points pour chiffrer puis entre crochets, nous allons transmettre le message et notre message codage par points pour Jusqu'ici, tout va bien. La prochaine étape consiste maintenant à imprimer. Nous pouvons imprimer le message crypté dès maintenant, je vais donc l' imprimer entre crochets. Ajoutons nos codes, puis je peux dire que le message crypté est deux points. Maintenant, ajoutez ma virgule, puis dites simplement crypté sur le message de partition OK ? Jusqu'ici, tout va bien. La dernière étape, bien sûr, après le chiffrement sera de déchiffrer Donc je vais dire qu'un message Underscore déchiffré est égal Des points chiffrés parsèment la crypte. Ensuite, entre crochets, nous allons transmettre le message de soulignement crypté, puis mettre des points sur le code Supports, fermez le dernier support, et le tour est joué. Donc, la dernière étape pour le moment consiste simplement à imprimer message déchiffré, puis à le Maintenant, je peux voir que nous avons Oh, il n'y a pas de crochet de fermeture, excusez-moi. J'ai fait une erreur juste là. Et j'espère que cela devrait fonctionner. Laisse-moi partir tout de suite et m'enfuir. Et voilà. Donc, en ce moment, vous pouvez le voir sur mon écran. Il est écrit « Chargement de l'environnement Nix ». Donc, l'avantage de Python lorsqu'il s'agit d'une bibliothèque externe, c'est que même s'il s'agit en fait d'une bibliothèque externe, il va automatiquement importer la bibliothèque car c'est essentiellement elle qui est installée Maintenant, le programme est en cours d'exécution, et il indique que la clé générée était celle-ci, d'accord ? C'est une longue clé. Donc, le message crypté est maintenant ici, très, très longtemps, comme vous pouvez le voir. Et bien sûr, le message crypté est « Bonjour tout le monde ». C'est un message secret. Essayons de remplacer le message par un autre message. Et je dois dire que Python est incroyable. Refaisons-le, et voilà. Nous avons donc maintenant une clé générée différente et, bien sûr, un message crypté différent. Voici donc comment travailler avec la bibliothèque de cryptographie. Et juste pour vous donner un bref récapitulatif, nous avons tout d' abord importé le module furnit depuis la bibliothèque Ensuite, bien sûr, dans le monde de la cryptographie, nous aurons une clé que nous utiliserons pour le chiffrement et le déchiffrement Nous avons généré la clé ici en utilisant la méthode Fn Dogenerate key, puis nous avons attribué cette clé à notre Cipher Nous avons imprimé la clé générée en utilisant la fonction de décodage des touches Ensuite, pour chiffrer le message, nous devons tout d'abord ajouter ce qu'il est réellement Le message ici est que Python est incroyable. Ensuite, nous disons : OK, le message crypté sera égal à maintenant à la fonction cipher point encrypt, puis entre crochets, le message point Donc, la méthode d'encodage par points ici convertira le texte brut ou la chaîne en octets, d'accord ? Et maintenant, le chiffrement par points prendra en compte le message codé. Je vais ensuite le chiffrer pour produire une version cryptée. Et bien entendu, le résultat sera égal au message crypté sur le score. Et puis la dernière étape consiste à déchiffrer le message Donc, cipher point decrypt ici. Nous allons prendre le message crypté, puis le déchiffrer, remettre au format d'origine, puis le décoder par point, ici Cette méthode reconvertira les octets déchiffrés en un format de chaîne lisible Et, bien sûr, finalement, nous avons imprimé le véritable message déchiffré Voilà, merci d' avoir regardé la vidéo. Je te verrai au prochain cours. 58. Introduction au projet d'outil de cryptage et de décryptage: Bienvenue dans le prochain mini-projet. Et ici, nous allons créer un outil pour chiffrer et déchiffrer des fichiers Maintenant, la façon dont cela fonctionne est qu' une fois que l'utilisateur a exécuté le programme, quatre options différentes lui seront proposées. Vous pouvez voir sur votre écran qu'ils peuvent soit générer une clé de chiffrement, chiffrer le fichier, le déchiffrer, soit simplement quitter le programme Donc, si je choisis l'option numéro un pour générer une clé de chiffrement, vous pouvez maintenant voir qu'on va nous demander d' entrer le chemin du fichier pour enregistrer la clé. Le fait est que nous allons en fait donner à l'utilisateur la possibilité d' utiliser la clé par défaut que nous allons créer nous-mêmes ou d'utiliser sa propre clé personnalisée. C'est tout l'intérêt de cette question ou de cette invite, demandant à l'utilisateur de fournir le chemin du fichier. Donc, si l'utilisateur décide d'utiliser la clé par défaut, je vais appuyer sur Entrée maintenant Vous verrez maintenant que nous avons créé un fichier appelé Encryption underscoolk point key qui possède désormais une clé particulière pour le chiffrement possède désormais une clé particulière Alors maintenant, si je devais retourner au programme et que je tapais l' option numéro deux pour crypter un fichier, j'ai créé un exemple de fichier tx ici avec du texte aléatoire Imaginons, par exemple, que nous voulions chiffrer ce fichier Je vais maintenant fournir le nom du fichier, échantillonner le point TXT, appuyer sur Entrée. Nous pouvons maintenant donner un nom au fichier de sortie. Nous pouvons donc appeler celui-ci crypté sous le fichier sco point TXT, ok. Et maintenant, nous appuyons sur Entrée. Et maintenant, nous pouvons entrer le chemin de la clé de chiffrement à utiliser. Encore une fois, nous allons utiliser la touche par défaut. Je vais donc appuyer sur Entrée. Maintenant, notre fichier a été crypté et enregistré un autre fichier appelé fichier de soulignement crypté DTXT Vous pouvez voir que c'est le fichier ici. Donc, si je l'ouvre, vous pouvez voir maintenant qu'il s'agit de la version cryptée de notre exemple de fichier DTXT Maintenant, si je reviens en arrière et que j'opte l'option numéro trois pour déchiffrer un fichier, d'accord ? Et maintenant, déchiffrons le fichier que nous venons de chiffrer, d'accord ? Je vais donc passer au fichier Underscore crypté point TXT. Il s'agit du fichier que nous venons de chiffrer. Alors maintenant, j'appuie sur Entrée. Et maintenant, quel est le nom du fichier de sortie ? Nous pouvons dire déchiffré, le fichier de soulignement est marqué par un point TXT. Nous appuyons sur Entrée, puis nous appuyons à nouveau sur Entrée pour utiliser la touche par défaut. Maintenant, nous avons déchiffré le fichier et l'avons envoyé dans un nouveau fichier appelé Decrypted et l'avons envoyé dans un nouveau fichier appelé Decrypted Et si je l'ouvre ici, vous pouvez voir que nous avons reçu exactement le même texte. Donc, en gros, la façon dont le programme fonctionne est que nous allons fournir un fichier, dans ce cas, qui va maintenant être échantillonné sur TXT Nous allons le chiffrer à l' aide de la clé de chiffrement que nous avons générée Nous allons le stocker dans un fichier appelé texte chiffré NSCofldo, puis nous allons essayer déchiffrer le fichier, puis d' enregistrer le contenu dans un texte chiffré Osco FL Et comme vous pouvez le constater en ce moment, cela fonctionne parfaitement bien. Je vais donc vous montrer exactement comment nous pouvons créer ce type d'outil en particulier. Je vais diviser l'ensemble du projet en trois sujets différents. Donc, dans le premier cas, nous allons créer une clé de chiffrement, puis dans la deuxième vidéo, nous allons créer à la fois les clés de chiffrement et de déchiffrement, les fonctions Enfin, dans la tâche numéro trois, nous ajouterons l'interface utilisateur. Sans perdre plus de temps, commençons. 59. Tâche 1 Créer la clé de chiffrement: Très bien, alors commençons. Et la toute première chose que nous allons faire est d'importer la bibliothèque requise, et ce sera, bien sûr, le point de cryptographie Furnt Je vais donc venir ici et dire « from » puis cryptography point furnt » et maintenant « import net ». OK. Nous voulons maintenant écrire une fonction que nous pouvons utiliser pour générer et enregistrer notre clé de chiffrement. Allons-y et créons une fonction. Je vais appeler celui-ci define et disons generate underscore key, et maintenant dans Bracket Ce sera donc le nom de notre fonction que nous allons utiliser pour générer notre clé de chiffrement. Maintenant, chaque fois que vous générez vos clés, chaque fois que vous utilisez cette fonction, nous pouvons ajouter un type particulier de paramètre, qui sera le chemin du fichier. Nous pouvons créer le nom de notre fichier. Donc, ce que je vais faire maintenant c'est dire fichier, et maintenant souligner le chemin OK, ce sera maintenant égal, et maintenant nous pouvons ajouter le nom du fichier Dans ce cas, en ce moment, dans les codes, je vais dire que le chiffrement souligne la clé, le point, la clé C'est ainsi que vous souhaitez enregistrer le fichier pour votre clé de chiffrement. Ce sera le nom, puis la touche point. Et je vais ajouter ma chronique à la fin. Très, très important. Maintenant, pour générer la clé elle-même, vous pouvez voir que nous nous avons déjà donné les informations. Je vais dire que la touche est égale et maintenant fernt ne génère pas de trait de soulignement, et maintenant Voici donc ce que nous allons utiliser pour générer la clé réelle. Nous allons utiliser cette méthode, qui est la fougère pour générer la clé, et nous allons l'enregistrer dans une variable appelée key Alors maintenant, créons le fichier lui-même. Je vais donc y entrer tout de suite, et je vais dire avec, d'accord, W et maintenant ouvert. Nous allons donc créer notre fichier, et maintenant entre crochets, je vais ajouter le chemin du fichier, d'accord ? Et maintenant la virgule, et maintenant le bon mode. Ce sera donc WB, et maintenant je vais dire S K sur le fichier de partition Donc, ceci ici va ouvrir un fichier dans ce que nous appelons un mode binaire correct. Maintenant, vous vous demandez peut-être ce qu'est exactement WB. C'est similaire au mode d'écriture, qui sera simplement W, que nous connaissons déjà, mais dans WB, vous allez écrire des données dans un format binaire au lieu de texte brut Donc, en gros, cela signifie qu'il écrira les données sous forme octets bruts plutôt que de caractères. Maintenant, vous vous demandez peut-être, d'accord, alors à quoi bon exactement ? Quel est l'avantage ? Eh bien, si vous écrivez des données binaires en utilisant votre mode texte habituel, qui sera W, le programme essaiera d'interpréter les bits comme des caractères, ce qui peut très souvent entraîner des erreurs d'encodage, corruption des données ou peut-être même une perte d'intégrité des données. est donc toujours recommandé d'utiliser WB chaque fois que vous travaillez avec du chiffrement, des fichiers image ou des données autres que du texte afin de garantir que les données seront correctement stockées dans leur format de bit d'origine sans aucune modification Très bien, nous devons maintenant écrire la clé du fichier. Je vais donc venir ici tout de suite, et je vais dire clé sur le fichier de partition, et maintenant la méthode d'écriture, et maintenant que transmettons-nous ? Nous transmettons la clé elle-même. Donc, ici, nous allons écrire la clé du fichier, puis c'est fait, mais nous pouvons aussi simplement écrire quelque chose à imprimer. Disons donc simplement imprimer. Et maintenant, entre crochets, nous pouvons utiliser une chaîne. Et je vais parler de codes. Supposons que la clé de chiffrement soit également enregistrée, et maintenant nous pouvons ajouter le chemin de soulignement du chemin du fichier, et le tour est joué Nous avons donc créé avec succès la fonction de génération de notre clé de chiffrement. Mais maintenant, nous allons également écrire une autre fonction pour charger la clé de chiffrement depuis le fichier. Je vais donc venir ici. Je vais dire « define load underscore key » et maintenant, entre crochets, je vais ajouter un chemin de fichier Et maintenant, cela équivaudra, bien entendu, au chiffrement par clé de chiffrement, clé de soulignement, clé à point À partir de là, je vais dire largeur et maintenant ouvrir pour ajouter le fichier sur le chemin de la partition. Et maintenant, nous voulons lire. Nous voulons lire un extrait du fichier. Alors, que pensez-vous que nous allons utiliser ? Nous allons utiliser RB plutôt que WB. Ce seront donc maintenant des codes. Ce sera RB. Permettez-moi d'ajouter mon coma juste là, puis de fermer le crochet et maintenant en tant que clé sur le fichier de partition. Il y avait une colonne. Enfin, pour lire la clé dans le fichier, nous pouvons simplement dire key equal, puis key, underscore file, point, la méthode de lecture, et maintenant entre crochets, et maintenant nous pouvons simplement renvoyer notre clé Ainsi, la fonction que nous venons de créer ici, la clé de soulignement de chargement, lira et renverra simplement la clé de chiffrement stockée dans le fichier, et bien sûr, ce sera la clé qui sera nécessaire à la fois pour le chiffrement et le déchiffrement Voici la vidéo suivante où nous allons commencer dès maintenant à écrire des fonctions pour crypter un fichier et aussi pour le déchiffrer 60. Tâche 2 créer les fonctions de chiffrement et de déchiffrement: Bon retour. Ainsi, dans la vidéo précédente, nous avons créé avec succès la clé de chiffrement, et nous lui avons donné le chemin du fichier de chiffrement onscorekey point key Et nous avons également écrit une fonction simple pour charger la clé. Alors maintenant, écrivons les fonctions que nous allons utiliser pour chiffrer réellement nos fichiers, mais aussi pour les déchiffrer Au fait, je viens de remarquer ici, à la ligne 9, que je n'ai pas ajouté deux points à la fin. Donc, s'il vous plaît, si vous ne l' avez pas fait, assurez-vous de le faire également. Et puis, à la ligne 5, j'ai également oublié deux Veuillez donc ajouter les colonnes à ligne cinq et à la ligne neuf également. D'accord, nous allons donc écrire une fonction pour crypter notre fichier Je vais donc venir ici et disons définir. Et appelons la fonction crypter, chiffrer, souligner le fichier, Maintenant, réfléchis à ça, d'accord ? Notre fonction, parce que nous allons chiffrer un fichier, nous allons avoir besoin de trois paramètres différents, d'accord ? Le premier paramètre sera le fichier lui-même , que nous allons chiffrer. Appelons donc ce fichier l' entrée du fichier de partition. D'accord ? Maintenant, nous allons également devoir créer un fichier qui contiendra la version cryptée. Appelons donc ce fichier le résultat On the sco file. D'accord. Enfin, nous allons avoir besoin de la clé réelle que nous allons utiliser pour chiffrer le fichier d'entrée, n'est-ce pas ? Permettez-moi donc d'ajouter mes deux points à la fin. Donc, la première chose que nous allons faire maintenant est de créer notre objet frente avec la clé fournie Je vais donc dire que Fernet est maintenant égal à F, Fernet et maintenant entre crochets, nous allons ajouter la touche R. D'accord. À partir de là, nous voulons lire le fichier d'entrée. D'accord ? Ce sera évidemment la prochaine étape qui consistera à ouvrir le fichier d'entrée que nous voulons chiffrer Je vais donc dire avec open et maintenant entre crochets, je vais dire l' entrée sur le fichier de partition, et maintenant quel mode nous allons utiliser avec le mode binaire de lecture, donc R B, d'accord. Maintenant, je vais parler d'un fichier et maintenant, ce que nous allons faire, c'est lire le contenu du fichier, et nous allons passer ce contenu à une autre variable. Appelons donc la variable original. Je vais dire que l'original en ce moment sera égal à quoi ? Le fichier n' est pas lu parce que nous voulons lire le contenu du fichier, et ajoutons nos crochets juste là. OK, nous nous en sortons très bien. Nous nous en sortons très bien. Nous devons maintenant chiffrer le fichier. D'accord ? Au fait, j'ai oublié d' ajouter la colonne ici, à la ligne 16. Ajoutons donc une colonne juste là. OK, maintenant que nous avons ouvert le fichier, nous voulons maintenant le chiffrer Je vais donc dire que celui-ci est crypté. Il s'agira de la variable permettant de stocker la version chiffrée réelle. Je vais donc dire que le chiffrement sera équivalent à maintenant Furnt point encrypt Maintenant, entre crochets, parce que nous avons passé, le point de fichier est lu dans la variable d'origine. Je vais venir ici tout de suite et simplement dire read null, alors quelle est la dernière chose que nous allons faire ? Il faudrait écrire le contenu crypté dans un fichier. Je vais donc dire width open, et maintenant entre crochets, la sortie sur le fichier d'appel, et maintenant le mode sera binaire correct, donc WB Et maintenant, je vais dire «  fichier » entre nos deux points, juste là. Et tout ce que nous avons à faire pour l' instant, c'est de dire «  fichier point » correctement parce que nous cryptons notre fichier, et maintenant, entre crochets, quel sera-t-il Il va être crypté. Je vais donc dire crypté. Cela va donc écrire le contenu crypté dans le fichier. Et bien sûr, nous pouvons simplement ajouter une déclaration d'impression que vous pouvez dire imprimer. Et oui, nous pouvons utiliser ce fichier d'impression crypté et enregistré dans le fichier de sortie. À partir de là, ce que nous devons faire maintenant sera de créer la fonctionnalité que nous pourrons utiliser pour déchiffrer le fichier Ce sera donc essentiellement l'inverse de ce que nous venons de faire. Alors regarde ça pour que je vienne ici. Et appelons notre fonction «   déchiffrer » sur le fichier de partition. Et puis, comme pour le chiffrement, nous aurons besoin de trois paramètres le fichier d'entrée, le fichier de sortie et la clé. Je vais donc ajouter, comme vous pouvez le voir, le fichier d'entrée, le fichier de sortie, puis la clé. Et maintenant, comme d'habitude, je vais dire que Fernet est égal, puis Fernet majuscule, puis Backers Ce sera donc la clé que nous allons utiliser pour déchiffrer notre fichier Maintenant, ce que nous voulons faire, lire le contenu du fichier crypté. Je vais donc venir ici sur une nouvelle ligne. Je vais dire « ouvert », et maintenant, qu'est-ce qu'on ouvre ? Nous ouvrons l' entrée sur le fichier de partition, et maintenant quel mode R B ? Je vais dire fichier S et deux points. Alors maintenant, que voulons-nous faire ? Nous voulons déchiffrer. Je vais donc dire que le chiffré ici est égal à la lecture par points de fichier, nous passons le contenu du fichier crypté à une variable appelée crypté parce que maintenant nous allons créer une autre variable appelée décryptée, et maintenant elle sera égale Maintenant, je vais passer le décryptage entre crochets chiffré. Voici donc comment nous allons déchiffrer le contenu de notre fichier Et maintenant, quelle est la dernière étape ? Nous voulons enregistrer les informations déchiffrées dans un nouveau fichier. Maintenant, je vais simplement dire avec ouvert, et maintenant entre crochets, et maintenant entre crochets, le fichier de soulignement de sortie, et maintenant WB un fichier, deux points, et maintenant simplement le point droit du fichier, et maintenant déchiffré, nous allons écrire connect au Enfin, nous pouvons simplement ajouter les instructions d'impression habituelles. Nous pouvons donc dire quelque chose comme imprimer, entre crochets la colonne F, et disons fichier déchiffré et enregistré dans le fichier de sortie Je pense, OK, je pense que c'est bon. Et ça y est. D'accord. En fait, permettez-moi d'améliorer celui-ci. Je peux dire fichier. D'accord ? Et maintenant, refroidissez les bretelles, puis le fichier d'entrée D'accord. Et maintenant, je vais dire décrypté et enregistré dans le fichier de sortie Je pense que c'est mieux, et voilà. Donc, encore une fois, nous créons des fonctions pour crypter et déchiffrer nos fichiers Pour la fonction de chiffrement, nous avons besoin de trois paramètres. Le fichier d'entrée que nous allons chiffrer, le fichier que nous allons créer, je vais stocker les informations cryptées, qui sont le fichier de sortie, puis la clé pour le chiffrement proprement dit Nous avons donc créé cette clé ici en disant find est égal à fini, puis Bracket key Maintenant, nous avons ouvert le fichier original et nous avons stocké le contenu du fichier dans notre variable appelée original en disant que le point de lecture du fichier est égal à l'original. Et maintenant, pour effectuer le chiffrement lui-même, nous avons dit que crypté est égal à freno encrypt et maintenant entre crochets, original, et maintenant avec open parce que nous voulons stocker les informations cryptées dans et maintenant avec open parce que nous voulons stocker un nouveau fichier, le fichier de sortie, nous avons créé le fichier ici aux lignes 19, 20 et 21, puis nous avons fait à peu près exactement le contraire avec la fonction de déchiffrement Alors, attention à la prochaine vidéo, nous allons maintenant créer la fonction principale pour l'interaction avec l'utilisateur 61. Tâche 3 ajouter l'interface utilisateur: Passons à la dernière partie du programme où nous allons créer l'interaction utilisateur principale. Nous allons proposer à l'utilisateur quatre options différentes. Peut-être aimeraient-ils générer un fichier crypté clé, un fichier décrypté, peut-être même Ensuite, en fonction de l'option qu'ils choisiront, nous devrons faire quelque chose. Commençons donc, d'accord ? Je vais donc dire « define main ». Ce sera le nom de notre interface, et laissez-nous imprimer un message de bienvenue général. Ce n'est pas nécessaire, mais bon, allons-y. Bienvenue dans l'outil de chiffrement et de déchiffrement. OK. OK. Nous allons maintenant créer la boucle while qui va passer en revue les quatre options. Je vais dire « vrai colon » pendant longtemps et maintenant. Et maintenant, laissez-nous imprimer les options. Je vais donc passer à l'impression. Et maintenant, numéro un, générez une clé de chiffrement. OK. Passons maintenant à l'option numéro deux, qui consisterait simplement à crypter un fichier. L'option numéro trois sera ce que les cryptes feront Dossier. Et maintenant, la dernière option, qui est l' option la plus ennuyeuse, quitte le programme. OK, ça y est. Maintenant que nous avons les quatre options, demandons à l' utilisateur de nous indiquer l'option qu' il souhaite choisir. Je vais donc venir ici tout de suite, et passons à la variable ou à l'option. OK ? Je vais donc dire option et maintenant égale et maintenant entrée. Demandons donc à l' utilisateur de nous dire quelle option souhaitez-vous utiliser avec un point d' interrogation, d'accord ? Demandons donc à l'utilisateur  : « Hé, qu'est-ce que tu aimerais faire ? Nous devons maintenant créer les instructions IL pour chaque option particulière. Passons donc à la première. Je vais donc dire que si l' option est égale à un, que voulons-nous faire très simplement, nous pouvons générer notre clé. Je peux donc venir ici tout de suite et simplement dire générer une touche de soulignement, et maintenant entre crochets, quel est le nom de la clé ? Il s'agit de la clé de soulignement du chiffrement. Nous pouvons donc exécuter la fonction immédiatement, non ? Et cela fonctionnera parfaitement bien. Cependant, je voudrais te montrer quelque chose, d'accord ? Ce n'est pas nécessaire. Mais que se passerait-il si nous voulions donner à l'utilisateur la possibilité d'utiliser sa propre clé personnalisée et pas seulement la clé par défaut que nous avons déjà créée ? Nous donnons donc deux options à l' utilisateur, d'accord ? Vous pouvez soit utiliser la clé par défaut que nous avons déjà, soit nous fournir le chemin d'accès à votre propre clé de chiffrement. Maintenant, comment ferions-nous cela ? Eh bien, j'ai déjà écrit la ligne ici, d'accord ? Alors laisse-moi juste prendre ça, couper. Je vais venir ici puis coller. Et laissez-moi vous expliquer ce qui se passe ici. Nous allons donc devoir le transmettre dans le chemin de soulignement du fichier variable. Et maintenant, entrez. Demandons donc à l'utilisateur d' entrer le chemin du fichier pour enregistrer la clé. Maintenant, ici où il est indiqué que le cryptage par défaut sous clé à points fait toujours partie de la chaîne. J'indique simplement à l'utilisateur que, si vous ne nous fournissez pas votre propre clé personnalisée, nous utiliserons la clé par défaut, qui est le cryptage sous la clé à points. Maintenant, c'est très important, là où il est dit, ou cryptage sous clé à point. Maintenant, ici même, nous disons à Python que, même si l'utilisateur a eu la possibilité d'utiliser sa propre clé personnalisée, s'il veut utiliser notre propre clé par défaut, il devrait même si l'utilisateur a eu la possibilité d' utiliser sa propre clé personnalisée, l'utiliser. Nous avons donc dit ici ou et maintenant le nom de notre clé par défaut. Tout ce que nous avons à faire ici est de supprimer l'option par défaut, puis de simplement transmettre le fichier sur le chemin de la partition. Et voilà. C'est donc l'option numéro un, toute présentée. Passons à l' option numéro deux. Je vais venir ici et dire, L F, le choix est égal à deux, deux points. Donc, ici, nous aimerions crypter le fichier. Maintenant, n'oubliez pas que pour chiffrer le fichier, nous avons besoin de trois paramètres Tout d'abord, nous devons demander à l'utilisateur de nous indiquer le fichier qu'il souhaite chiffrer, qui sera le fichier d'entrée Et puis aussi où je voudrais stocker le contenu crypté. Quel sera le nom du fichier de sortie ? Et puis, troisièmement, quelle clé aimeraient-ils utiliser pour effectuer le chiffrement. Je vais donc venir ici tout de suite. Passons la variable saisie au choix de la partition. Oh, pardonne-moi. Ce devrait être l' option LI. Pas le choix Je me suis laissé emporter, option, pas le choix. Donc, entrez le fichier d'entrée. Excusez-moi, entrez le fichier de soulignement. Je vais dire égal à égal. Maintenant, demandons à l'utilisateur de nous dire quel est le nom des fichiers. Je vais dire entrez le chemin du fichier à chiffrer, laissez-moi supprimer ce message Entrez donc le chemin du fichier à chiffrer. OK ? Invitons donc l'utilisateur à le faire. Et puis la sortie du fichier Sco sera égale à l'entrée. Et maintenant, demandons à l'utilisateur de nous indiquer le nom de l'Apple fs. Je vais vous dire d'entrer le nom du fichier de sortie. Colonne. Et maintenant, enfin, qu'en est-il de la clé ? Je vais dire clé sur le chemin de la lunette. D'accord, ce sera égal à l'entrée. Et maintenant, nous pouvons dire, entrez le chemin de la clé de chiffrement. Sinon, la valeur par défaut sera utilisée, d'accord ? Je vais donc simplifier l'instruction de chaîne ici. Je ne vais pas indiquer le nom de l'enfant par défaut. Je ne pense pas que ce soit nécessaire. Donc, tout ce que nous avons à faire pour le moment est simplement de dire également le cryptage ou. Soulignez le point clé. Et voilà, non ? Donc, une chose que nous devons faire ici est de tenir compte des erreurs, d'accord ? Et si l'utilisateur avait fourni le mauvais fichier d'entrée ou si le mauvais fichier d'entrée le nom du fichier de sortie était incorrect, ou même si la clé n'était pas correcte. Que devrait-il se passer ? Donnons donc l'option dès maintenant pour y répondre Donc je vais vous dire d'essayer. N'oubliez pas cela, et maintenant la clé est égale à la touche de soulignement de charge. Et maintenant, entre parenthèses, le chemin clé, d'accord ? Et maintenant, les parties les plus importantes cryptées sur le fichier de partition Et maintenant, entre parenthèses, quels sont les trois paramètres ? Nous avons l'entrée dans le fichier de partition, nous avons la sortie, dans le fichier de partition, et maintenant nous avons également la clé. Voici donc les trois paramètres. Et s'il y a une erreur, générons-la. Je vais dire, sauf Exception. OK, en tant que E. Et maintenant nous pouvons imprimer notre message en forme de flèche. Je vais donc utiliser la chaîne F, puis je vais dire quelque chose comme une flèche pendant le chiffrement. OK, deux points et maintenant nous pouvons utiliser nos accolades pour indiquer quelle est l'erreur en question, et voilà Nous avons donc créé avec succès l'option numéro deux avec x user pour fournir le chemin du fichier à chiffrer, le nom du fichier de sortie, puis également la clé Et nous avons également ajouté un peu de gestion des erreurs. Fantastique Maintenant, tout ce que je vais faire c'est récupérer ce bloc de code, d'accord ? Et je vais simplement le coller parce que j'y pense, d'accord ? Le cryptage et le processus de chiffrement sont presque identiques. C'est juste le contraire, non ? Je vais donc copier tout ce bloc de code, je vais venir ici, et maintenant je vais le coller. OK ? Notez maintenant, cependant, que l'indentation n'est pas correcte Assurez-vous donc que lorsque vous faites exactement la même chose que moi, assurez-vous que votre indentation est correcte Assurez-vous que tout est correctement aligné, et cela devrait aller. OK, tout ce que nous devons faire pour le moment est de changer les options ici, donc les options numéro trois à numéro deux. Fichier d'entrée, je vais dire entrez le chemin du fichier vers ce qu'il faut déchiffrer OK. Fichier de sortie. Entrez le nom du fichier de sortie. C'est très bien Entrez le chemin de la clé de chiffrement. Sinon, d'accord, gardez à l'esprit que la clé de chiffrement est exactement la même chose que la clé de déchiffrement, nous n'avons donc pas besoin de modifier le texte ici Vous pouvez le modifier si vous le souhaitez, mais je vais le laisser tel quel. Enfin, d'accord, ici aussi, suffit de changer cela il suffit de changer cela et le tour est joué, la gestion des erreurs est intacte. Et il y a encore une chose que nous devons changer, c'est qu'il sera écrit de chiffrer le fichier Ici, ça devrait être un fichier décrypté, d'accord ? Vous devez donc vous assurer que chaque fois que vous copiez et collez du code et que vous devez modifier du texte, assurez-vous de le parcourir correctement. Sinon, vous risquez de rencontrer des problèmes. OK, il ne nous reste plus qu' à ajouter la quatrième option. Je vais donc venir ici et dire que option est égale à quatre. Nous pouvons imprimer des X dans le programme. Et maintenant, nous allons également avoir la déclaration break, car n'oubliez pas que même si nous avons fourni quatre options à l'utilisateur, il peut devenir assez stupide et décider de choisir l' option numéro cinq six ou sept ou toute autre option qui n'existe même pas Nous devons donc également en tenir compte. Je vais donc dire break , puis je vais fournir la déclaration Ls finale. Maintenant, nous pouvons simplement dire imprimer, puis dire à l'utilisateur de choisir une option valide. Et voilà. Et voilà. Et maintenant, il ne nous reste plus qu'à exécuter la fonction principale, et voilà. J'espère donc que le programme devrait fonctionner. Permettez-moi de lancer le programme dès maintenant , et voilà. OK, alors laissez-nous tester cela. Tout d'abord, avec l'option numéro un, appuyez sur Entrée. Je vais utiliser la valeur par défaut, donc je vais appuyer à nouveau sur Entrée . Et voilà. Génial Vous pouvez donc voir maintenant que nous avons la clé de cryptage créée par le programme. Alors maintenant, essayons de chiffrer un fichier. Je vais donc venir ici tout de suite et créer un exemple de fichier D TXT. Ajoutons du texte ici. Il s'agit d'un exemple de texte nous allons chiffrer et déchiffrer OK. Alors voyons voir. Je vais commencer tout de suite et passer au programme. Passons à l'option numéro deux dès maintenant. Essayons donc de chiffrer notre exemple de fichier TXT. Je vais appuyer sur Entrée. Et maintenant, quel sera le nom du fichier de sortie ? Appelons cela le fichier d'appel crypté point TXT. Allons-y. Nous allons utiliser la clé par défaut. Je vais appuyer sur Entrée. Et voilà. Jetons donc un coup d'œil. Nous avons le texte crypté sous scoefLED, et le voilà Il s'agit de la version cryptée de notre exemple de fichier texte. Alors maintenant, essayons de déchiffrer le fichier crypté et voyons si nous allons récupérer le même texte Je vais opter pour l' option numéro trois. Entrez le chemin du fichier à déchiffrer, il sera crypté sous le point SCOFLE TXT il sera crypté sous le point SCOFLE Et ce sera le nom du fichier de sortie. Nous pouvons l'appeler décrypté, souligné par le point TXT. Nous allons utiliser la clé par défaut. Et le message Oh, oh, oh, oh, je suis désolée, nous avons un message d'erreur. Il dit : « Aucun fichier de ce type, Dicture crypté underscoflt Qu'est-ce que j'ai mal fait ? Nous avons Oh, tu vois ce que j'ai fait ? Mon fichier est appelé crypté, pas crypté. Je m'excuse. Je dois me procurer une nouvelle paire de lunettes. Je m'excuse. Essayons de gagner encore une fois. Donc, option numéro trois. Le fichier ici est donc crypté. Ah, allons-y, file point TxD. Maintenant, le nom du fichier de sortie, je vais utiliser « décrypté Dans un fichier Les Go, pointez TXT. Clé par défaut, et voilà. D'accord, jetons maintenant un coup d' œil au fichier déchiffré, et vous verrez Donc, tout d'abord, nous avons chiffré le point d'échantillon TXT. Nous avons un fichier crypté, que vous pouvez voir maintenant, puis nous avons déchiffré ce fichier pour obtenir exactement les mêmes textes que vous pouvez voir en ce moment, il fonctionne Essayons l'option numéro quatre pour quitter le programme. OK, j'ai quitté le programme. Exécutons le programme une fois de plus, et passons à l' option numéro sept. Et il est dit, veuillez choisir une option valide, et c'est parti. Alors Whoa, nous avons également créé avec succès un cryptage et un décryptage. Cela fait beaucoup, mais j'espère que vous avez appris de nouveaux concepts tels que l'utilisation des modes d'écriture binaire et de lecture binaire. Vous avez également appris comment vous pouvez permettre l'utilisateur d' utiliser sa propre clé personnalisée ou d'utiliser la clé par défaut. Et j'espère que vous avez beaucoup appris dans le cadre de ce projet financier. Merci beaucoup d'avoir regardé, et bien sûr, je vous verrai au prochain cours. 62. Introduction à la section Oop: Bien, alors bienvenue dans ce qui pourrait bien être la dernière section de ce cours Et ici, nous parlons de l'OOP, la programmation orientée objet. On dirait une bouchée. Cela semble très compliqué, mais ne vous inquiétez pas. Je vais aborder tous les éléments de base ici. Ce sera donc un sujet très, très vaste, parce que croyez-le ou non, si vous maîtrisez le POO, vous pouvez écrire des programmes vraiment incroyables, d'accord ? Dans cette section, nous allons donc apprendre ce que sont les objets. Nous allons également parler de cours, d'accord ? Quelle est donc la relation entre un objet et une classe ? Et bien sûr, vous allez en apprendre davantage sur les méthodes. Je vais vous donner de nombreux exemples. Il y aura également quelques exercices de codage. Vous allez également apprendre des concepts très importants tels que l'encapsulation, l' héritage et même le polymorphisme Oh, c' est quoi exactement le polymorphisme ? Cela semble très compliqué, non ? Ce n'est pas aussi compliqué qu' il y paraît. Ne t'inquiète pas pour ça. Ce sera donc un sujet très, très intéressant, et je suis très heureuse de vous parler de l'OOP Alors, comme d'habitude, sans perdre plus de temps, allons-y. 63. Introduction au POO: Accédez à la toute nouvelle section où nous allons examiner la programmation orientée objet, connue sous le nom de OOP OK, c'est ici que nous allons aborder certains aspects avancés de la programmation Mais ne vous inquiétez pas, je serai là pour vous expliquer de la manière la plus simple possible. Alors, qu'est-ce que l'OOP exactement ? Ce que vous voyez devant vous est essentiellement une bibliothèque, n'est-ce pas ? Tu as toutes sortes de livres. Vous avez des livres sur l'anthropologie, l'archéologie, la biologie, la chimie, les mathématiques, etc. Imaginez que vous étiez bibliothécaire. Vous étiez le responsable de tous ces livres. Idéalement, bien sûr, vous auriez besoin d' une sorte de système pour gérer ces livres, n'est-ce pas ? Tu devras savoir où mettre les livres. Vous devez connaître les caractéristiques de chaque livre, comme, vous savez, le titre du livre, l'auteur du livre. Et aussi, que les livres soient disponibles ou non, ils ont peut-être été effacés, vous savez, des trucs comme ça Alors, imaginez que nous ayons créé une classe appelée book, d'accord ? Et comme je l'ai dit, cette classe peut définir plusieurs types de caractéristiques chaque livre, comme le titre du livre, l'auteur, le genre, la couleur de couverture. Mais outre les caractéristiques physiques du livre, nous pouvons également parler de ce que nous pouvons faire avec le livre. Peut-être que tu peux emprunter le livre. Et si nous le pouvons, pendant combien de temps pouvons-nous emprunter le livre ? Peut-être que nous pouvons même mordre le livre et ainsi de suite. OK, pensez à tous ces attributs contenus dans le livre de classe. D'accord ? Maintenant, des choses comme le titre, l'auteur, le genre, les éléments qui décrivent physiquement le livre, nous pouvons les appeler des attributs, n'est-ce pas ? Nous avons déjà parlé des attributs dans ce cours. Mais alors les méthodes, les méthodes décriront ce que nous pouvons réellement faire avec chaque livre. Peux-tu, mon garçon ? Peux-tu mordre ? Donc, en gros, la classe book définira à la fois les attributs et les méthodes. En d'autres termes, le cours de lecture est comme une description générale de ce à quoi pourrait ressembler un livre et de ce que nous pouvons réellement en faire. Mais nous ne parlons pas encore d' un livre en particulier. D'accord. Maintenant, chaque livre de la bibliothèque est ce que nous appelons un objet de la classe de livres. Encore une fois, le cours de lecture nous donnera une description générale des attributs et des méthodes de chaque livre, tandis que les livres eux-mêmes, les livres individuels, seront appelés objets de la classe de livres. Ainsi, les attributs d'objet du livre A, par exemple, pourraient être le titre « Programmation Python ». L'auteur pourrait être Jack, puis la couleur pourrait être bleue, non ? Et puis jetons un coup d'œil au livre B. Le titre pourrait être «   cyber one oh one ». L'auteur est Alice et la couleur est le rouge. Il s'agit d' attributs individuels propres à chaque livre, et ces attributs ont leurs propres valeurs. La valeur de la couleur de l'attribut pour livre A est le bleu par exemple, à droite, etc. ce qui concerne les méthodes, nous pouvons également, par exemple, dire que le livre A utilise une méthode appelée emprunter, selon laquelle, une fois le livre emprunté, la bibliothèque devra mettre à jour les enregistrements pour indiquer que le livre n'est plus disponible pour être emprunté. De même, imaginez que le livre B ait été emprunté dans le passé, mais qu'il ait maintenant été rendu. Nous pouvons ensuite marquer le livre B comme étant de nouveau disponible. Ce sont donc des méthodes, des attributs. Donc, pour vous donner un bref récapitulatif, la classe est un peu comme la description générale du livre où les attributs et les méthodes sont définis L'objet est une instance. En gros, un livre spécifique dans une bibliothèque, un objet spécifique relevant de la classe, de la classe de livres. Les attributs seront une description physique de chaque livre, tandis que les méthodes connues sous le nom d'actions sont bien connues, essentiellement les actions qui peuvent être effectuées sur chaque livre. Donc, une vidéo de Jerman Vernick où nous allons commencer à examiner quelques exemples 64. Créer un cours de base: Nous allons maintenant créer un code centré sur l'exemple précédent que je créer un code centré sur l'exemple précédent vous ai donné concernant la bibliothèque, les livres, les attributs et les méthodes associés à chaque livre. La première chose à faire est donc définir le livre de classe. Je vais donc dire livre de classe et c'est ainsi que nous créerions la classe appelée livre de manière très simple. Maintenant, nous devons indiquer les attributs qui seront associés à chaque objet du livre. D'accord ? Donc, pour ce faire, je vais dire l'amende. Et maintenant, dedans, soulignez, soulignez. Et maintenant, entre crochets, c'est ici que nous allons indiquer les attributs qui seront associés à chaque livre. Vous commencez généralement par quelque chose qui s'appelle soi. D'accord ? C'est très, très courant dans la programmation orientée objet, d'accord ? Le self est donc un moyen de faire référence à chaque objet individuel de la classe à laquelle nous avons affaire. Dans ce cas, pour le moment, il s'agira de chaque livre individuel. Vous allez donc toujours commencer par vous-même, et maintenant par l'attribut lui-même . Je vais donc choisir le titre, l'auteur, et ajoutons-en un autre. Disons Gênes. D'accord ? Pourquoi pas ? Gênes, Colon. Jusqu'ici, tout va bien. OK. Nous devons maintenant attribuer des variables à chacun de nos attributs. Je vais donc commencer par dire self point title. Tu vois comment ça marche en ce moment ? Le titre à points fixes est égal au titre. Maintenant, pouvez-vous deviner que le point suivant est l'auteur égal à l'auteur. Et puis, encore une fois, self dot Gena est égal au genre. Jusqu'ici, tout va bien. Je vais ajouter un autre attribut. Techniquement, ce n'est pas un attribut que nous avons défini jusqu'à présent, mais il sera utile une fois que nous aurons commencé à créer les méthodes que nous appliquerons au livre, d'accord ? C'est-à-dire que nous voulons indiquer si un livre est disponible pour être emprunté ou non. Je vais donc dire Self Dot disponible. Bien, disons que le moi va bien, est-ce que cela est disponible sur le score, d'accord ? Nous voulons initialiser cela pour qu'il soit vrai dès le début, d'accord ? Donc, au tout début, tous les livres peuvent être empruntés, d'accord ? Maintenant, nous avons défini les attributs, le titre, l'auteur, le genre. Nous avons également ajouté l'une des méthodes, l' un des paramètres que nous allons utiliser dans nos méthodes, savoir si le livre est disponible ou non. Alors maintenant, définissons les méthodes elles-mêmes. Et celui auquel nous allons avoir affaire ici sera l'emprunt. Donc je vais dire emprunter et maintenant entre parenthèses, soi, d'accord ? Nous sommes en train de créer une méthode que nous pouvons appliquer au livre d'objets. Disons donc que si le livre est effectivement disponible, que devrait-il se passer ? Je vais donc dire si réfère à ce que le livre est, en fait, disponible ? Que faisons-nous ? N'oubliez pas qu'une fois que le livre sera prêt à être emprunté, nous devrons mettre à jour les dossiers de la bibliothèque pour indiquer que le livre n'est plus disponible parce qu'il vient d'être emprunté, n'est-ce pas ? Nous allons donc dire que self point est disponible, ne devrait pas être égal à quoi ? Faux, car il n'est plus disponible. D'accord ? Regardez à nouveau la ligne 11. C'est parce que c'est très, très important, d'accord ? Ici, nous le faisons pour la toute première fois, quelqu'un veut emprunter ce livre, peut-être pas pour la première fois, mais le livre est actuellement disponible. Alors, que devrait-il se passer ? Nous devrions dire que, d'accord, nous devrions mettre à jour les dossiers pour indiquer que le livre n' est plus disponible, puis nous laisser imprimer quelque chose, d'accord ? Disons imprimer. Et maintenant, entre crochets, je vais utiliser la chaîne F parce que je veux faire référence au titre réel du livre qui a été emprunté. Je vais donc ouvrir mes bretelles universitaires, et je vais dire Self Dot Quel titre de point. OK. Et maintenant, nous pouvons taper ce que nous voulons, nous voulons taper «   a été emprunté ». D'accord ? Aux codes de fermeture. Et voilà. Deux choses devraient donc se produire si le livre est disponible pour être emprunté. Tout d'abord, nous devons mettre à jour les dossiers pour indiquer que le livre n'est plus disponible parce qu'il a maintenant été emprunté. Ensuite, nous devrions imprimer le message indiquant que le livre a été emprunté. Ese, à quoi sert cette déclaration ? Pourquoi nous indiquons-nous ? Nous devons l'indiquer parce qu' à la ligne 11, il est écrit : «  Si le livre est disponible en ce moment », le programme suppose que le livre est actuellement disponible. Mais que se passerait-il si l'utilisateur de la bibliothèque souhaitait emprunter un livre qui n'était pas réellement disponible au départ ? C'est ce que la déclaration L va représenter ici. Donc, si le livre n'était pas disponible initialement, il suffit d'imprimer Imprimer, imprimer. Ensuite, nous pouvons simplement dire « désolé ». Ce livre n'est pas disponible actuellement. Et j'ai oublié de le mettre entre guillemets. Désolé, ce livre n'est pas disponible actuellement. Bien entendu, nous pouvons également utiliser la chaîne F et le titre personnel pour faire référence au nom réel du livre, mais cela n'est pas nécessaire. Mais je dois juste dire, désolé, ce livre n'est pas disponible actuellement. OK. Génial Maintenant, définissons une autre méthode, qui serait de retourner le livre. Nous pouvons donc emprunter le livre, mais nous pouvons également le rendre. Je vais donc dire de définir le rendement sur le livre de scores lui-même. Nous avons donc donné la fonction de la méthode appelée Return On score Book, puis self. Dans ce cas, que devrait-il se passer maintenant si le livre est retourné ? Maintenant, nous allons dire que self point is available doit maintenant être égal à ce qui vrai, car le livre est maintenant disponible. Et allons-y dès maintenant, imprimons un message et disons, référençons également. Je vais donc dire chaîne F, puis le nom du livre a été renvoyé. D'accord ? Essayons donc ceci. Mettons-le en action, d'accord ? Je vais donc faire tout le chemin jusqu'ici. Supposons que le trait de soulignement A du livre soit désormais égal à l' objet réel appelé livre Et maintenant, à l'intérieur, donnons le nom, le titre du livre, tout d'abord disons Python un par un. D'accord ? Quelle est la prochaine étape pour l'auteur ? Appelons donc l'auteur Alice. D'accord ? Et puis quel sera le genre ? Disons programmation, non ? Programmation. D'accord ? Et maintenant, créons un autre objet. Cet objet sera représenté par un livre sur la partition, B est égal, et maintenant encore un livre, et maintenant entre parenthèses, disons cyber deux oh un, d'accord ? Et puis l'auteur ici sera Jack et ensuite quel sera le genre ? Disons simplement technologie, technologie, non ? La technologie devrait être le genre. Et voilà. Je vais donc faire tout le chemin jusqu'ici. Et maintenant, examinons les méthodes, d'accord ? Tout est en place pour le moment. Appelons nos méthodes, qui, bien entendu, consistent emprunter puis à rembourser. Je peux donc dire livre, tout d'abord, souligner un point Borrow entre crochets D'accord ? Donc, tout d'abord, nous allons emprunter le livre. Ensuite, laissez-moi exécuter le programme. Voyez-vous qu'en ce moment, il est écrit : OK, Python un oh un a été emprunté parce qu'ici, cela indiquera 11 en ligne. Cela indiquera au tout début que, OK, le livre est disponible. Il a maintenant été emprunté, nous devrons donc mettre à jour les dossiers pour indiquer que c'est faux. Et maintenant, nous allons dire que le livre a été emprunté. Mais à ce stade, le livre n'est pas disponible, n'est-ce pas ? Ciblons donc l'instruction L. Il devrait maintenant être imprimé, désolé, ce livre n'est pas disponible actuellement si je réexécute la méthode. Et si quelqu'un d'autre vient maintenant et veut emprunter le livre qui n'est pas encore disponible ? Que va-t-il se passer ? Je vais exécuter le programme. Et maintenant, vous le voyez dire « désolé, ce livre n' est pas disponible actuellement ». OK. Mais que se passerait-il si je retournais le livre maintenant ? Qu'est-ce que ça va dire ? Cela va dire que Python a été renvoyé en tête-à-tête. Et maintenant, si je réexécute la méthode return, je suis désolée, la méthode borrow encore une fois. Allait-il le dire ? Cela va dire que Python 11 a été emprunté. Vous pouvez donc le voir maintenant, cela fonctionne parfaitement bien. Donc, juste pour vous donner un bref récapitulatif, tout d'abord, nous avons dû créer une classe appelée book now inside, nous devons définir les attributs associés à chaque livre Et nous l'avons fait en disant : définissez le score sur le score, puis les paramètres ou les attributs entre parenthèses. Ensuite, nous avons attribué à chaque attribut une valeur, de sorte que self ou title soit égal au titre, self point author soit égal à author, self point genre soit égal à Gena Ensuite, nous avons également créé une méthode qui indiquera si nous pouvons emprunter le livre ou non. Il s'agit donc essentiellement d'un attribut booléen. Nous avons dit : « D'accord, le point self est disponible au tout début et doit être égal à vrai ». Et maintenant, nous avons créé deux méthodes différentes. Le premier serait l'emprunt. Que se passe-t-il donc lorsqu' un livre est emprunté ? S'il était initialement disponible, nous mettrons à jour les enregistrements pour indiquer que self is available n'est plus disponible, donc c'est faux. Ensuite, nous devrions imprimer le titre qui dit «   désolé, ce livre a été emprunté ». Cependant, si le livre a déjà été emprunté au départ, nous devrions simplement l'imprimer désolé, ce livre n'est pas disponible actuellement. Et puis la deuxième méthode, que se passe-t-il lorsque le livre est retourné ? Nous devrions maintenant mettre à jour nos dossiers une fois de plus pour indiquer que self is available est désormais vrai, et nous pouvons imprimer le nom du livre indiquant qu'il a été retourné. Enfin, nous apprenons à créer des objets individuels dans des livres individuels. Nous pouvons simplement dire que le trait de soulignement A est égal à livre, puis entre crochets, nous devrons renseigner les valeurs des attributs Ensuite, nous avons créé un autre livre, livre B, qui s'intitule Cyber to one Jack Technology. Ensuite, nous avons appelé les méthodes, et c'est à peu près tout. Merci donc d'avoir regardé la vidéo. Je te verrai au prochain cours. 65. Créer un cours de base, partie 2: Avant de passer à une nouvelle leçon programmation orientée objet, je voulais vous donner un autre exemple afin que vous puissiez vraiment comprendre ce que nous faisons. Créons donc une classe différente. OK ? Faisons quelque chose en rapport avec la cybersécurité. Supposons, par exemple, que nous voulions créer une classe appelée user, d'accord ? Et les comptes utilisateurs auront des attributs différents tels que le nom d'utilisateur, le rôle, d'accord ? Et puis créons également une méthode. Disons, par exemple, que peut faire l'utilisateur ? L'utilisateur peut se connecter. OK ? Alors faisons-le. Je vais donc supprimer tout ce code. Et tout en haut, je vais juste dire classe d'utilisateur. OK ? Alors, comment créons-nous notre utilisateur ? Nous disons « classe », puis « utilisateur », «   colon ». Et maintenant, que devons-nous faire ? Nous devons définir les attributs qui seront associés à chaque compte utilisateur. Je vais donc dire d'y définir le soulignement. Sur le score. Et maintenant, entre parenthèses, qu'est-ce que nous avons ? Nous avons le moi parce que nous devons faire référence à chaque compte utilisateur individuel. Je vais donc dire self, puis les attributs seront nom d'utilisateur, et passons au rôle ? Encore une. Rouleau. Il fait froid , et c'est tout. Quelle sera la prochaine chose à faire ? La prochaine étape consiste maintenant à attribuer des variables à chacun de nos attributs. Je vais donc dire que self point use a name equals, use a name. C'est assez simple. Et puis le rouleau de points automatique doit être égal à quel rouleau. Ça y est. OK, nous avons donc défini les attributs. Maintenant, qu'en est-il des méthodes ? Créons une seule méthode appelée login, d'accord ? Ainsi, un utilisateur peut réellement se connecter. Je vais donc dire «   mort », puis me connecter. Et puis entre parenthèses, qu'est-ce que ça va être ? Ça va être soi-même. Lui-même. Colon. Et maintenant, que doit-il se passer une fois qu'un utilisateur s'est connecté ? Laissez-nous imprimer un message de bienvenue. Je vais donc utiliser les codes de chaîne F, puis nous pouvons dire «  bienvenue » et laisser notre Python remplir le reste des informations sur place. Alors, bienvenue. Et puis le nom d'utilisateur personnel. Et voilà, c'est tout ce que nous devons faire. Et maintenant, enfin et surtout, créons un objet, essentiellement un compte utilisateur, puis appelons notre méthode. Arme ? Je vais donc dire admin sur le score utilisateur, cela peut représenter notre premier compte qui sera réservé à un administrateur. Ce sera égal à quel utilisateur. Et maintenant, entre crochets, nous devons renseigner les valeurs des attributs qui sont username et roll. Donc, dans ce cas, le nom d'utilisateur sera Alex pour le moment. OK ? Le nom d'utilisateur est Alex. Sorry encode, Alex, et puis le rôle d' Alex est évidemment celui d'un administrateur Donc, administrateur. OK. Et enfin, appelons notre méthode. Ce sera donc admin scouser point log in Brackets. Et si ce programme fonctionne, il devrait dire quelque chose comme : « Bienvenue Alex ». Fuyons. Et voilà. Bienvenue, Alex. C'est donc un autre exemple de création d'une classe, de définition des attributs de chaque objet de cette classe. Ensuite, nous avons également créé une méthode pour chaque objet individuel. Et puis, bien sûr, nous avons créé un objet réel, puis nous avons finalement appelé la méthode associée à l'objet. J'espère donc que vous avez maintenant une meilleure compréhension de l'OOP. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 66. L'encapsulation (1080p): L'un des concepts fondamentaux de la programmation orientée objet OOP est connu sous le nom d'encapsulation, qui consiste essentiellement à garder certaines données privées afin qu'elles ne soient accessibles ou modifiées que de certaines manières Maintenant, c'est très utile en cybersécurité car cela nous permet de protéger les données sensibles comme les mots de passe, d'accord ? Ainsi, par exemple, nous pourrions écrire ou créer une classe et des objets qui stockeront le mot de passe d' un utilisateur en privé, puis fourniront uniquement un moyen de vérifier si le mot de passe saisi est réellement correct. Permettez-moi donc de vous montrer comment nous pouvons encapsuler des données à l'aide de l'OOP. Je vais suivre exactement le même cours, d'accord ? Donc, classe utilisateur, je vais changer le rôle attributif en mot de passe OK ? Et puis, évidemment, ici, je vais changer notre rôle de point personnel en mot de passe, et ce sera également égal à notre mot de passe. Cependant, la seule façon de dire à Python que, hé, cet attribut en particulier, nous voulons qu'il soit privé. Ce n'est pas une information publique. Ceci est privé uniquement pour l'utilisateur. Et nous pouvons le faire en passant ici devant le P pour le mot de passe, puis en ajoutant un double trait de soulignement Donc, ici, les doubles traits de soulignement indiqueront à Python que, hé, il s'agit d'un attribut privé Nous voulons résumer les informations ici. Créons maintenant une méthode que nous pouvons utiliser pour vérifier si l'entrée fournie par l'utilisateur correspond réellement au vrai mot de passe de cet utilisateur. Donc, ce que je vais faire maintenant, c'est définir notre méthode, et appelons-la authentifier, d' accord ? Définissez donc authentifier. Et maintenant, entre parenthèses, je vais choisir moi et mon mot de passe, d'accord ? Et nous le faisons parce que self désigne ici l'utilisateur dont nous voulons réellement vérifier le mot de passe, puis le mot de passe lui-même que nous sommes en train de vérifier, d'accord ? Et maintenant c'est la clé. Il faudrait revenir et maintenant self dot Osco, passe sera désormais égal au mot de passe Nous voulons donc vérifier si le mot de passe stocké pour l'utilisateur sera le même que le mot de passe fourni en entrée. C'est ce que cela va faire ici, ligne 8. Donc, si le mot de passe correspond, ligne huit renverra vrai, mais s'il n'y a pas de correspondance, elle renverra faux. OK ? Nous devons donc maintenant créer nos objets utilisateur et nous assurer que, bien entendu, chaque fois que vous créez des objets utilisateur, indentation se trouve à l'extérieur Il devrait être sur la même indentation que la classe elle-même, d'accord ? Ne le faites pas à l'intérieur de la classe mais à l'extérieur. Il faut que ça corresponde, d'accord ? Donc, ici, je ne vais pas dire utilisateur égal, et maintenant utilisateur, disons que nous devons fournir un nom d'utilisateur. Allons-y avec un invité, d'accord. Allons-y avec un invité. Un invité très simple. Et maintenant pour le mot de passe, je vais choisir S puis dire SOD, Fish, un, deux, trois, d'accord ? C'est donc le mot de passe que nous avons créé pour notre utilisateur invité, d'accord ? Bien. Maintenant, essayons d' authentifier l'utilisateur en utilisant des mots de passe différents, d'accord ? Essayons donc d'utiliser le bon mot de passe, puis le mauvais, d'accord ? Alors, comment allons-nous appeler notre méthode ? Je vais dire imprimer. Et maintenant, entre crochets, le point d'authentification de l'utilisateur. Nous appelons donc la méthode en ce moment pour authentifier notre utilisateur Et entre parenthèses, nous voulons fournir le mot de passe que nous voulons vérifier. Donc, si le mot de passe est là en ce moment, laissez-moi choisir le bon. Ce sera le même SOD, poisson un, deux, trois, non ? Et puis Brackets, d'accord ? Si je lance le programme en ce moment, et oh, la ligne 12 est un message d'erreur. Oh, nous devrions avoir un support supplémentaire ici. Désolée pour ça. Laisse-moi essayer de le lancer à nouveau. Et voilà. Maintenant, cela dit vrai parce que le mot de passe ici, STfish 123, est le même que le mot de passe réel que nous avons donné à l'utilisateur Maintenant, ce que je vais faire, c'est simplement copier cette ligne, d'accord, copier-coller. Essayons maintenant d'utiliser un autre mot de passe. Je vais donc passer à la majuscule A, en Colombie-Britannique, un, deux, trois, et d'accord, c'est tout. Alors laisse-moi y aller maintenant. Exécutez à nouveau le programme, et vous pouvez maintenant voir qu'il est faux car notre méthode a vérifié que ABC 123 n'est pas égal à SotFish 123 C'est ainsi que nous pouvons encapsuler des données l'aide de la programmation orientée objet. Tout ce que nous avons vraiment à faire pour indiquer qu' un attribut particulier est privé et que nous voulons encapsuler est d'avoir doubles traits de soulignement devant le nom de l'attribut réel Alors, merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 67. Héritage: concept très important de la programmation orientée objet sera le concept d'héritage. Et tout comme en anglais, nous savons que l'héritage se produit lorsque, vous savez, quelque chose est transmis d' une personne à une autre, n'est-ce pas ? Ainsi, en Python, nous pouvons créer des versions spécialisées d'une classe sans même avoir à réécrire le code Nous pouvons essentiellement créer une classe enfant qui peut hériter attributs et des méthodes d'une classe parent Je veux donc vous donner un exemple ici, d'accord ? Puisque nous avons affaire à une classe d'utilisateurs, évidemment dans les systèmes et les réseaux, nous avons différents niveaux d'autorisations, n'est-ce pas ? Un utilisateur normal peut accéder à certains types de fichiers, puis les imprimer, tandis qu'un utilisateur administrateur pourra faire exactement les mêmes choses qu'un utilisateur normal. Mais comme il s'agit d'un utilisateur administrateur, il aura des autorisations supplémentaires, comme la possibilité de dire, par exemple, de modifier ces fichiers, n'est-ce pas ? Donc, ce que je vais faire maintenant, c'est créer une classe pour l'utilisateur normal, puis je vais une classe pour l'utilisateur normal créer une autre classe qui sera l'utilisateur administrateur qui héritera des méthodes de l'utilisateur normal Donc, ici, nous avons un utilisateur de classe, et maintenant je définis un attribut de base, et ce sera le nom d'utilisateur, d'accord ? Maintenant, l'étape suivante consistera simplement à dire que nom d'utilisateur self point est égal à égal, puis, bien sûr, le nom d'utilisateur. Maintenant, je veux créer une méthode spécialement pour notre utilisateur ici. Je vais donc dire définir, et disons qu'un utilisateur normal peut se connecter, n'est-ce pas ? Ils peuvent se connecter. Je vais donc vous dire de vous connecter. Et maintenant, entre parenthèses, je vais dire « moi ». D'accord ? Et puis, quand ils se connectent, faisons quelque chose. Supposons que l'utilisateur imprime et que son nom d'utilisateur soit connecté. Disons qu'il a de l'espace ici, qu'il s'est connecté. D'accord. Jusqu'à présent, ce que nous avons fait ici, c'est que nous avons créé la classe utilisateur avec l' attribut username. Nous avons également attribué une méthode appelée Log in qui affichera essentiellement le nom de l'utilisateur qui s'est connecté. Cependant, je vais maintenant créer une autre classe qui héritera non seulement du nom d'utilisateur de l'attribut de la classe utilisateur, mais également de la méthode de connexion Comment est-ce que je vais m'y prendre ? Je vais venir ici et ensuite remarquer l' intention que je fais jusqu'au bout. Maintenant, je vais dire classe et fournir le nom de cette nouvelle classe. Je vais donc dire admin. Et puis nous pouvons même dire admin user à titre d'exemple. En fait, restons-en à l'administrateur, d'accord ? Donc admin, et maintenant entre crochets, je vais dire utilisateur. Colon. Donc, ici, à la ligne 9, nous avons créé une nouvelle classe d'utilisateur appelée admin user qui héritera de l'attribut, du nom d'utilisateur, puis de la méthode de connexion à la classe utilisateur Je vais aller plus loin et ajouter maintenant une méthode supplémentaire, car il s'agit d'un utilisateur administrateur, il peut faire des choses supplémentaires. Je vais donc dire : définissons, appelons cet accès sur ceux appelés journaux parce qu'ils sont administrateurs, ils peuvent accéder aux journaux. Je vais donc dire « moi », « appelez ». Et maintenant, imprimons simplement entre crochets. Je peux utiliser la chaîne F et disons quelque chose comme le point self. Le nom d'utilisateur accède aux journaux. Et ça y est. Et voilà. Nous avons terminé. Alors maintenant, ce que je vais faire, c'est créer notre utilisateur administrateur. Je vais donc dire que admin est égal, et maintenant en majuscule admin user. Et puis, entre parenthèses, nous allons fournir le nom d'utilisateur admin. D'accord ? Et maintenant, laissez-nous exécuter les méthodes. Je vais donc dire admin point Login brackets. Et exécutons également la deuxième méthode, qui sera admin point, Access underscore logs. Et c'est ici. Voyons maintenant si cela fonctionnera réellement. Fuyons. Et oh, j'ai un autre administrateur Arrow Oh, je m'excuse. Ce devrait être l'administrateur ici. Je me suis laissé emporter. Admin est égal à admin, puis ils utilisent le nom admin. Je m'excuse. Alors laissez-moi exécuter le programme une fois de plus. Et voilà, d'accord, donc l'administrateur s'est connecté, et maintenant l'administrateur accède aux journaux, et c'est tout. Nous n'avons donc pas eu à spécifier que l'utilisateur administrateur, l'administrateur de classe, aura le nom d'utilisateur du paramètre ou de l' attribut ou la méthode de connexion. Tout ce que nous avions à faire était d' indiquer à Python que ce nouvel administrateur de classe hérite en fait attributs et des méthodes de la classe utilisateur d'origine Et c'est un héritage pour toi. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 68. Polymorphisme: Un autre concept de l'OOP est le concept de polymorphisme, qui se traduit essentiellement par même action, mais Le problème avec le polymorphisme, c' est qu'il va permettre aux classes d'avoir des méthodes portant exactement le même nom, mais de se comporter différemment Ainsi, à titre d'exemple, toujours en ce qui concerne la classe d'utilisateurs, nous pouvons avoir différents types d'utilisateurs qui se connectent aux deux d'une manière différente. Donc, à titre d'exemple, prenons des règles différentes. Je vais donc créer une classe pour l'utilisateur normal, puis une classe pour l'utilisateur administrateur, puis ils auront des moyens uniques de se connecter. Alors regarde ça d'accord. Je vais venir ici tout de suite et créer une classe d'utilisateur régulier. OK. Et maintenant, je vais définir très simplement la méthode, connecter et me connecter, d'accord ? Notez que je n'ai transmis aucun attribut. Je passe directement à la méthode, d'accord ? Donc, ce que je vais faire maintenant, c'est simplement dire imprimer maintenant. Je dirais simplement que l'utilisateur normal s'est connecté. OK ? Maintenant, regardez ceci, je vais créer une autre classe, et appelons-la l'utilisateur admin. OK, appelez, et maintenant encore une fois, définissez et maintenant exactement la même méthode, connectez-vous vous-même. Mais maintenant, ce sera un message d' impression différent, car maintenant je vais dire que l'administrateur s'est connecté. Et permettez-moi de fermer ceci, et le tour est joué. Maintenant, pour ce qui est du polymorphisme proprement dit, je vais m'en servir, assignons un utilisateur égal à un utilisateur normal Créons nos premiers objets ici pour l'utilisateur normal. Créons également un objet pour l'utilisateur administrateur, et bien sûr, je l'appellerai admin égal à admin user, et c'est le cas. Nous avons donc créé des objets pour l'utilisateur normal et l'utilisateur administrateur. Appelons-les maintenant. Je vais donc dire «   user dot login ». Des crochets, et maintenant aussi un point d'administration Log N. Et voilà. Alors maintenant, essayons d'exécuter le programme, et voilà, l'utilisateur normal s'est connecté, administrateur s'est connecté. C'est donc le concept de polymorphisme où vous pouvez avoir deux classes différentes Avec exactement la même méthode, mais cette méthode agira différemment, selon l'objet ou l'objet de classe qui appelle cette méthode. La méthode utilisée ici est évidemment la méthode de connexion. Cela s'applique à la fois à l'utilisateur normal la classe et à l'utilisateur administrateur de classe, mais il se comportera différemment car il imprimera un message différent en fonction l'objet de classe réellement connecté. C'est donc du polymorphisme pour vous. Même action, comportement différent. Merci d'avoir regardé la vidéo. Je te verrai au prochain cours. 69. Aperçu du projet final: Bienvenue dans le projet final, notre dernier projet Python. Et ensemble, nous allons créer un système d' enregistrement des utilisateurs très puissant. Maintenant, nous avons déjà construit quelque chose de similaire, mais cela va être beaucoup plus amélioré. Maintenant, j'ai caché le code. Je ne veux pas que tu voies le code pour l'instant. Donc, ce que je vais faire, c'est lancer le programme pour que vous puissiez voir de quoi il s'agit. Nous avons donc le système d' enregistrement des utilisateurs, trois options principales : s'inscrire, se connecter ou quitter. Je vais donc essayer de m' inscrire et je vais entrer un nom d'utilisateur Allons-y avec Alex, d'accord ? Et je vais vérifier ça, d'accord ? Je vais utiliser un mot de passe assez puissant. Mais maintenant, regardez ça, d'accord ? Cela indique que le mot de passe n'est pas assez fort. Le mot de passe doit comporter au moins huit caractères. Nous avons donc un outil de vérification des mots de passe. Mais regarde ça, d'accord. Je vais y retourner pour m' inscrire, d'accord ? Laisse-moi venir ici, appuyer sur le bouton 1. Entrez un autre nom d'utilisateur cette fois. Laisse-moi partir avec Boris, d'accord ? Et maintenant, regardez ça. OK, je vais opter pour le Bis 123. Boris. C'est donc assez long. Cela représente plus de huit personnages. J'appuie sur Entrée. Mais alors il dit mot de passe, il n'est pas assez fort. Le mot de passe doit inclure au moins un symbole spécial. Notre outil de vérification des mots de passe va donc vérifier quatre critères principaux Il va s'assurer que le mot de passe comporte au moins huit caractères, une lettre majuscule, un chiffre et un symbole spécial, d'accord ? Je vais donc essayer de m'inscrire à nouveau, d'accord ? Cette fois, je vais utiliser le nom d'utilisateur Alice. Et maintenant, allons-y avec un vrai mot de passe. Je vais choisir Alice un, deux, trois avec le symbole d'ajout. Et voilà, il est écrit «  L'utilisateur a réussi », et maintenant je vais essayer de me connecter. D'accord ? Jette un œil à ça. Tu vas adorer ça, je vais me connecter en tant qu'Alice. D'accord ? Et maintenant, mot de passe , Alice, un, deux, trois, avec le symbole d'ajout. Et maintenant, la connexion a réussi, mais jetez un œil à ceci. Nous avons un menu de post-connexion. Nos utilisateurs connectés pourront donc accéder à un menu de connexion où ils pourront consulter leurs journaux ou simplement se déconnecter. Alors maintenant, en tant qu'Alice, si je voulais voir mes journaux, j'appuie sur un, et c'est parti. Il indique pour le moment que les journaux de l'utilisateur Alice. Alice s' est enregistrée avec succès à cette date, puis Alice s'est également connectée avec succès. Nous allons donc mettre en œuvre essentiellement un système d'audit qui gardera une trace de chaque utilisateur et de chaque activité du système. Regardez également ceci, nous allons avoir le fichier TXT des utilisateurs qui stockera tous les noms d'utilisateur et leurs mots de passe correspondants, mais jetez un œil à ceci. Les mots de passe vont être hachés. Ils ne seront pas en texte brut. Nous allons implémenter une fonction de hachage pour hacher les de passe pour des raisons de sécurité Vous pouvez donc voir ici que nous allons également implémenter un certain hachage, mais ce n'est pas le cas. Nous allons également créer un fichier journal d'audit qui gardera une trace de tous les journaux du système Vous pouvez donc voir dès maintenant le champ d'inscription pour Alex, champ d'enregistrement pour Boris, Ale s'est enregistré avec succès, puis Ale s'est également connecté avec succès. Il s'agira donc d'un système d'enregistrement avancé complet avec un outil de vérification de mot de passe, et il comportera également un hachage de tous les mots de passe ainsi qu'une fonction Alors voilà le truc, d'accord ? Je vais vous fournir un document texte contenant quelques conseils et astuces utiles si vous voulez essayer d' écrire ce programme vous-même, d'accord ? Donc, en annexe à cette vidéo, je vais vous fournir un fichier texte avec tous les conseils et astuces utiles. Je vais vous expliquer le processus de réflexion général. Et si vous choisissez de ne pas le faire, si vous voulez simplement travailler avec moi, j'ai divisé l'ensemble du projet en huit mini-projets. Je vais donc le décomposer étape par étape. Nous allons ajouter les fonctionnalités une par une, une par une, une par une. Et j'espère que la façon dont j'ai abordé la décomposition de ce projet vous permettra de le comprendre plus facilement et de le suivre. Donc, comme d'habitude, si vous avez des questions, si vous essayez de créer le programme vous-même et que vous êtes coincé quelque part, vous pouvez toujours me contacter, et j'essaierai vous aider et de vous aider de toutes les manières possibles. Je suis donc très heureux de travailler avec vous à la création de ce système d'enregistrement des utilisateurs. Sans perdre plus de temps, commençons. 70. Partie 1 : créer l'interface utilisateur: OK, alors commençons. Et la première chose que nous allons faire est de créer l'interface utilisateur qui permettra à l'utilisateur de choisir entre les options d'enregistrement, de connexion et de sortie, d'accord ? Appelons donc cette fonction la fonction principale. Je vais donc dire définir les crochets principaux, deux points. Et maintenant, disons que c'est vrai. OK, donc tant que le programme est en cours d'exécution, affichons les options du menu. Je vais donc dire, tout d' abord, les impressions, et nous pouvons dire, tout d'abord, laissez-moi ajouter mes codes ici. Je vais donc dire l'option numéro un, le registre des points. OK. Fermons la colonne. Et puis imprimons l'option numéro deux, au point, Connectez-vous. Et puis, option numéro trois, très, très ennuyeuse, il suffit de sortir. OK ? C'est bon. En fait, vous savez, imprimons une autre déclaration tout en haut, peu comme un message de bienvenue. Alors, imprimons, disons bienvenue dans le système d'enregistrement des utilisateurs. OK. Et voilà. Très bien, nous avons donc toutes les options définies. Maintenant, demandons à l'utilisateur de nous fournir une option. Quelle option particulière voudront-ils choisir ? Je vais appeler la variable choice pour stocker l'option particulière. Je vais donc faire part de vos contributions, puis laissez-nous vous dire ce que vous aimeriez faire ? OK. Et voilà. C'est bon. Ainsi, une fois que l'utilisateur a fourni son option, nous devons créer des scénarios affectés à chacun d'entre eux. Je vais donc commencer par la toute première option et dire que notre choix correspond à l' option numéro un, nous allons imprimer, disons, l' enregistrement des inscriptions. Sélectionné. OK. Maintenant, évidemment, rien d'autre ne va se passer pour le moment. Nous ajouterons la fonctionnalité réelle ultérieurement. Mais passons à l'option suivante. Je vais donc dire LIF, le choix est égal, puis l'option numéro deux Ajoutons deux points. Alors, que va-t-il se passer ici ? Nous pouvons dire imprimer, puis nous pouvons dire se connecter en sélectionnant OK. Ajoutons maintenant l' option numéro trois, choix AF est égal à l'option numéro trois et à deux points. Nous pouvons simplement dire imprimer et quitter le système. OK ? Et je pense que ça devrait aller. N'oubliez donc pas qu'il sera également nécessaire d'ajouter l'instruction break au cas où l'utilisateur déciderait de choisir une option qui n'existe pas. Je vais donc entrer et dire break et maintenant break, saisir autre chose dans notre colonne, et maintenant nous pouvons imprimer. Supposons que le choix ne soit pas valide, veuillez réessayer. OK, j'aime bien ça. Choix non valide, veuillez réessayer. Et voilà. OK, alors allons-y dès maintenant pour exécuter le programme. Je vais donc dire « main » et maintenant « crochets », et voyons ce qui va se passer. Allons-y et lançons le programme. Et puis vous vous dites : OK, essayons l'option numéro un. OK ? Enregistrer sélectionné. Option numéro deux, connexion sélectionnée, option numéro trois. Quitter le système. OK, jusqu'ici bien, nous avons ajouté le premier élément de notre programme. Nous avons ajouté l'interface utilisateur. la prochaine vidéo, nous allons donc commencer à aborder chaque option à la fois, commençant par la fonction d'enregistrement. 71. Partie 2 ajouter la fonction d'enregistrement de l'utilisateur: Reviens. Passons maintenant à la première fonction principale du programme qui permettrait l'utilisateur de s'inscrire. D'accord ? Allons donc jusqu' en haut, poussons la fonction de l'interface utilisateur jusqu'en bas, et revenons ici. En fait, je vais juste ajouter une note et dire fonction d'enregistrement. OK. OK, alors comment appelle-t-on cette fonction ? Disons enregistrer un utilisateur de soulignement, non ? Enregistrer un utilisateur, crochets. Ajoutons deux points OK, nous voulons donc accepter le nom d'utilisateur et le mot de passe de l'utilisateur. Invitons-les donc à le faire. C'est bon. Je vais donc dire que le nom d'utilisateur est égal et maintenant entre crochets, disons, un nom d'utilisateur. Colon. OK. Ensuite, demandons-leur également le mot de passe. Donc, le mot de passe est égal, entrez, puis entre crochets, entrez un mot de passe, deux points, et le tour est joué. Très bien, donc pour le moment, une fois que l'utilisateur a fourni le nom d'utilisateur et le mot de passe, nous aimerions les stocker dans un fichier. Nous pouvons appeler le fichier users point TXT par exemple, d'accord ? Donc, ce que nous allons faire, c'est dire avec et maintenant ouvrir. OK ? N'oubliez pas que nous avons besoin de cette fonction pour créer notre fichier. Ajoutons maintenant le nom du fichier. Je vais l'appeler users point TXT. Et maintenant, activons le mode ajout. Donc je vais dire A. D'accord. Et puis en tant que fichier ? Colon. C'est bon. Maintenant, nous pouvons utiliser les bonnes fonctions. Je dirais le point du fichier à droite. Et maintenant, entre crochets, nous pouvons utiliser notre chaîne F, puis ajouter des accolades sympas, le nom d'utilisateur Fermons cela, puis nous pouvons également ajouter deux points pour séparer le mot de passe du nom d'utilisateur. Cole se reporte donc, puis nous pouvons ajouter notre mot de passe Ensuite, pour faire bonne mesure, nous pouvons faire la barre oblique inverse puis N pour que les informations de chaque utilisateur soient stockées sur une ligne séparée Chaque identifiant d'utilisateur sera stocké sur une ligne séparée, et voilà OK, tout ce que nous avons à faire pour le moment, c'est imprimer un message simple qui dira quelque chose comme imprimer, puis nous pourrons dire que l' enregistrement de l'utilisateur a réussi. OK. Et voilà. D'accord, alors comment intégrer maintenant notre fonction d'enregistrement à la fonction principale elle-même ? Ce que nous allons faire maintenant, c'est aller jusqu'au bout et dire : si le choix est égal à un, alors nous pouvons le supprimer. OK, nous n'avons plus besoin de cette déclaration imprimée. Et nous allons simplement appeler la fonction. Et la fonction que nous avons créée ici était celle de register underscore user Ici, je vais simplement dire «  enregistrer un utilisateur d'Underscore », puis entre crochets Et puis voilà. J'espère donc que cela devrait fonctionner. Allons-y dès maintenant et testons-le. Je vais donc lancer le programme. OK ? Premièrement, nous voulons nous inscrire, appuyez sur Entrée. Entrez, nom d'utilisateur. Je vais y aller avec Alex. Mot de passe. Je vais juste repartir avec Alex, d'accord ? Juste pour un test. Entrez et OK. L'enregistrement de l'utilisateur a été réussi, et nous avons le fichier texte des utilisateurs à points ici Et si je l'ouvre, génial, vous pouvez le voir, dit Alex Alex. C'est tellement fantastique. Vous pouvez voir en ce moment que cela fonctionne vraiment bien jusqu'à présent. Rejoignez-moi dans la leçon suivante où nous allons maintenant créer la fonction qui permettra à nos utilisateurs de se connecter. 72. Partie 3 ajouter la fonction de connexion: Eh bien, revenez. Alors maintenant, ajoutons la fonction permettant à nos utilisateurs de se connecter. Je vais donc dire « define », et allons-y avec le login le score sera le nom d'utilisateur. Ajoutons une colonne. En fait, ajoutons une note, d'accord ? Et nous pouvons simplement dire fonction de connexion. Et voilà. D'accord. Ainsi, pour que l'utilisateur puisse se connecter, il aura besoin du nom d'utilisateur et du mot de passe. Commençons donc par dire que le nom d'utilisateur est égal à, puis entrez entre crochets, les codes entrent votre nom d'utilisateur. Colon. OK. Ensuite, nous pouvons également ajouter le mot de passe égal à la saisie, entre crochets, entrer votre mot de passe, et le tour est joué. D'accord. Maintenant, afin vérifier que le nom d'utilisateur et le mot de passe existent, nous allons devoir ouvrir le fichier TXT à points de nos utilisateurs. Je vais donc dire avec open, et maintenant entre crochets, quel est le nom du fichier ? C'est le point TXT des utilisateurs. Et puis quel est le mode que nous allons utiliser ? Nous optons pour le mode lecture. Parce que nous voulons lire dans le fichier, et je vais dire en tant que fichier, deux points. Et maintenant, créons une variable appelée users qui accepterait la fonction file point red lines. Parce que n'oubliez pas que nous allons devoir lire ligne par ligne les informations de chaque utilisateur dans le texte à points du fichier. Je dirais donc que les utilisateurs sont égaux aux lignes de lecture des points du fichier, et maintenant aux crochets, et le tour est joué. Nous devons maintenant vérifier si les informations d'identification de l'entité correspondent à un enregistrement stocké. Alors, qu'allons-nous faire ? Nous allons créer une boucle à quatre boucles. Je vais donc dire quatre. Utilisons la variable user dans users. OK ? Alors maintenant, que voulons-nous vérifier ? Nous voulons vérifier le nom d'utilisateur puis le mot de passe. Nous pouvons donc créer deux variables ici. Nous pouvons utiliser le OK stocké, stocké sur la partition, le nom d'utilisateur, puis la virgule, nous pouvons également utiliser le mot de passe stocké sur la partition Let crée deux variables pour représenter le nom d'utilisateur enregistré , puis le mot de passe enregistré. Et maintenant, comment vérifier ? Tout d'abord, vérifier si le nom d'utilisateur est correct, puis aussi le mot de passe. Mais maintenant, regardez ça, d'accord ? Les utilisateurs pointent le textifle tel quel. Nous avons Alex , puis le point deux-points ALC. Nous devons donc trouver un moyen séparer le nom d'utilisateur du mot de passe, et nous savons que c'est le symbole deux-points qui les sépare, d'accord ? Nous pouvons donc utiliser la fonction split pour séparer le nom d'utilisateur et le mot de passe. Mais nous pouvons également utiliser la fonction strip. N'oubliez pas la fonction strip. Nous l'utilisons pour supprimer les caractères blancs ou les espaces vides, des choses comme ça. OK ? Alors revenons ici. Donc, ce que nous allons faire maintenant c'est dire utilisateur, et maintenant ajoutons la fonction strip pour supprimer tout l' espace nécessaire dans le nom d'utilisateur, accord, nos crochets, et maintenant je vais ajouter la fonction split. Et par quoi séparons-nous le nom d'utilisateur et le mot de passe ? Ce sera le colon, et voilà. Nous allons donc diviser le nom d'utilisateur et le mot de passe par deux points. Donc, à partir de maintenant, nous pouvons vérifier. Nous pouvons dire si le nom d'utilisateur est le même que le nom d'utilisateur du trait de soulignement enregistré, et quel mot de passe est égal du trait de soulignement. Que voulons-nous faire ? Nous voulons imprimer et dire « Connectez-vous ». Succès et voilà. Génial, génial aussi. Et puis à partir d'ici, nous pouvons simplement revenir pour le moment, d'accord. Plus tard, nous ajouterons des fonctionnalités supplémentaires. Mais pour l'instant, revenons simplement au début du programme. Nous allons donc quitter la fonction après une connexion réussie. Et bien sûr, nous pouvons également imprimer au cas où quelque chose ne se passerait pas correctement. Nous pouvons imprimer neuf crochets. Nous pouvons simplement dire « non valide » en utilisant n ou mot de passe. Et voilà. Permettez-moi d'ajouter un peu d'espace ici, et c'est parti. OK, alors j'espère que cela devrait fonctionner. Permettez-moi de l' intégrer dans la fonction principale. Donc, ce que nous voulons faire maintenant, c'est là qu'il est indiqué le choix AF numéro deux, nous pouvons supprimer l' instruction d'impression et simplement ajouter le nom de la fonction, qui est « login » sur l' utilisateur de la partition et maintenant entre crochets, et le tour est joué. OK. Je croise les doigts. Laisse-nous exécuter le programme. Et voyons voir. Je vais directement me connecter, car nous avons déjà créé le nom d'utilisateur et le mot de passe Alex. Le nom d'utilisateur est donc Alex. Le mot de passe est Alex, et voilà. Génial, connexion réussie. Essayons de voir si nous accepterons un nom d'utilisateur différent qui n'existe pas. Je vais donc utiliser Log In, et allons-y avec Philip. Entrez le mot de passe, triez, pêchez, et c'est parti. Il indique un nom d'utilisateur ou un mot de passe invalide, donc cela fonctionne, génial, génial. Nous avons donc ajouté avec succès la fonction d'enregistrement. Nous avons également ajouté avec succès la fonction de connexion. Alors maintenant, rejoignez-moi dans la toute prochaine vidéo où nous allons faire avancer le programme en présentant le vérificateur de mots de passe qui garantira que le mot de passe créé répond à certains critères de sécurité Je te verrai alors. 73. Partie 4 ajouter l'outil Vérificateur de force du mot de passe: Eh bien, revenez. Nous devons donc maintenant implémenter l'outil de vérification des mots de passe. Jusqu'à présent, tout va bien, nos utilisateurs peuvent créer des comptes, se connecter. Mais nous voulons nous assurer que les mots de passe qu'ils ont utilisés pour créer leurs comptes sont suffisamment solides. Et nous avons une liste de critères. Nous voulons nous assurer que le mot de passe comporte au moins huit caractères. Il contient une majuscule. Il contient un chiffre et il contient également au moins un symbole spécial. Maintenant, les symboles sont ceux que j'ai écrits ici, vous pouvez le voir. Je les ai tous listés. Donc, ce que je vais faire, c'est tout en haut, d'accord, allons-y. Permettez-moi de couper ceci d' abord, je vais le couper. Nous allons donc devoir importer une bibliothèque, qui sera la bibliothèque d'expressions régulières. Donc, tout en haut, disons import puis R E. D'accord ? Permettez-moi donc d'ajouter une note indiquant Importer pour les expressions régulières. OK ? C'est bon. Alors maintenant, ajoutons une note, et je parlerai de la fonction de vérification des mots de passe OK. Je pense que c'est bon. Fonction de vérification de mot de passe. OK, alors créons le nom de la fonction. Je vais donc l'appeler define, et ensuite nous pouvons dire si le score est fort sur le score comme mot de passe. OK ? Que diriez-vous de ça ? Et maintenant, bien sûr, à l'intérieur, nous allons accepter une variable, qui sera le mot de passe lui-même. OK ? Et ajoutons deux points. Voilà. C'est bon. Commençons par ajouter les critères. Le tout premier critère ici sera la longueur du mot de passe. Nous pouvons donc dire si et maintenant la fonction len, qui représentera la longueur du mot de passe. OK ? Donc, s'il est inférieur à huit, ajoutons nos deux points. Qu'allons-nous dire ? Nous allons renvoyer faux. OK, nous allons renvoyer faux. En fait faux F, fausse virgule. Ensuite, nous pouvons fournir quelque chose comme un feedback. Dire à l'utilisateur que « Hey », votre mot de passe doit comporter au moins huit caractères. Alors faisons-le. OK. Alors remarquez maintenant deux choses qui se sont produites. Tout d'abord, nous renvoyons des faux, ce qui signifie que le mot de passe n'est pas assez fort, puis nous envoyons également un commentaire Gardez cela à l'esprit, cela va être très, très important. Passons aux critères suivants. Je vais donc venir ici et dire que si et maintenant aucune recherche RE n'est effectuée, nous voulons effectuer une recherche à l'aide du module RE Permettez-moi de m'assurer que je l'ai bien tapé , Research. Et maintenant, entre crochets, nous voulons rechercher s'il y a des lettres majuscules dans la chaîne. OK ? Nous disons donc rechercher et maintenant Roy code, des codes uniques, ajoutons nos crochets. Que recherchons-nous ? Nous recherchons de A à Z. Voici donc une méthode utilisant la bibliothèque d' expressions régulières Nous voulons rechercher dans notre mot de passe pour vérifier s'il y a une majuscule entre A et Z. Donc de A à Z, puis une virgule, puis un OK ? On peut donc renvoyer de la fausse fourrure et pourquoi fausse ? Parce que nous avons dit, sinon. Donc, si le programme recherche le mot de passe et ne trouve pas de lettre majuscule de A à Z, ce ne sera pas le cas. Nous allons donc renvoyer faux, puis nous pourrons fournir quel commentaire. Je peux donc dire que le mot de passe doit inclure au moins une lettre majuscule OK ? Et permettez-moi d'ajouter le point juste là, et voilà. OK, maintenant, pouvez-vous essayer d' écrire le code à rechercher pour voir si un chiffre de 0 à 9 se trouve dans le mot de passe OK ? Nous pouvons dire, sinon, que nous effectuons une recherche par points. OK. Ensuite, entre parenthèses R et maintenant entre codes simples, je vais ouvrir une nouvelle tranche, maintenant 0-1 à neuf Maintenant, nous cherchons le mot de passe. Nous voulons savoir si le mot de passe comporte un chiffre de 0 à 9. Et bien sûr, si ce n'est pas le cas, nous allons renvoyer faux. Ensuite, nous pouvons dire que le mot de passe doit inclure au moins un chiffre. Permettez-moi de remplacer les chiffres par des chiffres, en fait. OK. Et voilà. Nous avons donc vérifié la longueur du mot de passe. Nous avons vérifié qu' il contient une lettre majuscule. Nous avons vérifié qu' il comporte au moins un chiffre. Enfin, vérifions-le s'il possède un symbole spécial. Donc, la dernière, nous allons dire, sinon, concerne la recherche par points. Et maintenant, entre parenthèses se trouvent des codes singuliers. Et maintenant, ouvrons les crochets principaux. Et maintenant je vais coller tous les symboles spéciaux. Oh, il y en a un certain nombre, en fait, d'accord ? Je vais donc ajouter ça. Maintenant une virgule et maintenant un mot de passe. OK, ajoutez deux points. Et maintenant, si ce n'est pas le cas, je vais retourner à Falls. OK. Et puis les codes, je dirais que le mot de passe doit inclure au moins un symbole spécial. Permettez-moi de changer de caractère en symbole. Simba code, et voilà. OK, nous avons donc vérifié les quatre critères principaux. Mais que se passe-t-il si le mot de passe créé est vraiment bon ? C'est un mot de passe fort. Donc, pour cela, je vais venir ici et je vais redevenir honnête. OK ? Je vais dire vrai, et nous pouvons même imprimer quelque chose qui indique que le mot de passe est fort. Et voilà. OK. Donc, pour vous donner un bref résumé de ce que nous avons fait ici, nous avons importé la bibliothèque d' expressions régulières parce que nous voulons utiliser une méthode de fonction particulière, la fonction de recherche pour parcourir le mot de passe et vérifier des types de critères spécifiques Donc, dans un premier temps, on vérifie la longueur du mot de passe. C'est moins de huit ? S'il est inférieur à huit, renvoyez false, puis fournissez un commentaire indiquant que mot de passe doit comporter au moins huit caractères. Maintenant, nous voulons rechercher s' il y a une majuscule entre A et Z. Nous utilisons donc la méthode e point search, puis entre crochets R, les codes, puis les crochets A à Z, puis le mot de passe Ensuite, nous fournissons les commentaires, puis nous avons fait de même pour rechercher au moins un numéro, puis nous avons fait de même pour rechercher au moins un symbole spécial. Enfin, si les quatre critères sont satisfaits, nous retournerons vrai, puis nous dirons que le mot de passe est fort. Maintenant que nous avons défini les critères relatifs à la force du mot de passe, nous devons l' intégrer à la fonction d'enregistrement et nous assurer qu'avant que le compte de l'utilisateur ne soit enregistré, le mot de passe passe réellement le test. Donc, une fois que nous avons demandé à l'utilisateur de fournir nom d'utilisateur et le mot de passe, avant de commencer à ouvrir le fichier dotexti de l'utilisateur pour stocker les informations d'identification, introduisons le vérificateur de mot de passe Je peux donc créer une variable appelée is valid. Nous allons vérifier si le mot de passe est réellement valide. Ensuite, nous avons travaillé le feedback ou le message Vous pouvez modifier la variable si vous le souhaitez, mais je vais m'en tenir aux commentaires. Je vais dire que c'est valide, souligner les commentaires, et je vais les transmettre à la fonction que nous avons utilisée pour créer La portée du mot de passe est ce qui est fort, mot de passe souligné, puis le mot de passe entre crochets. OK. Nous pouvons donc maintenant dire si ce n'est pas valide, donc si ce n'est pas le cas, c'est valide. Donc, si le mot de passe qu'ils ont fourni n'est pas assez fort, nous pouvons simplement l'imprimer, puis nous pouvons dire que le mot de passe n'occupe pas trop d'espace. Le mot de passe n'est pas assez fort. OK. Et puis que pouvons-nous faire d'autre ? Nous pouvons imprimer le commentaire en disant : « Bonjour, votre mot de passe doit comporter au moins un chiffre, ou votre mot de passe doit inclure au moins une lettre en majuscule. Je peux donc venir ici, ajouter une autre déclaration imprimée et simplement transmettre le commentaire. Et voilà. Enfin et surtout, nous allons simplement y retourner et voilà. C'est ainsi que nous pouvons implémenter l'outil de vérification de mot de passe Nous avons répertorié les critères, la longueur, les chiffres, les majuscules, les symboles, et maintenant que vous avez la fonction d'enregistrement, nous avons ajouté : « OK, si le mot de passe n'est pas valide, dites qu'il n'est pas assez fort, puis fournissez également des commentaires Dans le cas contraire, il suffit de le retourner. Voyons maintenant si cela fonctionne. J'espère que cela devrait être le cas. Alors, courons. OK, je vais m'inscrire. Utilise un nom, disons, Bob. Mot de passe, je vais utiliser la majuscule LISA N six, un, deux, trois, B V. C'est Enta et génial. Cela indique que le mot de passe n'est pas assez fort. Le mot de passe doit inclure au moins un symbole spécial. OK, je vais ouvrir le textifle à points de l'utilisateur et m'assurer que Bob n'a pas été Génial Retournons en arrière. Et maintenant, essayons de créer un véritable compte réel. Appelons donc Alice. Mot de passe, P O P trois, quatre, SDR, puis le symbole d'ajout Je pense que cela devrait être suffisamment solide. Voilà. OK, super utilisateur. Est un succès. Et maintenant, si je reviens au TXT de mes utilisateurs, voilà. Nous avons maintenant Alice et son mot de passe. Alors félicitations. Nous avons amélioré notre programme, notre logiciel pour inclure désormais également un vérificateur de mots de passe Rejoignez-moi dans la toute prochaine vidéo où nous allons poursuivre et découvrir comment chiffrer nos mots de passe. Je te verrai alors. 74. Partie 5 hachage des mots de passe des utilisateurs: Eh bien, revenez. Ajoutons maintenant une fonctionnalité de sécurité supplémentaire à notre programme. Et ici, nous allons inclure le hachage. Nous allons hacher mots en utilisant le SHA deux, cinq, six, l'algorithme de hachage sécurisé avec, bien sûr, une taille de données de Pour ce faire, nous allons donc devoir importer une autre bibliothèque. Et celle-ci sera la bibliothèque de hachage. Permettez-moi simplement d'ajouter un nœud ici et j'importe également pour le hachage. Et voilà. C'est bon. Maintenant, ajoutons en haut la fonction permettant de hacher réellement le mot de passe Permettez-moi simplement d'ajouter une fonction de nœud pour hacher les mots de passe. Le nom de la fonction, je peux le définir et nous pouvons utiliser le mot de passe de hachage Maintenant, bien sûr, entre crochets, nous allons travailler avec le paramètre du mot de passe , puis j'ai renseigné ma colonne. Je vais y jeter un œil pour hacher le mot de passe, vous pouvez simplement dire return Now, le nom de la fonction elle-même dans le module hashlib, sa Maintenant, point deux, cinq, six. Maintenant, entre parenthèses, qu'est-ce qu'on est en train de hacher ? C'est le mot de passe. Maintenant, je vais utiliser la méthode appelée code, ouvrir une nouvelle paire de crochets, fermer les crochets précédents et maintenant point. Enfin, nous pouvons hex diigest d'ajouter à nouveau des crochets de fermeture, et le tour est joué et Il s'agit d'une ligne particulière que vous pouvez mémoriser. Il s'agit de la fonction qui hachera réellement mots de passe en utilisant le module hashlib Tout ce que nous avons à faire pour le moment sera très simplement de l' intégrer dans la fonction d'enregistrement proprement dite. Revenons jusqu'à la toute fin, là où le mot de passe a été utilisé avec succès, là où il est écrit «   Imprimer les commentaires », retourner » juste avant de commencer à écrire le mot de passe aux utilisateurs ou à envoyer le fichier par SMS Passons maintenant au hachage Après la déclaration écrite, je vais ajouter une petite note et nous pouvons dire hacher le C'est bon. Donc, ce que nous voulons faire maintenant, c'est très, très simplement, nous pouvons créer une variable appelée hash underscore password, puis nous pouvons transmettre le mot de passe que nous venons Je vais dire hash sur le mot de passe de la partition et maintenant, entre crochets, suffit de le dire mot de passe et le voilà Tout ce que nous avons à faire très simplement, c'est l'endroit où nous écrivons le mot de passe. Au lieu du mot de passe d'origine, nous devons maintenant écrire le mot de passe haché Ici, il est écrit « fichier » ou « F », nom d'utilisateur. Maintenant, au lieu du mot de passe, nous allons le remplacer par la variable hachée sur le mot de passe du score, et voilà nous allons le remplacer par la variable hachée sur le , nous avons ajouté le hachage avec succès Voyons si cela fonctionnera réellement. Je vais commencer tout de suite et lancer le programme. Laissez-nous nous inscrire. Je vais ajouter un nouveau nom ici. Je vais appeler celui-ci, disons, David. OK, mot de passe. Je vais utiliser un mot de passe très fort, SOD, fish, SOD, fish, puis 234 at, puis le symbole stérique, et voilà SOD, fish, SOD, fish, puis 234 at, puis symbole stérique, et Maintenant, ouvrons les utilisateurs de textifle et de C and wonderful. Voilà. Voici la version hachée du mot de passe de David, qui est SOT fish, 234 at et le symbole des astérisques. C'est tellement merveilleux que nous avons ajouté le hachage à notre programme. Cela devient de plus en plus avancé, et passez maintenant à la leçon suivante où nous allons ajouter notre audit à la fonctionnalité CU. Je voulais donc juste vous faire une mise à jour rapide. Oui, nous venons d'ajouter la fonction de hachage. Cependant, lorsque nous le testerons, vous remarquerez peut-être qu' il ne fonctionne pas. Donc, si je devais aller ici tout de suite et que je voulais enregistrer un nouvel utilisateur et que je disais, appelons le nouvel utilisateur Victor, n'est-ce pas ? Victor. Ensuite, j'ai ajouté un mot de passe , Victor 123, puis VC, puis le symbole publicitaire, et j'appuie sur Entrée. Cela indique que l' enregistrement de l'utilisateur a réussi. Cependant, si j'essaie de me reconnecter en tant que Victor, j'ai le nom d'utilisateur. Et maintenant, si je tape le mot de passe, Victor 123, Vc, vous verrez tout de suite qu'il indique un nom d'utilisateur ou un mot de passe invalide. Donc, pour une raison ou une autre, la fonction de connexion n'est pas en mesure de détecter que le nom d'utilisateur correspond au mot de passe. Et c'est l'une des raisons pour lesquelles vous voulez vraiment tester votre code chaque fois que vous ajoutez de nouvelles fonctionnalités. Je me suis donc rendu compte qu' ici, à la ligne 60, où il est écrit, où se trouve la fonction de connexion, il est dit que si le nom d'utilisateur est égal au nom d'utilisateur enregistré et le mot de passe est égal au mot de passe enregistré, alors nous pouvons permettre à l'utilisateur de se connecter avec succès. Vous pouvez voir pour l'instant que cela ne fonctionnera pas car, tel que le code est écrit en ce moment, il compare le mot de passe au format texte brut et non à la version cryptée ou à la version hachée C'est pourquoi nous avons ce problème. Nous sommes donc censés entrer tout de suite et dire, taper un nom et maintenant nous soulignons le mot de passe par hachage Et maintenant, entre crochets, le mot de passe. Donc, ici, nous disons maintenant au programme et à Python que, hé, comparez le mot de passe haché de l'utilisateur et non la version simple Cela devrait donc fonctionner dès maintenant. Si je devais revenir en arrière et créer un nouveau compte pour l'utilisateur. En fait, arrêtons le programme, d'accord ? Et je vais tout recommencer à zéro. Alors maintenant, permettez-moi d' enregistrer un nouvel utilisateur, appeler l'utilisateur Mac puis Mac un, deux, trois sur Mac pour le mot de passe. Et maintenant, essayons de nous connecter à nouveau en tant que Mac. Je vais donc dire Mac. Et maintenant Mac un, deux, trois sur Mac. Et maintenant, vous pouvez voir que la connexion a été réussie. C'est donc, encore une fois, un rappel que chaque fois que vous ajoutez de nouvelles fonctions et de nouvelles lignes de code, vous devez tester avant de commencer à ajouter de plus en plus de lignes de code à votre programme. Alors, veuillez mettre à jour la ligne où il est écrit : Si vous utilisez le nom d' utilisateur et le mot de passe de démarrage de Nemicol, vous devez vous assurer que c'est la version hachée du mot de passe que nous Merci de votre attention, et bien sûr, je vous verrai au prochain cours. 75. Partie 6 : ajouter l'outil d'audit: Bon retour. Nous allons donc maintenant ajouter une fonctionnalité vraiment intéressante, qui sera l'outil d'audit qui nous permettra de suivre toutes les activités de notre système, qu'il s'agisse des utilisateurs, de la connexion, de la création de comptes, etc. Alors allons-y et faisons-le. Et pour que cela se produise, nous devons importer une bibliothèque et un module spéciaux, qui seront la date et l'heure. vais donc venir ici et je dirais depuis la bibliothèque de jour. Importons le module diurne. D'accord ? Et je peux ajouter une note ici qui indique la saisie de la date et de l'heure. D'accord. Maintenant, créons notre fonction, et où pouvons-nous la placer ? Tu sais quoi ? Plaçons la fonction juste avant la fonction d'enregistrement, d'accord ? Je vais donc aller jusqu' ici, ajouter la note, et nous pouvons appeler celle-ci la fonction permettant de consigner les activités des utilisateurs. Loi sur les activités. Je ne l'ai pas correctement orthographié, Activts. D'accord. D'accord, je vais appeler cette fonction définie, puis enregistrer l'événement de soulignement Ce sera le nom de la fonction. Et puis le paramètre sera bien sûr event. D'accord. Ajoutez deux points, et très bien. C'est donc là que la magie va opérer. Transmettons la date et l' heure réelles dans une variable appelée horodatage. D'accord ? Je vais dire que l' horodatage est égal à. Nous allons maintenant utiliser une fonction du module de jour. Cette fonction s'appelle désormais datetime point. D'accord ? C'est donc la fonction qui récupérera la date et l'heure réelles, d'accord ? Mais maintenant je vais ajouter une méthode ici point STR FT. Cette méthode est celle que nous allons utiliser pour formater réellement la date et l'heure. Donc, que nous voulions afficher l'année, le mois, le jour ou peut-être simplement le jour du mois. Et puis l'heure, peut-être voulons-nous afficher l'heure, la minute, la seconde, des choses comme ça. Nous allons donc utiliser cette méthode, la méthode STR FT. Et maintenant, entre crochets, nous devons indiquer comment nous voulons que la date et l' heure soient formatées. Donc, à l'intérieur, je vais ajouter mes manteaux. Alors faisons-le comme ça, d'accord. Nous allons afficher l'année, le mois, le jour. Ce sera pour la date. Ensuite, pour l' heure, nous allons simplement afficher l'heure, la minute, puis la seconde. Que diriez-vous de ça ? D'accord ? Ça a l'air bien. Pour ce faire, je vais utiliser le symbole du pourcentage, et maintenant Y. Cela représentera l'année, puis nous pouvons ajouter moins puis pourcentage, puis M pour le mois, puis encore moins, pourcentage pour quoi pour le jour qui sera D. D'accord ? Et maintenant un espace, et maintenant pour le temps lui-même, je vais recommencer, pourcentage, H pour l'heure, d'accord ? Et maintenant, au lieu du signe négatif, nous pouvons utiliser les deux points parce que je pense qu'il est préférable d'utiliser des deux-points chaque fois que vous avez affaire au temps réel, à mon avis. Nous pouvons utiliser deux points, puis pendant la minute, puis à nouveau deux points, puis un pourcentage ou un S, et le tour est joué. Il s'agit du format, de votre jour du mois, puis de l'heure, de la minute et de la seconde, et je pense que cela devrait convenir. Maintenant, nous devons commencer à nous connecter à toutes ces activités. OK, donc ce que nous allons faire , c'est pour la fonction d'enregistrement, fois que l'utilisateur s'est inscrit, nous devons enregistrer l'événement, d'accord ? Maintenant, nous devons venir ici et dire «  ouvert », car nous voulons créer un véritable fichier texte qui représentera le journal d'audit. Je vais donc dire « ouvert ». Et puis, entre parenthèses, nous appellerons l'audit des fichiers. Sur le journal des scores. Soulignez le point log TXT. Ce sera donc le nom du fichier journal. Et ensuite, que voulons-nous faire ? Nous voulons l'ajouter, d'accord ? Je vais donc mettre le mode A, et ensuite comme quoi ? Ouvrez une session dans le fichier de partition, puis ajoutez deux points. Et ensuite, que voulons-nous faire ? Nous voulons écrire dans le fichier journal. Je vais dire « Connectez-vous au fichier de partition ». Point droit. Et maintenant, entre crochets, nous pouvons utiliser notre chaîne F, puis nous pouvons simplement ajouter deux points, puis j'ajouterai mon crochet, mes accolades, horodatage, puis l'événement, et ça Voilà. Nous allons donc créer un fichier appelé Audit Log point TXT. Et lorsque nous écrivons dans le fichier, nous allons écrire un horodatage Et puis aussi l'événement. Peut-être que l'utilisateur a créé un compte le 6 janvier 2024 à 17 h 30. Et 14 secondes, quelque chose comme ça, vous savez, c'est exactement ce que nous avons fait ici Génial, génial, génial. Nous devons donc maintenant nous assurer que chaque activité est effectivement enregistrée. Donc, ici en bas, la première activité sera l' inscription, n'est-ce pas ? Alors, vérifions-le. En fait, tu sais quoi ? Nous pouvons même nous connecter lorsque le mot de passe n'était pas assez fort. Que diriez-vous de ça ? D'accord ? Nous pouvons également l'enregistrer. Donc, juste ici où il est écrit les commentaires d'impression, je peux simplement venir ici tout de suite, ajouter une nouvelle ligne et dire «   log underscore event Et maintenant, entre crochets, nous pouvons simplement indiquer le champ d'enregistrement pour le nom d'utilisateur. D'accord. J'aime bien ça. Qu'est-ce que tu en penses ? Je pense que c'est bon. Champ d'enregistrement pour le nom d'utilisateur. L'enregistrement n'a donc pas réussi car le mot de passe n'était pas assez fort. J'aime bien ça. Nous sommes donc verrouillés là-bas. Alors maintenant, enregistrons l' événement dans un scénario où l'enregistrement a été effectivement réussi. Et c'est où ? Nous l'avons à la ligne 56 qui indique que l' enregistrement de l'utilisateur a été réussi. Donc, juste en dessous, nous pouvons maintenant ajouter notre événement log underscore Et maintenant, entre parenthèses, nous pouvons simplement dire F, puis enfilons des manteaux , puis, dans nos bretelles, nous pouvons dire utiliser un nom D'accord. Ensuite, utilisez un nom enregistré avec succès. Que diriez-vous de ça ? Et voilà. D'accord. Maintenant, de quoi d'autre avons-nous besoin pour nous connecter ? Nous devons nous connecter lorsque les utilisateurs se sont également connectés. Et nous l'avons ici sous la fonction de connexion où il est indiqué que la connexion est réussie. Ici, je vais créer une nouvelle ligne, et maintenant nous pouvons enregistrer l'événement, donc enregistrer l'événement de soulignement Et puis entre parenthèses, nous pouvons dire F, ficelle, puis ajouter nos manteaux, nos colli bretelles Alors, utilise un nom, d'accord ? Eh bien, laissez-moi mettre un peu d'espace ici. Utilisez un nom connecté avec succès. Et voilà. Y a-t-il autre chose que nous devons enregistrer ? D'accord, s'il est indiqué que le nom d'utilisateur ou le mot de passe n'est pas valide, nous pouvons également enregistrer cet événement ici. Nous enregistrons donc tout, tout, d'accord ? Enregistrez donc l'événement F, puis nous pouvons ajouter nos codes, puis nous pouvons dire que la tentative de connexion a échoué pour l'utilisateur, puis avec le nom d'utilisateur et le tour est joué. D'accord. Cela me plaît jusqu'à présent. Y a-t-il autre chose que nous devons enregistrer ? Nous pouvons également nous connecter à la troisième option. Lorsque l'utilisateur quitte réellement le système, ce n'est pas nécessaire, mais vous savez, nous pouvons aussi bien le faire Donc, là où il est écrit imprimer, quitter le système, nous pouvons également l'enregistrer En fait, permettez-moi de le faire avant la déclaration imprimée. Option numéro trois, enregistrons simplement l'événement de soulignement. Ensuite, nous pouvons simplement dire quelque chose comme quitter le système. D'accord. Et voilà. OK, je pense que ça devrait fonctionner. Cela devrait fonctionner. Et je vais commencer tout de suite et lancer le programme, d' accord, voyons voir. Je vais créer un nouveau compte, donc je vais utiliser le numéro un, appuyer sur Entrée. Ajoutons un nom d'utilisateur. Je vais donc y aller avec Tracy. D'accord ? Et le mot de passe, Tracy 21, OP, hashtag Et voilà. OK, génial. Cela a donc été un succès. Tout d'abord, assurons-nous que sous le code D TXT de l'utilisateur, nous avons Tracy. C'est le mot de passe de hachage. Et maintenant, l' autre Dc TXT, et voilà. Génial, génial. Génial Tracy, s'est inscrite avec succès. Et, bien sûr, vous pouvez voir le format ici, 2024, le 10 novembre à 9h01 08 Nous avons donc également ajouté avec succès la fonctionnalité de journalisation. Merci beaucoup d'avoir regardé la vidéo. Je te verrai au prochain cours. 76. Partie 7 ajouter la fonction de journaux de vue: Reviens. Ajoutons donc une fonctionnalité supplémentaire. Et cette fois, ce sera une fonctionnalité pour nos utilisateurs connectés. Nous voulons qu'ils puissent consulter leurs propres journaux personnels. Cela va donc se faire en deux étapes. abord, nous devrons créer une fonction qui leur permettrait de consulter leurs journaux. Ensuite, nous devrons créer un menu de post-connexion. Ainsi, nos utilisateurs connectés auront un menu séparé dans lequel ils auront la possibilité de consulter le journal. Cela va donc être en deux parties. Tout d'abord, créons la fonction leur permettant de consulter le journal. Je vais donc le faire juste en dessous de la fonction de connexion principale. Permettez-moi donc d'ajouter une note ici qui dit fonction, désolé, fonction pour afficher les journaux. D'accord ? Je vais appeler cette fonction afficher sous les journaux d'appels Et bien sûr, nous allons transmettre le paramètre nom d'utilisateur. OK, ajoutez mes deux points. Très bien, alors commençons imprimer un message général disant quelque chose comme, vous savez, les journaux de l'utilisateur, puis, vous savez, l'utilisateur en question Je vais donc dire imprimer. D'accord ? Et ensuite, nous aurons une chaîne F, puis des codes. Et puis laissez-moi ajouter ma barre oblique arrière N, puis nous pouvons dire logs, quatre Utilisateur, puis nous avons nos accolades, puis nous pouvons avoir le nom d'utilisateur OK, ce n'est pas nécessaire, mais c'est bien de l'avoir. Bien, nous allons maintenant ouvrir le journal d'audit D TextFile parce que c'est à partir de là nous allons extraire les Je vais donc dire, maintenant ouvert et maintenant entre crochets, quel est le nom du fichier ? Il s'agit d'un audit sous le nom de Log TXT. Et maintenant, bien sûr, nous voulons avoir le mode lecture. D'accord, parce que nous allons lire le fichier et nous allons indiquer qu'il s'agit du fichier Log On Score dans notre colonne. OK, nous allons maintenant parcourir les journaux et le fichier. Passons-les donc dans une variable appelée logs. Et maintenant, le fichier Log Underscore est marqué de points rouges. OK. Et voilà. OK. Maintenant, nous allons devoir créer une sorte de boucle à quatre boucles qui traversera chaque journal individuel. Et que recherchons-nous exactement  ? Nous recherchons tous les journaux qui correspondront à un nom d'utilisateur en particulier. Donc je vais venir ici tout de suite, non ? Et je vais dire que les journaux des utilisateurs, accord, les journaux de soulignement seront égaux à, et maintenant jetez un œil à ça Je vais ouvrir mes crochets ici. Je vais dire log point strip et la raison pour laquelle j'utilise la fonction strip est encore une fois que je veux supprimer tout espace blanc ou toute marge inutile dans les noms d'utilisateur, donc je vais dire log ou strip. Et maintenant, je vais dire quatre journaux de connexion. Nous recherchons donc chaque identifiant individuel dans nos journaux. Et que recherchons-nous ? Nous cherchons à savoir si le nom d'utilisateur figure dans le journal. Nous recherchons donc un nom d'utilisateur très spécifique dans nos fichiers journaux. Alors maintenant, si nous trouvons effectivement une correspondance entre le journal et le nom d'utilisateur, que devons-nous faire ? Nous allons donc dire, si journaux d'utilisateur undercool ajoutent notre colonne, et maintenant je vais dire quatre journaux d' utilisateurs Underscoe qui se connectent , que voulons-nous Nous voulons simplement imprimer. Je vais donc dire imprimer, puis enregistrer, et voilà. Et bien sûr, nous devons créer une condition. Et si aucun journal n'a été trouvé ? Nous pouvons simplement dire le contraire, et maintenant nous pouvons imprimer. Nous pouvons dire qu'aucun journal n'a été trouvé. Dans votre compte, car n'oubliez pas que c'est pour l'utilisateur qui se connecte, et voilà. Donc, juste pour vous donner un bref récapitulatif, non ? Nous avons défini la fonction comme Afficher les journaux d'appels DOS, et nous avons transmis le nom d'utilisateur. Et maintenant, nous avons imprimé un message général disant, vous savez, des journaux pour l'utilisateur. Et puis le nom d'utilisateur. Ensuite, nous avons ouvert l'autre journal, le fichier texte. Nous allons le lire sous forme de fichier journal, puis nous avons créé une variable appelée logs qui utilisera en fait la méthode read lines pour chaque fichier journal en particulier. Et maintenant, ici, nous avons créé nos quatre boucles qui vont parcourir chaque journal individuel dans les journaux et voir s'il y a une correspondance pour ce nom d'utilisateur. Maintenant, s'il y a effectivement une correspondance, nous pouvons simplement imprimer le journal pour cet utilisateur en particulier. Dans le cas contraire, nous indiquerons simplement qu' aucun journal n'a été trouvé dans leur compte. Alors voilà. Nous avons créé avec succès une fonction pour les journaux vidéo. Rejoignez-moi dans la prochaine vidéo où nous allons créer le menu de post-connexion pour nos utilisateurs connectés. 77. Partie 8 ajouter le menu de connexion de publication: Eh bien, revenez. Nous allons maintenant créer la fonction qui affichera le menu de post-connexion pour nos utilisateurs connectés avec des options. Faisons donc cela juste au-dessus de la fonction pour afficher les journaux. Donc, juste ici. Je vais dire fonction pour afficher le menu Post log in. OK. Bien, comme d'habitude, nous allons appeler celui-ci, disons, publier sur la partition. Connectez-vous dans le menu des partitions Je pense que c'est un bon nom. Et, bien sûr, à l'intérieur, nous allons passer un nom d'utilisateur périmétrique entre deux points. OK, nous allons donc créer une déclaration while. Alors que l'utilisateur est en fait connecté, imprimons maintenant les options pour lui. Donc tout d'abord, je vais imprimer, genre, un message normal. Je peux donc dire quelque chose comme login, je suis désolée, menu de post-connexion, à droite, Post, tableau de bord, menu de connexion. OK, et permettez-moi d'ajouter mon N en arrière pour que ce soit sur la nouvelle ligne OK, nous pouvons maintenant imprimer les options. Il n'y en aura que deux. OK ? L'option numéro un sera donc de simplement consulter mes journaux. N'oubliez pas que c'est personnalisé. C'est pour l'utilisateur connecté. Et puis l'option numéro deux, eh bien, se déconnecter, je suppose Et voilà. Nous allons donc devoir demander à l'utilisateur quelle option il souhaite choisir. Je vais donc dire que le choix est égal, puis la saisie, puis nous pouvons dire quelque chose comme, vous savez, que voudriez-vous faire ? Point d'interrogation. OK. Nous allons donc maintenant devoir créer les instructions IL pour chaque scénario. Je vais donc choisir le premier si le choix est égal à un, que voulons-nous faire, si nous voulons consulter les journaux et, bien sûr, ils utilisent un nom. Nous allons donc faire appel à la fonction, qui est le nom d'utilisateur des journaux, donc très, très simple. Ensuite, nous pouvons dire, si le choix est égal à deux. Et ensuite, que voulons-nous faire ici ? Eh bien, nous pouvons simplement imprimer un message indiquant que nous nous sommes déconnectés avec succès. Mais n'oubliez pas que nous voulons enregistrer chaque tâche. Nous allons donc ajouter la déclaration des événements du journal ici. Donc, enregistrez l'événement, puis nous pouvons dire quelque chose comme Fstring, puis nous pouvons dire que l'utilisateur a un collie et un code unique, nom d'utilisateur Et voilà. Et, bien sûr, n'oubliez pas que nous avons besoin l'instruction break shot au cas où l' utilisateur connecté déciderait, pour une raison ou une autre, de choisir l'option trois , quatre, cinq ou toute autre option qui n'existe pas. Nous allons donc dire break, puis sinon, nous pouvons simplement imprimer un message indiquant que le choix n'est pas valide. Veuillez réessayer. Et voilà. OK, nous avons donc créé avec succès la fonction qui affichera le menu après la connexion. Cependant, comment le lier réellement à la fonction de connexion ? Parce qu'une fois que l'utilisateur se connecte, nous voulons appeler cette fonction. Alors, que faisons-nous ? Nous allons passer à la fonction de connexion principale. Et maintenant, regardons le code. Où l'utilisateur s'est-il connecté ? Il est écrit ici, connexion réussie. Donc, là où il est indiqué que la connexion est réussie, je vais venir ici tout de suite et appeler notre fonction. Donc ici, je vais dire post underscore login, underscore menu Et, bien sûr, entre parenthèses, nous allons ajouter le nom d'utilisateur et c'est parti. Alors c'est tout. Je pense que nous avons terminé avec succès l'écriture de notre code. Nous allons maintenant le tester. Je vais exécuter le code, d'accord ? Et je vais me connecter, tout d' abord, comme en fait, tu sais quoi ? Je vais essayer autre chose, d'accord ? Je viens d'enregistrer un nouvel utilisateur. OK ? Et je vais appeler cet utilisateur Boris. OK ? Ensuite, Bois 1, 2, 3 avec le symbole publicitaire passera . OK ? Maintenant, laissez Boris se connecter. Donc Boris, puis Boris un, deux, trois, avec le symbole publicitaire. Et voilà, oui, nous pouvons voir que Bois a maintenant le menu de post-connexion, et que Bois peut voir ses journaux, mais en appuyant sur un et voilà, Logs pour les corps des utilisateurs. Les corps ont été enregistrés avec succès à 8 h 10 35. Et puis il s'est connecté avec succès à 8 h 10 45. Et si nous regardons le point TXT de nos utilisateurs, le tour est joué. Nous avons des corps avec son mot de passe de hachage. Et puis ici, nous avons l'Alex enregistré avec succès. John s'est connecté avec succès. Ce sont évidemment des tests que j'ai effectués hors écran. Mais vous pouvez voir maintenant que le programme fonctionne effectivement avec succès. Il existe quelques autres tests que nous pouvons effectuer. Nous pouvons nous en assurer si je tape l' option numéro cinq ici, d'accord ? J'en ai saisi cinq et j'ai appuyé sur Entrée, cela peut indiquer un choix non valide, veuillez réessayer. Alors laissez-moi essayer de me déconnecter maintenant et vous pouvez voir qu'il s'est effectivement déconnecté avec succès. Et si j'appuie sur trois dans le menu principal, vous pouvez voir qu'il a quitté le système et que le programme fonctionne correctement. Alors voilà. Félicitations. Nous avons créé avec succès un système d' enregistrement des utilisateurs assez avancé qui permettrait aux utilisateurs de s'inscrire. Nous avons également mis en place un vérificateur de mot de passe pour nous assurer que le mot de passe est suffisamment fort . Il comporte au moins huit caractères, une lettre majuscule Opa, un chiffre et un symbole spécial Bien entendu, nous avons également ajouté des fonctionnalités de sécurité supplémentaires pour hacher le mot de passe afin qu'il soit stocké dans un format haché Et, bien entendu, nous avons également créé un menu de post-connexion pour les utilisateurs connectés, dans lequel ils peuvent ensuite consulter leurs propres journaux personnels. Ça y est, c'était amusant. Merci beaucoup d'avoir regardé. Je te verrai au prochain cours. 78. Conclusion du projet final: Très bien, alors félicitations. Nous avons développé avec succès le système d'enregistrement des utilisateurs, et je voulais juste vous donner quelques conseils supplémentaires. Sul au cas où vous voudriez améliorer davantage le programme ou apporter quelques ajustements ici et là. Au lieu de hacher les mots de passe, par exemple, vous pouvez essayer de les chiffrer. Vous pouvez donc essayer de supprimer la fonction de hachage, puis la remplacer par la fonction de chiffrement De toute évidence, vous devrez importer la bibliothèque de cryptographie pour pouvoir le faire Et puis vous pouvez même ajouter une option supplémentaire pour l'utilisateur connecté en plus de consulter les journaux. Vous pouvez créer une fonction, une fonction mathématique simple qui peut calculer une sorte de multiplication ou d'addition. Vous pouvez demander à l'utilisateur de fournir deux ou trois nombres, il les fournit, puis la fonction peut faire une sorte de calcul, les multiplier ou les ajouter, vous savez, quelque chose de très, très basique. Vous pouvez également l'ajouter en tant qu' option supplémentaire pour l'utilisateur connecté. Il existe donc de nombreuses manières d' améliorer ou de modifier le système d'enregistrement des utilisateurs que nous venons de créer. Soyez donc créatifs, sortez des sentiers battus, cherchez des moyens d' améliorer ou de modifier le programme. Et si vous avez des idées très intéressantes, j'adorerais avoir de vos nouvelles. J'adorerais que vous partagiez également votre code, que partagiez votre code avec la communauté vous partagiez également votre code avec les autres étudiants qui suivent le cours. C'est donc à peu près tout pour le projet. J'espère que vous avez pris beaucoup de plaisir développer le système d'enregistrement des utilisateurs, et j'espère que vous avez également beaucoup appris. Merci donc d'avoir regardé. Merci d'avoir développé le système d'enregistrement des utilisateurs avec moi. Je te verrai au prochain cours. 79. Conclusion du cours: Félicitations. Vous êtes arrivé à la fin de ce cours, Python pour la cybersécurité. Et j'espère que vous avez trouvé le cours très utile, instructif, éducatif, mais aussi amusant. Et j'espère qu'à ce stade, vous avez maintenant les compétences nécessaires pour écrire des programmes avec Python. si vous avez des questions sur tout ce que nous avons abordé dans ce cours, comme d'habitude, je me ferai un plaisir de vous aider , de vous répondre et de vous aider de toutes les manières possibles. N'hésitez pas à me contacter. Et si vous avez trouvé ce cours utile, n' oubliez pas de laisser un commentaire écrit sur le cours et de faire savoir au monde entier que vous avez apprécié le cours. Alors c'est tout. Je m'appelle Alex. Cela a été un plaisir. Si vous voulez suivre un autre de mes cours de cybersécurité. J'espère que je vous verrai également suivre ces cours. Mais si c'est un adieu, permettez-moi simplement de vous souhaiter bonne chance dans votre aventure avec Python et dans votre parcours en tant que professionnel de la cybersécurité Je ne vous souhaite que du succès et encore plus de succès à l'avenir. Alors Lassa, merci beaucoup d'avoir suivi le cours pour Marlin et je te verrai la prochaine fois. Au revoir.