Transcription
1. Vidéo d'introduction: Bonjour, je suis Ardit, un développeur
et instructeur Python avec des années d'
expérience dans l'enseignement de la programmation à plus de 500 000 étudiants dans le monde entier Je suis également le fondateur et l'
auteur de pythonhow.com, un hub dédié à J'ai créé certains des cours de Python
les plus populaires en ligne,
et dans ce cours Skillshare, je vais vous aider à acquérir des compétences
Python de niveau débutant à avancé en
créant des projets concrets cours commence par
les fondamentaux, aucune
expérience préalable n'est
donc requise. Nous aborderons Python à partir de
zéro et, au fur et à mesure de notre progression, nous appliquerons ce que nous avons appris en
créant dix applications
réelles. Vous acquerrez une expérience
pratique analyse de données à l'aide de Pandas, travaillant avec des ensembles de données essentiels avec Python tels que JSO, SQL,
CSV, et même en développant des applications
Web
et des applications et Vous allez même
créer une application mobile à l' aide de la bibliothèque Kev en Python Ce sont
des applications du monde
réel avec des données réelles et de nombreuses fonctionnalités.
Vous allez acquérir une véritable
expérience pratique, prêt à appliquer ces compétences pour un poste de
programmeur par la suite. Alors, à qui s'adresse le cours ? Ce cours est parfait pour les débutants qui souhaitent apprendre
Python de A à Z, ainsi que pour les apprenants de niveau intermédiaire souhaitent créer des projets
pratiques. Aucune
expérience de codage n'est donc requise, juste un ordinateur et une
volonté d'apprendre La meilleure façon d'apprendre la
programmation est par la pratique C'est
donc exactement ce sur quoi nous nous
concentrons dans ce cours. Chaque projet que vous
construisez renforcera vos compétences et vous donnera
quelque chose de tangible à mettre en valeur. Donc, si vous êtes prêt
à apprendre Python manière engageante et pratique, commençons. Je te verrai
au premier cours.
2. 2. Introduction aux premiers pas: Bonjour, bienvenue dans une nouvelle vidéo, et ceci est une vidéo
d'introduction à
la section des fonctions et
des conditions. Vous entrez maintenant dans une section plus
avancée de Python. fonctions et les conditionnels sont
des concepts de base avancés de Python, et ce sont des
blocs très fondamentaux que vous pouvez utiliser pour rendre vos programmes plus
intelligents et plus faciles à gérer Ainsi, vous rendez vos programmes plus
intelligents en leur faisant prendre des décisions que vous pouvez mettre en œuvre via des conditionnels. Donc, si votre programme reçoit des entrées et
que
vous voulez réfléchir, vous voulez lui faire savoir si vous voulez lui faire savoir si ces entrées sont correctes ou non, et vous voulez faire
quelque chose si cette entrée est vraie et autre chose
si cette entrée est fausse. Vous prenez donc des décisions dans votre programme par le biais
d'un blocage conditionnel. Et puis vous avez les fonctions
, d'autre part, les
fonctions sont utilisées pour
encapsuler des blocs de code, donc des blocs de code similaires. Il vous aide à organiser votre code. Ainsi, une fonction, par exemple, pourrait convertir des dollars américains en euros. Cette fonction fait
donc certaines choses
et le fait bien. Il obtient donc l'USD en entrée, et il vous donne des
euros en sortie. Ainsi, à l'intérieur de la fonction, vous avez les opérations mathématiques
qui effectuent la conversion. conditions et les fonctions
sont donc deux choses que vous allez apprendre dans cette section à
travers des exemples, bien sûr. Je vous verrai donc dans
la prochaine vidéo.
3. Installer Python et l'IDE (pas de filigrane)c: Bonjour. Dans cette conférence, je vais vous
montrer comment installer Python et l'IDE de code Visual
Studio. Maintenant, si
Python est installé et si vous avez déjà un IDE, vous pouvez ignorer cette vidéo. Vous pouvez donc également utiliser d'autres IDE. Le code Visual Studio est
juste ma préférence, et je recommande d'utiliser le code
Visual Studio. Où sont donc les instructions ? Eh bien, si vous préférez les instructions
sous forme de texte, vous pouvez télécharger les PDF
à partir des ressources du cours Si vous voulez des instructions vidéo, les
vidéos sont plus longues. Donc, si vous rencontrez des problèmes
avec une version texte , vous voudrez peut-être
télécharger les vidéos par la suite. Mais les versions textuelles
devraient suffire. Et les instructions
sont destinées aux utilisateurs de Windows, Mac et Linux. Ainsi, en fonction de votre système
d'exploitation, vous pouvez
choisir de télécharger les fichiers correspondant à
votre propre système d'exploitation. Merci donc, et je vous parlerai lors
de la prochaine conférence.
4. 4. Instructions d'installation sur Windows +: Bonjour, dans cette partie, je vais
vous montrer comment installer Python sous Windows et également le
code Visual Tudo sous Windows Commençons donc par
installer Python. Il suffit de rechercher Python sur
Google, et la première page devrait être le
site officiel de Python, python.org Sur python.org, allez dans
Téléchargements et cliquez sur ce bouton Donc, actuellement, la
version actuelle est Python 3.10 0.3. Dans votre cas, cela pourrait
être Python 3.11 peut-être. Donc, peu importe ce que vous
y voyez, téléchargez-le. Une chose, si vous utilisez
Windows 7 ou une version antérieure,
cliquez sur ce lien pour consulter la liste des
téléchargements et télécharger Python 3.8 ou une version antérieure, car 3.10 ne fonctionnera pas pour Windows 7 ou une
version antérieure de Maintenant, je vais cliquer
sur Python 3.10 0.3. Ce
fichier exécutable sera téléchargé, alors vous devez installer cet exécutable. Cette fenêtre
devrait apparaître. Maintenant, si vous avez déjà
installé Python, ce bouton indiquera «
mise à niveau » au lieu de « installer ». Donc, si c'est le
cas, il suffit de procéder à une mise à niveau. Si vous n'avez pas de
Python sur votre système, vous
devez appuyer
sur Installer maintenant, mais vous devez également vérifier
cela dans Python 3.10 pour accéder au chemin Assurez-vous donc que cette case est cochée et accédez à Installer
maintenant ou à effectuer une mise à niveau. Ma configuration a réussi. Je vais
donc fermer cette
fenêtre, cliquer sur
le bouton de recherche Windows
et ouvrir l'invite de commande. Recherchez donc Command Prompt ou simplement CMD et ouvrez cette application Il s'agit maintenant d'une interface
en ligne de commande qui
vous permet d'interagir avec votre système d'exploitation
Windows. Maintenant, nous allons nous
assurer que Python a été correctement
installé. Pour cela, vous devez taper
P Y, espace moins trois. Appuyez sur Entrée, et si cela apparaît avec
ces trois flèches, cela signifie
que Python a été installé. Ce que vous voyez maintenant, c'est le shell interactif Python, également connu sous le nom de console
Python. Donc, maintenant, vous pouvez
taper du code Python. Par exemple, 3.4, appuyez sur Entrée et vous obtenez le résultat sept. C'est ce qu'on appelle un
mode de programmation interactif. Pour quitter cette option, vous pouvez appuyer sur
Quitter entre parenthèses, ouvrir et fermer les parenthèses, appuyer sur Entrée et revenir
à la ligne de commande Windows Maintenant, si nous fermons cette fenêtre, nous perdrons le code
que nous y avons écrit, nous ne l'avons
donc pas enregistré. s'agissait simplement d'une session
interactive laquelle vous saisissiez simplement au cours de
laquelle vous saisissiez simplement des codes à des fins de
test et vous ne
vouliez pas enregistrer le code. Si vous souhaitez enregistrer le code, vous avez besoin d'un IDE. C'est donc ce que nous
allons faire ensuite. Nous allons installer un IDE. Passez donc à la
recherche de code Visual Studio sur Google. Mais si vous souhaitez
utiliser un autre IDE, par
exemple Pycharm,
n'hésitez pas à l'utiliser Le code Python
que j'écrirai sur le code Visual Studio
sera le même que celui que
vous allez écrire vous-même. IDE préféré. L'IDE n'est qu'une
question de préférence. Allons-y et cliquons sur les premiers résultats.
Code Visual Studio. Ne confondez pas le
code Visual Studio avec Visual Studio. Il s'agit de deux IDE différents. Code Visual Studio, téléchargez-le pour Windows et attendez que le fichier
exécutable soit téléchargé. Ensuite, vous devez cliquer sur l'
exécutable pour l'installer. Il suffit donc de passer en revue le processus
d'installation. Suivant, suivant. Ensuite, je préfère
cocher ces options. Il vous donne la possibilité
d'ouvrir des fichiers Python sur du code
Visual Studio en cliquant
avec le bouton droit sur vos fichiers Python sur
votre Windows Exploder Cliquez ensuite sur Suivant et sur Installer. Mon installation a réussi, je vais
donc terminer, et maintenant je vais ouvrir le code
Visual Studio. Je vais donc simplement rechercher le code
Visual Studio, ou si vous utilisez uniquement VSC, c'est l'acronyme généralement utilisé pour le code
Visual Studio Vous devez donc ouvrir le code
Visual Studio. Vous y trouverez quelques notes de
publication. Si vous voulez
les lire, je vais également fermer cette fenêtre. Et c'est donc le code de
Visual Studio. L'installation du code Python et Visual Studio s'est
bien déroulée sur mon ordinateur. Le
code Python et Visual Psudio fonctionnent bien. Maintenant, dans la vidéo suivante, je vais vous montrer comment
utiliser les deux ensemble, donc comment utiliser Python
dans le code Visual Studio. Je vous le dirai dans la prochaine vidéo.
5. 5. Instructions d'installation sur Mac +: Bonjour. Dans cette vidéo, je vais vous
montrer comment installer Python et l'IDE de code Visual
Studio sur Mac. Nous allons commencer
par installer Python. Donc, si vous recherchez
Python sur Google, les premiers résultats
devraient vous diriger vers la page Web officielle de Python. Et si vous passez au téléchargement puis cliquez sur ce bouton, cela devrait télécharger la
dernière version de Python. Dans mon cas, il s'agit de 3,10 0,3. Dans votre cas, il pourrait être encore
plus récent, par exemple 3.11. Quelle que soit la version, il
suffit d'appuyer sur le bouton télécharger le package
d'installation. Cliquez ensuite sur le
fichier pour l'installer. Maintenant, si
une autre version de Python est installée
sur votre ordinateur, vous pouvez toujours installer
cette nouvelle version. Les deux versions se comporteront comme des logiciels
indépendants distincts, et vous pourrez les utiliser toutes les deux.
Je vais vous montrer comment faire. Appuyez donc sur « Continuer », «
Continuer », « Continuer ». D'accord. Installez. Mon installation de Python a réussi. Alors maintenant,
pour vérifier si
Python a vraiment été installé avec succès,
je peux ouvrir le terminal. Donc, pour cela, vous devez
utiliser Spotlight
pour rechercher Terminal ou Alfred. Si vous utilisez Alfred, ouvrez le programme du terminal, et sur le terminal, vous voulez taper Python 3.10 ou 0.11 si vous avez installé
Python 3.11 Donc, en fonction de
ce que
vous aviez ici, vous souhaitez saisir
cette version. Juste comme ça, sans espaces. Donc 3.10 dans mon cas, appuyez sur Entrée et cela
devrait apparaître. Vous voyez donc ces
trois flèches ici. Ici, vous pouvez écrire
des codes, par exemple, trois plus quatre, et vous
obtenez le résultat sept. C'est ce que l'on appelle shell interactif
Python
ou la console Python. C'est un moyen rapide d'écrire du code. Vous pouvez quitter le shell, le shell Python pour
retourner au terminal. Alors, on y va. Et maintenant,
nous sommes dans le terminal. Si vous souhaitez utiliser une autre version de Python
que vous avez installée, vous pouvez utiliser Python 3.9, par
exemple, si
Python 3.9 est installé, et cela devrait ouvrir
cette autre version de Python comme vous le voyez ici. Encore une fois, vous pouvez sortir,
retourner au terminal. Vous pouvez fermer cette fenêtre, et maintenant le code est également perdu. Nous n'avons donc enregistré le
code dans aucun fichier. Nous pouvons le faire en utilisant un IDE, et c'est ce que nous
allons faire ensuite. Nous allons télécharger et
installer le code de Visual Studio. Le code Visual Studio est un IDE. Maintenant, l'IDE est une
question de préférence. Donc, si vous avez un
identifiant favori, par exemple, vous utilisiez Pycharm auparavant, n'hésitez pas à utiliser Pycharm car le code que j'écrirai dans les
vidéos sera le même Dans mon cas, j'utiliserai le code
Visual Studio. Il suffit donc de rechercher cela sur
Google, d'
accéder aux premiers résultats, et cela devrait vous mener
au code Visual Studio. Maintenant, ne confondez pas le code Visual
Studio avec Visual Studio. Il s'agit de deux IDE différents. Le code Visual Studio est
celui que nous utilisons. Appuyez donc sur ce bouton pour télécharger code
Visual Studio et
attendez que l'installation
soit téléchargée. Cela m'a donc permis de télécharger
un fichier Zip. Le fichier zip a été extrait, et maintenant j'ai ce
fichier si je double-clique
dessus et que j'appuie sur Ouvrir. Cela ouvrira le code
Visual Studio. C'est donc le code de Visual Studio. Notez que l'application se trouve actuellement dans mon dossier de
téléchargements. Vous pouvez donc faire glisser ce fichier vers le dossier
des applications. Vous pouvez fermer cette fenêtre de code Visual
Studio, et normalement vous pouvez l'ouvrir
avec Spotlight ou, si vous utilisez Alfred vous pouvez rechercher
Visual Studio Code, et vous le verrez dans mon dossier d'
applications maintenant visualsudio code Ouvrez-le et c'est encore une fois
Visual Studio Code. Dans la vidéo suivante,
je vais vous montrer comment
utiliser Python dans le code de
Visual Studio afin créer des programmes dans des
fichiers
que nous pouvons enregistrer et réutiliser. Je vous parlerai donc
dans la prochaine vidéo.
6. 6. Instructions d'installation sur Linux +: Voici comment
installer Python et l'
IDE de code Visual Studio sur des ordinateurs Linux. Vous pouvez installer Python
sous Linux à l'aide du terminal. Recherchez donc un terminal
parmi vos programmes, ouvrez le terminal et
vous souhaitez d'abord effectuer une mise à jour de l'application
Psudo Entrez le mot de passe de votre Linux pour sudo
et appuyez sur Entrée Une fois la mise à jour terminée, vous
devez installer Python Three par
l'application sudo Et cela devrait installer
Python sur votre ordinateur. Et la dernière version de
Python disponible a été installée. C'est pourquoi j'ai reçu ce message
ici qui dit que Python 3 est déjà la nouvelle
version, donc tout va bien. Nous allons maintenant installer l'IDE de code
Visual Studio. Ouvrez donc votre navigateur, rendez-vous sur le site officiel de
Visual Studio Code, à savoir
code.visualstudio.com Sinon,
recherchez Visual Studio Code sur Google. Mais ne confondez pas le
code Visual Studio avec Visual Studio. Visual Studio et
Visual Studio code sont deux IDE différents, et celui que nous utilisons dans le cours est le code
Visual Studio. Alors, sur le site Web, accédez au téléchargement du fichier en profondeur. Attendez que le
fichier soit téléchargé, puis double-cliquez sur le fichier. Le code
Visual Studio peut également être installé sous forme
de package Snap, ce serait
donc une
alternative à son installation. Sinon, tu peux
suivre mes instructions. Entrez vos mots de passe Linux et attendez que l'
installation soit terminée. Une fois l'installation
terminée, vous pouvez
rechercher le code Visual Studio Visual Studio devrait
donc
apparaître, que vous pouvez ouvrir et
qui
devrait ressembler à ceci. C'est ainsi que l'on
installait le code Python et Visual Studio sous Linux. Dans la vidéo suivante, je vais vous
montrer comment créer votre premier programme Python dans le code
Visual Studio. Merci.
7. Création et exécution d'un programme Python (pas de filigranes): Bonjour, bon retour. Dans cette vidéo. Je vais vous montrer comment
créer un programme Python et comment exécuter ce programme Python afin que
vous puissiez obtenir le résultat. Évidemment, ce
programme sera très simple car l'
objectif ici est de
vous montrer le processus de création d'
un programme et de son exécution. Pour créer un programme en Python, vous avez besoin de deux choses. L'un est Python et l'autre
est un IDE ou un éditeur de texte. Un IDE n'est qu'un éditeur de texte
avancé. Je vais donc utiliser le code Visual
Cilia comme IDE. C'est celui-ci ici, puis je créerai
un projet ici. Un projet n'est rien d'autre
que la création d'un répertoire
vide. Tout d'abord, vous devez
accéder à votre système de fichiers, Windows Explorer ou à MacFinder et vous
assurer que le dossier est vide Le premier projet est le nom
de ce répertoire vide. Dans l'Explorateur Windows,
puis vous souhaitez revenir
au code Visual Studio. Si vous utilisez un autre IDE, le processus est
fondamentalement le même. Vous allez dans le fichier, puis
vous allez dans OpenFoldero Make
it could be written just open.
Alors cliquez dessus. Ensuite, vous voulez accéder
à ce dossier vide, double-cliquer dessus,
puis sélectionner le dossier. Un code Visual Studio ouvrira
ce dossier en tant
que
répertoire racine du projet. Vous avez cet avertissement ici, c'est bien de dire, oui,
je fais confiance aux auteurs. Vous pouvez voir maintenant
que pour le premier projet, le nom d'un dossier est également le
nom du projet. Ce que je vais faire maintenant, c'est écrire
un programme, un programme Python. Et cela consiste à créer un fichier texte dans lequel vous
écrivez le programme lui-même. Pour créer ce fichier texte, vous pouvez accéder à
nouveau à votre dossier et le créer ici, ou normalement,
nous créons ce fichier
à partir de l'IDE. Donc, si vous cliquez ici,
écrivez un nom pour le fichier, tel que M
underscore program Il n'est pas recommandé d'utiliser des espaces dans les noms
des fichiers. Veuillez donc toujours utiliser des traits de
soulignement plutôt que des espaces. Ensuite, essayons TXT
et voyons si cela fonctionnera. L'extension réelle est point PY, mais ce n'est pas obligatoire. Bien entendu, nous utiliserons le
point PY, toujours, toujours. Mais pour l'instant,
restons-en au point TXT afin que vous compreniez un
concept très crucial à propos de Python. Je vais donc appuyer sur Entrée, et ici je vais
imprimer trois plus quatre, et c'est notre programme. Ce programme produit donc simplement
la somme de trois et quatre. Comment puis-je exécuter ce programme
maintenant pour obtenir les résultats ? Eh bien, vous voyez cet élément de menu du
terminal ici, vous appuyez dessus et vous
passez au nouveau terminal, ce qui devrait ouvrir un
nouveau terminal ici. C'est donc comme la ligne de
commande dans laquelle vous interagissez avec votre ordinateur. Et maintenant, on peut écrire Py moins trois si
vous êtes sous Windows. Si vous êtes sur Mac, vous
devez écrire Python 3. Je suis donc sous Windows, donc je vais utiliser
l'espace Pi moins trois, puis mon programme de soulignement.
En fait, je peux utiliser l'onglet maintenant Si j'appuie sur l'onglet, cela complétera automatiquement
le nom du fichier. Cette partie ici n'est pas nécessaire : les points
et la barre oblique inversée Tu peux le laisser. C'est bon Mais même si vous le supprimez comme
ça, il fonctionnera toujours. Alors maintenant, si vous appuyez sur Entrée ici, nous obtenons
que nous passons
à la ligne suivante. Peut-être attendiez-vous
que le résultat apparaisse ici. Il ne s'est pas affiché car
le fichier est toujours vide. Nous n'avons pas enregistré les modifications. Donc, après avoir écrit
cette ligne de code, je n'ai rien enregistré. Donc, ce que vous voulez faire,
c'est accéder à File Save ou aux commandes, puis appuyer sur la
flèche supérieure pour obtenir la
commande précédemment exécutée et appuyer sur Entrée. Ensuite, nous obtenons la sortie sept. Comme vous pouvez le voir,
un programme Python
n'est rien d'autre qu'
un simple fichier texte que vous écrivez puis que vous exécutez à
l'aide de la commande Python. Mais il existe une meilleure
façon d'exécuter des programmes
Python au moins
sur du code Visual Studio Et c'est en
utilisant un bouton Exécuter. Actuellement, il n'y a pas de bouton
Exécuter ici car nous devons installer
une extension Python. Donc, si vous passez à cela,
l'icône entend les extensions. Et ici, si vous voulez
rechercher Python, appuyez sur Entrée. Et ce premier résultat est l'extension
que nous voulons installer. Appuyez donc sur le bouton Installer. Et cela installera
l'extension Python. Mais qu'est-ce que l'extension
Python ? Eh bien, je vous ai dit que cela affichera le
bouton Exécuter quelque part ici. Il ne l'a pas affiché car mon fichier n'a pas
d'extension PY. L'extension Python
recherche donc les fichiers PY. Donc, ce que vous voulez faire,
c'est cliquer ici avec le bouton droit de la souris, renommer en point PY Et maintenant, nous voyons ce bouton. Nous recevons également ce message indiquant que nous devons sélectionner un interpréteur
Python. Donc, pour sélectionner un interpréteur
Python, soit
vous appuyez sur
ce bouton , soit, si vous n'avez pas
cette fenêtre, vous
voulez aller sur cette icône ici, ce crochet, puis
sélectionner Interprète Ensuite, vous devez sélectionner l'interpréteur Python 3.10 0.3, que nous avons installé dans
la vidéo précédente Dans votre cas,
il s'agit peut-être d'une autre version. Donc, quel que soit l'interpréteur Python que
vous utilisez, sélectionnez-le, puis vous êtes prêt à exécuter ce programme
en utilisant ce bouton. Appuyez donc sur ce bouton. Et c'est le résultat 7 ici. Comme vous pouvez le constater, il existe deux manières d'exécuter vos programmes
Python. Soit vous utilisez la commande
Python comme nous l'avons fait avec PY moins trois, puis vous avez mentionné
le nom du fichier. Ou vous utilisez le moyen le plus simple, qui consiste à utiliser ce bouton. Mais au fur et à
mesure que vous cousez, pour pouvoir utiliser ce bouton, vous devez nommer vos fichiers
avec le point PY à la fin. Et c'est en fait
la meilleure pratique. Tout le monde nomme
ses fichiers point PY. C'est comme une convention.
Ce n'est pas une obligation, mais c'est une convention cardiaque. Et comme vous le voyez, des éléments
tels que les extensions, extensions
IDE fonctionneront également mieux si vos
fichiers sont nommés avec un point PY. L'autre avantage de l'utilisation de
ce bouton est que si vous avez plus de codes, par exemple
quatre plus neuf, vous n'avez pas à enregistrer le code. Il suffit de l'exécuter et vous obtiendrez les
résultats 7 et 13. Donc, la somme de cette ligne et
la somme de cette ligne également. Si vous souhaitez créer
un autre programme, vous devez à nouveau accéder à Fichier, ouvrir le dossier et vous
assurer que vous avez un dossier vide ou simplement en
créer un à la volée ici. Donc dossier, deuxième projet. Double-cliquez dessus pour sélectionner le dossier, cela fermera la fenêtre
actuelle du projet en cours
et ouvrira
le deuxième projet. Donc, ici encore une fois,
vous créez un fichier. Myprogram point py point PY Always, sélectionnez un interpréteur en utilisant sélectionnez un interpréteur en utilisant
ce crochet et allez-y Choisissez toujours le même
interpréteur que celui que vous avez utilisé précédemment, sauf si vous souhaitez en
sélectionner un autre. Si vous avez de nombreux interpréteurs
et que vous écrivez du code, exécutez-le et vous devriez voir le résultat ici sur
la ligne de commande Sur ce, je vous
remercie d'avoir regardé cette vidéo, et je vous parlerai
dans la prochaine.
8. Qu'est-ce que Python étonnamment (PAS DE FILIENNE): Supposons que vous vous promeniez
dans la forêt amazonienne. Dans la forêt, vous rencontrez une tribu
qui a un cuisinier. Vous voulez dire au cuisinier que vous avez faim,
vous devez donc manger. Le problème, c'est que tu ne
connais pas la langue. Donc, ce que vous voulez, vous
obtenez, c'est un interprète. C'est donc l'interprète. Vous parlez anglais
à l'interprète, et celui-ci parle
amazonis au cuisinier Et le cuisinier vous sert. Le repas. Python fonctionne de la même manière. C'est à nouveau vous,
et vous souhaitez communiquer avec le
processeur de votre ordinateur. Par exemple, vous voulez connaître
la somme de trois et quatre. Le problème, encore une fois,
est que le processeur parle un langage très difficile
appelé langage machine. Et cette langue
est très difficile à parler ou à écrire pour les
humains. Nous obtenons donc un
interpréteur appelé C Python. Alors, qu'est-ce que C Python ? C Python est le logiciel que nous avons installé dans les vidéos
précédentes. Ainsi, lorsque vous téléchargez Python depuis python.org et que vous l'installez, vous installez en
fait du Python C. C'est un interprète. Cet interpréteur obtient le langage
Python de votre part, il traduit ce
langage en langage machine, et il parle ce
langage machine au processeur. En retour, le processeur utilise l'écran de l'ordinateur, de sorte que l'
écran de
votre ordinateur portable affiche les résultats, par
exemple, sept, et
vous voyez que sept. Comme vous pouvez le constater, Python est comme l'anglais.
Ce n'est qu'une langue. Le logiciel que vous
installez et que vous utilisez pour exécuter Python
n'est qu'un logiciel écrit
en langage Seal. Il se trouve qu'il est écrit
en langage des sceaux. C'est pourquoi on l'appelle C Python, même si la plupart des gens l'
appellent simplement Python. Quand vous dites,
avez-vous installé Python ? Oui Eh bien, vous parlez
d'installer C Python. Le langage Python
lui-même n'est qu'un savoir. Il est stocké dans la documentation. Si vous allez
sur python.org puis dans le menu
de documentation, vous devriez voir la
documentation de Python La documentation
de Python est donc l'
équivalent d'un dictionnaire, un dictionnaire anglais,
tel que le dictionnaire Oxford, où la
langue anglaise est documentée. Il y a cependant une différence. Dans le cas où nous avons
parlé au cuisinier, nous avons utilisé le langage parlé. Pour communiquer avec
l'interprète ici, nous utilisons des fichiers texte. Nous écrivons donc la langue
dans un fichier texte, et l'interpréteur
lit ce fichier texte. Bien entendu, nous donnons
l'extension point PY à ces fichiers texte, mais ils restent des fichiers texte. L'extension est différente.
Et c'est l'idée. C'est ce qu'est Python. Python est donc le langage. Merci d'avoir
suivi cet exemple, cette comparaison, et je vous
en parlerai dans la prochaine vidéo.
9. 9. Commencer par les bases de Python: Bonjour, bienvenue dans une nouvelle vidéo, et ceci est une vidéo
d'introduction à
la section des fonctions et
des conditions. Vous entrez maintenant dans une section plus
avancée de Python. fonctions et les conditionnels sont
des concepts de base avancés de Python, et ce sont des
blocs très fondamentaux que vous pouvez utiliser pour rendre vos programmes plus
intelligents et plus faciles à gérer Ainsi, vous rendez vos programmes plus
intelligents en leur faisant prendre des décisions que vous pouvez mettre en œuvre via des conditionnels. Donc, si votre programme reçoit des entrées et
que
vous voulez réfléchir, vous voulez lui faire savoir si vous voulez lui faire savoir si ces entrées sont correctes ou non, et vous voulez faire
quelque chose si cette entrée est vraie et autre chose
si cette entrée est fausse. Vous prenez donc des décisions dans votre programme par le biais
d'un blocage conditionnel. Et puis vous avez les fonctions
, d'autre part, les
fonctions sont utilisées pour
encapsuler des blocs de code, donc des blocs de code similaires. Il vous aide à organiser votre code. Ainsi, une fonction, par exemple, pourrait convertir des dollars américains en euros. Cette fonction fait
donc certaines choses
et le fait bien. Il obtient donc l'USD en entrée, et il vous donne des
euros en sortie. Ainsi, à l'intérieur de la fonction, vous avez ces opérations mathématiques
qui effectuent la conversion. conditions et les fonctions
sont donc deux choses que vous allez apprendre dans cette section à
travers des exemples, bien sûr. Je vous verrai donc dans
la prochaine vidéo.
10. 10. Variables : pourquoi et comment utiliser les variables +: Bonjour, bon retour. consulter ce programme ici. Voyez-vous un problème
avec ce programme ? Eh bien, le programme fonctionne bien. Si nous l'exécutons, nous obtenons
sept en sortie, ce qui est le résultat attendu. Donc trois plus quatre,
ça donne sept. Mais il y a un problème
avec le programme, et le problème est que nous
n'avons aucune idée de ce que trois signifie
et de ce que quatre signifie. Donc, en tant que programmeurs, nous ne
savons pas ce qui se passe ici, qui rend ce
programme illisible Maintenant, laissez-moi
vous montrer comment je vais résoudre ce problème immédiatement
en utilisant des variables. Je vais donc le supprimer
complètement et dire que les dépenses sont égales à trois. Le don est égal à quatre. Le montant total est égal à
dépenser plus le don, puis à imprimer le montant total. Si j'exécute ce programme maintenant, j'obtiendrai le même résultat,
donc ça fait à nouveau sept. Mais cette fois, en tant que
programmeurs, nous pouvons
comprendre ce programme Nous pouvons donc donner ce programme
à d'autres personnes, d'
autres programmeurs, ou nous pouvons revenir à ce programme Plus tard, nous pourrons toujours
comprendre ce programme car nous avons maintenant des
noms pour
les valeurs, appelées
variables. Les
montants dépensés, donnés et totaux sont donc tous des variables. La syntaxe est assez simple. vous suffit donc de
choisir un nom qui vous vient à
l'esprit pour une variable. J'ai donc choisi d'utiliser les dépenses
comme première variable. C'est donc le montant que j'ai
dépensé pour
acheter des choses, par
exemple, puis c'
est le montant que j'ai donné. Puis j'ai calculé
le montant total. Maintenant, ce programme a plus de
sens. Et bien sûr, il existe
d'autres exemples tels que des articles égaux à dix et un prix
égal à deux au total. Le prix est égal aux
articles multipliés par le prix. Il y a donc maintenant
cet astérisque ici, qui signifie opérateur de
multiplication Imprimez le prix total, et nous en
obtenons 20 en sortie ici. Encore une fois, nous avons une
variable ici, deux et trois. Maintenant, il existe certaines règles concernant la syntaxe
des variables. La première règle est
que vous ne devriez pas avoir
de chiffres devant vos variables, mais vous pouvez avoir des nombres au milieu quelque part ou à la fin, mais pas devant elles. Vous pouvez utiliser des traits de soulignement, comme je l'ai fait ici, mais vous ne pouvez pas utiliser d'espaces Cela ne fonctionnera donc pas en Python, ce qui signifie que si vous avez des variables contenant
plus d'un mot, vous devez utiliser un trait de soulignement La meilleure pratique consiste
à utiliser un trait de soulignement. Enfin, vous pouvez placer
autant d'espaces que vous le souhaitez autour de l'opérateur
d'affectation. Cela fonctionnera donc. Mais il est recommandé, selon le guide de style officiel de
Python, avoir un espace chaque côté de l'opérateur d'
assignation pour rendre les codes plus lisibles. Les espaces ne servent ici qu'
à des fins de lisibilité. Il en va de même pour
ces opérateurs. Il est bon d'avoir des espaces
autour de l'opérateur. Encore une fois pour la lisibilité. Maintenant, notre programme
prend plus de sens. Nous savons ce qui se passe ici. Nous comprenons le code, et c'est l'un des
avantages des variables. Il y a également un deuxième
avantage. Les variables servent de compartiments
pour transporter des données ou des objets. Dix est donc une valeur de donnée, ou vous pouvez
également l'appeler objet. Donc dix est un objet,
deux est un objet, et items est le
nom de cet objet, ou vous pouvez dire la
variable de cet objet. Ces noms,
ces variables
sont donc comme des compartiments Ils sont utilisés pour
transporter des objets. Par exemple, supposons que nous en
placions dix dans
le compartiment d'articles, puis que nous obtenions ce panier et que nous le multiplions
par un panier de prix contenant deux articles. Donc, au lieu d'écrire
dix ici et deux, nous travaillons en fait
sur la base d'un bucket, sur une base variable. Cela présente un avantage car, par exemple, supposons que nous décidions de changer
la valeur de ce paramètre à trois, qui signifie que les éléments actuellement
présents seront également trois. Donc, trois fois deux,
nous allons en avoir six. C'est pourquoi nous ne voulons pas avoir d' objets, de codex durs, par exemple Si c'était dix, si nous l'
exécutons, nous obtiendrions l'ancienne sortie 20. J'espère donc que c'est clair. Utilisez toujours des variables, et c'est fin de cette leçon
sur les variables. Je suis entré dans beaucoup de
détails parce que les variables sont utilisées dans chaque
programme que vous écrivez. Assurez-vous donc de les
comprendre. Si ce n'est pas le cas, posez des questions
dans le cadre des questions-réponses, et je vous parlerai
dans la prochaine vidéo Merci.
11. 11. Utiliser l'enveloppe interactive Python: Bonjour, bienvenue
à une nouvelle conférence. Auparavant, nous avons
écrit ce script, et nous pouvons l'exécuter en utilisant
ce bouton triangulaire, et nous en obtenons six en sortie. Donc, trois fois deux nous donnent six. Nous avons donc écrit le script dans un fichier PY à points, puis nous l'avons envoyé à l'interpréteur. Nous envoyons donc l'intégralité du fichier point
PY à l'interpréteur. Mais il existe un autre
moyen d'exécuter du code Python. C'est en faisant
appel à l'interprète sur demande. Permettez-moi de vous montrer
ce que je veux dire par là. Vous devez donc accéder au
terminal à la ligne de commande. C'est ici que vous exécutez les commandes du système
d'exploitation. Je suis donc sous Windows, donc je peux exécuter PY
space moins trois. Si vous êtes sur Mac ou Linux, vous devrez écrire Python 3.10 ou Python 3.9 selon la version
de Python que vous utilisez Je vais utiliser l'espace Pi moins
trois et appuyer sur Entrée. Cette commande lance donc
l'interpréteur Python. Maintenant, comme
je l'ai dit, l'interpréteur est à la demande, ce qui signifie qu'il
attend maintenant que le
code Python l'
interprète . Pensez donc aux méthodes précédentes comme l'embauche d'un interprète
sur une base contractuelle. Vous envoyez donc l'intégralité
du script à l'interpréteur, et il vous
renvoie le résultat. Mais ici, l'interprète
est un employé, disons qu'il est sur place et qu'il
attend votre avis. Ils t'écoutent. Donc, vous dites que éléments est égal à
trois. Par exemple, vous écrivez du code, votre présentateur et l'interprète
vous écoutent. Il enregistre donc la
variable items en mémoire. Et tu peux continuer à écrire du code. Le prix est égal à
deux, le prix total est égal aux articles multipliés par le prix. Et si vous imprimez le prix total, vous obtenez le résultat six
, soit le même
résultat que cela. Maintenant, vous vous
demandez probablement quand
utiliser une méthode et quand
utiliser l'autre. Devriez-vous donc coder dans un fichier
Python ou dans un shell
interactif Python ? C'est ce que l'on appelle désormais
un shell interactif. Permettez-moi donc de répondre à
cette question. Mais avant de vous répondre, je tiens à souligner les différences entre
les deux méthodes de codage. La plus grande différence
est que le code vous écrivez dans le
shell interactif n'est pas enregistré. Donc, si je quitte ce shell maintenant, ce code sera perdu et il n'y a aucun moyen de le sauvegarder. Et cela nous amène
à l'autre point, savoir que cette méthode de codage ne concerne que le code
jetable Donc, si vous voulez simplement
tester des choses rapidement, vous voudrez
peut-être effectuer des opérations mathématiques
telles que l'addition,
la multiplication, etc. Et vous n'êtes pas intéressé par la création d'un programme réutilisable, alors ce
shell interactif convient. C'est plus rapide que de
devoir créer un fichier PY puis
d'y écrire le code. Je pense donc avoir
répondu à la question. Vous devez utiliser le fichier point PY chaque fois que vous souhaitez
créer des programmes réutilisables. Et vous utilisez le shell
interactif Python pour les doublures Quick One Il suffit donc d'écrire une ligne, peut-être une autre ici.
Donc des opérations mathématiques. Maintenant, je tiens à souligner une
différence entre les deux. Maintenant, une autre différence dont
vous devez être conscient est que dans le shell
interactif Python, vous n'avez pas besoin d'utiliser de fonction
d'impression. Vous pouvez simplement indiquer le prix total. Et vous obtenez le résultat. Il n'est pas nécessaire d'
imprimer le prix total. Cependant, dans un fichier PY à points, vous devez être très explicite. Donc, si je supprime la fonction
d'impression et que j'exécute ce programme, nous n'obtiendrons aucune sortie. Permettez-moi donc d'exécuter
ce programme maintenant, mais je vous préviens que
nous allons avoir une erreur. Alors lancez le programme, c'est l'erreur. Alors,
que s'est-il passé ici ? Ce code est correct, mais
le code de Visual Studio exécute cette commande Windows
dans le Python Shell. Le Python Shell n'
accepte que
le code Python, mais pas les commandes du système
d'exploitation Windows ou Mac. s'agit donc d'une
commande Windows car elle démarre, elle essaie de
démarrer le programme Python, et elle essaie d'exécuter
ce fichier point PY de mon programme. Donc, ce que vous devez faire,
c'est quitter le shell chaque fois que vous
souhaitez exécuter un fichier PY à points. Donc, si vous êtes dans un shell Python
interactif, et que vous savez que c'est le cas chaque fois que
vous voyez ces trois flèches, vous
devez sortir entre parenthèses et appuyer sur Entrée, ce qui vous ramènera au shell
du système d'exploitation, au terminal, à la ligne de commande Cela signifie que vous
pouvez désormais exécuter votre programme. Alors laissez-moi appuyer sur ce bouton
triangulaire, et nous n'avons eu aucune erreur. Cependant, il n'y a aucune sortie
non plus, comme vous pouvez le constater, car comme je l'ai
indiqué plus tôt, nous n'
imprimons rien ici. Donc, ce que fait l'
interpréteur, c'est qu'il assigne
simplement une variable de 32 éléments Il en va de même pour le prix. Il calcule le prix total, puis ici il ne fait rien Donc, pour obtenir une sortie, nous devons dire « imprimer à nouveau »
la variable
et vous en obtenez six. Si vous voulez revenir au
shell Python, écrivez la commande Py moins
trois, puis revenez au shell, et vous pouvez réexécuter le
code ici. Je vais donc revenir
au shell, qui
concerne le shell interactif Python. Merci de m'avoir suivi.
12. 12. Utilisation du terminal: Avant de passer au codage, je voudrais vous montrer un
conseil de productivité concernant l'IDE. Maintenant, cette astuce concerne
l'IDE Visual Sudo Code, mais elle s'appliquera probablement également
à d'autres IDE Il s'agit du terminal, de la manière de l'
utiliser
plus efficacement, ce qui vous aidera à coder et à apprendre. C'est donc ce que je
veux vous montrer. Mon terminal est ouvert ici. Donc, tout d'abord, ce que je veux
faire, c'est supprimer
tous les terminaux à l'aide cette icône, sinon l'icône
pourrait se trouver quelque part ici. Il suffit donc de tout supprimer. Oui, l'icône qui nous montre ici maintenant, appuyez dessus ou sur l'autre jusqu'à ce que le terminal disparaisse. Ensuite, vous voulez
afficher à nouveau le terminal, et vous pouvez le faire en
appuyant sur ce bouton. Cela exécutera donc le code. Cela créera une nouvelle fenêtre de
terminal. Et puis c'est bien d'avoir également
un shell Python ouvert
sur le côté. Vous avez donc à la fois la
ligne de commande où vous exécutez le code, mais également le shell
interactif Python dans lequel vous pouvez écrire des lignes
rapides. Pour ce faire, vous devez
appuyer sur cette icône. Et cela va diviser
le terminal. Nous avons donc maintenant un
terminal ici sur la gauche et un terminal
ici sur la droite. Ici, à droite,
nous voulons exécuter
la commande Python qui ouvre le shell
interactif Python. Sous Windows, c'est l'espace
PY moins trois, ou Macan Linux, ce
serait Python 3.10 ou Python 3.11, etc. Cela ouvrira donc le Shell interactif
Python. Nous avons maintenant à la fois la ligne de
commande où nous exécutons les fichiers point PI
et le Python Shell, où vous pouvez exécuter du code de
manière interactive Cela vous aidera dans
votre apprentissage. Permettez-moi donc de vous
montrer rapidement si cela
fonctionne bien ou non, afin que je puisse me concentrer sur ce point. Peu importe, et
j'appuie sur ce bouton, mais le code sera
envoyé à ce terminal. Et ce terminal
est indépendant de cela. Encore une fois, si cela ne
fonctionne pas, assurez-vous à nouveau de tout
supprimer. Donc pas de terminaux. Alors n'
ouvrez pas de terminal ici. Donc, au lieu de le faire, laissez le terminal s'ouvrir à
l'aide de ce bouton. De cette façon, vous vous assurez
que ce terminal est connecté au
processus en cours d'exécution de ce fichier, puis vous divisez le terminal, puis vous avez ces
commandes pour ouvrir Python. Un autre conseil avant de
fermer cette vidéo sur la ligne de commande
où sont envoyées les commandes Windows,
Mac ou Linux. Donc, ici, lorsque nous
exécutons le fichier point PY, vous pouvez effacer le terminal
en utilisant CLC, y écrire CLC Si vous êtes sous Windows, sur Mac, ce serait clair ou Linux également. Appuyez sur Entrée en appuyant sur le bouton de commande et cela
effacera le terminal. Cela fonctionne donc sur
la ligne de commande, pas sur le shell Python. En ce qui concerne la
fenêtre divisée ici sur le côté, vous pouvez voir
le nombre de terminaux dont vous disposez. Nous avons donc ceci, qui
pointe vers cela sur le côté, sur le côté gauche, puis sur l'
autre sur la droite. Essayez également de ne pas avoir
plus de deux terminaux ici car les choses peuvent confusion, car si
vous
appuyez sur l'icône plus, vous aurez un troisième terminal qui sera caché derrière ces deux terminaux et
les choses deviendront confuses. Assurez-vous d'en avoir toujours deux. Si vous en avez plus,
supprimez tout et recommencez le processus autour de celui-ci, autour de PY, moins trois
à nouveau, etc. Vous êtes donc prêt à
programmer dans les prochaines vidéos, et cela vous
aidera vraiment dans votre apprentissage. Je vous parlerai donc
dans la prochaine vidéo.
13. 13. Types simples : entiers, cordes et flottants: Laisse-moi
te montrer quelque chose. Je vais créer la variable X. Stockez dix dans cette variable X, Y, stockez le texte dix
dans cette variable, puis créez
deux nouvelles variables. Donc, un est égal à deux. X plus X, et deux sont
égaux à deux, Y plus Y. Et puis imprimez
un et deux Enregistrez le script,
ne l'oubliez pas et exécutez-le. Il s'agit de la sortie. Nous avons donc obtenu 20 sur X plus
X et 1010 sur Y plus Y. Quel est mon point Ce que je veux dire, c'est que
les ordinateurs sont nuls. Pour qu'ils vous comprennent,
vous devez être très clair, très explicite dans
ce que vous allez dire dans votre langage, en
Python dans ce cas. Il ne suffit pas de dire dix, il faut déclarer
ce que c'est que dix. S'agit-il d'un chiffre ou d'un texte ? C'est pourquoi dans certaines langues, dans la plupart des langues, nous avons des déclarations de type. Ainsi, dans d'autres langages, vous diriez
quelque chose comme int, qui signifie entier. Vous dites donc qu'il
s'agit d'un entier. Dix est un entier,
ce qui serait comme STR Y sans guillemets. indique donc à
Python qu'il s'agit en fait d'un texte et qu'
il doit être traité comme tel. Ainsi, en Python, lorsque vous
appliquez un opérateur plus, Python
concaténera ce texte, il en ajoutera
donc dix après dix, et il créera cette Maintenant, ce n'est pas ainsi
que cela fonctionne en Python. En Python, au lieu de faire
ces déclarations explicites, nous avons une
déclaration implicite, qui est celle-ci ici. Ainsi, lorsque le nombre est sans
guillemets, il s'agit d'un entier. Eh bien, cela peut aussi être un flotteur, mais permettez-moi
d'en parler dans quelques secondes. Et s'il est entre guillemets, cela signifie qu'il s'agit d'un texte. S'il est égal à 10,1, par
exemple,
cela signifie qu'il s'agit d'un flottant. Et si vous ne me croyez pas, vous pouvez utiliser la
fonction type X, tapez Y et tapez. La fonction type affiche
le type de chaque valeur. Il s'agit donc d'une classe int, une classe STR, qui
représente des chaînes. Tout ce qui est entre guillemets est
une chaîne de caractères flottante, ce qui signifie float Avec les chaînes, vous pouvez également
utiliser des guillemets simples de ce type. Sauvegardez-le, et
vous obtiendrez le même résultat. Donc, si votre intention
est de traiter du texte, vous devez utiliser des guillemets Si votre intention est
de traiter des nombres, donc pour pouvoir faire calculs
mathématiques avec eux, vous devez les utiliser sans
des comme ça ou comme ça.
14. 14. Lister les types de données: Vous connaissez maintenant trois
types de données en Python, vous connaissez les entiers,
les chaînes
et les flottants et Il s'agit de types de données simples. Nous avons également ce que l'on appelle
des types de données composés, types composés
de différents objets Et la liste est la
plus populaire. Ainsi, dans une liste, vous pouvez réellement
stocker plusieurs objets. Supposons que vous soyez
enseignant et que vous
souhaitiez calculer la
note moyenne de vos élèves. Vous utilisez donc Python pour cela, et vous avez besoin d'une structure
de données pour stocker ces valeurs en Python. Vous avez besoin du type approprié en Python pour représenter les
notes de vos élèves, et une liste serait un bon choix. Créons une liste.
Stockez-le dans une variable comme d'habitude. Notes des étudiants. Égal aux crochets ouverts, crochets
fermés. Les objets vont donc maintenant
entrer dans cette syntaxe. Vous avez donc vu qu'avec les entiers, vous utilisiez un nombre
sans guillemets pour les
chaînes pour indiquer à Python
qu'il s'agit d'une chaîne, vous utilisiez des guillemets doubles ou simples Et avec les listes, vous utilisez
ces crochets, sorte que chaque type possède
sa propre syntaxe. Disons 9.1, 8.8
et 7.5. Ce sont les notes
de votre élève.
15. 15. Utiliser des plages: Dans cette vidéo, vous allez vous
familiariser avec les listes. Auparavant, nous stockions trois
types de données flottants dans une liste, mais vous pouvez stocker
n'importe quel type d'objet, pas seulement des flottants, de sorte que nous pouvons
stocker un entier tel que neuf Vous pouvez enregistrer une
chaîne, telle que hello. Vous pouvez même stocker
des listes dans une liste. Il vous suffit d'écrire
entre crochets, puis saisir les éléments de cette liste. Donc, cette liste contient toujours
trois éléments : cet entier, cette chaîne et cette liste. Et bien sûr, vous
pouvez imprimer cette liste en pointant sur la variable
associée à la liste. Et c'est le
résultat que nous obtenons. Non, les opérations mathématiques avec des listes, que supportent les listes ? Eh bien, pas grand-chose, vraiment. Vous pouvez effectuer des multiplications
avec un entier, par exemple deux ou trois, et voyons ce qui
va se passer Je vais
imprimer cette expression directement ici au lieu de la
mettre dans une variable. Ainsi, quelle que soit votre préférence, vous
pouvez créer une nouvelle variable, stocker dans la variable, puis placer la variable
dans la fonction d'impression ou placer
directement cette expression
dans la fonction d'impression. Les deux fonctionneront. Donc,
si vous l'exécutez, vous allez obtenir cette sortie. C'est donc la même liste
répétée trois fois. Si c'était plus, cela n'
est pas pris en charge car
Python ne sait pas quoi faire avec une
liste et un entier. Cela vous donne donc un
type d'erreur. Seule une erreur peut concaténer des listes en listes. Il peut donc concaténer des
listes en listes. Donc, si vous notez les étudiants, plus des notes des étudiants,
cela fonctionnera également. Alors lancez-le et vous
obtiendrez les résultats suivants. La liste s'est répétée deux fois
, soit l'équivalent
de deux fois. Encore une fois, nous allons obtenir les mêmes résultats ici et là. Enfin, il existe également un moyen de générer
automatiquement des listes d' entiers ayant
un certain ordre Supposons que vous vouliez
avoir une liste de 1 à 10, un, deux, trois, quatre,
cinq, six, sept, huit, neuf, dix.
Comment pouvons-nous le faire ? Bien sûr, une méthode
consiste à l'écrire, mais il existe une meilleure méthode, à savoir utiliser une plage. La plage est un autre type d'objet, tout comme nous avons des
listes, des entiers Nous avons également des gammes. Alors, entre zéro et 11, analysons les notes des élèves pour voir quelle
est la valeur actuelle de cette variable. Alors lancez-le, et c'
est un objet range. Il n'y a donc pas grand chose à voir pour l'instant. Mais si vous le convertissez
en liste et que vous l'exécutez à nouveau. Enfin, nous allons
obtenir ce résultat. Donc zéro, un, deux, trois, quatre, cinq, six, sept,
huit, neuf, dix. Désormais, les notes des étudiants
sont un objet de liste. Et ce mot-clé de
liste est une classe. Il représente donc
le dernier type de données, et il est utilisé ici pour
convertir un type de données de plage
en un type de données ist car une plage s'affiche
simplement comme ceci. Il n'est donc pas
très avantageux de voir que le résultat n'est pas aussi clair, nous le convertissons
donc au moins en
type de données. Et alors, comment ça marche ? Eh bien, cela commence à zéro jusqu' au chiffre qui
précède ce nombre, qui est dix, donc de zéro à dix. C'est pourquoi nous en avons de zéro à dix. Bien sûr, vous pouvez tout
avoir ici. Donc un à huit, il faudrait que
j'en écrive
neuf pour obtenir un à huit. Donc au moins un à huit. Vous pouvez également avoir
un autre argument ici, deux, et voyons ce
que cela change dans la sortie. Nous obtenons donc ces résultats. Ces deux étapes sont l'étape. Donc un, trois, cinq, sept, cela signifie que vous
commencez par un, puis que vous passez
par un pas de deux. Donc un plus deux, vous avez trois, trois plus deux, vous avez
cinq, cinq plus deux, vous avez sept, sept
plus deux, vous en avez neuf, mais neuf n'est pas
inclus dans la fourchette. La gamme va jusqu'à huit, donc la liste
finira à sept. Bien sûr, vous pouvez suivre
n'importe quelle étape ici, par exemple trois, et vous
obtiendrez des résultats différents. Il s'agissait donc d'informations plus
avancées sur les listes et les plages. Sur ce, je vous remercie et je vous parlerai dans la
prochaine vidéo. À bientôt.
16. 16. Quels sont les attributs des types de données: OK, donc vous connaissez les
chaînes, vous savez, flottants, vous savez, les
entiers, vous savez, D'accord, vous savez, les types de données. Mais comment pouvez-vous réellement
faire quelque chose en Python ? Que pouvez-vous faire avec
ces types de données ? Eh bien, pour répondre à votre
question, vous devriez consulter la commande Deer. Eh bien, permettez-moi maintenant de commencer à utiliser un peu
plus
le shell Python pour faire les choses plus rapidement. Je vais donc le
scinder en deux. C'est pour exécuter
le fichier Python, c'est pour le shell Python
interactif. Alors, que pouvons-nous faire avec une liste ? Tu peux le découvrir
en faisant Deer. Dear est une fonction en
Python qui
vous donnera tout ce que vous pouvez
faire avec un type spécifique. Donc, avec une liste, dans ce cas, tous ces éléments sont des
attributs de liste. Vous pouvez faire de même
pour vérifier int. Vous pouvez faire de même pour
vérifier float, dear float, dear STR, par exemple, arrêtons-nous au SDR
avant de passer à la liste Avec les chaînes, vous pouvez, par
exemple, les
transformer en majuscules en utilisant
ces méthodes Pour savoir ce que fait upper, vous devez utiliser help STR, c'
est-à-dire le type qui
possède l'attribut upper. Maintenant, les attributs
sont tous ces éléments et ils peuvent être
des méthodes ou des propriétés. Vous ne le saurez pas tant que
vous n'aurez pas vérifié auprès de l'aide. Il s'agit donc d'une documentation d'aide
pour la méthode supérieure. C'est une méthode, comme
vous pouvez le voir ici, Q pour quitter et
revenir au shell. Alors allons-y
et utilisons-le. Bonjour, cette partie supérieure. Vous utilisez une méthode
entre crochets entre parenthèses. Et cela renverra
la version majuscule de hello. Si nous utilisons plutôt le titre, cela
ne mettra en majuscule que la
première lettre Bien entendu, vous pouvez
utiliser des variables. Et vous obtenez le même résultat. Maintenant, qu'avons-nous pour les listes ? Pourquoi ne pas calculer la
moyenne des notes des étudiants ? C'est ce que nous allons faire dans la vidéo suivante.
17. 17. Comment savoir de quel code vous avez besoin: Pour calculer la moyenne
de ces notes, nous voulons voir si un
type de liste possède une
méthode de moyenne ou de moyenne qui nous permet d'obtenir la moyenne
de ses valeurs. Pour cela, nous allons
vérifier auprès de la liste des cerfs. List est le nom qui
représente toutes les listes. Il s'agit donc d'un type, et il s'agit d'une instance ce type de liste
. Chère liste. Et jetons un coup d'
œil ici. Avez-vous une
méthode moyenne ou moyenne ? Je ne crois pas. Il n'existe donc aucune méthode
du type liste pour nous
permettre de calculer la
moyenne des valeurs de liste. Cependant, cela ne
signifie pas qu'il n'existe pas de méthode méchante en
Python pour le faire. L'homme ou la moyenne n'est pas une méthode, mais cela peut être une fonction. Tu te souviens de la fonction d'impression ? Donc, imprimez comme ça, vous voyez que l'impression n'a pas besoin de la notation par points pour être utilisée. Par exemple, la méthode supérieure
nécessitait une notation par points
car la méthode supérieure est une méthode attachée au type de halo. Et l'impression est une fonction. C'est une fonction indépendante
qui fonctionne avec de nombreux types, pas seulement avec des chaînes, pas
seulement avec des entiers ou des flottants Vous pouvez imprimer
n'importe quoi avec print. C'est pourquoi il n'est pas attaché
à un type spécifique. Alors, où
voyons-nous la liste complète des fonctions que nous pouvons utiliser ? Vous pouvez le faire à nouveau en utilisant
le trait de soulignement, le trait de
soulignement, le trait de soulignement, le trait soulignement, les parenthèses Et voici une liste complète de ce que vous pouvez utiliser avec les fonctions
intégrées. Voyons donc pour une
fonction moyenne ou une fonction moyenne. Non, ce n'est pas le cas, mais il existe une fonction de somme. Donc ce que nous pouvons faire,
disons ma somme, c'est ne pas utiliser sum comme nom de
variable car vous pouvez voir que sum est
un mot clé réservé. Donc, additionnez les notes des étudiants, cela nous donnera la somme
de ces trois nombres. Vous voulez ensuite compter le nombre d'
éléments contenus dans cette liste. Alors, avons-nous
quelque chose à dénombrer ? Peut-être pas. Eh bien, je sais qu'
il n'y a pas de méthode de comptage. Mais nous avons cette lentille, qui signifie que vous pouvez
vérifier ce que cela signifie. Retournez donc le nombre d'
articles contenus dans un conteneur. Une liste est donc également appelée
conteneur. Disons la longueur, égale à la
longueur, les notes des étudiants. Enfin, nous
pouvons obtenir la moyenne, qui est ma somme divisée par la
longueur et imprimer la moyenne, sauf qu'il s'agit de la valeur moyenne
de ces trois nombres.
18. 18. Types de données de dictionnaire: Vous êtes donc enseignant
et vous vouliez calculer les
notes moyennes de vos élèves, et nous l'avons fait en utilisant
cet algorithme ici et cette structure de données
pour stocker les notes. Le problème, c'est que vous ne
savez pas quel est le grade de qui. Ainsi, bien qu'
une liste soit une bonne structure de données pour
stocker un ensemble d'éléments, elle ne suffit pas lorsque ces éléments sont associés à une sorte d'
identité. Dans ce cas, vous
souhaitez utiliser un dictionnaire. Disons la
note de l'étudiant, entre crochets. C'est la syntaxe
d'un dictionnaire. Ensuite, vous utilisez les noms
de vos élèves. Supposons que Mary soit une colonne, créez de l'espace ou pas d'espace, où vous préférez,
mais il est bon d'avoir
un espace à cet endroit pour le
rendre plus lisible Ensuite, tu écris
le grade de Mary. Disons S 8.8 et colonne John, 7.5. La différence entre le
dictionnaire et la liste réside dans les crochets, les
différents crochets. Et puis cela est considéré comme
un élément d'un dictionnaire. Ceci est considéré comme
un élément d'une liste. Les éléments d'un dictionnaire
sont donc constitués de clés. C'est une clé et
des valeurs, c'est une valeur. Une liste serait plus
appropriée si nous devions stocker, par
exemple, un tableau
de valeurs de température. Disons que le lundi, il y a eu ces températures
du lundi. Et enfin, comment calcule-t-on la moyenne quand on
a un dictionnaire ? Comme il s'agit
de paires de clés et de valeurs, vous ne pouvez pas simplement faire
la somme comme ça. Vous devez spécifier la somme
de ce que vous voulez obtenir. Donc, les notes des étudiants. Et si vous vérifiez leur dictionnaire
pour dictionnaire, vous verrez que les dictionnaires
ont ces valeurs, ce qui est une méthode Dictez les valeurs. C'est une méthode, et elle fournit une vue
des valeurs du dictionnaire. En termes simples, il vous donne
les valeurs d'un dictionnaire. Donc, si vous obtenez ce dictionnaire, faites la queue pour quitter ici, collez-le ici et voyez les
élèves noter ces valeurs. Cela vous donnera
ce type de données. Il s'agit toujours d'un type de données. Cela ressemble à une liste. Ce n'est pas exactement une liste, mais elle se comporte comme une liste
contenant ces trois valeurs C'est un type de valeurs dict. Cette méthode produit ce type. Par conséquent, vous pouvez l'
ajouter,
n' oubliez pas les parenthèses, n'oubliez pas de sauvegarder et n'
oubliez pas d'exécuter pour obtenir le résultat. Il s'agit la valeur moyenne des valeurs du
dictionnaire Pour obtenir les clés du
dictionnaire, il suffit de faire des clés. Et vous obtenez ce
type de clés mortes avec les clés
du dictionnaire en tant qu'éléments
de ce tableau de clés mortes.
19. 19. Ce qui fait d'un programmeur un programmeur: Qu'est-ce qui fait d'un programmeur
un programmeur ? En d'autres termes, quelles sont
les choses que vous
devez savoir pour pouvoir programmer une application
informatique ? C'est ce que je vais vous
raconter dans cette vidéo. Il y a trois choses que vous
devez savoir pour programmer, pour coder n'importe quel programme. Et le premier est que vous
devez connaître la syntaxe. Par exemple, vous devez savoir que pour
imprimer certaines sorties, vous devez utiliser des impressions
suivies de parenthèses, puis vous devez placer
l'entrée entre ces parenthèses Cela fait donc partie de la syntaxe, savoir si vous voulez
utiliser des parenthèses ou des virgules, etc. C'est
la première chose. Ensuite,
supposons que nous construisions un programme qui calcule la moyenne à partir d'
une série de valeurs Ensuite, vous voulez savoir quel
type de données vous devez utiliser pour
représenter ces données. Ainsi, par exemple, si
vous avez des données sous forme de
noms d'étudiants suivis de
la note de chaque élève, vous savez que vous devez
utiliser un dictionnaire car un dictionnaire est composé
de clés et de valeurs. La structure de données correcte
ici serait donc un dictionnaire. Mais si vous n'aviez que des valeurs
sans noms d'étudiants, vous penseriez à une
liste, car une liste
n'est qu'une série d'éléments, des
valeurs sans clés. Donc, les structures de données, vous
devez connaître les structures de données et vous devez connaître la
syntaxe. Ce sont deux choses. La troisième chose est
que vous devez connaître l'algorithme que vous devez utiliser pour produire le résultat attendu. Donc, dans ce cas, vous devez connaître les méthodes que vous pouvez utiliser ou vous devez savoir comment créer ces méthodes si
elles n'existent pas. Dans notre exemple,
vous devez donc savoir comment
créer cette méthode moyenne. Voici donc les trois
choses que vous devez
savoir pour créer un programme. Ce sont là les principes fondamentaux. J'espère donc que cela
clarifie le chemin de la programmation, et je vous en parlerai dans
les prochaines vidéos. À bientôt.
20. 20. Types de données Tuple: Voici une liste. Et maintenant c'est un renversement. Un tuple est donc comme une liste, mais avec des parenthèses,
pas des crochets Si vous l'imprimez, bien sûr, vous obtiendrez la même
représentation qu'ici. Donc 14, cinq, 145. Cependant, les crochets
et les parenthèses
ne sont pas la seule différence
entre les listes et les tuples En fait, il ne s'agit que d'une
différence de syntaxe. La vraie différence
est que les tuples, comme celui-ci
ici, sont immuables et listes comme celle-ci sont Cela signifie qu'aux températures du dernier
lundi, vous pouvez ajouter d'autres éléments
à la liste en utilisant, par
exemple, les méthodes d'ajout Donc, si vous vérifiez les
températures du lundi jusqu'à maintenant, vous obtiendrez une liste mutée. Cette mutabilité la rend
très dynamique. Vous verrez plus tard comment, lorsque nous effectuons ces opérations par lots
et à chaque opération, nous ajoutons des éléments à la liste au fur et à mesure que nous
générons
ces éléments, ces valeurs avec
certaines fonctions. Mais ce n'est pas le
cas des tuples. Si vous essayez d'ajouter un tuple, vous recevrez une erreur
car un tuple n'a pas du tout de méthode d'
ajout. De même, il n'
a pas de méthode de suppression
comme le fait la liste. Il n'y en a donc plus quatre. Les tuples
ont cependant l'avantage un peu
plus rapides que les listes, mais vous devez
réfléchir à ce qu'il faut utiliser Donc, que vous utilisiez
List ou topples, vous devez
vous demander si le tableau que vous créez va être modifié au cours
du programme ou non Donc pour l'instant, je ne vais pas entrer
plus loin dans les renversements et c'est le cas. Mais lorsque nous créerons ces dix applications
pendant le cours, vous comprendrez les principales
différences entre les deux en voyant comment elles
fonctionnent dans de vrais programmes.
21. 21. Utiliser les types de données dans le monde réel +: D'accord, vous connaissez maintenant certains des types de données
Python les plus importants, mais je parie que vous ne savez
toujours pas comment ces types de données sont
utilisés dans le monde réel Normalement, par exemple, ces données sont stockées dans un fichier
Excel ou un fichier texte. Alors, est-il
logique de les écrire dans un dictionnaire Python
comme ça ou comme ça ? Liste ? Non, ça ne l'est pas. Il existe en fait des moyens de charger
automatiquement les données de votre feuille de calcul Excel vers Python pour créer
ce dictionnaire Vous devez toujours
créer le dictionnaire, mais vous n'avez pas
à taper les données dans
le fichier python point py comme je l'ai fait ici. Vous allez utiliser des extensions Python
spécifiques pour charger les données ici. Ensuite, vous traitez ce
dictionnaire comme nous l'avons fait ici. Mais ne t'inquiète pas. Je vais aborder cette question et
nous aurons de belles candidatures plus tard dans le cours, dans la
partie des applications. Restez à l'affût.
22. 22. Opérations avec les types de données: Supposons que vous ayez une liste de produits d' épicerie, que vous
ayez créé un programme et que vous ayez stocké
ces articles dans une liste Python entre
crochets. Maintenant, dans votre programme, les utilisateurs peuvent supprimer et
ajouter des éléments de cette liste. Supprimer et ajouter sont donc deux exemples d'opérations
que vous pouvez effectuer avec des listes. La liste est donc un type de données et elle peut avoir
différentes opérations, vous pouvez appliquer
à un type de données de liste Ensuite, il se peut que vous
ayez du texte ailleurs dans votre programme, et
que vous puissiez mettre ce texte en majuscules. La mise en
majuscule est donc une autre opération que vous pouvez appliquer à
un type de données de flux Chaque type de données possède donc
ses propres opérations. C'est donc ce que vous allez
apprendre dans cette section. Il s'agissait donc d'une vidéo
d'introduction. Je vous verrai dans la prochaine vidéo.
23. Messages d'erreur dans Python 3: Dans cette conférence, nous
allons examiner les
nouveautés de Python 3.10
concernant les messages d'erreur Python 3.10 est sorti
en octobre 2021, et il comporte quelques
améliorations concernant les messages d'
erreur ainsi que
d'autres améliorations, dont je parlerai dans prochaines vidéos dans les sections
suivantes Donc, pour les messages d'erreur, supposons que vous ayez une expression
très accentuée. Par exemple, vous souhaitez avoir
une chaîne et
remplacer le caractère I par un caractère Y
dans cette chaîne. Mais si vous manquez une parenthèse et que vous exécutez le programme
avec Python 3.9, nous obtenons une erreur de
syntaxe, bien sûr, car la syntaxe n'
est pas correcte, mais l'erreur n'est pas
si explicative Nous obtenons donc l'erreur de syntaxe
inattendue EOF lors de l'analyse. Vous ne savez donc toujours pas ce que
vous avez mal fait dans votre code. Vous devez donc y retourner
et le relire. Maintenant, comparez cela
à Python 3.10. Donc, si je passe à Python 3.10 en tant qu' interpréteur et que j'exécute
le code avec 3.10, cette fois, l'
erreur de syntaxe est plus claire Donc erreur de syntaxe,
cette parenthèse ici n'a jamais été
fermée. Donc celui-ci. Nous savons maintenant que si nous
commençons une parenthèse ici, nous devons la fermer à la fin Il s'agit de la première parenthèse,
la parenthèse ouverte. Je devrais avoir une
parenthèse fermante. Ajoutons donc cela. Un autre exemple
serait si vous avez une liste, par
exemple, un, deux, et que vous oubliez une virgule, et si vous exécutez Python 3.10, vous allez avoir à nouveau cette erreur de syntaxe : syntaxe
non valide Peut-être avez-vous oublié la virgule, nous indique avec ces flèches l'endroit
où doit se trouver la virgule Si vous comparez cela à 3,9, ce n'est pas la meilleure explication. Cela indique une syntaxe invalide, mais cela ne
dit pas explicitement qu'il manque
une virgule ici Pourtant, Python 3.10 est meilleur pour détecter
les virgules manquantes. L'idée est que dans Python 3.10, vous obtenez l'erreur de syntaxe et vous obtenez
également des informations supplémentaires Terminons cette vidéo
avec un troisième exemple. Si vous faites une faute de frappe, disons que vous avez écrit un
rythme réel au lieu de remplacer, et ajoutons la virgule ici Donc tout est correct, sauf cette faute de frappe. Donc, si vous l'exécutez d'abord
avec 3.9, vous obtenez cette erreur d'attribut. Il indique que l'objet chaîne n'
a pas d'attribut remplacé. Donc, aujourd'hui, on
n'a pas vraiment l'attribut d'un rythme réel. Et vous commencez à vous demander
si replace
n'est pas
du tout un attribut des chaînes. Comparez donc cela avec 3.10, 3.10 run, et voici
l'erreur d'attribut Vouliez-vous dire que remplacer est une erreur très explicite et cela nous aide à
corriger rapidement cette erreur. C'est pourquoi je voulais comparer Python 3 avec Python 3.10 pour souligner les
différences en termes d'erreurs Maintenant, dans le cours,
nous allons avoir une section dédiée aux erreurs, à savoir comment les gérer, comment les lire,
comment ne pas être
frustré par les ne pas être
frustré par erreurs de programmation parce que chaque programmeur fait des erreurs Vous devez
donc savoir
comment les corriger. Pour l'instant, vous êtes
encore débutant, alors continuez à regarder
des vidéos et vous deviendrez de mieux en mieux en Python. Rendez-vous dans
la prochaine vidéo.
24. 24. Effectuer plus d'opérations avec des listes: Permettez-moi maintenant de vous familiariser un
peu plus avec types de données de
liste en vous montrant
ce que vous pouvez en faire Vous savez déjà que
ce que vous pouvez en faire, vous pouvez consulter DR List. Vous pouvez ignorer les
attributs qui commencent par double
trait de soulignement et se
terminent par un double trait de soulignement Ce sont essentiellement des attributs
utilisés par Python en interne, et vous aurez
rarement à les utiliser. Donc pour l'instant, vous pouvez
simplement les ignorer et vous concentrer sur ce que vous
allez réellement utiliser
, à savoir cet ensemble ici. Permettez-moi d'ouvrir un autre shell Python et je vais
appliquer quelques opérations à cette liste dans
ce shell Python. Nous pouvons donc voir quelles
méthodes nous pouvons appliquer dans cette fenêtre et nous pouvons appliquer les méthodes de cette
autre fenêtre ici. Et je ne veux pas juste que tu te montres ce que ça
fait dans le noir. Je veux vous montrer comment vous
pouvez découvrir par vous-même
ce que font ces choses. Utilisez donc toujours la fonction d'aide. Liste, essayons
la méthode d'ajout. Maintenant, je vais
taper la variable, mais il n'est pas nécessaire
de la saisir en entier. Une fois que vous avez commencé à
taper le nom de cette variable, vous pouvez utiliser la touche tab, ce qui complétera automatiquement
le nom de la variable. Utilisez ensuite une
notation par points et ajoutez, puis deux parenthèses Donc, entre parenthèses, vous verrez que cela
prend deux arguments En fait, ce n'est
qu'un argument. Ce n'est que l'objet lui-même. Self fait référence
à la liste elle-même, et l'objet est en fait ce que vous souhaitez
ajouter à cette liste Supposons que vous souhaitiez
ajouter 8.1 comme ça Si vous vérifiez les
températures du lundi, vous verrez qu'il y
a maintenant un autre article C'est donc la syntaxe de append. Vous ignorez toujours
self car self est automatiquement transmis en
tant qu'argument à cette méthode, et self est essentiellement
la liste elle-même. Essayons une autre méthode. Que ici pour arrêter, liste d'aide, effacer. Comment fonctionne-t-il ? Eh bien, dans ce cas, vous voyez qu'il n'
y a aucun argument. Donc,
les températures du lundi sont claires comme ça. Et ce qu'il fait, il efface simplement la liste, il supprime tous ses éléments Permettez-moi également d'essayer l'index et de vous
laisser essayer la liste. L'index obtient en fait
une valeur, un début et un arrêt, et il renvoie
l'indice de la valeur. Qu'est-ce qu'un indice ? Essayons-le avec un index à points, la valeur avec valeur que
signifie Python est l'une des
valeurs de la liste. Maintenant que nous avons une
liste sans valeurs, je vais recréer la
liste à nouveau comme ça Voici maintenant notre liste. Permettez-moi d'essayer
l'index entre parenthèses et la
valeur, disons 8,8 Cela en retournera un.
Pourquoi ? C'est parce que les listes ont une synchronisation
des index en arrière-plan. Même si nous ne le voyons pas, chacun de ces éléments est
associé à un index. Le premier a
un indice de zéro. Le second a un indice de un et le dernier
un indice de deux. Dans ce cas, et ainsi de suite. Maintenant, dans ce cas particulier, nous voyons également cet argument et cet autre
pour la méthode d'indexation. Toutefois, si vous ne souhaitez pas
transmettre ces valeurs, vous pouvez simplement transmettre une seule valeur. Donc, comme je l'ai fait ici, 8.8, cela signifie
que 8,88
sera la valeur, par défaut, start
sera égal à zéro, et stop sera
égal à cette valeur Alors, qu'est-ce que Start and Stop ? Eh bien, quand c'est zéro
comme c'est le cas par défaut, cela signifie
que vous
recherchez 8,8, commençant par le premier
élément de la liste. L'interpréteur lancera donc la recherche à partir du premier élément, donc de l'élément dont l'indice est zéro, et nous chercherons 8,8, et il le trouvera, et il vous
indiquera qu'il a
un index de un. Cependant, si vous voulez dire
à Python de
partir de l'élément avec l'
index deux, disons lancer une recherche
d'ici et avancer vers la droite de 7.5, qui ne
contient plus d'éléments. Quoi qu'il en soit, vous
sautez donc cette partie de
la liste. Dans ce cas. L'interpréteur vous
indiquera que 8.8 ne
figure pas dans la liste
avec ce début. Vous avez également le stop, qui est par défaut,
ce grand chiffre. Donc, si vous souhaitez
limiter la recherche à l'index de droite,
vous pouvez le faire également. Mais par défaut, vous
allez garder ce zéro. Et cela vous indiquera que
le nombre possède cet indice. Plus d'informations sur l'indexation
dans la vidéo suivante.
25. 25. Comment accéder aux éléments de la liste: Précédemment, je vous ai montré que pour
obtenir l'
index d'un élément, vous pouvez utiliser la méthode de l'index. Maintenant, comment pouvons-nous faire l'inverse ? Comment obtenir un
article compte tenu de son index ? Eh bien, pour cela, nous
devons examiner une fois de plus la liste des attributs
que nous pouvons appliquer à la liste. Et je sais que nous pouvons utiliser
la méthode underscore get item
underscore underscore D'accord, je sais que je
vous ai dit plus tôt que vous
utiliserez rarement
ces méthodes, et en fait, nous n'en avons pas besoin pour
ce que je vais faire maintenant, mais laissez-moi vous expliquer pourquoi dans
un instant, vous comprendrez. C'est l'un des secrets de Python. Permettez-moi donc utiliser get item avec des traits de soulignement
doubles, et bien sûr, c'est une méthode, elle a
donc besoin de cette
parenthèse entre crochets Essayons donc d'
obtenir l'élément avec l' index 1. Qu'est-ce que ce serait ? Eh bien, 8,8. Maintenant, le
secret, c'est que vous n'avez pas à utiliser cette méthode moche avec
ces doubles soulignements Tout ce que vous avez à faire
est d'utiliser cette syntaxe, appeler le nom de la variable comme
ça , puis d'ajouter des crochets ouverts
et
fermants, puis d'entrer l'index à l'intérieur de ceux-ci. Cela vous donnera à nouveau la valeur, l'élément correspondant à cet index. Même si vous faites cela,
Python en arrière-plan appelle
en fait cette méthode
et transmet cet élément, cette valeur en entrée
pour cette méthode. C'est donc ce qui
se passe en arrière-plan, mais Python vous permet de le faire d' une meilleure façon,
comme ici.
26. 26. Comment accéder aux tranches de liste: J'ai une liste de
cinq articles ici. Laissez-moi vous montrer pourquoi utiliser une fonction n et vous verrez qu'
elle comporte en réalité cinq éléments. Désormais, en plus d'accéder à des éléments
uniques de votre liste, comme cet
élément avec les index trois, zéro, un, deux, trois, 6,6, vous pouvez également accéder à des
parties de la liste. Disons, 1-4, cela vous
donnera une autre liste. Les résultats de
cette opération sont donc également une liste, et elle contiendra
les éléments avec l'index un, l' index deux et l'index trois. La limite supérieure
n'est pas incluse. Il n'est jamais inclus
dans une tranche Python. Il s'agit donc d'une tranche, et voici le
résultat de la tranche. Essayons d'obtenir les
deux premiers éléments de la liste. Les deux premiers éléments ont
un indice de zéro et un. Nous allons donc commencer par zéro. Puisque nous voulons également l'
élément avec l'index un, nous allons
y écrire deux pour en obtenir un. C'est le résultat. L'index deux n'
est donc pas inclus, 7,5 n'est pas inclus. Vous pouvez également utiliser un
raccourci pour cela. Vous n'avez pas besoin
de taper zéro si
vous voulez que tout
commence par le premier élément, et cela
vous donnera le même résultat. De même, si vous
voulez obtenir, disons, les deux derniers éléments, vous pouvez commencer à compter
zéro, un, deux, trois. Trois, commencez par trois, cela a un indice de quatre, donc nous allons
écrire cinq ici. Même si nous avons obtenu
le résultat attendu, vous feriez mieux d'utiliser
le raccourci pour cela. C'est donc plus intuitif car cela vous indique que vous extrayez à partir d'un élément avec un index trois jusqu'au
dernier élément de la liste Donc, sans savoir combien d'
éléments il y a dans la liste. De même, ici,
vous extrayez
du tout premier élément vers l'élément dont
l'index est un Maintenant, pour les grandes listes, lorsque vous souhaitez
extraire les derniers éléments, cela n'a peut-être pas beaucoup
de sens de compter depuis le début, un, deux, trois, quatre,
cinq, six, etc. Mais Python possède un autre
système d'indexation, et je vais vous le montrer
dans la prochaine vidéo.
27. 27. Comment utiliser les indices négatifs: Alors, comment obtenir le
dernier élément de cette liste ? Eh bien, vous pouvez le faire en vous
référant à la liste
, puis aux crochets, puis vous
référant à l'index de
l'élément souhaité. Donc, 9,9 a un indice de zéro, un, deux, trois, quatre, quatre OK. Mais une méthode plus intelligente consiste
à utiliser une indexation négative, ce qui signifie qu'au lieu de compter, vous pouvez simplement écrire moins
un et vous obtenez 9,9 Ainsi, chacun des éléments d'une liste
Python possède deux index, un indice négatif et un indice positif Donc moins un pour ceci, moins deux pour cela, moins trois, moins quatre, moins cinq. Donc, moins cinq est le premier
élément, en fait, 9.1. Et bien sûr, vous pouvez découper
des listes en utilisant une indexation
négative Essayons de récupérer
les deux derniers objets. Donc, pour faire le découpage, il
faut mettre l'index
du premier élément de la tranche Le premier élément de
la tranche est donc 6,6 et 6,6 a un indice négatif de deux. Utilisez une colonne, puis vous
ne voulez rien assigner ici, car vous voulez tout ce
qui vient après 6.6. Donc, juste comme ça, et tu
retires la queue de la liste. De même, vous pouvez faire moins quatre moins deux, par exemple, ce qui vous donnera 8,8
moins quatre moins trois, et moins deux n'est pas
inclus dans la tranche, parce que je vous ai dit
que la limite supérieure n'
est jamais incluse dans la tranche. Donc, vous n'avez que ceci et cela. Vous pouvez également commencer par
le début de la liste pour obtenir 9.1, le premier élément de ce type.
28. 28. Comment accéder aux personnages et aux tranches de cordes: À votre grande surprise ou non, les chaînes disposent également
d'un système d'indexation. La bonne nouvelle est qu'ils ont exactement le même
système que les listes. Ils ont donc une indexation positive
et négative, et vous pouvez les découper et accéder aux éléments qu'ils contiennent. Permettez-moi de faire une
démonstration rapide. String hello qui vous
donnera la chaîne E, qui est toujours une chaîne. Hello est une chaîne,
E est aussi une chaîne, une indexation négative
et aussi un découpage Une chose intéressante que vous pouvez faire
est de me donner cette liste. Il s'agit donc d'une liste contenant
différents types d'objets. Et ce que vous pouvez faire, c'est
accéder à Devine it ? Eh bien, c'est la chaîne jaune, donc le premier élément de la liste. Ensuite, vous pouvez utiliser une chaîne
d'indexation, par
exemple, si vous en tapez deux , devinez ce que
vous allez obtenir Eh bien, vous allez
obtenir le premier L parce qu'il a
un indice de deux, donc zéro pour H un, pour E, deux pour L. Parce que cette partie
est une valeur à part entière, et cette autre partie obtiendra l'élément avec l'index
deux de cette valeur, qui se trouve être une chaîne. C'est aussi simple que cela.
29. 29. Comment accéder aux éléments dans les dictionnaires +: Les dictionnaires ont-ils
le même système d'index que les listes et les chaînes Découvrons-le. J'
ai ce dictionnaire ici sur mon
shell Python, grade étudiant. Essayons donc d'obtenir le
deuxième article, peut-être. Non, cela indique une erreur clé, ce qui signifie que le
dictionnaire n'a
pas de clé nommée one Alors, quelles sont les clés du
dictionnaire ? Peut-être la même clé. Ainsi, les dictionnaires,
au lieu d'entiers, ont des clés comme index Une liste serait donc un accès. Les éléments de la liste
seraient accessibles via des nombres entiers, qui commencent à zéro et se
terminent par le dernier
élément de la liste, l'index du dernier
élément de la liste Avec les dictionnaires, c'est
différent, comme vous pouvez le constater, et c'est en fait ce qui
fait des dictionnaires un Voyons un autre exemple
de son utilité. Disons que vous avez
ce dictionnaire, de l' anglais vers le portugais. C'est un véritable dictionnaire humain.
Vous avez quelques mots là-dedans. Disons qu'à Suva en
portugais, il y aura du soleil. Désolée, j'ai une faute de frappe. Des codes. Alors maintenant, si vous voulez la version
portugaise de sun, vous l'écrivez, et cela vous
donnera cette version. Donc, avoir des entiers comme
index dans ce cas serait très inutile Chaque cas d'utilisation possède donc sa propre structure
de données à utiliser en Python.
30. 30. Plus de bases de Python : fonctions et modalités: Bonjour, bienvenue dans une nouvelle vidéo, et ceci est une vidéo
d'introduction à
la section des fonctions et
des conditions. Vous entrez maintenant dans une section plus
avancée de Python. fonctions et les conditionnels sont
des concepts de base avancés de Python, et ce sont des
blocs très fondamentaux que vous pouvez utiliser pour rendre vos programmes plus
intelligents et plus faciles à gérer Ainsi, vous rendez vos programmes plus
intelligents en leur faisant prendre des décisions que vous pouvez mettre en œuvre via des conditionnels. Donc, si votre programme reçoit des entrées et
que
vous voulez réfléchir, vous voulez lui faire savoir si vous voulez lui faire savoir si ces entrées sont correctes ou non, et vous voulez faire
quelque chose si cette entrée est vraie et autre chose
si cette entrée est fausse. Vous prenez donc des décisions dans votre programme par le biais
d'un blocage conditionnel. Et puis vous avez les fonctions
, d'autre part, les
fonctions sont utilisées pour
encapsuler des blocs de code, donc des blocs de code similaires. Il vous aide à organiser votre code. Ainsi, une fonction, par exemple, pourrait convertir des dollars américains en euros. Cette fonction fait
donc certaines choses
et le fait bien. Il obtient donc l'USD en entrée, et il vous donne des
euros en sortie. Ainsi, à l'intérieur de la fonction, vous avez ces opérations mathématiques
qui effectuent la conversion. conditions et les fonctions
sont donc deux choses que vous allez apprendre dans cette section à
travers des exemples, bien sûr. Je vous verrai donc dans
la prochaine vidéo.
31. 31. Comment créer vos propres fonctions +: Plus tôt dans le cours,
nous
recherchions une fonction
moyenne ou moyenne que Python pourrait avoir pour
nous permettre de faire la moyenne des éléments des
nombres d'une liste. Et nous avons découvert que Python possède des
fonctions plus fondamentales telles que la longueur pour obtenir un certain nombre d'éléments d'une liste et la somme pour faire la somme
des nombres d'
une liste, mais il n'a pas de fonction de moyenne. Nous avons donc fini par le
faire. Nous avions cette liste. Nous avons calculé la somme à
l'aide de la fonction de somme,
calculé la longueur, donc le nombre d'éléments à l'
aide de la fonction de longueur, puis avons fait la division entre somme et longueur
pour obtenir la moyenne. Cependant, le fait que
Python n'ait pas fonction
de moyenne ne signifie pas que nous ne pouvons pas créer notre
propre fonction de moyenne. Ce que nous allons faire
maintenant, c'est
créer notre propre fonction moyenne. Pour créer des fonctions en Python, vous devez utiliser le mot clé def ,
puis choisir un nom
pour votre fonction. Le nom doit suivre
les mêmes règles de dénomination
que pour les variables. Il ne peut donc pas
commencer par un nombre, il ne peut pas commencer par
un opérateur mathématique. Supposons que vous utilisiez parenthèses
rondes et qu'à l'intérieur celles-ci, la première ligne
se termine par une colonne À l'intérieur de la parenthèse,
vous pouvez
éventuellement saisir certains
paramètres de votre fonction En d'autres termes, les paramètres sont des entrées que votre
fonction obtiendra et qui traiteront cette entrée et produiront une sortie. Dans notre cas, l'entrée
serait une liste. Cependant, vous
devez ici donner un nom, suivant à nouveau les mêmes
règles que pour les variables. Disons ma liste. OK, alors vous
devez appuyer sur Entrée, et vous verrez automatiquement le code
Visual Studio. L'éditeur a donc indenté la ligne
suivante avec quatre espaces, un, deux, trois, quatre C'est ce que la syntaxe exige qu'après
la première ligne, donc après avoir défini le nom
que vous voulez pour votre fonction et les paramètres
que vous voulez, vous deviez indenter
les lignes suivantes Donc, soit votre éditeur le
fera automatiquement, mais s'il ne le fait pas, un, deux, trois, quatre, indentifiez
quatre espaces dedans Vous pouvez également le créer avec
un seul espace ou un seul espace. Cela fonctionnerait également, mais il est
recommandé d'utiliser quatre espaces. Tout le monde utilise quatre
espaces, car le code en retrait est plus visible, ce qui le rendra plus
drevable Ensuite, vous pouvez commencer à
calculer la moyenne. Disons le moyen. Je vais l'appeler
comme ça pour ne pas confondre avec le nom
de la fonction. Ce serait la
somme de ma liste, divisée par la longueur de ma liste. Ensuite, ce que nous voulons faire, utiliser le mot clé
return. Et cela est suivi par
ce que vous souhaitez retourner. Eh bien, nous voulons
rétablir la moyenne. Maintenant, sauvegardez ça. Et
laissez-moi ouvrir un terminal. Je veux exécuter
ce script maintenant. Alors laissez-moi vous montrer
ce qui va se passer. Rien ne va vraiment se passer. Rien ne se passe
parce que Python ne fait que lire
cette définition. C'est comme un plan. Vous avez déclaré ce que devait faire
votre fonction, mais vous n'avez pas demandé
à Python de l'exécuter. Pour exécuter votre fonction, vous devez appeler la fonction transmettre une valeur d'entrée pour le
paramètre que vous avez défini. Lorsque vous souhaitez
imprimer, ouvrez les parenthèses, fermez-les, enregistrez,
n' oubliez pas et exécutez Et c'est la moyenne de
ces trois chiffres. Donc, comme ça, je peux facilement essayer avec
de nombreuses valeurs d'entrée. Juste comme ça, je n'ai rien
à réécrire ici. C'est ce qui fait la beauté d'une fonction. Vous pouvez donc voir la
similitude ici. Tout comme nous utilisons
la fonction sum, nous utilisons la
fonction Mint de la même manière. Donc sum obtient cette valeur d'entrée
Man obtient cette valeur d'entrée. Il se trouve qu'il s'agit d'une variable. Il se trouve qu'il s'agit d'une
valeur directe, mais cela n'a pas d'importance. Si vous vérifiez le type de moyenne, type de moyenne et le type de somme, vous verrez
que Mean est une fonction. Cela a donc été imprimé. Ceci a été imprimé par celui-ci. Donc, la moyenne est une fonction
et encore une fois la somme, c'est une fonction, mais c'est
une fonction intégrée. Il est donc intégré à l'interpréteur
Python. Elle a été conçue par l'équipe de développement
principale de Python, et cette fonction a été conçue
par moi, le programmeur. C'est ainsi que vous créez et
appelez une fonction en Python.
32. 32. Quand utiliser l'impression et le retour +: Il faut
souligner que lorsque votre fonction n'a pas
d'instruction return,
save, execute, elle
renvoie implicitement un non-objet Aucun n'est un objet spécifique en
Python, ce qui ne veut rien dire. Ce n'est pas un entier,
ce n'est pas un flottant, ce n'est pas une chaîne, c'est juste
aucun. Cela ne signifie rien. Python, s'il
ne trouve pas l'
instruction return en arrière-plan, il renvoie none. Donc, si vous l'exécutez, oups,
une erreur d'indentation.
C'est une bonne chose. Vous voyez que tout ce bloc doit avoir le même
niveau d'indentation Si vous avez indenté quatre lignes ici, vous devez également indenter quatre
lignes ici L'indentation doit donc
être cohérente. Cela semble correct. Nous avons donc obtenu les mêmes résultats, aucun ici et aucun là. Certaines personnes commettent cette erreur. Au lieu de retourner,
ils utilisent l'impression. Au lieu d'utiliser le retour, ils utilisent une fonction d'impression. La moyenne, qui
fonctionne à moitié. Il renvoie donc toujours la valeur
et n'en renvoie aucune. Donc, ce qui se passe ici, c'est que lorsque vous appelez la fonction ici, Python exécute
toutes ces lignes, donc il calcule la moyenne, puis il passe à la ligne suivante Donc, ligne par ligne, il imprimera la moyenne, donc il imprimera
la moyenne ici, puis il
recherchera un relevé de retour. Il ne le trouve pas, il n'en renverra donc
aucun. Le problème
est que si vous essayez d'
effectuer d'autres opérations
avec votre valeur moyenne, disons que ma moyenne est égale aux fonctions de moyenne
zéro, trois et quatre. OK. Et je voudrais
imprimer ma moyenne plus dix. Je m'attendrais donc à ce que cela
me donne la valeur de sept, soit la somme
divisée par trois, deux points plus
dix ou 12 points. Mais voyons ce que
cela va m'apporter. Cela me donnera donc
une erreur de type à la place. J'ai essayé d'ajouter le
type non, qui n'est aucun. Ce n'est donc pas un type. C'est le type de cette valeur. Il essaie de l'ajouter à dix. Donc, ma moyenne est aucune
car elle n'en renvoie aucune. Un interprète essaiera de l'
additionner à dix.
Ce n'est pas possible. C'est pourquoi vous
ne devriez pas utiliser l'impression. Si je le remplace
par return à la place, supprimez les parenthèses, enregistrez, exécutez, cela me donnera 12,3 C'est la moyenne plus dix. Toutefois, cela ne signifie pas que vous
ne pouvez pas utiliser l'impression
dans vos fonctions. Tu peux vraiment le faire. Supposons que vous souhaitiez simplement imprimer des informations. Étudiez-le Fonctionne, étudie
et exécute cela. Vous obtenez le résultat
de print ici, puis Python
renvoie la moyenne. Vous obtenez la moyenne, vous la
stockez ici, la sortie de votre fonction, mais la valeur de la fonction est toujours celle que vous renvoyez ici. Si vous voyez que c'est utilisez
toujours return dans vos fonctions, sauf si vous avez une raison très particulière de le faire.
33. 33. Introduction aux contifs: Nous avons défini cette fonction
dans les cours précédents, qui permet de calculer
la moyenne d'une liste. Cependant, que se passe-t-il si au lieu de passer
une liste en entrée, nous transmettons un dictionnaire ? Les notes des étudiants se
trouvent dans ce dictionnaire ici. Voyons ce qui
va se passer. Eh bien, cela indique un type d'opérande
non pris en charge. Une erreur se produira donc
avec la fonction sum car elle essaiera d'
additionner des chaînes et des entiers, et cette fonction n'est pas conçue pour traiter des
dictionnaires Il est conçu pour traiter la liste. Alors, comment pouvons-nous faire en sorte que
cette fonction
traite à la fois des listes
et des dictionnaires ? Nous pouvons le faire
en utilisant des conditionnels. Voyons comment procéder
dans les prochaines vidéos.
34. 34. Utiliser le système: Cette fonction renvoie la valeur
moyenne d'une liste, mais nous voulons la
rendre plus intelligente. Nous voulons que la fonction
renvoie la moyenne même si la
valeur d'entrée est un dictionnaire. Ainsi, lorsque la
valeur d'entrée est une liste, elle va appliquer un algorithme spécifique et
renvoyer la valeur spécifique, ce qui est un roman moyen, c'est
quand il s'agit d'un dictionnaire, elle va vérifier s'il s'agit
d'un dictionnaire et appliquer l'algorithme correspondant qui calcule la
valeur moyenne d'un dictionnaire Nous savons donc que certaines températures
du lundi divisées par la durée des températures du
lundi vous
donnent la moyenne de la liste. De même, les notes des étudiants, qui sont un dictionnaire,
ses valeurs, la somme de ses valeurs
divisée par la longueur du dictionnaire des notes des étudiants, vous
donneront la moyenne Nous voulons
donc que notre fonction
vérifie et prenne une décision. Il s'agit d'un paramètre.
Permettez-moi de le remplacer par valeur. Value est un nom plus significatif puisque ce que nous traitons ne
sera pas seulement une liste, mais il peut également s'agir d'un dictionnaire. Et puis sous la fonction, tout doit être indenté Vous pouvez voir que tout le corps
de la fonction est en retrait. Le bloc conditionnel
que je vais écrire ici sera également indenté Cela commence par, si vous vous en souvenez, nous avons utilisé une fonction de type
plus tôt dans le cours, qui renvoie le
type d'un objet. Par exemple,
il s'agit
d'un dictionnaire vide, mais c'est
toujours un dictionnaire. Donc, ce que vous pouvez faire
ici, c'est dire, je tape une valeur, opérateur de
double affectation,
ce qui signifie égal. C'est un opérateur de comparaison,
je vérifie l'égalité. S'il s'agit d'un dict, d'une colonne, entrez, et il doit être indenté
de quatre espaces Vous voyez donc qu'il s'agit d'un autre
niveau d'indentation. C'en est un pour moi, et celui-ci est pour la fonction. Ici, la moyenne
sera égale à la somme de la valeur que les valeurs divisent
par la longueur de la valeur. Il s'agit donc d'un dictionnaire, qui indique les valeurs des points et la
longueur du dictionnaire. Je dois fermer l'appel de la fonction
somme comme ça et entrer si
vous en avez fini avec I block. Donc, si c'est tout ce que
vous voulez vérifier, alors vous dites autre chose, et
nous avons ce code, qui doit également être indenté sous
s, et c'est tout Laisse-moi essayer ça. Donc,
avec les notes des étudiants, le dictionnaire comme entrée, nous avons obtenu cette valeur ici. Si j'ai utilisé les températures du lundi
dernier, cela
me donnera l'autre valeur, qui est la moyenne des températures du
lundi. C'est donc une condition « si » et «
sinon ». Mais laissez-moi l'expliquer ligne
par ligne dans la vidéo suivante.
35. 35. Une explication subséquente ligne par ligne: Alors, que se
passe-t-il dans ce script ? Permettez-moi de l'expliquer ligne par ligne. Python exécute la définition de
fonction, mais il ne fait rien car il s'agit simplement d'une définition de
fonction Python fait des choses lorsqu'
il trouve un appel de fonction, comme celui-ci ici. Nous appelons donc ici
la fonction et la valeur d'entrée
de cette fonction
sera la température du lundi, ce qui est équivalent
à cette liste. Cette liste sera
stockée dans cette variable. Une valeur est donc égale
à cette liste. Ce qui se passe, c'est que l'
interprète vérifie si le type de cette liste est périmé. Si c'est vrai, il
exécutera cette ligne ici. Je vais affecter le résultat de cette expression à
la variable moyenne. Cependant, cela n'est pas
vrai dans ce cas car le type de
liste n'est pas addictif Python n'
exécutera donc pas cette ligne. Il passera à la ligne suivante. Donc, si ce n'était pas vrai, il fera ce truc ici. La moyenne sera donc
égale à la somme de la liste divisée par
la longueur de la liste
, soit 9,26. Et c'est donc la
valeur actuelle de la moyenne, donc l'
indentation se termine ici Le retour se fait donc en dehors
du bloc I and else.
Vous pouvez le voir ici. Il faut que ce soit à l'extérieur. Le bloc conditionnel s'arrête donc
ici et la valeur actuelle de la moyenne sera renvoyée
par l'instruction return. Vous obtenez donc cette
valeur moyenne pour cette liste. S'il s'agit plutôt de la
note de l'étudiant, ce qui se passe, c'est que ce
dictionnaire sera stocké
sous forme de valeur et si le type de valeur
est dict, oui, c'est dict. La moyenne sera égale à cela. Passons donc à la signification
du dictionnaire. Et si cette condition est
vraie, elle est exécutée, et Python ignorera
tout ce qui se trouve sous autre condition. J'ai dit tout ce
qui est en dessous de ls, c'est-à-dire tout ce qui
est en retrait sous le reste. Donc, les enfants d'
Else, pour ainsi dire, le
retour de la moyenne
n'est pas un enfant de L. Il n'est pas indenté sous
ls, il est indépendant. Il possède son propre niveau d'
indentation. Donc, la valeur actuelle de la moyenne est celle-ci ici. Donc, renvoyez la moyenne, nous
renvoyons en fait la moyenne du dictionnaire.
Celui-là dedans.
36. 36. Plus d'informations sur les consommaires +: Maintenant, ce bloc conditionnel se trouve à l'intérieur d'une fonction, mais il peut également être à l'extérieur
d'une fonction comme celle-ci. Et disons trois
plus qu'un,
imprimez plus, imprimez plus sinon Imprimez, pas plus. Et tu t'amélioreras. Ce qu'un
bloc conditionnel vérifie, c'est vérifier si cela est vrai. Donc true est en fait
un autre type en Python, tout comme les entiers, les
leads et les chaînes La vérité est un autre type. C'est donc en fait l'
équivalent de si c'est vrai, imprimer plus grand, sinon,
imprimer, pas plus grand. Donc, la vérité est toujours vraie. De même, le type
trois, par exemple, égal à t renverra vrai. C'est donc ce que nous
faisons ici également. Cependant, il existe un autre moyen considéré comme meilleur en Python : instance
is instance value, et vous voulez vérifier les
dictionnaires ici comme ça Exécutez et vous obtiendrez le même résultat. Par exemple, three int vous
donnera le même résultat. Vous pouvez utiliser l'un ou l'autre, mais
pour des raisons avancées, je ne vais pas expliquer pour le
moment car c'est
hors contexte. À ce stade, bien sûr, il vaut mieux utiliser son instance. Maintenant, vous avez vu cet
exemple où j'ai utilisé si trois est
supérieur à un, et j'ai imprimé
une valeur supérieure et non supérieure. Nous pourrions également avoir
ces trois cas trois est supérieur à un, trois est égal à un et trois est inférieur à un. Dans ce cas, si un autre
ne suffit pas, il nous faut autre
chose. Je vais vous montrer comment nous
pouvons le faire dans la prochaine vidéo.
37. 37. Utilisation de l'accord Elif: J'ai ces deux
variables ici, chacune d'elles a une valeur et laissez-moi écrire une
condition qui
fera quelque chose de différent
selon que X est supérieur,
égal ou inférieur à Y. Si X
est supérieur à Y, imprimez X est supérieur à Y. Si X est égal à Y, imprimer A S est égal à Y.
Et que reste-t-il donc,
quel est le Si X n'est ni supérieur ni égal, eh bien, s. Donc, si vous avez plus de
conditions à vérifier, vous pouvez continuer avec si cela et L ceci et cela et ainsi de suite Mais si vous avez terminé,
vous pouvez utiliser Ls. Imprimer, il faut donc que X
soit inférieur à Y. Et nous obtenons donc que X est
supérieur
38. 38. Espace blanc +: Dans cette conférence, j'aimerais
clarifier l'utilisation des espaces blancs. Ainsi, quand utiliser un espace blanc, quand en utiliser plusieurs et quand ne pas utiliser d'espace blanc. Pour vous expliquer cela, j'ai ici un script
en trois parties. Chacune des parties
fera la même chose. Donc, le premier affiche A, aA et trois comme, puis B, ici, puis C. Donc le premier,
ici, j'ai saisi un, deux,
trois, quatre, cinq, six,
six, six espaces Cela fonctionnera donc.
Comme vous pouvez le voir ici, vous obtenez le résultat correctement, mais ce n'est pas une bonne pratique. Même si cela fonctionnera, n'est pas une bonne pratique car le code n'est pas très lisible. C'est donc un problème
avec ce premier bloc. Et ici, dans le deuxième
bloc, je corrige ça. L'espace ici est parfait. En gros, vous voulez
séparer les choses par des espaces. En ce qui concerne
les opérateurs tels que les opérateurs de comparaison, plus
ou moins ou de multiplication, le code fonctionnera même si vous n'avez pas d'espaces comme celui-ci. Cependant, pour rendre le
code plus lisible, il est préférable d'avoir également des espaces entre les opérateurs. L'espace entre un I et
un chiffre est indispensable. Si vous l'avez, le
code ne fonctionnera pas. Vous obtiendrez une syntaxe non valide. Cependant, aucun espace entre les
opérateurs n'est acceptable. fait que vous ayez cette
expression sans espaces pose donc un problème
dans ce bloc . Dans certains
cas particuliers, je n'utilise pas d'espaces dans les
vidéos parce que je souhaite afficher le texte
dans de plus grandes polices Je dois
donc faire des sacrifices avec moins d'espaces afin de pouvoir placer
plus de textes à l'écran. Donc, à moins que vous n'ayez une
bonne raison de le faire, veuillez utiliser des espaces, un espace. Alors voilà, c'est bon. Un espace ici, un ici et un là, puis après la colonne,
voici ce que vous devez savoir. Je vous ai déjà
parlé de l'indentation. Après une colonne, il y
a toujours une indentation. L'indentation signifie
au moins un espace. Cela fonctionnerait également comme ça, mais une bonne pratique consiste à
avoir quatre espaces, quatre. C'est exact. Et lorsque votre script contient plus de code
, il est préférable de
séparer les éléments à l'aide ligne de
rupture pour séparer les logiques. Donc, si vous avez un bloc
conditionnel, vous devez l'
écrire ligne par ligne. Il n'y a pas de ligne de démarcation comme ça. Cela fonctionnerait également, mais veuillez ne pas utiliser de lignes de rupture pour rendre
votre code plus lisible. Cependant, une fois le bloc
conditionnel terminé, vous avez un autre bloc logique Il n'
y a pas de règles claires ici, mais utilisez simplement la logique. J'ai donc pensé qu'il était bon d'avoir ces fonctions d'impression sans ligne
de démarcation entre elles. Donc ici, si j'
ajoutais une autre fonction, je tracerai une ligne de brique, puis créerai une fonction
ici et ainsi de suite. Et bien sûr, utilisez également l'indentation
pour les fonctions. Donc, après la colonne, vient
toujours l'indentation C'est plus ou moins tout à propos de
space wide space en Python.
39. 39. Plus de bases de Python : traitement des entrées utilisateur: Bienvenue dans une section
du cours. Ici, vous allez
apprendre à interagir avec l'utilisateur via
votre programme Python. Ainsi, votre programme Python peut
obtenir des informations de la part de l'utilisateur. Il peut demander à l'
utilisateur certaines entrées, et l'utilisateur entre certaines entrées, et le programme de sorte que
votre script
Python obtienne ces entrées, obtienne ces entrées, traite et donne ensuite
des résultats. Voyons donc dans cette section comment vous pouvez
obtenir l'entrée de l'utilisateur, traiter et
produire une sortie. Je vous parlerai dans la
prochaine vidéo. Merci.
40. 40. Apprendre davantage sur les entrées d'utilisateur: Comme vous le savez,
lors des conférences précédentes, nous avons défini cette fonction, et nous l'appelons ici pour qu' elle vérifie si la
température donnée est supérieure sept et qu'elle redevienne
chaude si c'est vrai et froide si la température est égale à sept ou
inférieure à sept. C'est très bien. Mais à quoi sert cette fonction dans
la vie réelle ? Par exemple, qui donne cette contribution ? En tant que programmeur,
vous écrivez cette fonction pour
quelqu'un d'autre afin qu'il puisse l'utiliser. Mais vous ne vous
attendez pas à ce qu'ils modifient le fichier Python comme s'ils avaient un éditeur de
code Visual Studio ou d'autres éditeurs. Ensuite, vous ne pouvez pas
simplement leur dire d' aller à la ligne sept et de modifier la valeur, puis
d'exécuter ce code pour obtenir des sorties différentes
en fonction de la valeur. Alors, pourquoi ne pas inviter l'
utilisateur à saisir une valeur ? Ensuite, l'utilisateur
saisit la valeur, puis nous obtenons cette valeur
et la puis nous obtenons cette valeur
et la traitons dans notre fonction. Dans ce cas, nous obtenons cette valeur
et la mettons ici dans
l'appel de fonction. Faisons-le. Nous y
avons donc une fonction. Nous voulons obtenir une
valeur de la part de l'utilisateur. Pour obtenir une valeur de l'utilisateur, utilisez la fonction de saisie. La fonction d'entrée
reçoit un argument, et c'est le message que
vous souhaitez afficher à l'utilisateur sur la ligne de commande. Par exemple, entrez
Entrez la température. Mettez-y peut-être une colonne
si vous le souhaitez, vous pouvez écrire ce que vous voulez. Laissez-moi enregistrer le script
et l'exécuter. Vous voyez maintenant que je l'ai exécutée, et cette fonction de saisie bloque l'exécution d'
un programme et attend l'
entrée de l'utilisateur sur la ligne de commande Donc, si je saisis
ici quelque chose comme sept, dans ce cas, ce qui
va se passer, c'est que cette expression
sera égale à sept. Cependant, comme nous
n'avons rien fait ici, rien ne se passera
si nous imprimons cette valeur. Par exemple, sept, vous obtiendrez la valeur de
celle-ci, qui est sept. Vous pouvez donc y mettre
tout ce que vous voulez. Bonjour, et vous vous
défoncez, c'est imprimé. Ce que out suggère, c'est qu'au lieu
de l'imprimer, vous devriez d'abord le
mettre dans une variable. Cela le
rendrait plus lisible. Utilisez donc votre entrée,
puis vous pourrez faire
ce que vous voulez avec cette variable, comme la réduire. Imprimez-en donc la
version minuscule. Salut, lui. Donc, vous le saluez en
lettres minuscules. Bien, revenons à notre fonction. Permettez-moi maintenant d'essayer d'imprimer sortie de
la fonction météo avec une valeur de,
eh bien, entrée par l'utilisateur, quelle que soit
la valeur saisie par l'utilisateur en entrée. Je vais donc exécuter le programme maintenant. Le programme me demandera
de saisir la température. Le programme me demandera
de saisir une température, l'exécution est
donc
gelée à ce stade. Cette ligne n'a pas encore
été exécutée. Il sera exécuté après avoir donné une valeur ici
et appuyé sur Entrée. Alors laissez-moi en noter six. Voyons ce que nous
allons obtenir cette fois. Nous avons un message d'erreur. Lisons
attentivement l'erreur. Il s'agit du fichier Basics point PY, qui est notre fichier, d'accord ? L'erreur s'est d'
abord produite sur cette ligne ici. Donc ici, imprimez les
conditions météorologiques, les entrées de l'utilisateur. Lorsque Python a essayé d' exécuter cette ligne,
il n'a pas pu le faire. Et pourquoi ? Eh bien, vous
devez suivre l'erreur. Donc, toujours Line Basics, c'est la deuxième ligne. Cette ligne. Ainsi, lorsque Python a
essayé d'exécuter cette ligne, cette ligne a appelé d'autres
éléments du script. Et l'erreur était
dans cette deuxième ligne. Ainsi, lorsque l'appel de fonction
a essayé d'appeler la fonction, il a essayé d'exécuter cette ligne. Donc, s'il s'agit de la température, elle a
essayé de comparer cinq à sept. Et puis il a eu
cette erreur lorsqu'il a essayé de comparer
cinq à sept. Donc, quand il a essayé
d'exécuter cette ligne, en d'autres termes,
voyez ce qu'il dit. Erreur de saisie. Cet opérateur n'est pas pris en charge entre les instances
de chaîne et d'entier. Donc string et int, ce
qui signifie que c'était une
chaîne, et c'était un int. Notre saisie utilisateur était donc que
sept ont été transmises ici, et cela a été
comparé à sept. Il semble que notre entrée, l'utilisateur, était une
chaîne, et c'est vrai, et c'est ce que
j'essayais de faire valoir ici parce que quelle que soit l'entrée que l'utilisateur écrit ici, même s'il s'agit d'un nombre, Python la
convertira en fait en chaîne. Donc, sept, en fait,
seront convertis en une chaîne comme avec des guillemets ou des
guillemets doubles en Python. Mais il existe une solution simple. Ce que vous pouvez faire, c'est convertir cette valeur, qui est une chaîne de sept, vous pouvez la convertir en un flottant. Fais attention aux parenthèses. Donc, float est une fonction. Il y a une
parenthèse ouverte ici et une
parenthèse fermante La saisie est également une fonction avec ses propres parenthèses ouvrantes et
fermantes Alors maintenant, si je fais ça, température de cinq, je vais obtenir la bonne réponse. Et permettez-moi d'être
transparent avec vous. Encore une fois, saisissez l'entrée de l'utilisateur
, entrez une entrée. Permettez-moi maintenant d'imprimer
le type d'entrée utilisateur. Exécutez et six, vous verrez que six est
en fait une chaîne. C'est pourquoi je suis en train de le
convertir flotteur pour que six cette fois
soient réellement un flotteur, qui ressemble à ceci. Vous pouvez imprimer
le nombre réel ici, le nombre converti réel, la version flottante du
nombre, exécuter à nouveau, 6.0. Vous pouvez également utiliser int
ici si vous le souhaitez, six, donc vous obtiendrez six, ce qui est égal à
6,0, bien sûr. Mais les chars seraient un meilleur choix car
je peux vous montrer pourquoi Si vous entrez 6.3, par exemple, il ne pourra pas le
convertir car
cela revient à faire Int, 6.3 en double code. Donc Int sera confus, il ne saura pas comment le convertir
en un entier. Il convertit toutefois six s'il s'agit d'un simple six
sans décimale Float convertira, désolé, six
et 6.3. C'est ainsi que vous utilisez les entrées
utilisateur en Python.
41. 41. Formatage de chaîne +: Comment créeriez-vous un
programme qui se comporte ? Ainsi, il
vous demande votre nom, et vous entrez votre nom en tant qu'utilisateur, et le programme vous accueillera affichera un message « bonjour et votre nom,
ainsi qu' un point d'exclamation
à la fin de la chaîne Eh bien, tu le fais
avec deux choses. d'abord, vous avez besoin de la fonction de saisie pour demander à l'utilisateur
de saisir des informations,
puis vous avez besoin d' un formatage de
chaîne. Voici à quoi
ressemble le formatage des chaînes en Python. Donc, dans la première ligne, nous
obtenons l'entrée utilisateur, stockons sous forme de
chaîne dans l'entrée utilisateur, puis nous créons une variable. Dans cette variable, nous allons stocker le message que nous sommes en train de construire. Et voici une expression de
formatage de chaîne. Nous voulons donc imprimer
hello, puis avoir un espace, puis nous voulons
imprimer le nom de l'utilisateur, donc la valeur saisie par
l'utilisateur. Et ici, les pourcentages sont
une chaîne spéciale en Python. Ensuite, nous avons un
point d'exclamation, qui est une chaîne normale Et une double citation.
C'est donc spécial ici. Ensuite, après la chaîne, vous ne voulez pas mettre de virgule
, vous devez utiliser cet opérateur de pourcentage,
puis utiliser une variable Maintenant, la valeur de cette
variable remplacera
le pourcentage S.
Donc, ce que vous obtenez place, c'est bonjour et
votre nom. Maintenant, cette méthode de formatage de
chaîne
utilisant ce pourcentage S ici et
l'opérateur de pourcentage ici est également valide pour Python 2
et Python 3. Il existe maintenant une autre méthode qui a été introduite dans Python 3.6. La méthode que je vais présenter
maintenant ne fonctionnera donc pas si vous
l'exécutez avec une version de Python
antérieure à 3.6. La méthode est la suivante. Stockons à nouveau la
chaîne entière dans une variable Ce sera
donc une chaîne avec guillemets
doubles ou des
guillemets simples, selon votre préférence. J'utilise des guillemets. Alors bonjour, et vous utilisez
ces crochets. Et à l'intérieur,
vous mettez le nom de la variable, quelle valeur souhaitez-vous mettre
à cet endroit ? Maintenant, ce n'est pas tout. Donc, si je enregistre, que j'exécute
le code et que je dis « Ajoutez-le », il
renverra cette chaîne. Nous devons donc faire autre
chose ici. Ce que nous devons faire,
c'est ajouter un préfixe F juste à
l'extérieur du code Voici donc la chaîne. Ce
F sort du code. Si je sauvegarde le script
, exécutez-le à nouveau, écrivez mon nom, et maintenant nous
obtenons le résultat attendu. Notez que nous avons deux variables portant
le même nom ici, et ce qui
se passera, c'est que le premier Python exécute un script
de haut en bas, donc il exécute la première ligne, il exécute la deuxième ligne, donc il stockera hello audit
dans la Mais ensuite, nous sommes en train de
remplacer cette variable. Dans ce cas, la chaîne
sera écrite dans cette variable de
message. Ainsi, où que vous créiez ici, quel que soit l'objet
que vous stockez ici
dans la variable, cet objet sera
l'objet actuel auquel cette variable
fera référence. Dans ce cas, nous
imprimons l'objet que
vous avez créé ici, qui se trouve être Hello Audit. Lequel devriez-vous utiliser ? Eh bien, si vous pensez
que votre projet sera exécuté avec
Python 3.6 ou supérieur, utilisez cette version plus agréable C'est plus lisible. Si
vous pensez que votre projet et vos fichiers Python seront exécutés avec Python deux,
3.1, deux ou trois, vous pouvez
opter pour cette méthode. Parce que parfois,
lorsque vous déployez votre script sur un
serveur, par exemple, supposons que vous souhaitiez exécuter un script tous les jours
à une certaine heure, que
vous souhaitiez le déployer
sur un serveur Web et que ce serveur Web dispose d'une version spécifique de Python. Parfois, cette version
est Python 2. Dans ce cas, vous devez
ajuster vos scripts pour qu'ils fonctionnent avec Python 2
et que le serveur Web, le serveur et l'
ordinateur exécutent votre script avec une version
particulière de Python. Nous y reviendrons
plus tard lorsque nous déploierons les applications Web. Donc, pour l'instant, ce
sont les deux méthodes de formatage des chaînes.
42. 42. Formatage de chaîne avec plusieurs variables +: Précédemment,
je vous ai expliqué comment insérer
dynamiquement la valeur
d'une variable dans une chaîne. Nous avons donc construit ici hello et la valeur
saisie par l'utilisateur dans la fonction de saisie. Cela a donc fonctionné avec
Python deux et trois. Cela fonctionne avec Python
3.6 et les versions ultérieures. Maintenant, que faire si nous voulons insérer plus d'une valeur dans
la chaîne, comment faire ? Par exemple, supposons que
la première fonction de saisie nous demande le nom et la seconde le nom
de famille. Appelons le
nom de cette variable et celui-ci le nom de famille. Pour utiliser cette version du formatage de chaîne
avec deux variables, vous devez procéder comme suit. Au lieu d'une seule variable, vous devez utiliser crochets, puis
saisir toutes les variables que
vous souhaitez insérer dans le nom et
le prénom de la chaîne dans ce cas. Maintenant, si vous l'exécutez, vous allez obtenir une erreur. Vous devez donc faire
quelque chose de plus là-bas. Disons audit. Ulce et
tu as une erreur de frappe Tous les arguments ne sont pas convertis
lors du formatage des chaînes, ce qui signifie que les arguments
sont le nom et le prénom. pas tous été convertis
car seul le nom a été converti car vous n'aviez qu'
un seul espace réservé
ici, les pourcentages Vous souhaitez avoir
deux espaces réservés, un pour le nom de famille, deux Si vous l'exécutez,
nous obtenons une autre erreur, mais cela
n'est pas lié à cette ligne ici. Cette ligne est parfaitement fine. Cela fonctionne. Pourquoi est-ce que ça marche ? Eh bien, parce que vous pouvez voir
que l'erreur s'est produite. C'est donc ici que commence le
traçage. Vous voyez que l'erreur
se produit dans filebsics point i, qui est le fichier où se trouve le code à la ligne cinq, ce qui signifie qu'au-dessus de la ligne
cinq, tout va bien Cette ligne a donc passé avec succès la vérification des erreurs.
Il est exempt d'erreur. C'est donc la ligne
qui contient l'erreur, et c'est une erreur de nom, saisie
du nom par l'utilisateur n'est pas définie. Cette entrée utilisateur ici
n'a donc pas été définie dans notre code. Nous n'avons pas de variable
portant ce nom. Nous l'utilisons simplement ici, mais nous ne l'avons pas défini.
Et voici un truc. Si vous ne souhaitez pas
exécuter cette ligne, vous pouvez la commander. Donc, en ajoutant ce symbole ici, Python ignorera cette ligne. Il le traitera comme un commentaire. Pas sous forme de code. Enregistrez donc
le script, exécutez-le. Entrez votre entrée en tant qu'utilisateur, et c'est le résultat
que nous obtenons cette fois. C'était donc un bon exercice
sur la façon de corriger les erreurs. Revenons maintenant à nos opérations de
formatage de chaînes. Voyons maintenant comment cela va
fonctionner avec deux variables. La saisie par l'utilisateur n'est donc plus
une variable. Nous voulons utiliser le nom. Alors bonjour, nom, puis nous
voulons avoir un espace ici. Il s'agit donc d'un espace blanc. Donc nom, espace blanc, prénom. Et c'est aussi simple que cela. Exécuter. Et vous obtenez le
résultat hello ou suche C'est donc la variable de message, la chaîne de la variable de
message. Ainsi, vous pouvez mettre autant de
variables que vous le souhaitez. Par exemple, quoi de neuf ? Quand peut être une variable. Aujourd'hui, la chaîne d'aujourd'hui fait
partie de la variable wind, la variable win
sera remplacée ici par la valeur qu'
elle possède actuellement, qui est aujourd'hui, exécutez-la. Et c'est ainsi que cela fonctionne. Et c'est ce que vous
devez savoir sur formatage des
chaînes en Python.
43. 43. Introduction aux boucles For +: Bonjour, bienvenue dans
cette nouvelle section. il y a des lacunes dans
vos connaissances en Python jusqu'à
présent en ce qui concerne les bases de Python que vous avez apprises
tout au long de ces sections, alors dans cette section,
j'essaie combler ces lacunes afin que vous
sachiez ce qui se passe. Nous allons donc le faire en
assemblant toutes les pièces en créant
une application plus grande avec les blocs de code que vous avez appris afin que
tout commence à plus de sens et que vous
sachiez comment créer des programmes
concrets. Il s'agit donc de la première étape vers la création de programmes
concrets. Et ce n'est pas vraiment un programme
concret, car nous allons donner d'autres exemples
concrets dans les sections suivantes. C'est donc juste pour vous
assurer que vous avez bien
appris les concepts de base de
Python. Commençons donc par la
vidéo suivante. Je t'y verrai.
44. 44. Comment et pourquoi utiliser des boucles pour les boucles: Dans cette conférence,
j'expliquerai l'un des concepts
les plus importants
de la programmation Python, savoir
les quatre boucles. Je vais utiliser un exemple, afin que vous compreniez
non seulement la syntaxe, comment écrire une boucle à quatre boucles, mais aussi pourquoi
vous devriez utiliser quatre boucles. Disons que nous avons ces
températures pour lundi. Peut-être que cela a été enregistré
le
matin à midi et cela
le soir Comment pouvons-nous créer un
programme qui imprime les valeurs arrondies
de chacune de ces valeurs ? Comme ça. Ce
serait donc le résultat attendu. Vous pouvez voir ici
que vous obtenez neuf, car 9,1 arrondir à un
nombre entier serait neuf, puis 8,89 à nouveau et 7,68 Comment pouvons-nous le faire ?
Nous devons donc trouver un moyen d'accéder aux
éléments de la liste. Et vous connaissez déjà
une méthode pour accéder aux éléments d'une liste, qui utilise des index. Donc, si vous voulez le
premier, vous devez utiliser zéro. Vous voulez donc
imprimer le premier élément, qui, cependant,
imprimerait 9.1. Vous voulez la
version ronde de 9.1, ce qui est peut-être utile
pour voir quelles sont les fonctions dont
vous disposez. Comme ça. Alors jetez un coup d'œil ici et
vous pourrez
trouver un surround rond, ce qui signifie que vous
voulez arrondir un nombre, surround 9.1, vous obtenez neuf. Et dans notre cas, le
nombre que nous
aimerions arrondir est cette expression. Nous voulons donc appliquer ici
et mettre cette expression
entre parenthèses , donc c'est le numéro 9.1 Alors essayez-le avant d'
écrire le code entier, et c'est très bien. Fais-le encore une fois. Mais avec un et avec deux. Exécutez, et vous obtenez
le résultat attendu. OK, c'est bon. Cela fonctionne. Mais si vous aviez une longue
liste de 100 éléments, vous vous retrouveriez avec
100 lignes de code. Eh bien, je peux vous montrer
comment faire cela avec seulement deux lignes de code à la place.
C'est comme ça que tu le fais. Vous utilisez une boucle à quatre
pour la température, choisissez un nom pour une variable. Pour la température, vous pouvez voir comment ces mots clés
sont mis en évidence. Ce sont donc en fait des mots réservés à
Python. La température n'est qu'une variable. C'est pourquoi il est en noir. Pour ce qui est des températures du lundi,
utilisez une colonne, et que se passe-t-il
après une chronique dont je vous ai parlé dans la vidéo précédente ? Eh bien, l'indentation, qui
se produit automatiquement dans le
code de Visual Studio pour les espaces Que voulons-nous faire pour
chacune des températures ? Eh bien, nous voulons imprimer la forme
ronde de la température. Juste comme ça, enregistrez, exécutez, et voici le résultat. Ainsi, en seulement deux lignes de code, nous pouvons exécuter des commandes pour tous
les éléments d'un tableau, qui est une liste dans ce cas, mais il peut également s'agir d'une chaîne. Par exemple, pour une lettre
dans Hello Print Letter. Et Hello est imprimé là-bas. Et bien sûr, tu peux y faire
ce que tu veux. Titre, obtenez le premier
élément, qui est une lettre. La lettre sera donc mise en
majuscule comme ça. Permettez-moi donc de revenir une fois de
plus ces deux lignes pour
leur expliquer ce qu'elles signifient. Donc, ce que fait la boucle, c'est la température dans les températures de
Monte Vous créez
donc une variable, et la boucle
passe en revue tous ces éléments
un par un avec des boucles. Ainsi, lors de la première itération, la température sera égale, donc la variable
sera égale à 9,1 Par conséquent, la fonction
arrondira 9.1 et l'
affichera ici. Et s'il y a
plus de lignes ici, par
exemple, imprimez, c'est fait. Si vous faites cela, vous voyez, s'il y a une autre ligne
, par exemple après neuf, cette
ligne est exécutée, donc la chaîne
est imprimée. S'il y a plus de lignes, celles-ci seront exécutées. S'il n'y a plus de lignes, l'exécution
recommence en haut
des quatre boucles, et la boucle obtient le
deuxième élément cette fois. La température
sera donc cette fois égale à 8,8. Et la même chose
se reproduit, arrondissez-le, imprimez-le. D est également imprimé, passe à la
ligne suivante, 7.6, etc. Ensuite, après 7.6, la boucle essaie de
voir s'il y a d'autres éléments dans ce tableau. S'il n'y a plus d'éléments, ce qui se passe, c'est que
ce bloc indenté, l'exécution de ce
bloc, se termine et Python passe aux lignes suivantes pour exécuter ce qui reste
dans le script
45. 45. Comment faire une boucle dans un dictionnaire +: Vous avez vu qu'il est facile de parcourir
une liste en boucle. Tu le fais juste comme ça. Cependant, si vous
avez un dictionnaire, il est un peu plus complexe. Encore une fois, vous en faites quatre, choisissez un nom de variable
dans le dictionnaire, vous voulez itérer, mais ici vous voulez spécifier ce que
vous voulez itérer Voulez-vous itérer sur des
éléments, des clés ou des valeurs ? Donc, si vous souhaitez
itérer sur des éléments, vous devez appliquer ces éléments à cet endroit N'oubliez pas la
colonne et l'impression. Génial. Voyez ce qui se passe. Vous obtenez donc ces articles
imprimés sous forme de tuple. Ce sont des tuples. Donc, la clé et la valeur
pour chaque itération. Si vous vouliez les clés à la place, vous suffit d'y écrire des clés et
si vous vouliez les valeurs, vous écrivez simplement ces valeurs
et vous obtenez les valeurs. C'est ainsi que vous
parcourez les dictionnaires.
46. 46. Comment et pourquoi utiliser les boucles While: Vous apprenez donc qu' une boucle à quatre itérations
parcourt un conteneur, qui peut être une liste
, une chaîne ou un tuple, et que la boucle se termine lorsque le conteneur est épuisé Ainsi, par exemple, il
en imprime un, deux et trois. Et lorsqu'il n'y a plus d'
objets, la boucle se termine. Donc, une boucle à quatre boucles fonctionne jusqu'à ce
qu'un conteneur soit épuisé, et une
boucle de fil fonctionne tant que
cette condition est vraie, laissez-moi l'exécuter et voir
ce qui va se passer Vous verrez donc que
11 est
imprimé tout le temps. Donc, si je fais défiler la page vers le haut, je ne pourrai pas trouver où était
le point de départ, car il y en
a maintenant un
million d'exemplaires imprimés chaque fraction de seconde. Donc, ce qui se passe ici, c'est
qu'une boucle Y est un mot-clé, suivi d'une condition. Dans ce cas, la
condition est que A soit supérieur à
zéro, ce qui est vrai. Donc A est en fait trois, cela signifie que cette
condition est vraie. Et tant que cette
condition est vraie, elle sera imprimée. Ainsi, dans le cadre de la boucle de Wile, vous pouvez effectuer autant d'
opérations d'actions que vous le souhaitez Par exemple,
permettez-moi d'interrompre cela avec Control C sur votre terminal, puis d'ajouter une autre ligne ici, d'en imprimer deux, de sauvegarder, d'exécuter. Donc, un, deux, un, deux, un, 21, deux sont imprimés. OK, je vais interrompre ça. À présent, le taux d'impression
de ces
numéros dépend de la vitesse du processeur de votre
ordinateur. Ainsi, plus votre processeur est rapide, plus vite vous exécuterez
les actions ici, ces opérations étant exécutées. Maintenant, bien sûr, cela
sera toujours
vrai pour toujours, car il s'agit simplement d'une déclaration statique
d'une variable ici, donc personne ne la modifie ici. Par conséquent, la condition
sera toujours vraie. Vous pouvez voir dans le site
Python que lorsque vous vérifiez que quelque chose de trois est
supérieur à zéro, vous devenez vrai. C'est donc fondamentalement vrai et vous le
verrez parfois comme ça. Supprimez donc simplement la première ligne. Sortez d'ici, réexécutez
le code. Encore une fois, la même chose se produit parce que le vrai est toujours vrai. Cependant, ce n'est pas ainsi les boucles
sauvages sont utilisées
dans le monde réel. Cela n'a aucun sens de
vérifier si c'est
vrai et d'imprimer
quelque chose tout le temps. Permettez-moi donc d'expliquer
Will Loops dans un meilleur
exemple dans la vidéo suivante.
47. 47. Boucles avec entrée utilisateur: Nous avions donc un script qui
vérifie si a est supérieur trois et affiche ces
opérations si c'est vrai. Permettez-moi maintenant d'utiliser
un exemple plus concret. Créons ici une
variable appelée username et donnons-lui
la valeur d'une chaîne vide. Et ici,
vérifions si le nom d'utilisateur est différent
du nom d'utilisateur réel, supposons
qu'il s'agisse de Pi Pi. Maintenant, bien que cela soit vrai, nous voulons demander à l'utilisateur
de saisir un nom d'utilisateur. Voyons donc ce qui
va se passer. Entrez le nom d'utilisateur,
nous avons reçu l'invite ici par la fonction de saisie. Pi. Non, nous obtenons à nouveau le nom
d'utilisateur Enter. Pi Pi, peut-être. Non Pi Pi. Et donc cette fois,
nous n'avons plus de message. L'exécution du programme, alors laissez-moi vous expliquer
ce qui s'est passé ici. Nous avons déclaré la chaîne vide
à la variable username. Ensuite, nous
vérifions ici si la valeur de la variable nom d'utilisateur
est différente de celle de Pi Pi. Dans ce cas, c'est différent car il s'agit d'une chaîne d'entrée, et il s'agit de Pi Pi. Par conséquent, la première
itération aura lieu, qui est celle-ci ici Ainsi, dans la première itération, nous demandons à l'utilisateur
de saisir certaines entrées C'est ce qui s'est passé ici
lors de la première itération. Donc, entrer le nom d'utilisateur
a été demandé, et nous avons entré Pi. Pi est maintenant une chaîne qui
sera assignée au nom d'utilisateur. Et la boucle passe par
la deuxième itération. Donc, bien que le nom d'utilisateur soit
différent de Pi Pi, qui est vrai dans ce cas, car nom d'utilisateur pour le moment, c'est Pi, la chaîne Pi. Pi est donc différent de Pipi. Par conséquent, continuez et exécutez à nouveau le corps de
la boucle de fil. C'est celui-ci ici. Demandez donc une fois de plus
le nom d'utilisateur à l'utilisateur. Donc nom d'utilisateur, l'utilisateur
saisit Pi P cette fois. La boucle repasse par la tête
depuis le début et vérifie si Pi P
est différent de Pipi C'est vrai, retrouvez
le nom d'utilisateur. Dans ce cas, nous avons obtenu Pi Pi. Le nom d'utilisateur est donc Pipi maintenant. La boucle recommence
alors que le nom d'utilisateur est différent de
Pi Pi, dans ce cas, ce n'est pas vrai
car dans ce cas, le nom d'utilisateur est égal à Pi Pi. Donc Pi Pi. Est-ce différent du Pi Pi ? Non, c'est faux. Ainsi, lors de la troisième itération, ce sera égal à faux, et c'est à ce moment-là que la boucle se termine Ainsi, quatre boucles se terminent lorsque le
conteneur est épuisé et une boucle se termine lorsque la
condition est fausse.
48. 48. Boucles tout en longueur, rupture et poursuite +: Dans la vidéo précédente,
nous avons créé ce code. Le code est le suivant. Nous assignons la chaîne vide
à la variable username. Ensuite, nous construisons une boucle de fil qui vérifie si cette
condition est vraie. Si la condition selon laquelle le nom d'utilisateur
est différent de Pi Pi, si le nom d'utilisateur est
différent de Pi Pi, cela va être exécuté. Dans la première itération, le
nom d'utilisateur est en fait différent de Pipi car le
nom d'utilisateur est une chaîne vide. Par conséquent, cela
va être exécuté. Le programme
demande le nom d'utilisateur. Si l'entrée est A, par exemple, A sera attribué au nom d'utilisateur puis la deuxième
itération commencera, alors que A est
différent de Pi Pi, ce qui est vrai Cela va
être exécuté à nouveau. C'est pourquoi cette
invite s'affiche à nouveau ici. Si vous entrez Pi Pi, la boucle se termine car
à la troisième itération, Pipi n'est pas différent de Pipi, cela
ne se produira donc Maintenant, il existe une autre
façon de le faire en utilisant
une instruction break au lieu
de faire ce qui précède,
laissez-moi le faire d'une autre manière, encore une fois, en utilisant la boucle Wile Mais cette fois, vous voulez
vérifier si c'est vrai, alors que c'est vrai, ce qui est toujours vrai, afin que la boucle s'
exécute toujours jusqu'à ce que nous l'interrompions. Donc, bien que cela soit vrai, vous
voulez demander le nom d'utilisateur. Entrez, entrez le nom d'utilisateur. Maintenant, nous voulons créer un conditionnel ici pour vérifier
l'intérieur de la boucle Wile Si le nom d'utilisateur est Pip Pi, rompez la boucle, sinon, continuez Voyons ce que
cela va nous apporter. Python trois, B ce Pi. C'est le
script de droite. Entrez le nom d'utilisateur. Hum, non, non. Pippi ? Oui Laisse-moi réessayer. Si vous entrez Pi Pi tout de suite, la boucle se termine à
nouveau Je préfère cela
en fait, car cela vous
permet de mieux contrôler le flux
de travail. C'est donc ce qui se passe ici. Bien que cela soit vrai, ce qui
est toujours vrai. La première itération
se produit donc parce que true est vrai, et nous demandons le nom d'utilisateur
lors de la première itération Donc, dans la première itération, le nom d'utilisateur était ASFD Donc, si ASFD est égal à
Pipe Pi, rompez la boucle. Ce n'est pas le cas car l'
ASFD est différent du pipi. Cela ne
se produira donc pas car cette
condition est fausse. Sinon, elle sera exécutée. Poursuivre. Maintenant
, continue déplace
à nouveau le contrôle
en haut de la boucle. C'est ainsi que vous utilisez break
and continue in while loop. Les deux méthodes sont correctes, mais je trouve cela
plus lisible.
49. 49. Créer un programme dans Python: Bonjour, bienvenue dans
cette nouvelle section. il y a des lacunes dans
vos connaissances en Python jusqu'à
présent en ce qui concerne les bases de Python que vous avez apprises
tout au long de ces sections, alors dans cette section,
j'essaie combler ces lacunes afin que vous
sachiez ce qui se passe. Nous allons donc le faire en
assemblant toutes les pièces en créant
une application plus grande avec les blocs de code que vous avez appris afin que
tout commence à plus de sens et que vous
sachiez comment créer des programmes
concrets. Il s'agit donc de la première étape vers la création de programmes
concrets. Et ce n'est pas vraiment un programme
concret, car nous allons donner d'autres exemples
concrets dans les sections suivantes. C'est donc juste pour vous
assurer que vous avez bien
appris les concepts de base de
Python. Commençons donc par la
vidéo suivante. Je t'y verrai.
50. 50. Énoncé de problème dans Python: Bonjour, c'est Arditi, votre professeur. Si vous suivez les
vidéos précédentes du cours, cela signifie
que vous apprenez les
bases de Python, à savoir
les
variables, les types de données, les
fonctions, les conditionnels, les
boucles et les entrées utilisateur C'est le cœur de Python. Quelle que soit l'application que
vous allez créer, qu'il s'agisse d'
un script de science des données , d'une application Web ou de quelque chose qui
automatise vos tâches quotidiennes, vous aurez presque toujours besoin
de tous ces éléments fondamentaux Avant de passer aux fonctionnalités
plus avancées de
Python dans cette section, prenons le temps de
méditer sur ce que nous avons appris Par méditation,
je veux dire réfléchir un
peu à ces principes fondamentaux
que vous avez appris. Et le meilleur moyen d'
y parvenir est de créer un programme qui utilise toutes les fonctionnalités de
base de Python. Sans vous faire perdre
plus de temps, laissez-moi vous présenter le programme
que nous allons créer. J'ai enregistré le code dans un script. Je ne vais pas
vous montrer le code tout de suite. Je vais
vous montrer le résultat. Donc, lorsque j'exécute le code, je reçois un message
imprimé, je dis quelque chose. Il s'agit donc d'une invite qui
demande l'entrée de l'utilisateur. Disons qu'il fait
beau aujourd'hui. Entrez dans le programme,
demandez à nouveau la saisie. Quelle est la météo ? Il n'y a que
quelques nuages ici. Entrez et maintenant, si vous
voulez terminer ce programme, vous devez appuyer sur la barre oblique inverse, appuyer sur Entrée, et
voici le résultat Ce programme vous demande des informations. Vous entrez l'entrée encore et encore et dès que vous
entrez se termine par une barre oblique inverse, le
programme s'arrête
et les phrases
que vous avez saisies sont en majuscules La première lettre
est donc en majuscule, et un point est ajouté à ce
genre de phrases, et un point d'interrogation s'il s' agit d'une question comme
celle-ci ici Et pareil pour ce qui est des règles. Et voici notre fil secret. Il s'agit donc d'une barre oblique inverse d. Lorsque
le programme obtient cette chaîne, cela signifie
qu'il est temps de
terminer le programme et d'
obtenir le résultat Ce n'est donc pas l'une des
dix applications du monde réel que je promets de
développer dans ce cours. La première application
arrive plus tard dans le cours, mais il s'agit simplement de mettre en pratique
ce que vous avez appris jusqu'à présent. Donc, même s'il s'agit
d'un programme inutile, évidemment, qui en
aura besoin, mais cela
vous aidera beaucoup à savoir comment utiliser les conditions, les fonctions
et les boucles. Donc, s'il vous plaît, faites-le une
fois cette vidéo terminée J'aimerais
que vous
preniez le
temps de réfléchir à la
manière dont vous pouvez résoudre le problème, manière dont vous pouvez coder ce programme.
Vous connaissez maintenant le résultat. Essayez de réfléchir et
essayez peut-être d'écrire du code. Pourquoi pas ? Je ne m'attends pas
à ce que tu résolves ça en fait. Mais quand même, si vous vous mettez
en mode résolution de problèmes, puis
que vous
voyez ma solution dans les vidéos suivantes, dans les vidéos suivantes, je vais
vous expliquer le code étape par étape,
comment le créer. Alors tu vas
avoir un moment ah. Et c'est à ce moment-là que vous mémorisez mieux les choses
parce
que dans votre esprit, c'était quelque chose que vous
deviez savoir lorsque vous essayez de comprendre
comment vous pouvez le faire. Ensuite, vous voyez comment cela se fait, puis vous l'apprenez mieux. Alors oui, je
vous parlerai dans les prochaines vidéos.
51. 51. Approche du problème: Génial. Allons-y et
développons ce programme dès maintenant. Regardons donc le résultat, car lorsque
vous créez un programme, vous voulez avoir
une vision très claire de ce à quoi
ressemblera le résultat, puis essayez de diviser la
grosse tâche en tâches plus petites. Par exemple, supposons que ce programme demande des entrées aux utilisateurs à maintes reprises. Et il reçoit des
chaînes dans ce format de ligne, sans point avec une petite
lettre au début. Et puis si l'utilisateur
saisit la barre oblique inverse d, le programme connaît cette chaîne
et renvoie les sorties Le programme est donc en train mettre
ces chaînes en majuscules La première lettre est donc en majuscule, et elle ajoute un point
ou un point d'interrogation Maintenant, vous voyez qu'il s'agit d'une liste
d'expressions, ici de phrases. Mais comme je l'ai dit, essayez de diviser la tâche en tâches
plus petites. Essayez donc de diviser la sortie
en plus petits morceaux de sortie. Dans ce cas, ne
réfléchissez pas à la manière de
générer cette liste, mais à la manière d'obtenir
le résultat minimum viable. Dans ce cas, voici comment obtenir une chaîne de ligne comme
celle-ci ici et comment la convertir en cette chaîne. Et la meilleure façon de le faire est d'utiliser une fonction pour définir votre propre fonction qui obtient cette chaîne et produit
celle-ci ici. La première chose à faire est donc de
créer une fonction. C'est ce que nous allons faire dans la vidéo suivante.
52. 52. Créer la fonction de créateur: Commençons donc par créer
une fonction qui transforme ce type de chaînes
sous cette forme. Définissez, appelons
ce générateur de phrases. Il crée donc des phrases
à partir de chaînes de lignes. Appelons les chaînes des phrases. Expression. Donc, il y
a une phrase et d'abord, vous voulez mettre
cette phrase en majuscule, n'est-ce pas ? pouvez donc créer une variable
dans cette fonction, appeler en majuscules
ou où vous le souhaitez, prononcer une phrase et utiliser la méthode des chaînes en
majuscules En attendant, vous pouvez utiliser votre
shell interactif Python pour essayer des méthodes afin de voir comment elles fonctionnent
tout créant une fonction
dans votre éditeur. Par exemple, disons que je souhaite mettre
cette chaîne en majuscule Tout d'abord, j'aimerais
essayer le fonctionnement de la
méthode des majuscules Alors maintenant, je suis sûr que la première
lettre est en
majuscule, donc c'est bon Non, nous voulons ajouter
ou concaténer un point ou un point d'interrogation
à ces phrases Mais cela dépend. Nous
parlons donc d'une condition ici. Le programme doit
décider de mettre un ou
un point d'interrogation
à la fin de la phrase. Allons-y et
construisons la condition. Si la phrase. Alors, comment faire la
différence entre les questions et les phrases simples
qui se terminent par un point ? Eh bien, il peut y avoir
différentes méthodes, donc cela dépend
du programmeur et sophistication avec laquelle
vous souhaitez le faire. Mais restons simples. Et disons que les questions
sont toutes celles qui commencent par des mots
interrogatifs tels que comment, pourquoi et quoi Et vous pouvez vérifier cela disant : « Comment allez-vous encore ? » Vous pouvez utiliser la méthode
start with, qui obtient un tuple en entrée Donc, un tuple et à l'intérieur de l'outil, vous pouvez avoir des chaînes
dont vous pouvez vérifier si la phrase commence par l'une de ces chaînes
à l'intérieur de ce Alors disons comment, quoi ? Et pourquoi. Cela redeviendra donc vrai, car comment
allez-vous commence par l'une
de ces chaînes. Un autre scénario, s'il fait beau,
vous allez vous tromper. Nous pouvons donc en faire usage
et dire si phrase commence par Comment ? Quoi ? Et pourquoi ? Vous pouvez le faire, ou encore mieux serait d'obtenir ce tuple et de l'
enregistrer dans un très puits Disons des interrogatoires
et mettons-les là. Alors ici, il vous suffit de
mettre la variable, et cela rendra le
code plus lisible. Donc, si la phrase
commence par des interrogatifs, ce que nous voulons faire dans ce
cas, c'est construire une chaîne Disons donc return que la fonction
renverra cette chaîne. C'est donc capitalisé. utilisateur sera version majuscule de
la phrase saisie par
l' donc en majuscule, puis nous voulons y ajouter un point d'interrogation
comme celui-ci Cela sera donc remplacé par une
majuscule par cette chaîne, ce qui ajoutera un point d'
interrogation à cela Cela se produira donc si la
phrase commence par l'un
des interrogatifs,
sinon elle revient. Dans ce cas, nous
renverrons une phrase marquée d'
un point et d'un point. Encore une fois, capitaliser est
ce que nous avons mis ici. Permettez-moi de vous montrer
ce que nous avons fait jusqu'à présent. Créateur de phrases. Nous voulons donc exécuter la
fonction, non ? Avec un mot, avec une
phrase. Comment allez-vous ? Enregistrez, exécutez. Nous avons donc
correctement compris la phrase. Comment allez-vous ? C'est ça. Nous
avons maintenant une fonction qui fait quelque chose
et qui le fait bien. Réfléchissons maintenant
aux autres aspects
d' un programme dans la vidéo suivante.
53. 53. Réaliser la boucle: Dans la vidéo précédente, nous avons
créé cette fonction ici, qui obtient une phrase en entrée, donc une chaîne, et si vous
exécutez la fonction, elle renverra cette
version de la chaîne. Maintenant, le résultat
du programme que vous créez dans
cette section va demander ces
phrases encore et
encore sous forme de saisie utilisateur. Nous parlons donc de recueillir les
informations de l'utilisateur. Et comme cela se produit, à plusieurs reprises, nous avons
ici l'impression que nous
parlons d'une boucle. Et puisque cette boucle, lorsque l'utilisateur
entre une barre oblique inverse,
se termine par cette chaîne Cela signifie que nous
parlons d'une boucle conditionnelle, ce qui nous fait
penser aux boucles wile,
car les boucles wile fonctionnent
sur la base de conditions Supposons donc que la boucle
Wile fonctionne en permanence, elle demande
donc l' entrée de l'utilisateur Entrez, dites quelque chose, une colonne et
faites-y de la place juste pour la décoration. Alors, que se passe-t-il si l'utilisateur
saisit une entrée ? Hum. Eh bien, d'abord, nous
voulons vérifier si cette entrée utilisateur est
réellement la chaîne spéciale. Si c'est le cas, nous
voulons rompre la boucle. Sinon. Qu'est-ce que nous
voulons faire ? Sinon ? Hum. Vous y avez donc vu ces
phrases. Ils ressemblaient à une liste. Il y en avait donc plusieurs. Cela signifie que nous parlons
d'un tas d'articles. Et lorsque vous
pensez à de nombreux éléments, vous pensez à une liste. Peut-être voulons-nous
stocker les phrases que l'utilisateur entre dans une
liste. Comment pouvons-nous le faire ? Eh bien, nous pouvons le faire en
commençant par une liste vide
en dehors de la boucle. Python exécutera donc
la définition de la fonction. Nous n'en avons plus besoin
car nous l'avons simplement utilisé lorsque nous avons
testé la fonction. Ainsi, une fois que la
définition de la fonction est lue par Python, nous n'appelons pas
la fonction ici. Nous allons
créer une liste vide ,
puis démarrer la boucle. Un message sera
envoyé à l'utilisateur. Si c'est la chaîne saisie par
l'utilisateur, nous allons tout casser. La boucle se terminera donc, sinon, si cette chaîne n'est pas
celle saisie par l'utilisateur, sinon, nous voulons ajouter
la chaîne utilisateur, donc entrée par l'utilisateur dans
la liste des résultats Donc, à la fin de la
boucle, ce qui n'est pas prévu ici, c'est après la fin de la
boucle, ce qui n'arrive que lorsque
la rupture Ainsi, lorsque l'utilisateur saisit ceci, fois la boucle
terminée, nous aurons une
liste contenant de nombreuses données Imprimez donc les résultats. Comment allez-vous ? Si c'est bon
et c'est ce que nous avons obtenu. OK, je sais. Il s'agit des chaînes saisies
par l'utilisateur. Alors, comment pouvons-nous obtenir
les chaînes réelles ? Eh bien, c'est très simple. Nous ajoutons ici à la liste
les chaînes de lignes entrées par
l'utilisateur Mais nous avons une fonction qui permet convertir ces chaînes
en phrases. Utilisons cette
fonction. Nous allons ajouter le résultat
de la fonction. Pour obtenir le résultat, vous
devez appeler la fonction. Pour appeler la fonction, vous avez besoin d'
une entrée pour la fonction. L'entrée ici est celle
de l'utilisateur. Juste comme ça, exécutez à nouveau. Et nous avons obtenu ce résultat
comme prévu. Nous faisons donc de bons progrès. Cependant, nous ne voulons pas au moins
une sortie ici. Nous voulons juste une sortie de chaîne sans ces crochets. Alors, comment pouvons-nous réellement
fusionner ou concaténer toutes ces chaînes pour créer
un seul texte sous forme C'est ce que nous allons faire dans la vidéo suivante.
54. 54. Rendre la sortie facile: Ainsi, pour concaler toutes les chaînes
en une seule chaîne, vous pouvez utiliser la
méthode de jointure des Il s'agit donc d'une méthode de chaînes de caractères.
Il s'agit d'une chaîne ici. Par exemple, laissez-moi
mettre cette chaîne. Ce n'est qu'un tiret, mais
c'est quand même une corde. Cette méthode conjointe
obtient une liste en entrée. Comment allez-vous ? Bien, bien. Il s'agit donc d'une liste de chaînes. Si vous l'exécutez,
ces éléments de la liste seront joints par cette chaîne
que vous déclarez ici. Donc, si vous en ajoutez d'autres pour
que ce soit plus clair, vous obtiendrez un tiret
joignant toutes ces chaînes, ces éléments de la liste, le premier élément, le deuxième
élément, le troisième élément. Nous pouvons nous en servir ici en disant « rejoignez la liste des résultats ». Enregistrez cette exécution. Il fait beau, alors comment
allez-vous ? Il fait beau ? Nous avons un petit problème ici. Nous avons probablement besoin d'un espace
entre ces chaînes. Nous pouvons donc le faire très facilement. Vous pouvez simplement mettre un
espace dans la chaîne ,
puis exécuter à nouveau. Et ce sont les résultats que nous attendions
pour notre programme. Voici donc comment vous créez ce
programme dans cette section. Vous définissez une fonction au-dessus de votre script qui fait quelque chose
et qui le fait très bien. Ensuite, vous itérez,
vous créez une boucle. Vous demandez à l'utilisateur de
saisir des informations à chaque itération. Vérifiez immédiatement si l'
entrée est la chaîne. Vous ne voulez pas ajouter d'abord, puis vérifier si l'
entrée de l'utilisateur était égale à cela Vous ne
voulez donc pas que cela la première condition,
car si vous l'ajoutez, cela signifie
que si l'
utilisateur entre ici, barre oblique inverse,
puis que
vous obtenez les résultats ajoutés, cette chaîne de fin de barre oblique inverse
sera ajoutée à la sera ajoutée n'est pas ce que tu veux.
Par conséquent, vous devez vérifier immédiatement si la
chaîne est une barre oblique inversée d et interrompre le
programme si tel est le cas, sinon faites-le Stockez donc le résultat
du générateur de phrases
dans la liste des résultats. Enfin, il suffit de concaténer les éléments de cette
liste et d'imprimer
les résultats,
c'est-à-dire celui-ci J'espère que ce programme vous
a été utile et que vous avez appris
à assembler des pièces. Dans les prochaines vidéos,
nous allons apprendre des
choses plus avancées sur Python, puis
nous allons
passer en revue la première application
du monde réel. A la prochaine application
après cela et la suivante, et vous
aurez donc dix applications. Et je sais que si vous prenez
ces applications au sérieux, vous deviendrez
un bon programmeur. Je vous souhaite de continuer à apprécier mes enseignements
dans les prochaines vidéos.
55. 55. Introduction à la compréhension de liste: Bonjour, bon retour.
Dans cette section, vous découvrirez comment
comprendre les listes. Désormais, les compréhensions de listes
sont similaires à quatre boucles. La principale différence est que
dans la compréhension d'une liste, vous écrivez le code
sur une seule ligne Et avec quatre boucles, vous avez plusieurs lignes. De plus, les compréhensions de listes sont un cas particulier
de quatre boucles Ils sont utilisés lorsque vous
souhaitez créer une liste. Une compréhension de liste est donc une
boucle qui construit une liste. Vous pouvez
également construire une liste avec une boucle à quatre boucles, mais comme je l'ai dit, les
compréhensions de la liste ne sont que d'une ligne Cela rend le code plus
élégant, plus pythonique. Découvrons donc la compréhension
des listes
dans cette section à
l'aide d'exemples, voir
56. 56. Une compréhension simple de liste: Tout au long de mon expérience de
travail avec de grands ensembles de données, j'ai remarqué certaines techniques utilisées instituts de collecte de données pour économiser de l'espace de stockage et réduire
l'espace de stockage de
leurs données sur les disques informatiques Une technique courante consiste à
ne pas utiliser de décimales. Par exemple, si vous
recherchez des données de température, vous ne verrez pas les températures
réelles disons
qu'
elles sont en degrés Celsius, vous ne les verrez pas comme ça, mais vous les verrez
sans les points, car cela permettra d'économiser de l'espace
sur les serveurs. Donc, un caractère de moins, cela signifie quelques octets de moins. Votre devoir en tant que
programmeur est diviser toutes ces valeurs par dix afin d'
obtenir les données réelles. Supposons donc que ces données
se trouvent dans des fichiers texte, que nous les ouvrons avec Python, et que le cours explique
en fait comment gérer l'ouverture de fichiers
texte en Python. Mais laissons
cette partie de côté pour le moment. Supposons donc que nous les ayons
chargés sous forme de liste ici. Maintenant, nous voulons réellement
diviser par dix, n'importe lequel d'entre eux. Alors, comment
faites-vous cela ? Eh bien, une technique consiste
à itérer sur les TAM. Donc, pour la température en temps, et à chaque itération, vous voulez
diviser la température par dix Mais où stockons-nous
cette température divisée par dix ? Eh bien, nous pouvons
le stocker dans une nouvelle liste. Disons, de nouvelles températures. C'est une liste vide pour le moment. La boucle parcourra donc cette liste et à chaque itération, nous ajouterons
cette valeur aux nouveaux TEM Ajoutez donc cette valeur. Ça a l'air d'aller bien. Et
puis imprimez de nouveaux TEM. Permettez-moi de
l'exécuter. Il s'agit donc de la sortie souhaitée. C'est tout à fait correct, mais il existe un moyen plus simple de le
faire en une seule
ligne de code Python Et c'est en utilisant des compréhensions de listes.
Ça se passe comme ça. Vous n'êtes pas obligé de créer
une liste vide car
une liste sera
générée dynamiquement,
vous pourriez dire, Temp divisé par dix,
quatre temp in temp in temp in temp Imprimez de nouveaux temps pour
voir ce que nous obtenons, exécutez-les et vous obtenez
exactement le même résultat. Il s'agit donc d'une compréhension de liste. C'est un moyen de créer une liste sans avoir à
créer une boucle à quatre, une boucle à quatre standard
car nous
avons en fait une boucle à
quatre en ligne ici Donc, ce qui se passe
ici, c'est que nous
avons une itération ici
et à chaque itération, nous allons
stocker cette valeur dans la liste de la nouvelle liste TEMS Cela revient donc à dire que la température du
magasin est divisée par dix, mais Python dira : « D'accord, mais qu'est-ce que le TEM ?
Il s'agit d'une nouvelle variable. Non, nous ne l'avons
défini nulle part. Et puis nous disons : « Eh bien,
pour la température dans les TEM, température est une variable des TEM C'est ainsi que vous créez une liste avec ces valeurs pour chacune
des valeurs de TAMS C'est une compréhension de liste.
57. 57. Compréhension de liste avec un: Maintenant, si vous avez travaillé avec observations telles que les observations
météorologiques, par
exemple les températures, vous avez peut-être remarqué
que ces données contiennent parfois
ce type de valeurs, ce qui signifie qu'aucune valeur, aucune valeur valide
n'a été détectée
pour cette observation, et les organisations utilisent cette valeur
spéciale pour signifier l'absence de données. Donc, si nous voulions utiliser une compréhension de liste où nous
divisons par dix toutes ces valeurs, nous voulons faire attention à ne pas
diviser cette valeur par dix Nous voulons ignorer
cela. Pour cela, nous avons besoin d'un I conditionnel dans la compréhension de la liste.
Nous pouvons le faire comme ça. Créez donc une nouvelle variable dans laquelle vous stockerez la nouvelle liste. Et encore une fois, disons la température
divisée par dix pour la
température en temps Si la température est différente, par
exemple, le moins 9999 Imprimez de nouveaux TEM, exécutez-les
sur le terminal et nous obtenons le résultat attendu. C'est donc exactement comme la
simple boucle que nous avons vue dans la vidéo précédente avec l'ajout
du conditionnel I. C'est donc conditionnel. Nous vérifions si la température est
différente de moins 9999.
58. 58. Compréhension de liste avec une clause If-Else +: Auparavant, nous avons créé
cette compréhension de liste, qui parcourt cette
liste et divise par dix chaque
élément de cette liste,
et elle n'ignore que si la température
est différente de moins 9999 Alors, que se passe-t-il si la température
est égale à ce nombre ? Eh bien, la boucle, la compréhension de la
liste
ignoreront cette valeur, comme
vous l'avez vu dans le résultat C'était donc le résultat. Et si vous vouliez mettre
une autre valeur à la place de celle-ci ? Supposons que vous vouliez mettre zéro au lieu de ce nombre négatif. Dans ce cas, si
vous pensez pouvoir simplement utiliser ici, zéro, vous essayez, vous vous trompez car cela
produira une erreur de syntaxe. Lorsque vous avez un Is dans
la compréhension de la liste, l'ordre des composants
est légèrement différent Vous devez obtenir les
quatre températures en temps, donc la boucle doit suivre le
conditionnel,
juste comme ça Si vous l'exécutez,
vous
obtiendrez les résultats escomptés. Vous y voyez donc le zéro
au lieu de moins 9999. Donc,
cette fois, la compréhension de la liste est la suivante. Donnez-moi la température divisée par dix, uniquement si la température est
différente de ce nombre,
sinon, donnez-moi zéro
pour la température en temps. Rappelez-vous donc toujours
que si vous devez un Is dans la
liste,
la boucle for se déroule à
la toute fin comme ça
59. 59. Plus d'informations sur les fonctions: Bienvenue dans une nouvelle section. Vous en apprendrez plus sur les
fonctions dans ces vidéos. vous avez appris à définir cours, vous avez appris à définir
une fonction et à l'appeler
. Mais ici, vous apprenez des
concepts plus avancés sur les fonctions, et vous devez vraiment en
apprendre davantage sur les fonctions, car sont des blocs de code très
fondamentaux. Vous écrivez donc vos programmes en utilisant des fonctions qui
font certaines choses. Apprenons-en donc plus sur les fonctions.
Rendez-vous dans la prochaine vidéo.
60. 60. Fonctions avec des arguments multiples: Peut-être vous souvenez-vous
de la fonction len et de la fonction is instance. La fonction len
ne prend qu'un seul argument et la fonction de
position vous,
elle en prend donc deux. Vous pouvez également le constater dans
la documentation d'aide. Obj, c'est le seul
argument que prend la longueur. Et si vous regardez la position, obtiendrez obj et
class ou tuple Certaines fonctions ont donc besoin d'un
argument, d'autres de deux. Maintenant, ces deux fonctions ont été
intégrées dans des fonctions Python. L'équipe de développeurs Python a donc
conçu ces fonctions. Alors, comment pouvons-nous créer
nos propres fonctions avec plusieurs
arguments ? Assez facile. Supposons qu'une
fonction de surface qui calcule l'aire d'un rectangle ait plusieurs arguments, vous suffit de séparer les paramètres par une
virgule Donc paramètre et argument. Un paramètre est ce que nous appelons ces variables lorsque nous
définissons la fonction, et lorsque nous appelons la
fonction comme ici, nous les appelons arguments dans le
site d'appel de la fonction, pour ainsi dire. Renvoie donc A fois B qui renverra l'
aire d'un rectangle. Et bien sûr, lorsque
vous appelez la fonction, vous transmettez simplement des valeurs
pour ces arguments. Et vous obtenez correctement la valeur
de sortie.
61. 61. Paramètres par défaut et non-par défaut, arguments de mots-clés et autres arguments: En Python, les arguments peuvent
être principalement de deux types. Nous avons des arguments autres que des mots clés et nous avons des arguments par mots clés. Ces deux arguments ne sont pas des arguments liés à des
mots clés. Le
mot clé ne leur est pas associé. Cependant, si c'était le cas, les choses
fonctionneraient toujours de la même manière. Mais ces deux arguments seraient désormais
appelés arguments de mots clés. Les arguments autres que
des mots clés, à savoir celui-ci ,
deux, sont également appelés arguments positionnels Ils sont appelés arguments
positionnels car la façon dont vous communiquez ces deux arguments à
la définition de la fonction
est basée sur la position Donc, la première position,
quatre, correspond à A et les cinq
secondes à B.
Donc, les arguments positionnels et non liés aux
mots clés sont identiques s'il s'
agissait d'arguments par mots clés La position
n'a pas vraiment d'importance. Vous pouvez donc passer la valeur de B comme premier argument
si vous le souhaitez, et quatre iront à B
et cinq à A. Donc, tant que vous les transmettez
comme ça, des arguments de mots clés, la position n'a pas d'importance, vous obtiendrez toujours
le même résultat. Maintenant, nous avons également des paramètres
par défaut, pas des paramètres d'arguments. Cela signifie
qu'un paramètre
peut avoir une valeur par défaut comme celle-ci,
ce qui signifie que vous n'avez pas à spécifier la valeur de cet argument lorsque
vous appelez la fonction. Nous attribuons donc cinq à A
et B est six par défaut. Par conséquent, nous en obtenons 30. A ne doit pas nécessairement
être un argument de Kord. Il peut également s'agir d'un argument
non kurde ici dans l'appel de fonction, vous obtenez toujours le même résultat Bien entendu, vous pouvez également
attribuer une valeur différente à B. Juste comme ça. Enfin, vous pouvez également le laisser ainsi à des arguments autres
que des mots clés, et vous obtiendrez toujours le
résultat correctement. que vous
devez savoir, c'est qu' un paramètre par défaut ne peut pas être antérieur à des paramètres autres que
ceux par défaut. Si vous l'exécutez,
vous obtiendrez une erreur. Il indique que l'argument non par défaut
suit l'argument par défaut. Donc, la valeur non
par défaut suit l'argument par défaut, qui est A. Et je pense que c'est une
très bonne information sur les arguments
et les paramètres des fonctions.
62. 62. Fonctions avec un nombre arbitraire d'arguments non liés aux mots clés: Certaines fonctions en Python,
telles que la fonction len, n'
obtiennent qu'un seul argument. Si vous essayez d'en transmettre
plusieurs,
un message d'erreur
indiquant qu'il ne prend qu'un seul
argument sera renvoyé . Certaines autres fonctions,
telles que l'instance, prennent exactement deux arguments. Deuxièmement, si vous essayez de transmettre trois arguments ou
un seul, vous obtenez une erreur. Certaines autres fonctions telles que impression prennent un
nombre indéfini d'arguments, et vous avez vu comment nous pouvons
définir de telles fonctions avec un ou plusieurs arguments seulement, mais je n'ai pas encore
expliqué comment créer ce
type de fonctions Créons-en un.
Définissez, appelons cette moyenne pour calculer la
moyenne d'une série de nombres. Imaginez donc que c'
était notre fonction. Nous voulons transmettre
autant d'articles que nous le souhaitons. Nous avons en fait créé une fonction de
moyenne plus tôt, que nous pouvions appeler comme ça, mais elle n'avait toujours
qu'un seul argument, donc c'était une liste comme ça. C'est toujours un
objet, un argument. Dans ce cas, nous ne
voulons pas transmettre de liste. Nous voulons transmettre
autant d'articles que nous le souhaitons. Donc, Min, puis ce que vous faites, vous utilisez un astérisque puis des arcs Cela peut être n'importe quoi
après l'astérisque. N'importe quel nom de variable fonctionnerait, mais c'est une bonne pratique car chaque programmeur utilise des arcs. Il est donc bon que vous utilisiez des arcs pour que les autres puissent
lire votre code. Et vous vous habituez également
à lire le
code des autres en utilisant des arcs tout le temps. Tu sais de quoi
parlent les autres. Maintenant, laissez-moi vous montrer
quelque chose avant appliquer l'algorithme qui
calcule la moyenne Renvoie des arcs.
Voyons ce que nous allons obtenir ici. Maintenant, laissez-moi appeler la fonction. Donc un, trois, tu peux
aussi passer des chaînes, comme tu veux, comme ça. Et ce que vous obtenez est en fait un poteau supérieur contenant
tous les objets, tous les objets que vous avez
passés dans la fonction charbon. Il s'agit donc en fait d'un pôle supérieur. Alors, que pouvons-nous faire
avec un tuple où l'on peut calculer la somme des arcs L'arc est donc une variable, et non un arc astérisque, divisé
par la longueur des arcs Dans ce cas, il y aurait une erreur car nous avons A là. Supprimez donc A de
là et réessayez. A est une chaîne, il
n'est donc pas logique d'avoir la moyenne d'une chaîne. Nous venons donc de créer
une fonction avec un nombre arbitraire d'arguments de
mots clés connus uniquement. Je dis uniquement parce que vous
ne pouvez pas avoir d'
arguments par mots clés ici. Vous voyez, X égal à trois ne
fonctionnerait pas ici. Si vous voulez des arguments par mots clés, regardez la vidéo suivante.
63. 63. Fonctions avec un nombre arbitraire d'arguments de mots clés +: Ainsi, cette fonction que nous avons développée dans la leçon
précédente acceptait un nombre arbitraire d'arguments
autres que des mots clés. Pour les arguments liés aux mots clés,
vous devez ajouter un autre astérisque à l'astérisque puis transmettre un nom de variable, mais les arcs de Kew sont Veuillez donc l'utiliser même
si vous n'en avez pas besoin
, puis voyez ce qu'est KeyWRC, qui signifie keyword args Si vous essayez d'appeler
la fonction ici, nous obtiendrons une erreur
car il s'agit d'une fonction avec un nombre
arbitraire arguments
de mots clés uniquement. Par conséquent, tous ces arguments doivent être nommés arguments, arguments mots clés, ayant le
mot-clé, le nom de l'argument. B et C aiment ça et exécutent
et vous obtenez un dictionnaire. Le dictionnaire contiendra
des éléments où chaque clé sera le nom des
arguments que vous avez utilisés lorsque vous avez appelé
la fonction, et la valeur sera la
valeur de cet argument. fonctions avec un nombre
arbitraire d'arguments de mots clés sont plus facilement utilisées que les fonctions avec un nombre arbitraire
d'arguments autres que des mots clés, comme la fonction d'impression
dont je vous ai parlé plus tôt, où vous pouvez simplement
transmettre autant d'arguments sans mot-clé.
Voilà, vous l'avez.
64. 64. Introduction au traitement de dossiers: Vous avez découvert les
différents types de données que vous pouvez utiliser en Python Par exemple, vous avez appris
que vous pouvez avoir des chaînes,
des listes, des chiffres, etc. Et nous avons enregistré ces types de
données dans une variable. Ainsi, une variable a été associée
à une chaîne, par exemple. Le problème, c'
est que vous stockez des données dans votre programme Python. Si vous voulez
vraiment stocker le temps des points, par
exemple, vous souhaitez
stocker des prévisions météorologiques, vous ne voulez pas écrire ces valeurs de prévision sous forme chaînes ou de nombres
dans votre script PY à points. Vous voulez
plutôt avoir ces données dans des fichiers
externes, par
exemple des fichiers texte
ou des fichiers CRC,
ou plus tard, vous en apprendrez davantage
sur les bases de données, sur la
façon de stocker des données dans des
bases de données, d'obtenir ces données via Python et de les
traiter en Python Mais dans cette section, vous
apprendrez comment stocker des données dans des fichiers
texte et comment obtenir
des données à partir de fichiers texte, comment créer des
fichiers texte avec Python, comment lire les données à partir de fichiers texte et les
traiter avec Python. Il s'agit donc d'un
concept de programmation très, très crucial. Il s'agit donc d'un concept
avancé, et vous l'apprendrez
dans cette section. Alors amusez-vous bien, je
vous verrai dans la prochaine vidéo.
65. 65. Traitement des dossiers avec Python: Ici, sur mon bureau, j'ai un fichier texte,
flout dot TXT Si je double-clique dessus, il
s'ouvre avec l'un des éditeurs de texte que j'ai
installés sur mon ordinateur. L'éditeur de texte est un programme, et dans ce programme, je peux lire ce fichier, donc je peux lire ces lignes. Je peux écrire plus de lignes ici, je peux les copier et les coller, les
multiplier pour avoir un grand nombre de lignes dans
ce fichier texte, et je peux faire tout
cela avec cet éditeur de texte que j'ai
ici sur mon ordinateur. Maintenant, nous pouvons faire de
même avec Python, ce qui signifie que nous pouvons lire
le fichier avec Python, nous pouvons écrire plus de
contenu dans ce fichier. Nous pouvons multiplier cela et nous pouvons le faire de
manière très efficace. Si je devais le multiplier, je devrais peut-être les
copier-coller 1 000 fois. Mais avec Python, vous pouvez
le faire très facilement. Allons-y, faisons la même chose avec Python et commençons par
lire le fichier. Alors, comment lire un
fichier avec Python. Je vais vous le montrer
dans la prochaine vidéo.
66. 66. Lecture de texte à partir d'un dossier +: Voici comment ouvrir un fichier texte avec votre éditeur de texte
préféré, et laissez-moi vous montrer comment
faire de même avec Python. Bien sûr, l'expérience
est un peu différente. Il ne s'agit pas de
double-cliquer sur le fichier, il s'agit d'écrire du code. Ainsi, lorsque vous ouvrez
ce fichier
avec votre éditeur de texte, un objet est créé dans la
mémoire temporaire de votre ordinateur en RAM. Le fichier était donc
sur le disque dur. Lorsque vous l'ouvrez, il est créé sous forme d'
objet dans la RAM. La même chose se produit avec Python. Dans ce cas, vous
souhaiterez peut-être stocker cet objet, cet objet fichier
que vous
allez créer en Python. Vous souhaiterez peut-être le
stocker dans une variable. Appelons ça mon dossier. La fonction d'ouverture permet de
créer des objets de fichier. Et comme il s'agit d'une fonction, elle aura un argument. Maintenant, ce fichier point py de base se trouve dans le même répertoire
que le fichier fruit point TXT. Veuillez télécharger le fichier TXT
fruits point, qui ressemble à ceci.
Permettez-moi de le partager ici. Vous pouvez faire glisser un fichier sur le côté pour avoir deux fenêtres sur l'éditeur de code
Visual Studio, mais vous pouvez le faire
même dans d'autres éditeurs, j'en suis sûr, si vous
utilisez d'autres éditeurs. Ce fichier pour l'instant
, placez-le dans le même
dossier que Basics point py. Une fois que vous avez fait
cela, l'entrée de cette fonction est le
chemin d'accès au fichier. Dans ce cas, il
s'agit du fruit point TXT, puisque le fichier DTX des fruits se trouve dans le même répertoire que celui
de Basics point pi Non, pour lire le
contenu de fruits DL TXT dans votre éditeur de texte
comme nous l'avons fait graphiquement, il suffit de
double-cliquer sur le fichier, puis vous voyez le contenu sur l'interface de l'éditeur de texte. En Python, les choses sont un peu plus compliquées, elles doivent être
un peu plus explicites. Vous devez spécifier ce que vous voulez faire car ce fichier, nous venons de créer
un objet fichier. Si nous l'exécutons, rien ne
se passera. Un objet va être
créé dans la mémoire temporaire et à la fin
de l'exécution
du programme, il sera
supprimé de la mémoire. Tout comme lorsque vous ouvrez le fichier texte avec l'
éditeur de texte puis que vous le fermez, objet, le fichier objet est supprimé de la mémoire
temporaire. Si tu veux lire,
tu devrais peut-être imprimer mon dossier. Maintenant, mon fichier a une méthode de lecture. Il s'agit de l'objet fichier, qui possède une méthode de lecture. Il ne prend aucun argument, alors laissez-le comme ça, enregistrez, exécutez, et vous
obtenez le résultat du fichier. C'est ainsi que l'on lit
un fichier en Python.
67. 67. Curseur de dossier: Maintenant, vous devez
savoir le concept du curseur. Ce qui se passe ici, c'est
que vous créez
un fichier, un objet de fichier est créé, puis lorsque vous appliquez
les méthodes de lecture, avant d'appliquer la méthode de lecture, le curseur se trouve sur le tout premier caractère
du fichier texte. Lorsque vous appliquez la méthode de lecture, le curseur se place à la
fin du fichier texte. Maintenant, une fois que la
méthode de lecture a été appliquée, le curseur se trouve ici. Si vous appliquez une autre opération de
lecture comme celle-ci, enregistrez, exécutez. Ce qui va se passer,
c'est que vous vous
attendiez peut-être à ce que ces lignes
soient imprimées deux fois. Au lieu de cela,
ils sont imprimés une seule fois,
puis il ne s'agit que
d'une chaîne vide car
le curseur après la
première exécution de
lecture se puis il ne s'agit que
d'une chaîne vide car le curseur après la
première exécution de trouvait à ce point
et en dessous de ce point, il n'y a rien, donc vous obtenez
cette chaîne vide là. Ce que vous pouvez faire, c'est que si vous souhaitez imprimer le
contenu plusieurs fois, vous pouvez enregistrer le contenu dans une
variable, puis imprimer le contenu autant de fois que vous souhaitez et vous obtiendrez le résultat deux fois,
comme vous pouvez le voir ici. C'est parce que la méthode de lecture a été exécutée qu'une seule fois ici. C'est quelque chose
que tu dois savoir.
68. 68. Fermeture d'un dossier: Lorsque vous créez un objet fichier, un objet fichier est
créé dans la RAM et il y restera jusqu'à l'exécution
de votre programme. Par conséquent, il peut
être judicieux fermer le fichier afin qu'il soit supprimé de la mémoire une fois que vous avez
terminé de le traiter. Par exemple, dans ce script, vous créez
l'objet fichier, et vous
lisez ici le contenu de cet objet fichier et le
stockez sous forme de chaîne. Donc, mon fichier Read produit une chaîne qui représente le
texte du fichier. Cette chaîne sera stockée
dans cette variable de contenu. J'en ai donc fini avec le
traitement du fichier, puis
je peux ensuite traiter la chaîne que j'ai enregistrée dans cette variable. Par conséquent, il est logique
d'appliquer le point de fermeture de mon fichier. Même si ce n'est pas
strictement obligatoire, c'est une bonne idée de l'utiliser. Donc, si vous le faites, vous obtiendrez
toujours le bon résultat. Ce que vous devez
savoir maintenant, c'est que si vous appliquez mon fichier qui se lit à nouveau après avoir
fermé le fichier, vous allez obtenir une erreur. Il indique que cette
opération est
effectuée sur un fichier fermé, vous ne pouvez
donc pas le faire. Voici donc comment créer
un fichier et le fermer, mais il existe une meilleure
façon de faire tout cela. Je vais vous le montrer
dans la prochaine vidéo.
69. 68. Ouverture de dossiers utilisant avec: Une meilleure façon de le faire
pour créer le fichier, lire le contenu et fermer le fichier consiste à utiliser le gestionnaire de contacts
With. La façon de le faire est, encore une fois, d'
utiliser la fonction open, qui fonctionne avec les mêmes fruits TXT. Maintenant, vous dites « myfile ». Mon fichier n'est qu'une variable, et vous devez ensuite le mettre en retrait. Donc, ce que vous avez fait
ici, c'est que vous avez créé ce myfile égal à open fruits point TXT,
exactement pareil La différence ici est que
vous allez écrire tout ce qui a trait au
traitement de cet objet de fichier. Vous devrez
tout écrire sous cette ligne, en retrait sous
cette ligne, sous forme de bloc. Cela permettra de
mieux organiser les choses. Donc, dans ce cas, ce que
nous voulons faire le fichier, c'est le
lire comme ça. Une fois que vous avez terminé, il vous suffit de fermer
l'indentation Les lignes suivantes ne seront donc
pas indentées, comme la ligne d'impression. Voyez ce qui va se passer ici. Il s'agit du résultat attendu
du contenu imprimé. Même si vous le supprimez, pour
ne pas vous embrouiller, encore une fois, vous obtenez le même résultat. Donc, cette sortie est
en fait de cette ligne. Et la fermeture du fichier
n'est pas nécessaire ici car le gestionnaire de contexte With
appliquera implicitement la
méthode de fermeture Votre dossier sera donc fermé
une fois ce bloc terminé. Veuillez donc utiliser le gestionnaire de
contacts With , et
voici comment procéder.
70. 69. Utiliser différents chemins d'accès: Jusqu'à présent, notre fichier PY de base et notre fichier TXT à points de fruits se
trouvaient
dans le même répertoire, dans le même dossier,
ce qui nous permettait écrire
uniquement le nom du
fichier dans le fichier PY de base. Cependant, si les fruits de ce fichier
TXT se trouvaient, par exemple, dans cet autre répertoire, j'
ai simplement déplacé les fruits
TXT dans les fichiers. Fichiers est un dossier qui se trouve dans le même répertoire
avec le point Basics PY. Donc Basics, c'est PY dans le même dossier avec des
scripts avec des fichiers, et des fruits dans des fichiers. Dans ce cas, si vous
exécutez le fichier PY de base, vous obtiendrez une erreur «
fichier introuvable ». Aucun fichier ou répertoire de ce type, fruits point TXT.
Et c'est vrai. n'y a pas de fruits DTXT dans le dossier où se trouve
Basics Dt PY Ce que vous devez faire, c'est spécifier le chemin complet du fichier par rapport
au fichier par rapport
au point de base PY, c'est-à-dire
files slash fruits point TXT Exécutez cela et
les choses fonctionneront.
71. 70. Écrire du texte dans un dossier: Jetons un coup d'œil à la documentation d'
aide d'Open. Et vous verrez que
la fonction open reçoit un tas d'arguments. Les deux premiers sont les
plus importants. Nous avons déjà utilisé le fichier, qui est le chemin
d'accès à l'objet du fichier. Et pour les autres, nous utilisons leurs valeurs par défaut, ce qui signifie que pour les modes, nous avons utilisé R, R signifie lecture. Par conséquent, ce code
est le même que celui-ci. Vous obtenez donc le même résultat.
Lesquels devriez-vous utiliser ? Eh bien, pour rendre le code plus simple
et plus court, c'est très bien. Pour rendre le code plus explicite
en termes de facilité afin que les autres puissent voir qu'il s'
agit de lire le code, vous
devez l'utiliser Dans les deux cas, c'est bien. Maintenant, que pouvez-vous
utiliser pour écrire ? Pour écrire, vous devez
utiliser W pour écrire. Et laissez-moi créer un nouveau fichier
dans le dossier des fichiers. Appelez ça des légumes. Donc, aucun fichier de légumes n' existe actuellement dans
mon dossier de fichiers. Il sera créé par
la fonction d'ouverture. Ensuite, dans ce fichier vide, nous allons écrire
quelque chose que nous appelons Tomato. Bien entendu, la variable de contenu
n'a aucun sens ici car nous ne récupérons pas
certaines données du fichier Nous sommes juste en train d'écrire ici. Alors gardons-le
comme ça, sauvegardons-le. Exécutez et un légume, le fichier TXT a été créé sur
mon ordinateur avec une chaîne
de caractères tomate. Laissez-moi le mettre ici. La méthode de lecture
recherche donc un fichier existant. La bonne méthode
crée un nouveau fichier, et je dois vous prévenir
que si le fichier existe,
comme dans ce cas, c'est le fruit
que Tix est là Si tel est le cas, Python remplacera
le fichier existant Donc, si vous ouvrez
Fruits DTixti maintenant, vous verrez que vous avez ce
nouveau contenu du Le
contenu existant est donc supprimé. Comment écrire plus de lignes ? Eh bien, vous devez utiliser la chaîne spéciale
backslash N, qui crée des lignes de rupture Onion, exécute. Voici donc Fruits TXT. Et vous obtenez ces trois
lignes comme nous nous y attendions. Ce que vous devez savoir, c'est que vous pouvez appliquer
plusieurs méthodes au fichier ouvert. Écrivons l'ail ici. Maintenant, intentionnellement, je
n'ai pas fait ce que j'étais censé faire pour
vous montrer ce qui se passe. gaélique a donc été immédiatement mis après l'oignon
parce qu'il n'y avait pas d'espace ou qu'il n'y avait pas d'opérateur N à cet endroit. Si je mettais un espace
ici, vous obtiendrez bien sûr un espace entre l'
oignon et le gaélique Mais ce que vous voulez
au contraire, c'est qu'après chaque ligne que vous écrivez, vous vouliez une barre oblique inverse
N. Et dans ce cas, vous obtiendrez le bon résultat Alors maintenant, vous vous demandez
probablement, eh bien, j'ai ce
fruit que Tixifle Je ne veux pas le remplacer. Comment puis-je réellement ajouter une autre ligne sous
ces lignes existantes ? Je vais vous montrer comment procéder
dans la prochaine vidéo.
72. 71. Rajouter Tex à un dossier existant +: OK, donc j'ai ces fruits dans
ce fichier CX ici, qui contient ces quatre lignes
qui ne sont pas des fruits de toute façon, mais vous voyez l'idée C'est un texto. Nous voulons ajouter deux lignes supplémentaires à ces fruits
existants dans le fichier CX Nous ne savons pas ce qu'
il y a actuellement. Si vous regardez la
documentation ouverte et que vous faites défiler la page vers le bas, vous verrez ici que vous pouvez passer différents modes
dans cet argument ici. Donc, ce que nous utilisons déjà, nous utilisons W, puis vous avez X. Si vous utilisez X et que vous essayez d'
écrire, disons Okra Si vous l'exécutez, cela
indiquera que le fichier existe. Ainsi, contrairement au mode W, qui remplace un fichier, X ne remplacera pas le
fichier s'il existe Cependant, il ne peut pas ajouter contenu à un fichier existant car il indique que
le fichier existe. Nous passons donc au mode
suivant, qui est A. Vous voyez que Okra y a été
ajouté, bien sûr, avec un petit problème
car il n'y avait pas ligne de brique ici dans
le fichier texte existant sont des informations que
vous devez connaître, et si vous savez qu'il n'
y a pas de ligne de démarcation, vous devez
me laisser parler de ce fichier texte, puis vous devez y ajouter une ligne de rupture pour
obtenir le résultat correct. Chaque fois que vous ajoutez une nouvelle ligne, vous devez ajouter une ligne de
brique devant. Maintenant, que diriez-vous de
lire ce contenu ? Peut-être l'enregistrer dans une variable
et imprimer le contenu. Est-ce que ça va marcher ? Je ne crois pas. Il indique que l'opération n'
est pas prise en charge. Le fichier n'est pas lisible. C'est A, qui sert à ajouter. Si vous voulez écrire et
lire en même temps, vous devez ajouter un avantage. Juste comme ça. Exécuter.
Vous obtenez une sortie vide. Pourquoi ? À cause du curseur. Donc, ce qui s'est passé, c'est que lorsque nous y avons ajouté la ligne Oca, donc au début, vous avez créé le
fichier ici à ce stade, le curseur est là, d'accord ? Ensuite, vous écrivez le fichier. Sur cette ligne, le curseur
passe à la fin du fichier. Donc, quand vous lisez maintenant, vous lisez ce qui
reste sous la dernière
ligne, ce qui n'est rien. Ce que vous pouvez faire, c'est que mon fichier, Sk, applique une méthode Sk pour remettre le curseur à la position
zéro. Dans ce cas, le curseur
ira jusqu'à la fin. Cette ligne repassera à la
position zéro, puis vous lirez
tout à partir de là et vers le bas pour obtenir
le bon résultat.
73. 72. Modules intégrés dans Python: Si vous suivez les
sections précédentes du cours, vous avez parcouru un long chemin. Vous connaissez donc maintenant les
principes fondamentaux de Python. Vous savez comment résoudre
des problèmes fondamentaux. Supposons, par exemple, que vous vouliez connaître le nombre de caractères
de la chaîne. Vous avez donc des méthodes et des fonctions que vous pouvez utiliser. Donc, pour les méthodes, vous pouvez
effectuer une recherche avec Deer SDR, vous verrez ici le tas de méthodes qui peuvent
être appliquées aux chaînes, puis vous pouvez voir
les fonctions intégrées Par exemple, les méthodes n
seraient utiles ici. Cela renverrait le
nombre de caractères de la chaîne Pi Pi,
qui est de six. Maintenant, tout cela est là. Donc, ces fonctions et
les méthodes de chaîne sont toutes intégrées. Il s'agit donc de méthodes et fonctions
écrites dans le logiciel Python que vous téléchargez et installez
depuis python.org Ce logiciel est
écrit en langage C. Par conséquent, ces méthodes et fonctions sont également
écrites en langage C. Et comme vous le voyez,
ces noms sont disponibles immédiatement dans
votre interpréteur Python. Cela signifie qu'ils sont intégrés. Ils se trouvent dans
cet interpréteur, et vous pouvez simplement les appeler
sans les importer. Et si nous avions
d'autres problèmes, comme, disons, vous voyez
le script ici. Ce que
fait ce script, c'est que c'est une boucle. C'est une longue boucle.
Donc, bien que cela soit vrai , cela signifie qu'il fonctionnera pour toujours. Il
lit donc ce fichier, le point
végétal TXT dans
le répertoire des fichiers, qui se trouve
dans le même répertoire
que le point pi de base. C'est donc le chemin du fichier. Et ce fichier texte
contient une chaîne. Je le lis donc
sous cette variable, et j'imprime
le contenu ici. Donc, si j'exécute ce fichier, vous allez
imprimer le contenu à chaque fraction de seconde et cela dépend vitesse de
votre processeur, de celle de votre
ordinateur. Et si nous ne voulions pas que cela se produise
à chaque
fraction de seconde ? Et si vous voulez lire le
contenu toutes les 10 secondes ? Permettez-moi d'interrompre
ceci avec Control C. Vous vous rendrez vite compte
que vous n'avez aucune fonction intégrée
qui implémente une sorte de
méthode de veille dans votre script. Il n'y a donc aucune fonction que
vous pouvez utiliser immédiatement. Dans ce cas, vous voudrez peut-être
rechercher des modules intégrés. Pour ce faire, veuillez
utiliser cette syntaxe. Importez CS, qui signifie
système, puis CS a intégré les noms de modules. Et vous trouverez ici
une liste de modules, modules
intégrés,
c'est-à-dire des modules qui sont réintégrés dans
le logiciel Python. Profitons donc de l'une d'entre elles. La façon dont vous l'utilisez consiste à
importer le nom du module. Encore une fois, vous pouvez utiliser DR pour voir ce que vous avez
pour ce module. Par exemple, vous
verrez ici que nous avons une méthode de sommeil. Utilisez l'aide pour savoir comment utiliser
cette méthode en particulier. Il dit donc qu'il prend
le second comme argument. Alors essayons-le. C'est le sommeil. Disons trois,
un, deux, trois, et donc à quelle heure ce
sommeil interrompt l'exécution du script pendant un certain nombre de
secondes, trois, dans ce cas Cela signifie que nous pouvons l'implémenter
dans le script. Il est recommandé d'
importer des modules dans la
première ligne du script. Ensuite, utilisez ce module dans votre script
partout où vous en avez besoin. Dans ce cas, ce que
nous voulons faire,
c'est supposer que ce légume
qu'est le fichier TX est généré sur notre serveur
toutes les 10 secondes. Supposons donc qu'un logiciel installé sur le serveur obtienne
ces données de quelque part et qu'il écrit un nouveau
contenu toutes les 10 secondes. Par exemple, maintenant c'est de la tomate, plus tard ce
sera de l'ail 10 secondes. Après cela, ce
serait de l'oignon et ainsi de suite. Nous recevons donc
du nouveau contenu toutes les 10 secondes. Nous voulons donc imprimer
le contenu du fichier, puis avoir le
bordereau d'exécution pendant 10 secondes. Maintenant, je vais
enregistrer le script, aller sur la
ligne de commande, l'exécuter. Vous obtenez donc de la tomate tout de suite. Maintenant, si je change cela en onion, disons que le logiciel l'a changé et
qu'en sauvegardant, cliquez sur Enregistrer. L'oignon
y a été imprimé au bout de 10 secondes. Si je le remplace par de l'ail, sauvegardez. Attendez, attendez quelques secondes. L'ail y est imprimé. Ainsi, toutes les 10 secondes, le script récupère
les données des
légumes du CXC et imprime sur
une ligne de commande Donc, contrôlez C pour l'interrompre. C'est ainsi que vous utilisez un module. Maintenant, tout n'est pas intégré dans votre logiciel d'
interprétation Python. Certaines choses, en fait,
beaucoup d'entre elles se présentent sous une forme différente que je vais expliquer dans la prochaine conférence.
74. 73. Modules Python standard: Auparavant, vous avez appris que vous pouviez obtenir une liste de modules
intégrés à Python en utilisant les noms de modules
intégrés en C. À titre d'exemple, nous
utilisons le module time, qui bloquerait l'exécution du
script pendant un
certain nombre de secondes. Maintenant, laissez-moi vous montrer quelque chose. Je vais exécuter un script.
L'oignon sera
imprimé car il se trouve dans les
légumes du fichier CXT Cependant, si je
supprime maintenant ce fichier, vous verrez que la prochaine fois que le script vérifiera la présence des fichiers, les légumes parsèment le chemin TXT. Il s'agit donc d'un chemin de fichier. Cela va générer une
erreur « fichier introuvable », aucun fichier ou répertoire de ce type. Imaginez donc que ce
programme s'exécute sur un serveur 24 heures sur 24 et 7 jours sur 7 et que,
pour une raison ou une autre , le logiciel qui
générait ces
fichiers ne génère pas le fichier, donc l'exécution de votre script se
terminera et peut-être que dans une minute, votre logiciel recommencera à
générer les fichiers, mais votre script Python
ne reprendra pas car il
contient une erreur ici. Donc, ce que nous voulons faire, c'est continuer à exécuter le script Python même si le fichier ne se trouve pas dans
le répertoire qui s'y trouve. Pour ce faire, nous voulons
utiliser le module OS. Importez le système d'exploitation,
et vous remarquerez que exploitation ne fait pas partie des modules Python
intégrés. En effet, OS est un module
écrit en Python. Tous ces modules sont intégrés, ce qui signifie qu'ils sont
écrits en langage C dans l'implémentation
logicielle Python. Le système d'exploitation n'est pas l'un d'entre eux. Pour savoir où se trouve le système d'exploitation, vous pouvez utiliser le préfixe Vous y trouverez un chemin de
répertoire, qui peut être
différent
selon le
système d'exploitation que vous utilisez. Veuillez donc accéder
à ce répertoire. Je préfère aller dans ce répertoire en le copiant sans les codes. Donc, copiez tout sans
le DES, comme ça. Accédez à votre terminal de
ligne de commande, et si vous êtes sous Windows, utilisez Démarrer et collez le répertoire qui s'y trouve,
puis appuyez sur Entrée. Si vous utilisez Mac ou Linux, utilisez Ouvrir au lieu de Démarrer et
collez à nouveau le répertoire. Appuyez sur Entrée pour ouvrir votre explorateur Windows ou votre Finder, peu importe ce dont vous avez besoin
pour ouvrir des dossiers. Pour que le dossier 3.7
que vous voyez ici
et que vous allez ensuite dans Lib double-clique. Recherchez ensuite le dossier, Python 3.7 ou toute autre
version que vous avez. Python a donc
quelque chose à trois points. Double-cliquez dessus. Et ici, vous verrez un certain nombre
de fichiers Python point pi. Ce sont tous des fichiers Python. Ce sont tous des modules
Python standard, et le système d'exploitation en fait partie
. Cliquez sur Oh ici, double-cliquez dessus ou ouvrez-le avec n'importe quel éditeur de texte, et vous verrez qu'il s'
agit en fait de code Python. Assurez-vous de le fermer
avant de le changer. Donc, ne changez pas, ne modifiez pas les modules standard de
Python. Je vais donc le
fermer et vous pourrez utiliser DR pour voir ce dont vous
disposez pour ce module. Parmi eux, par exemple, je vais utiliser
l'objet path. Donc, avec ce chemin, Path possède une méthode
appelée exists. La méthode exist obtient un argument qui
doit être une chaîne, et c'est censé être
le chemin du fichier vous voulez vérifier s'il existe
dans le répertoire actuel. Écrivons donc le chemin du
répertoire vers le fichier, et je reçois faux car le fichier ne se trouvait pas dans
le répertoire actuel. Si j'y vais et que je
crée ce fichier dans
le dossier des fichiers, j'
ai maintenant un chemin de fichier TXT avec des fichiers slash
vegetables point point Si je l'exécute à nouveau, je vais devenir vrai. Et nous pouvons utiliser ce
fait dans notre programme Python. Donc, avant d'ouvrir le fichier en mode réel, nous voulons vérifier si le
fichier existe, car si nous ne le faisons pas et que
le fichier n'est pas là, cette ligne va
générer l'erreur « fichier
introuvable ». Donc, avant de faire cela, nous voulons vérifier si c'est le chemin
qui existe. Les fichiers slash vegetables point TXT. Et comme il s'agit d'une condition, nous voulons y utiliser une colonne. Et après cela, quoi que
vous vouliez faire, il faut le mettre en retrait Donc, ce sera en dessous si cela fait également
partie du bloc W, alors indentez-le également Et puis s rentre à nouveau dans
la boucle du fil. Ce que vous voulez
faire sous ls, eh bien, peut-être que nous voulons
imprimer Le fichier n'existe pas. Et alors fais attention ici. Le time
slip doit se trouver en dehors du bloc IL car vous souhaitez exécuter indépendamment
du bloc conditionnel, ce qui signifie que si le fichier existe,
il sera exécuté. Si le fichier n'existe pas, il sera exécuté. Et une fois l'
une ou l'autre exécutée, nous allons
toujours
exécuter ce lapsus. Permettez-moi donc de sauvegarder le
script et de l'exécuter. Et nous avons une erreur, le système d'
exploitation n'est pas défini. Je suis content que cela soit apparu car les modules
doivent être importés. Sinon, vous allez obtenir cette erreur de nom car le système d'exploitation, avant d'être utilisé ici, n'a pas été importé et il ne s'agit pas d'une fonction ou d'une
méthode intégrée telle que l'impression que
vous n'avez pas besoin d'importer. Son nom n'est donc pas immédiatement
disponible
dans l'espace de nom. Enregistrez à nouveau le script, exécutez-le et nous obtenons une
chaîne vide car les légumes sont actuellement vides. Maintenant, si je supprime des légumes comme
ça, attends un peu. Et nous le faisons imprimer. Si vous créez à nouveau le fichier, écrivez-y quelque chose, enregistrez le fichier. N'oubliez pas de prétendre que le logiciel
génère ce fichier Donc, vous y introduisez le gaulois. Maintenant, je peux interrompre l'
exécution du script avec Control C, et ce sont deux modules Python
standard, et ils sont exactement les mêmes, vous pouvez
donc utiliser JR avec eux. Toutes les règles de Python
s'appliquent donc à ces modules. La seule différence est
que le temps est écrit en langage
C et intégré au logiciel Python,
et
que le système d'exploitation est fourni sous la forme d'un script point pi, et il est arrivé ici lorsque
vous avez installé Python. Il a donc été copié dans l'un des répertoires de votre
ordinateur, et vous pouvez importer
tous ces modules, modules
standard en Python. Maintenant, bien sûr, tout n'est pas inclus dans votre installation de
Python. Donc, des choses que vous devez installer. Je vais donc vous le montrer
dans la prochaine vidéo.
75. 74. Modules tiers: Dans les
conférences précédentes, nous avons créé un programme qui passe en revue les légumes du fichier TXI toutes les 10 secondes et en
imprime le contenu Donc, les programmes qui s'exécutent ici. Maintenant, vegetables point TXT
n'est qu'un simple fichier texte contenant des données inutiles comme
l'ail et l'oignon. Que se passerait-il si nous disposions d'
autres données
du monde réel, telles que le Temps soulignait
le fichier CSV ? Il s'agit donc d'un fichier CSV, qui est essentiellement un fichier texte. Et il a une structure
de plusieurs colonnes. Chaque colonne contient donc des données. Vous voyez ici qu'il s'agit d'un en-tête. Il comporte deux colonnes, SD une pour la station un et
SD deux pour la station deux. Nous avons donc deux stations
d'observation météo, et elles ont enregistré ces
données, ces températures. Disons que ce sont des
observations faites en une journée. C'est le
matin, c'est plus tard dans l'après-midi
et dans la nuit. Nous avons donc deux colonnes. Notre devoir est maintenant de lire
ce fichier toutes les 10 secondes, comme nous le faisons avec les
légumes dans ce fichier TXT. Mais au lieu d'
imprimer son contenu, nous devons imprimer
la valeur moyenne de toutes ces valeurs. Nous devrions donc le faire
toutes les 10 secondes. Eh bien, normalement,
vous devriez le faire toutes les 24 heures parce que
c'est plus logique. Comme ces données sont des données
quotidiennes, des données de température quotidiennes, elles
sont modifiées tous les jours. Il est judicieux
d'imprimer la valeur,
la valeur moyenne,
toutes les 24 heures. Et bien sûr, vous
pouvez le faire facilement en modifiant
simplement la valeur
de 10 secondes à 24 heures. Vous pouvez facilement le calculer. Mais pour des raisons de
simplicité, utilisons simplement 10 secondes. Maintenant, bien que nous puissions le
faire en utilisant la méthode open pour charger
les données en Python, cela chargerait les
données sous forme de chaîne. Ce texte entier
serait donc chargé sous forme
de chaîne en Python. Ensuite, nous devrons appliquer des opérations de
traitement de chaînes pour diviser toutes ces valeurs
et les convertir en valeurs flottantes. Mais cela reviendrait à
réinventer la roue. Ce que j'essaie de dire, c'est
que quelqu'un d'
autre a écrit du code Python qui le fait très facilement en une
ou deux lignes de code. Et ceux qui ont écrit ceci ont construit en
tant que bibliothèque tierce. Donc, tout comme nous avons utilisé le temps et le système d'exploitation en
les important dans Python, nous pouvons également utiliser une autre
bibliothèque dans ce cas pour charger ces données dans un format agréable en Python.
Laissez-moi vous montrer comment faire. Le nom de la bibliothèque que
je connais est Pandas, et Pandas n'est pas fourni
par défaut avec Python Ainsi, lorsque vous installerez Python,
Pandas ne sera pas là, mais vous pouvez l'installer avec PIP PIP est une autre
bibliothèque installée par
défaut en Python et utilisée pour installer
d'autres bibliothèques tierces Un point très important que
je tiens à souligner est que la commande PIP peut varier entre les différents systèmes
d'exploitation
et les différentes
installations de Python Par exemple, si vous
utilisez la version 3.8 de Python, vous devrez peut-être taper
PIP 3.8 au lieu de simplement PIP Si vous utilisez Python 3.9, vous devrez saisir PIP 3.9 Si vous utilisez Python 3.10, qui est plus récent que 3.9, vous devez saisir PIP Donc, pour résumer, vous
devez utiliser vos propres commandes. Chaque fois que je tape le PIP trois, vous devez utiliser votre
propre PIP 3.8 ou PIP 3.9, etc., sur votre ordinateur Je vais donc utiliser Pip Three,
puis installer des pandas. Notez que vous ne devez pas modifier la
partie install pandas de la commande Vous ne devez modifier que la partie PIP comme je vous l'ai
expliqué OK, Pandas est donc le nom de la bibliothèque que
nous voulons installer Les barres se remplissent donc. Cela signifie que la bibliothèque Pandas est installée
avec succès. Génial. Maintenant, allons-y et utilisons Pandas dans notre script ici Importez des pandas, comme nous l'avons
fait avec d'autres bibliothèques. Donc, ces deux-là, c'était
une bibliothèque standard. Il est intégré à
l'interpréteur Python. Et c'est,
encore une bibliothèque standard, mais elle n'est pas intégrée,
elle est écrite en Python. Ce pandas est également
écrit en Python, et maintenant il vient d'être installé dans nos fichiers
d'installation Python Laissez-moi vous montrer où
se trouvent ces pandas. Ouvrons une session Python. Donc, si vous importez le SIS
puis le préfixe sys point, vous
obtiendrez ce répertoire Quel que soit le répertoire que vous avez, copiez-le sans les codes, puis vous démarrez sous Windows
et vous payez le répertoire sur Mac, puis vous
ouvrez et payez le répertoire, appuyez sur Entrée, pour
ouvrir le répertoire, passez à Lib to Python. Et puis OS, par exemple, était là, Os point pi. Il s'agissait de bibliothèques standard. Maintenant, quoi que vous
installiez avec PIP, cela se trouvera dans le répertoire des packages du
site, qui se trouve
quelque part ici, oui Donc, des pandas, ce sont des pandas. Nous venons d'installer des pandas. Dans ce cas, il ne
s'agit pas d'un module, mais d'un ensemble de modules. Et c'est ce qu'on appelle un package. Lorsque vous avez plusieurs modules, cela s'appelle un package. Mais vous pouvez toujours
l'appeler bibliothèque. Une bibliothèque est donc un nom
généralement utilisé pour désigner à la fois des
modules et des bibliothèques. Donc, codez lorsque vous utilisez Pandas, cela ne fait aucune différence S'il s'agit d'un module ou d' un ensemble de modules,
donc un package. Tout le code de
Pandas est donc là, et nous pouvons maintenant utiliser ce
code dans notre script Permettez-moi donc de vous montrer dans
la prochaine conférence comment nous utilisons cette bibliothèque
tierce de Pandas
76. 75. Exemple de module tiers ++: Alors allons-y et lisons le contenu de ce
fichier avec Pandas Une bibliothèque d'
analyse de données très puissante. Nous aborderons plus
en profondeur les pandas plus tard. Nous avons une section
dédiée aux pandas et nous
avons des applications dans lesquelles nous
allons beaucoup utiliser les pandas Mais pour l'instant,
permettez-moi de vous donner une brève démonstration du fonctionnement des pandas Assurez-vous de l'importer. J'ai importé ici,
puis en cours de route, gardons cela conditionnel pour vérifier si le fichier s'y trouve Dans ce cas, ce
serait Temps today point C SV. Ensuite, si le fichier existe, nous voulons charger les données
dans cette variable de données. Pour ce faire, nous utilisons la méthode
de lecture CSV de Pandas Et voilà, vous avez
deviné le chemin
du fichier. Comme ça. Donc, si le fichier existe, lisez les données, puis
imprimez la moyenne des points des données. Cet objet
a donc une méthode moyenne. Je vais vous montrer plus tard
ce qu'est cet objet. Mais pour l'instant, allons-y
et exécutons ce script. Nous obtenons donc la moyenne
de chacune des colonnes. C'est un moyen pour la station 1, et c'est un moyen
pour la station 2. Donc ça marche.
Maintenant, si vous vouliez obtenir la moyenne d'une seule
colonne ST, il vous suffit de le faire. Cela vous donnera donc la
moyenne de la colonne ST de la
colonne Station 1. Et ainsi de suite. L'idée ici est
d'importer des pandas, et lorsque vous l'exécutez, l'exécutez un objet appelé
trame de données est créé Vous pouvez constater que vous disposez d'une vue structurée de ces données. Il s'agit donc d'un type
d'objet spécifique. Tout comme nous avons des nombres entiers
et des nombres flottants, nous avons également ces
autres types que vous pouvez trouver dans les bibliothèques de
ces bibliothèques tierces, afin que chacun puisse créer ses
propres Et il s'agit de bibliothèques, donc de bibliothèques intégrées, de bibliothèques
standard, écrites en Python et de bibliothèques
tierces, qui sont presque toujours écrites en Python. Cela
concerne les bibliothèques.
77. 76. Introduction à l'utilisation de Python avec CSV, JSON et Excel Files: Bonjour, bienvenue dans une nouvelle section, et ce sera très intéressant à enseigner pour
moi et aussi des informations
très, très utiles à apprendre. Nous travaillerons donc avec des fichiers CSV
externes, des fichiers Excel, des fichiers JSON. Il s'agit donc de
fichiers externes dans lesquels vous pouvez stocker des données et
accéder à ces fichiers. Vous pouvez les manipuler
depuis votre programme Python. Votre programme peut donc
interagir avec ces fichiers, et c'est ce que vous allez
apprendre dans cette section. Alors préparez-vous, et je vous
parlerai dans la prochaine vidéo.
78. 77. La bibliothèque de pandas pour + l'analyse de données: Bonjour, bienvenue dans
cette nouvelle section. Et dans cette section, vous apprendrez
à utiliser Pandas
, une bibliothèque
Python très importante, et vous ne
voulez vraiment pas la manquer Alors, qu'est-ce que Pandas ? Eh bien,
Pandas est une bibliothèque fournissant des structures de données et des outils d'analyse de
données
en Python Ou si le mot
outils vous embrouille,
vous pouvez dire que
Pandas est une bibliothèque fournissant des structures de données
et du code d'analyse de données Pandas vous
permet donc de
charger des données provenant de
différentes sources dans
Python, charger des données provenant de
différentes sources dans puis d'
utiliser du code Python pour analyser ces données
et produire des résultats, qui peuvent prendre la
forme de tableaux, de texte visualisation à l'
aide de bibliothèques de visualisation
telles que book,
book, qui seront abordées
plus loin dans le cours Pour l'instant, nous allons nous concentrer sur les
données sans les visualiser, et Panas est parfait pour cela Alors, en pratique, comment
utilisons-nous les pandas ? Eh bien, vous apprendrez
à ouvrir des fichiers texte à
l'aide des méthodes de gestion de
fichiers intégrées à Python plus tôt dans le cours. Maintenant, ce que nous avons ouvert à partir de
TextFils n'était que du texte brut. Mais que faire si vous souhaitez
charger des fichiers texte contenant des données constituées de
lignes et de colonnes ? Ou les choses se compliquent un peu. Mais c'est là
que Pandas entre en jeu. Vous pouvez donc probablement le faire
en utilisant les méthodes
Python intégrées que vous
avez apprises dans le cours. Mais pour être plus efficace et
beaucoup plus efficace, vous devez disposer d'une
bibliothèque de haut niveau telle que Pandas, capable de reconnaître automatiquement
ces structures de données J'utilise des pandas pour
charger des données issues d'activités d'exploration de données
telles que le scrapping sur le Web Vous supprimez donc les données d'
un site Web avec Python ,
puis vous les stockez
dans ces blocs de données. Vous utilisez donc des pandas pour vous fournir des structures
de données en Python Et j'utilise des pandas pour charger
des données à partir de fichiers Excel, et j'utilise également des panneaux pour analyser ces données
au lieu d'utiliser Excel Excel peut être utile pour
analyser un petit tableau de données adapté à l'écran de
votre ordinateur. Mais pour des données plus volumineuses, vous devez vraiment utiliser du code. Vous écrivez du code Python une fois, puis vous l'utilisez également avec
d'autres données. Et vous ne voulez pas effectuer de
sélections, de glisser-déplacer et de nombreuses autres
opérations fastidieuses que vous effectuez
normalement dans un programme graphique
tel qu'Excel code est donc la voie à suivre si vous voulez être
efficace avec les données, et Python est parfait
pour cela avec Pandas Vous voulez vraiment bien vous familiariser
avec les panneaux,
et vous l' apprendrez dans
cette section et vous vous
entraînerez également avec des
applications du monde réel que
nous développerons avec des
applications du monde réel que
nous développerons au fur et à mesure de votre
progression dans le cours. Allons-y et plongeons-nous dans un peu de code dans les
prochaines conférences. On se voit.
79. 78. Débuter avec les pandas: Génial. Encore une fois, Pandas
est une bibliothèque qui fournit des structures de données et des outils d'analyse de
données en Python Dans cette conférence, vous
verrez ce que je veux dire par structures de
données
et analyse de données. Vous verrez donc l'objet Pandas
principal, qui est une structure
contenant les données Et vous verrez que nous obtenons des données de la structure
et que nous les analysons. Je vais donc ouvrir une ligne de commande
simple,
et pour l'instant, nous utiliserons IPython, ce qui est idéal pour analyse
des données et le
travail avec Mais le bloc-notes
Jupiter est encore meilleur. Jupiter Notebook est
comme un Python Shell. Il s'agit en fait d'une combinaison d' un shell Python et
d'un éditeur Python. Et c'est un outil basé sur un navigateur dans lequel vous pouvez écrire du code Python Il est très efficace, ce qui augmente vraiment
votre productivité Mais pour cette conférence, je vais
commencer par des choses simples, une étape à la fois, et je vais vous présenter les
pandas utilisant uniquement IPython Ensuite, dans la prochaine conférence,
je vais vous montrer comment configurer un bloc-notes Jupiter auparavant
connu sous le nom de bloc-notes iPython Vous allez donc configurer Jupiter, et je vais vous montrer comment
travailler avec Jupiter. Donc pour l'instant, allons-y et utilisons la simple console IPython Importez des pandas. Et, normalement, la première chose à
faire est d'importer des données, par exemple,
à
partir d' un fichier CSV ou d'un fichier TextFile ou même d'un fichier Excel,
JSON ou d'autres formats, que nous aborderons plus tard Mais il existe également d'autres moyens de créer une structure de données Pandas Maintenant, la première chose que
vous devez savoir, c'est que
cette structure de données
dont je parle
s'appelle un bloc de données. Il s'agit donc d'un objet spécial qui contiendra les données.
Et tu peux en créer un. Vous pouvez stocker un bloc de données dans une variable, disons une variable DF. Cadre de données Mm Pandas. Je crée donc un bloc de
données manuellement, en transmettant des valeurs
manuellement via Python. Normalement, vous souhaitez utiliser d'
autres fichiers, comme je l'ai mentionné. Ainsi, le cadre
de données considère désormais le bloc de données comme une table. Vous pouvez donc
transmettre une liste de listes où chaque liste
sera une ligne de ce tableau. Passons donc quelques
données deux, quatre, six et dix, 20, 30. Vous l'exécutez, cela a réussi car vous
n'avez pas reçu d'erreur. En avez-vous un, et
voici le bloc de données. Donc 246 est la première ligne, dix, 20, 30 est la deuxième rangée. Ces zéro, un, deux sont
les noms des colonnes, appelés index. Donc 01 voici les
index des lignes, et voici les noms
des colonnes L'avantage des panneaux
est que vous pouvez également avoir vos propres
noms de colonnes si vous le souhaitez. Je vais donc appeler à nouveau
cette expression, et je veux passer ici
un paramètre appelé columns qui attend
une liste de noms. Qui doit avoir
le même nombre d' éléments que le nombre de colonnes de votre bloc de
données. Donc, si vous transmettez
une liste avec trois éléments, vous devez également transmettre trois
colonnes ici. Disons que le prix est
aléatoire, l'âge et la valeur. Vous l'exécutez et
laissez-moi développer ce PDF.
Cette fois, vous voyez que vous y avez vos propres noms de
colonnes. De même, vous pouvez également
transmettre des noms personnalisés pour les index en
passant un index en tant que paramètre, puis vous voudriez
transmettre une liste avec deux éléments car nous
n'avons que deux lignes, disons la première, deuxième, DF, et vous
avez des index personnalisés Cependant, normalement, vous n'
aurez pas à transmettre d'index personnalisés. Les données ont normalement
un nombre défini de colonnes, mais les lignes peuvent contenir
des centaines et des milliers de
lignes, voire des millions. Vous ne voulez donc vraiment pas vous
embrouiller avec les noms d'index. Cependant, la fonctionnalité
n'est que cela dans des cas particuliers. Il existe donc un moyen de
créer un bloc de données de panneau, et vous en avez également
d'autres. ne sont pas très
courants à utiliser, mais je voulais juste savoir
s'ils existent. Encore une fois, vous passez une liste ici, puis vous
pouvez transmettre deux dictionnaires
à l'intérieur de cette liste Vous pouvez donc voir la similitude. Ici, nous avons utilisé une liste de listes. Ici, nous
transmettons également un objet de liste, mais il s'agit d'une liste de dictionnaires. Et, ce que vous pouvez faire ici,
c'est transmettre des valeurs, des clés et des valeurs pour un
dictionnaire, et ici aussi. Disons que le nom
John s'appelle Jack, exécutons ce DF deux. Et oui, il s'agit d'
une autre trame de données. Si vous souhaitez y ajouter
plus de colonnes, telles que le nom de famille, vous devez ajouter ici une autre clé et une autre valeur
pour le dictionnaire. Donc quelque chose comme le
nom de famille et maintenant, si vous l'exécutez et DF deux, vous y ajouterez la
colonne du nom de famille. Mais pour Jack, vous n'en obtenez
aucun parce que vous n'
avez pas inscrit de nom de famille dans
le deuxième dictionnaire. Donc, si vous faites de même pour Jack, si vous transmettez un nom de famille, vous
obtiendrez la valeur ici. Ce sont donc deux méthodes de base
pour créer des blocs de données à la volée. Comme je l'ai dit, normalement,
ces valeurs seront extraites de fichiers CSV, Excel, etc. Je le ferai au cours
des prochaines conférences. Et encore une chose
que je veux que vous sachiez, c'est qu' il s'
agit d'une structure de données, et maintenant que le
sens de l'analyse des
données sort de cette structure de données, vous voulez en extraire des informations. Vous voudrez peut-être extraire, par
exemple, la moyenne
de toutes ces valeurs. Donc deux, quatre, six, dix, 20, 30. Nous entrons donc ici dans la
phase d'analyse des données. Et l'approche pour
y parvenir est, vous savez, maintenant, cet objet de trame de données, que vous pouvez voir comme
un objet de type DF. Il s'agit donc d'une trame de données de pandas. Maintenant, des méthodes sont associées à cet
objet de trame de données. Si vous faites de la DR et que oui, vous voyez
qu'il existe de nombreuses méthodes que vous
pouvez appliquer. Trouvons ici la
méthode de la moyenne. Voici méchant. Donc, ce que vous pouvez faire, c'est pointer sur DF 1,
puis sur la moyenne et les crochets, et vous obtenez la moyenne
de toutes les colonnes. Et si vous voulez obtenir la moyenne
de l'ensemble du bloc de données, vous pouvez ensuite appliquer à nouveau la méthode de la
moyenne. Donc,
cela permet d' appliquer la méthode de la moyenne
à cette série ici. Donc, ce type d'objet est un objet de la série
Panda. Les séries utilisent plus ou
moins les mêmes méthodes que celles que vous allez
appliquer à un bloc de données. Donc, DF one et DF one point Price, et vous obtenez la série
de la colonne de prix. C'est donc aussi le cas si
vous vérifiez le type, il s'agit également d'une série de panneaux. Le bloc de données est donc constitué d'une série. Et bien entendu, vous pouvez également appliquer la méthode
de la moyenne au prix. De même, vous pouvez également
appliquer d'autres méthodes qui y sont
disponibles. Donc, Max et toi obtenez
la valeur maximale. Et oui, il s'agit de l'
introduction aux pandas. Lors de la prochaine conférence, vous
découvrirez Jupiter. C'est très agréable de travailler avec Jupiter. Alors
ne manquez pas ça. Ensuite, nous allons ouvrir des trames
de données, créer des trames de données à partir de fichiers. Je te verrai donc plus tard.
80. 79. Mise en place du carnet Jupyter +: Eh bien, dans cette conférence, je vais vous
montrer comment configurer le bloc-notes Jupiter
ou Jupiter en abrégé, et aussi comment l'utiliser. Jusqu'à présent, vous avez travaillé à la fois avec Python ou un shell
interactif e Python, mais vous avez également travaillé avec
un éditeur tel qu'Atom. Parfois, vous pouvez avoir
besoin d'un hybride
entre un shell interactif et
un éditeur
pour entre un shell interactif et tester des éléments, mais vous souhaitez également enregistrer les
blocs de code que vous
écrivez , car un shell
interactif est idéal pour tester des
choses rapidement, mais vous pouvez enregistrer le code, et l'éditeur est bon
pour enregistrer le code, mais il n'est pas idéal
pour tester des choses. Mais je peux vous dire qu'un
tel outil hybride existe, appelé
Jupiter notebook. Et c'est un outil formidable qui augmentera
votre productivité. Jupiter est particulièrement efficace
lorsque vous travaillez avec des données. C'est un environnement idéal
pour explorer les données, et vous verrez son
utilité dans un instant. Bien entendu, vous
souhaitez toujours utiliser des éditeurs tels qu'Atom lorsque vous
travaillez avec plusieurs scripts
Python qui interagissent les uns avec les autres. C'est le cas des applications
Web, par
exemple, lorsque vous
développez des applications Web, vous devrez gérer
plusieurs scripts
Python fichiers HTML, ainsi que des fichiers HTML,
CSS et autres. Créez une application Web plus tard dans le cours et vous verrez en
quoi Atom est utile pour cela. Mais pour les données, utilisez Jupiter. Alors Jupiter, voyons
comment l'installer. Eh bien, vous pouvez passer à
l'installation, alors installez et vous pouvez
suivre ces instructions. Mais au lieu de
passer par là, je vous conseille d' utiliser votre
ligne de commande pour installer Jupiter et de taper
PIP install Jupiter Nous téléchargeons donc Jupiter et il l'installera
dans votre système. Ensuite, pour démarrer
une session Jupiter, une bonne pratique consiste
à accéder à un dossier. Disons, testez-en trois. Et ici, vous pouvez ouvrir
une invite de commande, puis taper
Jupiter No book. Et cela ouvrira une
session Jupiter dans le navigateur. Le bloc-notes Jupiter est donc
en fait un bloc-notes de navigateur. La raison pour laquelle j'ai ouvert le bloc-notes
Jupiter en ligne de commande était qu'
au moins sous Windows, lorsque vous faites Shift puis que vous cliquez avec le bouton
droit sur le dossier, votre invite de commande s'ouvre dans le dossier actuel,
donc dans celui-ci ici. Et puis, lorsque vous créez
un fichier de bloc-notes maintenant, chaque fichier sera enregistré
dans ce répertoire ici. Vous pouvez également ouvrir votre invite de commande
où vous le souhaitez, puis vous pouvez accéder par CD
au dossier dans lequel vous souhaitez
enregistrer vos blocs-notes Jupiter Très bien, maintenant nous n'
avons rien ici. Donc, ce que vous pouvez faire, c'est
créer un bloc-notes. Et nous avons installé Jupiter
Earth en tant que bibliothèque Python. Donc, dans la catégorie des ordinateurs portables, nous avons
Python trois disponibles. Le noyau
sera donc Python 3. Si vous avez associé
d'autres langues ici, vous les verrez ici
sous Carnets Il s'agit donc d'un carnet vide. Et c'est le nom d'un bloc-notes et vous pouvez le modifier pour, par exemple,
tester. Appuyez sur OK. Et si vous allez dans le dossier, vous verrez que le fichier portant nom de
test et l'extension de
bloc-notes IPython a été créé Cela est donc créé automatiquement
chaque fois que vous tapez
quelque chose ici, que vous apportez des modifications
ou quelque chose comme ça. Maintenant, laissez-moi vous montrer comment vous pouvez travailler avec le bloc-notes iPython Vous pouvez donc prendre en compte chaque cellule. Il s'agit d'une cellule, et
vous pouvez considérer chaque cellule comme une ligne dans
un shell Python normal. Mais ici, dans ce shell, vous pouvez réellement écrire plusieurs
lignes de code. Disons en imprimer un,
puis si vous ne voulez pas l'exécuter suite, vous pouvez appuyer sur Entrée. Ainsi, avec Enter, vous entrez une
nouvelle ligne dans la cellule
, puis vous en imprimez deux et ainsi de suite. Et si vous voulez
exécuter la cellule maintenant, vous pouvez appuyer sur Ctrl Enter
pour obtenir le résultat. Maintenant, si vous souhaitez
créer une nouvelle cellule, Alt Enter le fera. Et ici, vous pouvez écrire
un autre bloc de code. Avec la touche Entrée, vous passez à la ligne
suivante, et ainsi de suite. Et si tu veux passer tout de suite à
la cellule suivante. Donc, avant d'appuyer sur
Ctrl Enter, vous pouvez
maintenant appuyer sur Shift Enter pour passer automatiquement à la
cellule suivante. Et avec Shift Enter, vous pouvez également exécuter la cellule sur laquelle
vous travailliez. Vous pouvez créer de nouvelles cellules avec Alta Enter et
les supprimer en appuyant d'abord sur Escape,
puis en appuyant à nouveau
deux fois sur DD. C'est donc assez flexible. Ce que vous devriez
remarquer, c'est que nous
avons essentiellement deux modes. Nous avons le mode commande. Ainsi, lorsque vous êtes en
mode commande, vous voyez un rectangle gris
autour de la cellule. Et lorsque vous devez
passer en mode édition, vous
appuyez sur Entrée. Ainsi, pendant que vous vous concentrez
sur la cellule actuelle, vous appuyez sur Entrée,
puis vous modifiez la cellule. Ainsi, en mode édition, lorsque vous tapez des choses, vous insérez du
texte dans la cellule, vous insérez
du code dans la cellule, mode
Escape et commande, DD et vous supprimez la cellule,
entrez, et vous entrez dans une nouvelle Ce sont donc les
raccourcis clavier les plus utilisés. Mais si vous souhaitez en
savoir plus sur les raccourcis, vous pouvez accéder à l'aide
, puis aux raccourcis clavier. Et puis vous voyez une liste ici. Mais ce sont de bons
points de départ. Lorsque vous avez terminé, vous pouvez simplement fermer un onglet et vous pouvez également fermer
l'arborescence des répertoires ici. Notez donc que Jupiter
s'ouvre en fait dans une session hôte locale. Et si vous souhaitez ouvrir à
nouveau votre bloc-notes, vous pouvez
revenir ici et ouvrir fenêtre de
commande ici
et le bloc-notes Jupiter. Voici le dossier, tel que nous l'avons laissé. Désormais, il est préférable d'utiliser un
bloc-notes Jupiter pour effectuer des explorations,
en particulier des explorations de données Donc, si vous travaillez, par exemple,
sur l' analyse ou la visualisation de
données, le bloc-notes Jupiter
est parfait à utiliser Vous pouvez utiliser le
bloc-notes Jupiter, par exemple, pour charger une table de
données au cours de la session. Pour cela, vous utiliseriez des pandas. Vous importez donc la bibliothèque, vous appuyez sur Entrée ou Shift
Enter pour passer à la cellule suivante, et vous appuyez
à nouveau sur Entrée pour écrire quelque chose. Supposons donc que DF est égal
à Pandas, Dal Fred CSV. Et j'ai un fichier CSV
quelque part dans mon système. Centre de presse et Whoa. Vous obtenez ainsi un joli tableau
HTML chargé à partir du fichier CZ, et vous pouvez également tracer des graphiques
dans le bloc-notes Jupiter C'est donc aussi quelque chose que
vous apprenez dans le cours. Ainsi, pour l'analyse des données
et les visualisations, vous pouvez également utiliser le
bloc-notes Jupiter pour le scrapping Web C'est très pratique parce que vous avez ces blocs
de code et
que vous devrez ensuite continuellement modifier le code. Vous voudrez peut-être
changer quelque chose ici, puis vous obtiendrez un bel affichage Pas exactement
celle-ci parce que c'est une chaîne foirée,
mais celle-ci, par exemple,
vous avez un curseur ici, qui vous permet de faire défiler la page vers le haut et vers le bas dans une
fenêtre séparée qui n'
affecte pas votre fenêtre principale en général J'espère donc que vous avez une bonne idée des règles de
Jupiter. Prenez simplement note des raccourcis clavier
pour exécuter le code, l'édition et du mode commande, vous savez, Enter escape et Enter à nouveau et ainsi
de suite. Et si vous
les pratiquez un peu, vous vous habituerez
très rapidement à Jupiter . Rendez-vous lors
de la prochaine conférence.
81. Charger des fichiers Csv dans Python: Maintenant que vous avez une connaissance de
base des pandas et que vous savez comment
utiliser les ordinateurs portables Jupiter, nous pouvons continuer et apprendre à charger différents types
de fichiers en Python,
en utilisant des pandas J'ai donc cinq fichiers ici. Ils contiennent exactement
les mêmes sites de données. Et ceci est une version texte, ou laissez-moi ouvrir la version
Excel qui montrera un joli aperçu
des données, comme vous pouvez le voir. Nous avons donc sept
lignes de code, en-tête
compris, et
nous avons également sept colonnes. Il ne s'agit donc que de quelques
données de base sur les supermarchés, l'adresse, la ville,
l'État,
le pays , le nom du supermarché
et le nombre d'employés. De même, nous avons
exactement les mêmes données, mais dans des formats différents. Nous avons donc CSV et CSV signifie des valeurs séparées par des
virgules. Il s'agit donc essentiellement d'un
fichier texte où les valeurs,
les colonnes sont séparées par des
virgules, comme vous pouvez le voir ici Chaque colonne est donc
séparée par une virgule. Mais il a une extension CSV, et il peut être ouvert avec Excel. Donc, si je l'ouvre
maintenant, vous verrez le même jeu de données que celui que
vous avez vu dans le fichier ELS. Nous avons également les mêmes données
séparées par des demi-colonnes, comme vous pouvez le voir ici. Et oui, si vous
travaillez avec des données, vous connaissez
probablement ce type de fichiers. Voici donc comment stocker les données. Vous devez avoir
certaines conventions, et en utilisant ces conventions, vous pouvez utiliser d'autres programmes
tels que Python pour charger ces données. Ainsi, lorsque vous chargez un fichier CS, Python sait que les
valeurs seront séparées par virgules et sait
comment les séparer. Il sait comment extraire des valeurs. Nous allons donc
les ouvrir une par une. Nous avons également un fichier JSON. C'est un autre
format pour stocker des données, et cela ressemble à un
dictionnaire Python, en fait. Nous allons donc également apprendre
à les
convertir en dataframe de Panda Tous ces éléments seront donc convertis dans
les dataframes de Panda. Oui, je vais commencer le bloc-notes
Jupiter Jupiter.
Voici mes dossiers. Je vais créer un nouveau bloc-notes Jupiter
pour Python 3. Avant de charger
ces fichiers en Python. Il y a un truc que je fais habituellement. Importez le système d'exploitation, puis
une liste de points, et je vais entrer, exécuter cela.
Vous passez à la ligne suivante. Et vous obtenez
une liste de fichiers et de dossiers ainsi que des noms de fichiers que vous avez dans le répertoire
actuel. Donc maintenant, je n'ai pas besoin
de passer à mon dossier pour
regarder les noms. J'ai tout ici. Maintenant, je peux importer
des pandas. Et commençons à charger
ces fichiers un par un. Disons DF un,
donc le bloc de données un, et cela
équivaudrait à Pandas Je vais lire le CSV. Ensuite, vous devez passer le nom du fichier
que vous souhaitez ouvrir. Superplantez le fichier CSV,
saisissez-le simplement et vous voudrez peut-être l'
imprimer. Donc, DF, là. Et oui, ce que nous avons obtenu, c'est que nous avons d'
abord chargé le bloc de données , puis nous l'avons
imprimé. Nous avons donc mis cette jolie
table là-dedans. Voilà à quel point il est facile de
charger des données à partir d'un fichier CS. Maintenant, l'avantage
d'avoir les données en Python est qu'une fois que
vous les avez chargées en Python, vous pouvez effectuer de très nombreuses opérations avec vos données. Vous pouvez faire des statistiques
et ajouter de nouvelles colonnes. Vous pouvez fusionner des colonnes. Vous pouvez ajouter les numéros d' une colonne aux numéros
des autres colonnes. Et à la fin, vous pouvez
réexporter ces données
vers des formats tels que CSV,
Excel, etc. Nous allons donc le faire plus tard. Mais d'abord, voyons
comment nous chargeons les données de plusieurs formats de fichiers
dans la vidéo suivante.
82. Charger les fichiers Excel dans Python (PAS DE FILIENOME): Et allons-y et chargeons
le fichier Excel X, en fait, un fichier Excel. Les Pandas lisent donc Excel et vous leur transmettez le nom
du fichier Excel Et normalement, vous
devez également transmettre un autre paramètre ici
pour les fichiers Excel car, vous savez, les fichiers Excel peuvent contenir plusieurs feuilles. Vous voulez donc spécifier le nom de la feuille qui
commence à zéro, vous devez
donc transmettre
l'index. Si vous voulez la première feuille, vous devez passer à zéro. Si vous voulez une deuxième feuille, vous devez en transmettre une et ainsi de suite. Je vais donc passer zéro. Je n'avais qu'une seule feuille
dans le fichier Excel. Faites trois exécutions. Et nous avons également
réussi à lire le fichier
Excel. Passons donc à autre chose.
83. Charger des fichiers texte dans Python: Oui, passons
au fichier TXT. C'est donc un supermarché
séparé par des virgules. Il s'agit donc d'une structure de données
séparée par des virgules. Pour cela, donc pour le fichier TXT
séparé par des virgules, encore une fois, vous utilisez R CSV. Juste comme ça, D quatre. Et voici le bloc de données. Ainsi, le CSV des supermarchés en fait que certains disent qu'il s'agit
d'un fichier séparé par des virgules, mais pour être plus
précis, vous
diriez des valeurs séparées par des caractères Donc C est pour le personnage. Et il se peut qu'il y
ait différents personnages là-bas. Dans ce cas, lorsque vous
avez des virgules comme séparateurs, vous n'avez pas à passer de paramètre de
séparateur ici Mais lorsque vous aurez d'autres valeurs comme séparateurs, vous
devrez les transmettre C'est le scénario suivant. Donc DA 5, les pandas pointent en rouge, CSV. Nous parlons donc de supermarchés, de points-virgules,
ou de
supermarchés, les points-virgules point-virgules point-virgule point-virgule
sur TXT Oui, laissez-moi essayer ce SiS maintenant. Donc, si je l'exécute,
Python ne
pourra pas y reconnaître
le point-virgule Cela est dû au fait que le paramètre de séparation a
une valeur de virgule par défaut Vous voulez donc remplacer
cela par votre séparateur, qui est un point-virgule.
Dans ce cas, Dans ce cas Nous avons reçu une erreur,
un séparateur d'arguments de
mots clés inattendu . Il semble donc que
read underscore, CSV n'ait pas de paramètre
séparé Dans ce cas, vous
devez demander de l'aide. Alors oui, voici les paramètres
que vous souhaitez transmettre. Il s'agit donc en fait d'un SAP, et vous pouvez voir que la
valeur par défaut de SAP est une virgule Alors fermez-le et allez ici, changez-le en SAP, exécutez, et voici le bloc de données. Génial. Que reste-t-il à faire ? Oui, nous avons tout consommé. Et il s'agit de
lire des fichiers locaux.
84. 83. Introduction à Numpy ++: Considérez cette image en niveaux de gris. Maintenant, cette image est
composée de pixels. Celui-ci en
a trois sur cinq, il a
donc 15 pixels. C'est donc une image assez petite. Maintenant, chaque pixel a une valeur, et c'est ce qui
définit l'intensité de la couleur grise
pour chaque pixel. En réalité, ce sont des chiffres, mais l'écran de notre ordinateur les
affiche dans un format couleur
, lisible
par les humains. Ce que j'essaie de comprendre, c'est que les programmes utilisent des nombres
pour stocker des images. Ensuite, l'écran de
l'ordinateur ou l'écran convertit
ces nombres en couleurs. Python peut également traiter des
images, tout comme Photoshop. Il ne peut probablement pas faire toutes les choses intéressantes que
vous pouvez faire avec Photoshop, mais vous pouvez utiliser
Python pour automatiser les choses. Par exemple, nous utiliserons les
capacités de traitement d'image de
Python pour détecter des visages à partir de photos à partir d'images ainsi que pour détecter
des objets en mouvement dans des vidéos. Les vidéos sont donc faites d'images. C'est donc la même
chose, en gros. Et Python stocke et lit images à l'aide de tableaux de nombres. Par exemple, cette image peut être représentée, comme vous le savez, une liste de trois autres listes. Donc, trois listes parce que nous y
avons trois lignes avec des pixels. Ensuite, dans chacune des listes, vous aurez cinq chiffres et ainsi de
suite, et le cinquième. Il en va de même pour les deux
autres listes. Nous avons cinq chiffres
parce que nous avons cinq colonnes, donc cinq pixels pour chaque ligne. Et c'est une image pour Python. Et c'est là
que Numpi est utile. Vous pouvez donc représenter
des images avec nous comme nous l'avons fait ici, mais
cela n'est pas très efficace
car pour les grandes images, occupe beaucoup de mémoire et
ralentit donc les opérations sur celles-ci. Cela est donc résolu par
Numpi qui est une bibliothèque,
une bibliothèque Python qui fournit un objet de
tableau multidimensionnel Permettez-moi donc de
créer cet objet de tableau. Tout d'abord,
vous devez importer Numbi Et si vous avez
installé des pandas, numpie
aurait dû être installé avec car
pandas
est Si vous avez déjà installé un
Numpi, allez-y et installez
Numpi Et si, pour une raison ou une autre, vous
rencontrez des problèmes sous Windows, alors allez-y, comme je vous l'ai montré, et trouvez les bibliothèques
Python précompilées. Allez de ce côté
, recherchez Numpi , puis déterminez si vous utilisez une version
3.5 de Python, obtenons
simplement cette version Ensuite, vous
pointez sur ce fichier avec Pip Install et le
nom du fichier Génial. Non, j'ai installé
num pi, donc je vais créer cet objet
multidimensionnel et le stocker dans une variable. Ce serait une plage de points numériques A. Et disons 27. Exécutez-le et imprimez-le pour
qu'il s' agisse d'un tableau NumPi.
C'est comme ça qu'on l'appelle. Celui-ci n'est pas exactement un tableau multidimensionnel car il n'
a qu'une seule dimension. C'est donc un avion, c'est comme une liste d'
avions, une liste Python, mais ce n'est toujours pas
exactement le type. Désolée. Il s'agit donc d'un tableau NPi
à N dimensions Il peut être
unidimensionnel, bidimensionnel ou tridimensionnel. Nous en avons donc un, deux, trois, et je vais vous montrer tous
ces scénarios. C'était donc le tableau
unidimensionnel, et si vous voulez l'
imprimer sous une forme agréable, ce serait le tableau. Maintenant, je crée juste un tableau
numérique en utilisant des
nombres à la volée, mais normalement, vous devez
créer un rayon à partir d'images, et nous le ferons en un instant. Donc, pour l'instant, créons
des tableaux manuellement. Voyons maintenant quels sont les tableaux
bidimensionnels. Forme en V trois par neuf. Nous avons donc déjà ce tableau
unidimensionnel, et nous voulons le
convertir en tableau bidimensionnel. Si vous l'exécutez, vous
obtenez un tableau bidimensionnel. Il s'agit donc d'un tableau
bidimensionnel car il a deux dimensions. Alors considérez cela comme
cette image qui tombe. Nous avons deux dimensions :
verticale et horizontale. Maintenant, qu'est-ce qu'un tableau
tridimensionnel ? Même si les tableaux
tridimensionnels sont moins fréquemment utilisés, il est toujours bon de les
connaître. Quoi qu'il en soit, laissez-moi créer un tableau
tridimensionnel. Je pourrais dire trois par
trois parce que vous savez que
vous avez 27 éléments, donc trois par
trois vous en donnent 27. Oui, c'est un tableau
tridimensionnel. Imaginez cela comme un cube
à trois dimensions. Donc, trois par trois, par trois. Et en pratique, vous
le verrez dans un instant
dans cette conférence. Où traitons-nous d'un tridimensionnel ? Alors, supportez-moi. Et vous pouvez
voir les similitudes entre un tableau non Pi et une
simple liste de listes en Python. Cela ressemblerait donc à
un tableau bidimensionnel, si vous voulez l'
appeler ainsi. La structure
au niveau inférieur est différente entre les
listes Python et les tableaux NPi De plus, les tableaux Nopi vous
permettent d'effectuer
des opérations plus efficaces,
telles que l'itération entre les éléments du
tableau Et vous pouvez également créer un
tableau Nopi à partir d'une liste Python. Par exemple, je vais
obtenir cette liste ici et je vais créer un nouvel objet, puis pointer sur nupi et pour
convertir une liste en tableau np, vous devriez utiliser
une méthode de tableau Et puis entre crochets se trouve l'objet que
vous souhaitez convertir. M et c'est un tableau, qui est presque exactement
comme celui-ci ici. Et si vous l'imprimez, vous ne
verrez pas la différence. Tu sais, ils ont
exactement la même apparence. Mais ils ne le sont pas
parce que c'est une liste, et c'est une entorse. D'accord. Génial. Passons à autre chose. C'est donc Napi et comme
je l'ai mentionné plus tôt, Napi est une bibliothèque de base pour d'autres bibliothèques telles que
Pandas et OpenCV, qui est Les trames de données Pandas sont donc
basées sur des tableaux Numpi, et les objets CV ouverts sont
basés sur Donc, Pandas
ajoute simplement quelques fonctionnalités
intéressantes Là-dedans, tel qu'il ajoute. Il permet d'avoir des en-têtes et des index de
table, ce que vous ne pouvez pas avoir dans Numpi
car Numpi est
censé être plus simple et permet de
stocker des objets et d'effectuer des opérations avec un niveau plus bas stocker des objets Numpi est donc une exigence
pour de nombreuses bibliothèques. Et résolvons cette leçon ici, et
dans
la prochaine conférence, nous irons directement de l'
avant et créerons un tableau NumPi à partir de
notre image ici Donc cette image. OK,
on se voit là-bas.
85. 85: Et oui, le CV 2 est installé. Et ce que je peux faire avec Civ
two, entre autres choses, ce que je peux faire, la toute
première chose est de charger une image en Python en
utilisant les méthodes CV two Je vais donc charger cette image, qui est une très petite image,
d' ailleurs, je
n'ai que 15 pixels. Vous savez, une
image normale que vous avez utilisée pour prendre des photos ou
sur votre téléphone ou autre. Il a environ 1 000
pixels sur 1 000
, soit 1 million de
pixels, plus ou moins. Mais nous devons garder
les choses simples pour que vous compreniez ce qui se passe. CV pour l'importer et
oui, c'est réussi. Vous savez, je vais créer
une variable et l'appeler image IMF et G pour gris. Vous pouvez l'appeler
comme vous voulez, et pour mener une image
à la charger en Python, vous devez utiliser la méthode de partage
d'image. Ensuite, vous passez le
nom de votre image. Vous pouvez trouver cette image
dans la section des ressources. Alors allez-y
et téléchargez-le. Maintenant, il se trouve dans le même répertoire que
mon bloc-notes Jupiter Je peux
donc
indiquer le nom du fichier, y compris
l'
extension, en forme de petits points PNG. Et ici, la méthode de lecture d'image attend
également un autre
argument de votre part. Cela peut être zéro ou un. Donc zéro signifie que vous voulez
lire l'image en niveaux de gris. Et si vous en passez une, vous
lisez l'image en BGR, ce qui signifie bleu, vert et rouge Et vous comprendrez ce que signifie
chacune des versions. Faisons donc celui-ci d'abord. Oui, je vais l'imprimer. Et comment, c'était ça. Nous
n'avons donc aucun tableau. C'est un tableau bidimensionnel, il a
donc des dimensions
trois par cinq, ce qui correspond à notre image. Les lignes et les cinq colonnes. Maintenant,
si nous
passons zéro ici, nous lisons cela comme une image en niveaux de gris, c'est
parce que, vous savez ,
ce fichier PNG comporte en réalité trois bandes ou trois couches Et chaque couche possède un
certain nombre de couleurs. Ainsi, la première couche contient une
certaine quantité de bleu, la deuxième couche une
certaine quantité de vert et la dernière couche une
certaine quantité de rouge. La combinaison de chaque
pixel est donc une combinaison de l'intensité du
bleu, du vert et du rouge. Je sais que dans d'autres
programmes, ils utilisent le RGB alors que nous utilisons ce BGR maintenant, pratiquement, ce fichier ici, cette image
est pratiquement une image en niveaux de gris Cependant, chacun de ces
pixels possède ses propres bandes, de
sorte que
leur combinaison crée toujours, dans ce cas, les couleurs gris,
blanc et noir. Mais si nous avions une image en
couleur, cette fonction la convertirait en
niveaux de gris Encore une fois, nous avons
ici, vous savez, 187 est la valeur de l'intensité
pour ce premier pixel. Et puis vous avez
l'autre chiffre, et pour le blanc, vous
voyez du blanc ici. Nous avons trois pixels blancs. Et ils sont 255, tous. Toutes les couleurs sont comprises entre zéro, zéro étant le
noir, le noir absolu et 255 pour le blanc. Et tout ce qui se trouve entre
eux est dans l'échelle de gris. Donc maintenant, si je change ce 21, je vais obtenir le tableau
tridimensionnel, où cela représente
la couche bleue, le vert et le rouge. Ou vous pouvez même l'imprimer. Attention cependant à
ce que cela soit un peu transposé. Les matrices sont donc trois colonnes ici et
les lignes sont verticales. En gros, cela signifie que ce pixel a ces valeurs
correspondantes. Il a donc une intensité
de 187 pour le bleu, 198 pour le vert et
deux sur neuf pour le rouge. Et oui, c'est ainsi que
vous créez des
tableaux numpi à partir d'images Mais qu'en est-il de l'
inverse ? Donc, créer des images
du tableau numpi. Eh bien, pour ce faire,
vous refaites le CV deux, CV deux, puis vous
pointez sur la
méthode Iriz, donc image Ensuite, vous voulez donner
un nom à votre image. Disons, un nouveau PNG à
petits points gris, et puis, bien sûr, vous
devez réussir votre no pi. Passons donc à l'image grise. Exécutez cela, vous en obtenez deux, ce qui signifie que votre chute aurait
dû être créée maintenant. Oui, nouveau petit gris. Et oui,
c' est un fleuret et j'espère que cela renforcera vos
connaissances sur Nopi Maintenant, nous allons aller de l'avant et faire d'
autres choses ici. Plus précisément, dans
la prochaine conférence, nous apprendrons à
indexer, à découper et itérer des
tableaux Donc, en gros, vous allez apprendre
comment accéder à ces valeurs. Rendez-vous là-bas lors de
la prochaine conférence.
86. 85. Indexation, découpe et itération de tableaux chiffonnés: C'est bon. Tu sais
comment découper une liste. Donc, de zéro à un, nous vous donnerons le premier élément de la
liste et de zéro à deux, le premier et le deuxième
élément de la liste, et ainsi de suite. Avec les tableaux non Pi, vous faites
essentiellement la même chose, sauf qu'avec les tableaux non Pi, vous avez
parfois deux ou trois dimensions ou
plus. Alors laissez-moi continuer et je vais créer, je vais commencer par
un tableau bidimensionnel. Je vais donc obtenir cela
à partir de la variable. C'est donc le tableau nonpi avec
lequel nous allons travailler. Et oui, si vous voulez
extraire ce numéro ici, ici, celui-ci et celui-ci. Donc, ces quatre chiffres. Eh bien, vous devez d'abord définir l'index des lignes
que vous souhaitez découper. Ce serait donc de zéro à deux, ce qui vous donne les deux
premières lignes. En fait, on peut essayer ça. Et vous verrez que vous
obtenez les deux premières lignes. Maintenant, si vous ne voulez que
cette partie ici, donc ces deux chiffres
et ces deux, vous devriez réussir. Il y a une virgule, puis l'
index des colonnes. Ce serait, tu
sais, zéro ici, un, donc deux, trois, oui, deux à quatre, peut-être. Ouais Mais tu le fais. Ah, c'est ça. Cela signifie que vous
disposez de ce système d'indexation Cela commence donc à zéro pour les lignes, puis la deuxième ligne
est un, deux et ainsi de suite. Quatre colonnes, c'est la même chose. Zéro, un, deux, trois et quatre. Et en fait, si vous le souhaitez, vous pouvez voir la forme
de votre n par tableau. C'est donc trois par cinq, ce qui signifie zéro à
deux et zéro à quatre. Génial. Et bien sûr, vous pouvez utiliser la convention
d'indexation des listes, sorte que vous pouvez passer zéro et tout ce qui suit
ou juste comme ça Vous obtenez donc toutes les lignes
et uniquement les colonnes 2 et 3. De même, vous ne pouvez obtenir qu'
une seule valeur si vous le souhaitez. Pas particulièrement
celui-ci, car trois, c'est hors des
os pour l'axe zéro. L'axe zéro est donc un axe
horizontal, ce qui indique qu'il
n'y a pas de ligne d'indice trois. Nous avons donc fixé zéro, un, deux. Passons-en donc deux. Et vous obtenez 182, qui est le tout dernier
élément de la matrice Nopi Oui, c'est une question d'indexation. Que diriez-vous d'itérer
sur un tableau Nopi ? Eh bien, il y a deux
façons de le faire. La première consiste à
dire, disons que pour I dans votre tableau Nopi, imprime I. Cela aura pour
effet d'
imprimer les lignes de
vos tableaux numb Donc, ce à quoi j'accède dans
votre tableau numérique, ce sont les lignes. Ainsi, à chaque itération, il obtient la première
ligne et l'imprime lors de la première itération, puis de la deuxième,
puis de la troisième Et si vous souhaitez parcourir
les colonnes, vous devez accéder à la version transposée
de votre tableau numpi Et c'est comme ça qu'on procède. Enfin, si vous voulez
itérer valeur par valeur, vous diriez « I » sous forme d'image et de points à plat I. Donc, cette propriété vous permet accéder
aux valeurs de votre tableau
numpi une par une Et cela concerne l'indexation, le
découpage et l'itération. Je vous verrai lors
de la prochaine conférence.
87. 86. Empiler et diviser des tableaux chiffonnés: Maintenant que vous
savez comment découper et itérer dans des tableaux
numpy, effectuons quelques Et cela reviendrait à
stocker des tableaux NPi,
donc à concaténer des tableaux numpy entre eux
et à diviser un tableau numpi en deux
tableaux plus Oui, j'ai toujours ce
tableau numpy ici. Commençons donc par
empiler deux tableaux numpy. Pour ce faire, vous pouvez
créer une nouvelle variable dans laquelle
vous allez enregistrer votre grand tableau, ce qui serait
égal à nupi et à la méthode pour stocker
deux rayons non Pi.
En fait, il existe deux L'une est une
pile horizontale, donc une pile H. Cela suppose de transmettre deux ou plusieurs tableaux numpy que vous souhaitez
empiler horizontalement Alors laissez-moi passer OMG, puis le même tableau,
ce n'est pas un problème Si vous aviez deux tableaux différents, vous pourriez le faire, mais je
passe simplement le même tableau ici Maintenant, si vous l'exécutez,
vous obtiendrez une erreur, et je veux que vous voyiez cette erreur pour que vous la compreniez. Il est donc dit que H stack prend un argument positionnel,
mais que deux ont été donnés, ce qui signifie que H stack
entre crochets ne reçoit
qu'un seul argument,
mais nous en passons deux Alors, comment allons-nous
concaténer deux tableaux non Pi ? Nous pouvons simplement y transmettre un tableau
non pi. La solution ici
est donc d'avoir un tuple. Des matrices Nopi, juste comme ça. Donc, un renversement dans l'entrée de la méthode A stack.
Tu l'exécutes. Et voici un tableau empilé. Il s'agit donc du premier tableau, et du tableau suivant,
qui dans ce cas est le même,
mais si vous le souhaitez, vous pouvez en ajouter d'autres et
obtenir un tableau plus long, ce qui n'est pas très
beau comme ça. Vous pouvez donc l'imprimer. Et oui, maintenant tu
vois la différence. Donc le premier tableau, le
deuxième et le troisième. Et si vous voulez les
empiler verticalement, vous devez y faire un V. Oh, oui. Comme vous vous y attendiez, cela concaténera les tableaux en position verticale sur l'axe vertical Attention, si vous essayez de
concaténer des tableaux dimensions
différentes,
vous obtiendrez L'IMC a donc trois dimensions, si vous vous en
souvenez d'ici Vous allez maintenant apprendre comment
concaténer et comment diviser un tableau Eh bien, pour ce faire, vous pouvez
créer une variable,
puis une division horizontale numérique
pour la diviser horizontalement Et cela attend un tableau numpy et le nombre de tableaux que vous souhaitez produire
à partir de celui-ci Donc, horizontalement,
disons trois. C'est vrai. Et oui, cela indique que la division du tableau
n' entraîne pas une division égale. La raison en est que, vous savez, nous essayons que ce tableau comporte une, deux, trois, quatre, cinq colonnes. Vous essayez donc de
diviser cinq par trois. Un arbitre ne peut pas décider
comment procéder. Cela devrait-il vous donner abord
un tableau pi avec ces
deux colonnes, puis un autre arbitre
avec deux colonnes, puis un dernier
tableau NPi avec une Numpi ne peut donc pas le faire. Ce que vous devriez faire,
c'est peut-être cinq, et L T m je devrais vous donner
cinq tableaux numpy différents, qui dans ce cas se trouvent être un tableau pour chaque colonne Et vous pouvez faire un fractionnement
vertical. Cette fois, nous pouvons en essayer trois car nous en avons neuf. Et pourtant, nous obtenons
trois petits réseaux. Notez que ce
LSD, donc le split, produit une
liste Python de tableaux numpy Il s'agit donc d'une simple liste Python. Et à partir de là, vous pouvez accéder à chacun des
rayons en forme de nœud si vous le souhaitez Tu le sais. Il
produit donc le premier tableau. Et oui, il s'
agit de concaténer et de diviser J'espère vous donner un bon
aperçu de numpi. J'essaie de faire quelques
exemples pratiques, comme l'ouverture d'images. Mais cela n'en est encore qu'à
la partie théorique. Napi est donc assez théorique, et vous ne le comprenez que lorsque vous l'utilisez, comme celui-ci Des exemples concrets, comme le
travail avec des pandas, comme nous l'avons fait précédemment dans le cours, et le travail avec des images Nous allons donc faire du traitement d'
image de base dans les prochaines conférences
de la section suivante. Et vous verrez à quel point num
pi est utile là-dedans. Et oui, j'espère que
cela vous plaira, et je vous verrai plus tard.
88. 87. App 1 : carte Web avec Python et HTML +: Bonjour encore une fois et bienvenue cette nouvelle section du
cours dans cette section, vous allez bien sûr créer la
deuxième application. Plus précisément, ce que vous
allez créer avec Python est cette carte Web
que vous voyez ici Une carte Web est une carte qui
s'affiche dans un navigateur et qui peut être
consultée sur le Web Cette carte a été construite avec
Python et volume. Folume est une bibliothèque Python
et la carte comporte trois couches Il possède une couche cartographique de base. Celui que vous voyez
ici avec ces noms au verso et qui
comporte une couche de polygones, qui représente la
population des pays Nous avons également cette couche de
points ici avec ces points et vous pouvez
activer et désactiver ces couches. Nous avons également ces fenêtres
contextuelles. C'est ce que tu
vas construire. R, allons-y et
faisons-le . Rendez-vous lors de
la prochaine conférence.
89. 88. HTML et Python : créer une carte HTML avec Python + Python: Bonjour, encore une fois, j'espère que vous suivez la vidéo précédente
où je
vous ai présenté la carte que vous
allez construire dans cette section. Il s'agissait d'une carte Web, et comme vous peut-être pour
créer cette carte Web, l'
installation de Python par défaut
n'est pas suffisante car, logiquement, Python ne peut pas avoir toutes les fonctionnalités
possibles par défaut, car s'il possédait
toutes les fonctionnalités, Python
deviendrait très lourd Par conséquent, il est
judicieux de disposer bibliothèques
externes que vous
pouvez choisir d'installer ou non. C'est le cas
de la cartographie Web. Pour créer la carte Web que je vous ai montrée dans la conférence
précédente, vous avez besoin d'une bibliothèque, une bibliothèque tierce,
appelée volume. Comme vous le savez peut-être, vous
devez installer cette bibliothèque. Maintenant, notez simplement que j'avais quelques vidéos précédentes
sur cette section, anciennes vidéos, mais
j'ai dû les modifier. J'enregistre de nouvelles vidéos en ce moment. Il s'agit d'une nouvelle vidéo, d'une vidéo
mise à jour et de toutes les vidéos suivantes de
cette section car Volume a apporté quelques modifications
au code par rapport
aux versions précédentes. J'ai donc dû
refaire les vidéos. Maintenant, cette fois, j'
utilise un ordinateur Mac, mais cela ne
fera aucune différence. Si vous utilisez Windows,
Linux ou Mac, tout fonctionnera
exactement de la même manière. La seule différence est la
façon dont vous ouvrez Atom, bien sûr. Sous Windows, créez un dossier vide dans lequel vous
conserverez les fichiers
de ce projet. Mon dossier ici sur Mac
est mappé sur Windows, vous pouvez maintenir la touche Shift enfoncée
et cliquer avec le bouton droit de la souris. Et puis allez sur open atom ici pour ouvrir atom
dans ce dossier. Sur un Mac, vous pouvez
appuyer sur Command Space, sur
Atom, puis accéder à View Developer pour ouvrir en mode
Dev, puis localiser
le dossier et cliquer sur Ouvrir. Oui, c'est ça.
Je vais fermer tout cela, laissez-moi ouvrir le terminal et maintenant installez le volume. Pour ce faire, vous devez
saisir le volume d'installation. Normalement, vous devez
le faire sous Windows. Sur Mac, si vous avez deux
installations de Python, vous devrez peut-être en faire trois au PIP Cela indiquera explicitement d' installer le volume pour Python 3. Le volume a été installé
avec succès. Si vous avez un message
indiquant que Gina deux est requis
pour ce package, alors allez-y et installez Gina deux dans
PIP Three Cependant, je pense que ce
volume installera Jinja Two par défaut comme il a fait pour moi, donc ça
devrait être prêt Une fois
que vous aurez fait cela, je vais
ouvrir Python, en fait,
Python 3. Sur la carte, vous devez spécifier
Python 3 de manière explicite. Ce que je vais faire maintenant,
c'est créer
une carte Web de base. Pour cela, je vais utiliser shell interactif
Python afin de
vous montrer des choses autour de moi Essayez d'importer le volume. Aucune erreur, cela signifie que le volume a été
installé avec succès. Maintenant, comment fonctionne le volume ? Eh bien, tout tourne autour
d'un objet dit cartographique. La toute première chose
à faire une fois que vous avez importé un volume est de créer un objet cartographique. J'utilise une variable pour stocker cet objet cartographique, puis
égale au point de volume MAP. Il s'agit de la classe qui
crée cet objet. Si vous le souhaitez, vous pouvez
vérifier le volume pour obtenir une liste des objets disponibles
que vous pouvez utiliser sur le volume. Voici la carte. Ignorez
les autres pour le moment, nous les examinerons plus tard. Vous pouvez également demander de l'aide dès maintenant, volume point map pour voir ce que vous pouvez transmettre
à cet objet cartographique. Créez une carte avec le volume
et le point G du feuillet. Ce que fait le volume, c'est qu'il
produit réellement, que
vous utilisez Python, que vous écrivez du code Python et
que ce code Python est automatiquement converti en code JavaScript , HTML
et code CSS. Parce que vous avez besoin de Javascript, CSS et de HTML pour créer des webmaps Vous ne pouvez pas le faire directement avec du code
Python. Le navigateur lit le HTML, le CSS et JavaScript et
affiche le code de
ces trois
langages de programmation en deux éléments tels que du texte, des lignes, des
points et des C'est ce que fait Volume. C'est une
chose merveilleuse que vous puissiez faire cela avec Python via Python. Quoi qu'il en soit, vous pouvez regarder ici en
bas dans les paramètres. Vous pouvez passer un
paramètre de localisation ici. Et vous pouvez spécifier la largeur. Quoi qu'il en soit, si vous ne
spécifiez pas la largeur, une largeur par défaut de 100 % de la zone du
navigateur sera utilisée, vous n'aurez pas à indiquer la
largeur et la hauteur, et vous aurez des vignettes, valeur par défaut étant les tuiles Open
Street Map. Les tuiles constituent
l'arrière-plan de la carte. Tu vas voir
ça dans une minute. Vous avez également d'autres
paramètres,
que vous pouvez vérifier par
vous-même, je crois. J'ai appuyé sur Q pour quitter l'aide et passons à la
création de l'objet cartographique. Enfin, carte des points de volume. Donc, emplacement, vous devez
y
transmettre un paramètre de localisation afin que la carte
sache où s'ouvrir. Il peut ouvrir ses portes,
disons près de l'Alaska Groenland
ou de l'Afrique du Sud. Nous parlons de
la vue initiale, mais vous pouvez ensuite
zoomer et dézoomer. Laissez-moi passer par un endroit aléatoire. Les emplacements, d'ailleurs, sont indiqués par des coordonnées par défaut, vous devez transmettre des coordonnées
géographiques, c'
est-à-dire la latitude et la longitude. La latitude varie de
-90 à zéro à 90. Laisse-moi donc passer les 80. Au fait, cela figure
dans la liste en fait. 80 une
virgule puis la longitude, la longitude varie de
zéro à -180 et de zéro à 180 Laissez-moi passer -100. Et fermez le support.
Vous transmettez une liste de coordonnées au lieu. En fait, cela
suffit, vous pouvez exécuter
un objet cartographique avec cela, vous n'avez pas d'
erreur, cela signifie que tout fonctionne correctement. Vous avez maintenant un objet cartographique, mais ce n'est qu'un
objet dans Python. Vous n'avez pas encore traduit
cet objet en code
HTML, CSS et
JavaScript. Vous devez ensuite
pointer sur cet objet cartographique. Ensuite, utilisez la
méthode de sauvegarde, puis transmettez un nom pour le fichier de carte
qui sera créé. Bien entendu, les cartes
seront créées au format HTML. Le HTML est ce qui contient tous ces éléments qui
rendent l'ensemble du navigateur. Texte et visuels, etc. Fermez le support, exécutez. Comme vous le voyez, un fichier
a été ajouté ici, cartographiez un point HTML. Mais laissez-moi accéder au dossier, double-cliquez dessus, qui
s'ouvrira dans votre navigateur par défaut. Ce n'est donc qu'un endroit
aléatoire. Je ne sais pas ce que c'
est. Île Magan. Cela semble être au Canada, tout au nord du
Canada. C'est ça. Il s'agit de la carte Web.
Si vous zoomez, vous verrez ainsi plus de détails
sur la carte. Plus vous zoomez,
plus vous voyez d'éléments. C'est ce que je
voulais te montrer. Si vous voulez un autre emplacement, vous devez modifier les
coordonnées dans cet emplacement. Mais si vous ne connaissez pas les coordonnées de votre lieu
préféré,
il existe peut-être différentes
manières de le découvrir, mais le moyen le plus rapide est d'
aller sur maps.google.com Disons que vous voulez savoir
, laissez-moi zoomer ici. Vous souhaitez centrer la
carte autour de cet emplacement, cliquer dessus avec
le bouton droit de la souris et
accéder à Qu'y a-t-il ici, copier ces coordonnées,
copier ces coordonnées
ou, si vous ne pouvez pas
les copier, vous en souvenir ? 38,58 environ moins 99 fois 09 Ensuite, vous devez
enregistrer à nouveau la
carte, mapper un point ML et cela
remplacera la carte précédente Allez ici, rechargez, vous voyez maintenant que le centre de la carte est
différent Bien entendu, vous pouvez également
jouer avec le zoom, vous pouvez
donc ajouter un
paramètre de zoom ici. C'est ce qu'on appelle le démarrage du zoom. Mettons-le à six heures. N'oubliez pas de fermer
le support ici. Exécutez la flèche supérieure pour appeler une
instruction précédemment exécutée, telle que map save. Vous pouvez également choisir d'
accéder au navigateur et de la recharger avec Control
R ou Command R, ce qui
vous montrera la nouvelle carte avec un autre facteur de zoom Quoi qu'il en soit, c'est à peu près tout. Essaie de
jouer un peu avec
ça. Dans la prochaine conférence,
je vais vous montrer comment
ajouter des points à cette
carte. Je vais voir le
90. HTML&Python Ajout d'un marqueur à la carte (PAS DE FILIGRANE): Bonjour, encore une fois, et bienvenue
à cette nouvelle conférence. Dans cette conférence,
vous allez apprendre comment ajouter des points à la carte que nous avons créée précédemment, c'
est-à-dire celle-ci ici. Tout ce que nous avons ici est une
carte de base, la carte d'arrière-plan, qui est une couche qui est
en fait une couche provenant du service OpenStreet
Map Les cartes Open Street vous
donnent donc une couche. En fait, le volume vous servira cette couche en arrière-plan
via JavaScript. Mais vous pouvez également ajouter
d'autres couches, d'autres couches de base et également points que vous pouvez ajouter
au-dessus de la couche de base. Permettez-moi de revenir au code. C'est ce que nous avons écrit dans
la conférence précédente. En fait, nous l'avons écrit ici
dans le shell interactif. Mais je le copie et je le colle
dans le fichier pour que nous l'
ayons et que nous puissions ajouter
plus de code maintenant en plus de cela. Encore une fois, comme je vous l'ai dit, vous pouvez faire de l'aide sur la carte des points de volume et vous verrez que vous pouvez ajouter
d'autres éléments ici, comme ici vous
avez un paramètre. Vous pouvez ajouter des vignettes. Par défaut, les cartes routières sont ouvertes, mais si vous spécifiez une autre tuile, telle
qu'une boîte de carte lumineuse, qui doit être entre guillemets, comme vous pouvez le voir ici, dans le paramètre tiles, cela attend un objet chaîne. L'emplacement, par exemple, s'
attend à un renversement ou à une liste, et c'est ce que nous
transmettons à une liste de coordonnées La largeur serait un entier, un entier, la hauteur. En tant que tel, vous avez également
d'autres options
, que vous pouvez essayer vous-même. Je veux juste essayer
celui-ci pour le moment. Permettez-moi d'ouvrir un nouveau shell Python. Python 3 mappe 1, assurez-vous d'avoir enregistré l'exécution de
votre script. Vous pouvez ensuite retourner dans
le dossier et ouvrir la carte. Laissez-moi accéder à Farfox
Control R ou Command R pour recharger et vous verrez que
l'arrière-plan a changé Nous avons
donc maintenant une nouvelle carte de base Revenons-en au script maintenant. Ce que je vais faire,
c'est ajouter
des marqueurs de points
au-dessus du fond de carte.
Comment faites-vous cela ? Eh bien, si vous faites le volume, vous pouvez voir
ici que vous avez des objets et celui que nous voulons est un marqueur ou
un marqueur circulaire. Je vais essayer les deux. Mais
je voudrais vous expliquer la logique selon laquelle vous ajoutez
des objets à l'objet cartographique. Dans le portfolio, nous
créons un objet cartographique, puis entre
l'objet cartographique et la méthode sécurisée de
l'objet cartographique, vous pouvez ajouter
des objets d'éléments à cette carte. Ce que je veux ajouter dans
ce cas, c'est un marqueur. Je peux donc ajouter un enfant à la carte. Nous utilisons la méthode Adil
pour ajouter des enfants. Les objets dont je
parle sont appelés enfants lorsque vous les
ajoutez à la carte. Mappez adchild, puis vous
souhaitez pointer sur le marqueur de volume Maintenant, cette méthode de marquage attend elle-même certains
arguments. Vous pouvez faire de l'aide au marqueur de point de
volume. Créez un simple marqueur de
dépliant boursier sur la carte. Leaflet est la bibliothèque
JavaScript qui vous permet de
visualiser cela C'est le moteur qui crée ces cartes dans le navigateur. Python crée un code
JavaScript à l'aide la bibliothèque de feuillets et les marqueurs vous permettent
d'ajouter des pop pops Lorsque vous cliquez sur un
marqueur sur la carte, cela vous permet d'afficher informations et
les paramètres dont vous avez besoin pour transmettre un paramètre
de localisation au marqueur
afin de le visualiser. Donc, l'emplacement est égal à deux. C'est une liste typique. Disons 38 points deux et -90 91 et vous
pouvez également réussir Après la liste, je fais apparaître un poomètre qui peut
être haut. Je suis un marqueur. Je dois également transmettre
le paramètre icon, qui est en fait un autre
objet provenant du point de volume.
Vous vous attendez à ce que j'y
passe une couleur, comme, disons, le vert. En gros, c'est ça. Assurez-vous que les crochets sont corrects. J'ai trois crochets, trois crochets fermants, un
et deux, et trois crochets
ronds ouvrants. OK. Enregistrez un script, accédez à l'autre
terminal et exécutez-le. Accédez à Firefox pour le charger,
et voici un marqueur. Si je clique, je reçois le message contextuel dans
une belle fenêtre ici. C'est ainsi que vous ajoutez
des marqueurs à votre carte. Cependant, je vous
suggère de suivre une approche légèrement différente
pour ajouter des enfants à votre carte. Ce que je suggère,
c'est de créer un groupe de fonctionnalités,
un volume de
données, un groupe de fonctionnalités. Mais vous pouvez
lui donner un nom comme ma carte. Ce qui se passe alors, c'est que
dans ce groupe de caractéristiques, le marqueur est une entité
avec des groupes de caractéristiques, vous pouvez ajouter plusieurs entités
au groupe de caractéristiques. Vous pouvez donc ajouter un marqueur, vous
pouvez ajouter des polygones, etc. Au lieu de dire carte,
vous créez l'objet du groupe d'entités, la variable que j'ai créée
ici, que je transmets ici. Ensuite, vous
cartographiez un enfant. Et vous y transmettez le
groupe de fonctionnalités. C'est plus que ça. Cela permet de mieux organiser votre
code, et cela vous sera également utile ultérieurement
lorsque vous souhaiterez ajouter une couche,
une fonction de contrôle de couche dans votre carte pour vous permettre d'activer ou de désactiver les
couches. Nous verrons cela plus tard. Enregistrez ce script
et laissez-moi l'essayer. La page est assez basse.
Nous n'avons donc aucune monnaie. Les choses fonctionneront de la même manière, ce qui signifie que
le groupe de fonctionnalités fonctionne correctement. Mais comme je l'ai dit, il est bon de garder l'appel
organisé et cela vous aidera
également plus tard lorsque vous
ajouterez une fonctionnalité de contrôle des couches. C'est ce que je
voulais t'apprendre pour moment et je te parlerai plus tard.
91. 90. HTML et Python : utiliser des boucles pour ajouter des marqueurs multiples: Génial. Nous avons pu créer cette carte lors de la conférence
précédente. Nous avons une carte de base et une fonction de marqueur ici.
C'est notre code. Dans cette conférence,
je vais vous montrer comment ajouter plusieurs marqueurs à votre carte. ce faire, l'une des manières de le faire est d' écrire cette expression
plusieurs fois. J'aime bien ça, et bien sûr, il
faut changer l'
emplacement de ces marqueurs. Enregistrez le script et
exécutez le rechargement Vous disposez
ainsi de
plusieurs marqueurs Comme vous le savez, il
n'est pas possible d'ajouter plusieurs marqueurs avec
une seule méthode. Avec une seule méthode de marquage, vous devez appliquer la
méthode plusieurs fois. Cependant, ce n'est pas
très intelligent à faire. C'est la beauté
de la programmation. Vous pouvez utiliser une boucle for
pour ajouter plusieurs
marqueurs à la carte. Nous parlons de
Python for loop, qui est l'une des
fonctionnalités fondamentales de Python. Les quatre boucles n'ont rien
à voir avec le volume. Disons que pour les coordonnées, bien
sûr, vous aurez
besoin de saisir les coordonnées. Je ne sais pas, comme ça. Disons une liste de listes. Nous avons ces deux coordonnées.
Laissez-moi le copier. Mets-le là et
une autre fois et laisse-moi les
remplacer par neuf et sept. Ensuite, vous devez le mettre en retrait
avec quatre espaces blancs. Je vais vous expliquer cela dans un instant. Ensuite, sur place, vous
devrez transmettre les coordonnées. Avant d'expliquer le
code, laissez-moi l'essayer. Exécutez, rechargez, nous avons toujours les marqueurs. Bien sûr, le lieu
a changé par rapport au précédent car j'ai changé les
coordonnées et ici. Alors, comment cela fonctionne-t-il ?
Eh bien, j'itère avec une boucle for dans
cette liste de listes Les éléments de la liste de cette liste principale sont
deux autres listes. Les objets peuvent être n'importe quoi. Dans ce cas, il
existe deux listes. Ce qui se passe, c'est que les
coordonnées sont variables. Dans la première
itération, il obtiendra ce premier élément de la liste, et il mettra cette petite
liste, soit 32.2 Il mettra cette liste ici. En gros, cela
sera mis ici. Plus ou moins. C'est l'idée. Ensuite, lors de l'itération suivante, les coordonnées
récupéreront cette autre liste et la
replaceront ici méthode du marqueur
sera donc exécutée deux Ainsi, la première fois qu'il
générera un marqueur avec ces coordonnées et
la deuxième itération, il générera un marqueur avec ces coordonnées. C'est ça. Cependant, nous avons un
petit problème ici. Le problème est qu'en réalité, vous ne pouvez pas simplement taper les
coordonnées dans une liste Python. Supposons que vous ayez 1 000 coordonnées à cartographier sur
une carte et qu'il soit
difficile de les saisir
ici ou même de les mettre en page, de les copier-coller
à partir d'un document ici. La solution est que normalement, dans la vie réelle,
vos coordonnées se
présentent sous forme
de fichier texte,
comme un fichier texte
séparé par des virgules, fichiers
CSV, Excel, etc. Vous souhaitez charger ce
fichier dans Python, puis ajouter les valeurs de ce fichier
dans la méthode du marqueur. Vous pouvez le faire en utilisant une
boucle for et comment
le faites-vous exactement ? Eh bien, je vais expliquer cela
dans la prochaine conférence. Je vais vous donner un fichier séparé par des
virgules avec de nombreuses coordonnées, et nous allons l'utiliser dans
ce script. Je te
parlerai plus tard.
92. 91. HTML et Python : traitement de dossiers en ajoutant des marqueurs à partir de dossiers: Bonjour Dans le cours précédent, vous avez pu créer cette
carte à l'aide de plusieurs marqueurs. se
trouve que cette carte ne comporte que deux marqueurs, mais vous avez compris l'idée et le
script était celui-ci ici Vous pouvez
donc ajouter autant de paires de
coordonnées que
vous le souhaitez ici. Mais dans cette conférence, je
veux vous montrer comment
ajouter des paires de coordonnées à partir d'un fichier texte
, ici, les
volcans pointent TXT Si vous le souhaitez, vous pouvez
simplement renommer le nom de ce fichier à partir de volcans qui envoient du
texte aux volcans au format CSV, puis vous pouvez l'ouvrir dans
un programme tel qu'Excel Si vous le souhaitez, vous pouvez l'afficher dans
un fichier texte brut comme
je le fais ici. Python peut lire à la fois les
fichiers CSV et les fichiers texte. Ce que nous avons ici, ce sont
des données sur les volcans. En gros, nous avons le
numéro du volcan, qui est un identifiant, le volcan 020. Nous avons encore un autre
numéro, alors comme vous le voyez, chaque colonne, nous avons des colonnes dans ce fichier de données et chaque colonne
est séparée par une virgule Il s'agit du nom de
la première colonne, la première valeur de
la première colonne est celle-ci ici, puis le nom de
la deuxième colonne. La première valeur de la deuxième
colonne est celle-ci ici, puis la deuxième valeur de la deuxième colonne
est cette réponse, puis nous avons une colonne de nom, le nom du
volcan et ici. Désolé, le nom est ici,
Baker, puis la
virgule commence ici, ce qui signifie que l'emplacement est celui-ci ici, États-Unis Washington Ensuite, vous avez l'historique
du
statut du premier volcan, puis
nous avons l'altitude, qui est celle-ci ici. Je ne sais pas si
c'est en pieds ou en mètres, mais
vous pouvez le découvrir. Si vous êtes curieux, vous
pouvez faire une recherche sur ce volcan en particulier
et comparer son altitude. Quoi qu'il en soit, nous avons
une sorte de volcan. Vous avez un calendrier, qui est de trois jours, je ne
sais pas ce que cela signifie, de quatre jours. Enfin, c'est ce qui
nous intéresse. Nous avons les colonnes
lates et longues. C'est tard, ce qui signifie latitude et
longitude du volcan. Vous avez donc besoin de ces
deux valeurs
numériques pour cartographier les entités, les volcans, sur une carte, dans ce cas, sur une carte volumique Cela en compte environ 63, en fait 62 63 en incluant
l'en-tête des données. Comment intégrer cet
automne à Python ? Eh bien, pour le charger
, utilisez Python. Laissez-moi vider le
terminal et vous devrez d'
abord installer
une bibliothèque très utile appelée Pandas Nous utiliserons cette
bibliothèque plus tard. Je
ne vais donc pas expliquer les pandas en détail pour le moment, car nous n'utiliserons qu'une ou deux
de ses fonctions, que j'expliquerai
dans cette conférence Allez-y et installez des pandas
si vous n'en avez pas. Installez des pandas ou
PIP, installez pandas en fonction de la façon dont vous avez
configuré Python, puis vous pouvez ouvrir une
session Python Importez des pandas. La façon de charger un
fichier avec Pallas est pointer sur Pallas
qui lit CSV,
volcanos TXT, et de vérifier que votre session
Python a été ouverte dans le répertoire
où se trouve le fichier TXT de votre volcan Par exemple, ma session
se trouve dans le dossier de mappage, qui est celui-ci ici, donc je
peux simplement transmettre un nom de fichier. Sinon, vous devrez peut-être
transmettre le chemin absolu
du fichier, qui commence par
C slash, etc.,
selon le système d'exploitation dans lequel vous vous trouvez, puis l'exécuter appeler les données et vous obtiendrez les données
imprimées comme ça Panda est en fait
le fichier CSV lu qui faire la distinction
entre ces virgules, où se trouvent les
virgules, et de créer un
format de données structuré sur le Web avec Si vous descendez ici, vous avez quelques colonnes
ici, colonne,
colonne, puis jusqu'à la fin. Ensuite, vous avez d'autres
colonnes car Python ne peut pas
imprimer en fait, le terminal ne vous
permet pas d'avoir toutes les colonnes en
une seule dans cette zone
car ce serait trop. Quoi qu'il en soit, vous avez
le statut, l'élévation, type timeframe, le lat et le long C'est une question de données.
Vous devez maintenant trouver un moyen d'itérer dans
ce bloc de données. C'est ce qu'on appelle une trame de données. L'objet de données est
appelé trame de données. Vous pouvez vérifier son type en fait. Trame de données PanascFrame. à quoi je pense, c'est
de créer deux listes à partir de ces colonnes de blocs de données pour
placer la colonne de latitude dans une liste Python et la colonne de
longitude dans une
autre liste
Python afin d'avoir un objet Python natif, qui est une liste,
puis de parcourir cette liste
en utilisant les quatre boucles Laisse-moi essayer de le
faire. Importez des Pandas, puis créez l'objet du bloc de
données En chargeant les données, j'ai lu
CSV volcano TXT, c'est tout. Comment convertir une
colonne de dataframe en liste ? Eh bien, pour ce faire, il
suffit de saisir, disons données légales
L ou T, puis
le nom de la colonne, qui est LT, afin que vous puissiez obtenir une
liste de colonnes d'ailleurs, en faisant des colonnes de points de données. Ici, vous voyez, vous avez une colonne
plate et une longue colonne. Ensuite, vous faites cela revient
à le
lister le
lister entre crochets, fermez-le. Ce que vous avez fait ici, ce sont des données
avec un seul attribut, nous renvoyons un objet sérieux. Mais cet objet sérieux, nous le
convertissons en
une liste négative Ce sera une liste Python. Cela apparaîtra également sous la
forme d'un objet similaire. Il s'agit d'un objet sérieux. Il s'agit d'une liste, mais je préfère
travailler sur une liste
car travailler sur listes est plus rapide que
sur des séries de blocs de données. L'idée est d'avoir
deux listes ici. Cela équivaut à une liste sur
une copie collée ici, il va
de même
pour la longitude Dernière et longue liste. Nous devons donc faire attention à la façon dont nous parcourons
ces deux listes car nous avons deux listes contenant
chacune 62 éléments Vous pouvez le vérifier en utilisant
un ici, ici, ici, qu'il y ait 62 éléments et il en va de même
pour la liste de longitude. Cela signifie que
le premier élément de la liste de latitude correspond au deuxième élément de
la liste de latitude, désolé, de la liste de longitude. Les deux premiers éléments constituent le premier emplacement
du premier marqueur. Cela signifie que dans
la première itération, nous devons extraire
les deux emplacements En fait, cette structure
ne sera plus appropriée. Ce que vous devez faire,
c'est
passer en revue , disons, les variables lat
et loan. Lorsque vous parcourez
deux listes en même temps, vous devez utiliser la fonction zip puis elle passe à la dernière position. En gros, voici ce que fait cette
fonction. Disons pour I, J et Zip. Supposons que la première liste soit 123. Le second est 456. Print, J. et moi, voilà
ce qui arrive.
Cette boucle parcourra ces deux
listes en même temps. Ce qui se passe, c'est que je vais
passer en revue le premier élément de la première liste tandis que je vais
passer en revue le premier
élément de la deuxième liste. Dans la première itération, un
et quatre sont extraits. Un, ici, et quatre ici. Et vous pouvez effectuer une
telle extraction en utilisant la fonction ZIP. Sinon, vous
ne pourrez pas le faire si vous n'utilisez pas
la fonction ZIP. ZIP distribue donc en quelque sorte
les éléments un par un. Et il en va de même ici, LT obtiendra le premier
élément de cette liste. L one obtiendra le premier
élément de cette liste. Et puis ici, ce que vous devez faire, c'est construire une liste avec LT et
LN. Oui, c'est ça. Enregistrez le script, rendez-vous sur
le terminal pour l'exécuter. Il n'est pas ici, le terminal. Je quitte juste ça. Python 3, cartographiez un point de coupe. Aucune erreur, allez dans
Firefox et rechargez. Je n'ai aucun marqueur
pour une raison ou une autre, mais je n'ai pas reçu d'erreur. C'est l'un de ces scénarios où aucune
erreur ne s'affiche dans le terminal. Dans ce cas, vous devez
vérifier soigneusement votre code. Trois panneaux de données CSV, sans parler des données. Voici l'erreur. Ce
qui se passe, c'est que j' assigne la mauvaise colonne
à la liste des latitudes Permettez-moi de modifier la
commande et de réessayer. Ne vous laissez donc pas
intimider par les erreurs. Des erreurs se produisent tout le temps. Il vous suffit d'être de
sang-froid, de lire les erreurs si vous obtenez
une erreur ici et regarder attentivement le code Laisse-moi recharger. J'
ai des marqueurs maintenant. Ce sont les emplacements
des volcans dans le nord des États-Unis, en fait,
aux États-Unis OK. Ils ont également cette fenêtre
contextuelle, qui fonctionne bien, mais je suppose que vous
ne l'aimez pas
beaucoup car elle ne
montre aucune information. Ce que nous devons faire
ici, c'est rendre cette fenêtre contextuelle dynamique afin qu'elle affiche des informations
réelles. Je vais vous montrer comment créer des fenêtres contextuelles
dynamiques dans la prochaine
vidéo. Parle-toi là-bas.
93. 93: Bonjour, encore une fois. Dans cette vidéo, je vais vous montrer comment
ajouter les valeurs d'altitude. Ceux-ci sont là dans
la fenêtre contextuelle. Actuellement, notre script affiche
simplement cette chaîne dans la fenêtre
contextuelle. Nous allons changer cela. Pour ce faire, vous devez d'abord charger les
données altimétriques dans une liste Python. Ensuite, dans la boucle,
vous voulez dire, disons L dans Z plat un
Lv comme ça Ici, dans l'argument pop pop, vous transmettez l'attribut L. Encore une fois, nous créons une liste nommée F, variable LV. Ce sera une liste de toutes
les altitudes, puis nous
parcourrons ces trois LT obtiendra le
premier article à louer,
LN obtiendra le
premier article à louer, L obtiendra le premier
article de LF et ces articles seront distribués
dans cette fonction ici. LT ici, LN ici et
L ici, EL ici. Maintenant, je veux enregistrer
ceci et exécuter, mais je m'attends à une
erreur. Je veux que vous voyiez l'erreur afin que vous vous
familiarisiez également avec la gestion
des erreurs. L'erreur
se produit sur la ligne 14. Dans ce fichier, cartographiez un point pi, qui est notre fichier, la ligne 14 est ici. Il s'agit d'une ligne, puis
nous avons chez child Pop Up. Il semble que cette erreur soit liée à
un objet contextuel. Je dirais que ce n'est pas un très
bon message d'erreur en fait. Il est difficile de lire cette
erreur et de la résoudre. Ce n'est pas une très bonne information
donnée par volume ici, mais de toute façon, nous avons quelques indices. Pop dit name child name
attribute ou NupiFlow 64, objet n'a pas d'
attribut, obtenez le Il semble que le volume essaie d'appliquer cette
méthode get name, qui est une méthode intégrée à
la base du code du volume, et qu'il essaie de l'
appliquer à un nombre. Je pense que ce L ici
est en fait un chiffre. Je peux vérifier cela en
disant type d'impression, enregistrer et exécuter le script
Encore une fois, voici un type. Il s'agit d'un num pi float 64. En gros, il s'agit d'un type flottant. Il s'agit en fait d'un
float spécial de la bibliothèque numpi. Quoi qu'il en soit, vous pouvez l'
appeler un char. C'est donc un nombre,
pas une chaîne. Mais si vous regardez help sorry,
help volume, point marker, vous verrez que le paramètre
pop up attend une chaîne
de votre part en entrée. Mais au lieu de cela, vous
transmettez un nombre flottant. Donc tu ne veux pas faire ça. Ce que vous voulez faire est simple, il
vous suffit de convertir ce numéro de
flux en chaîne. Enregistrez le script. Va au
terminal. Exécutez à nouveau. Accédez à Firefox, rechargez et l'altitude
s'affichera correctement. Oui, c'est à peu près tout. Vous pouvez également vouloir styliser ce que vous affichez afin d'y ajouter des informations
supplémentaires, telles que des compteurs d'espace J'ajoute la chaîne à toutes les informations de la fenêtre contextuelle pour tous les numéros d'altitude. Nous parlons de
2 447,0 mètres. C'est l'altitude
du volcan. Oui, c'est l'idée. J'espère que c'était clair et
je vous parlerai plus tard.
94. 93. Utiliser les fonctions - Créer une fonction de génération de couleurs pour les marqueurs ++: Bonjour encore une fois et bienvenue
à cette nouvelle conférence. Ce que nous avons jusqu'à présent, c'est cette
carte avec ces 62 marqueurs, chacun représentant emplacement
d'un volcan
aux États-Unis. Cependant, cette carte n'est pas
très intelligente, c'est-à-dire les seules informations
qu'elle transmet sont les emplacements
des volcans Et vous avez également une carte de base. Cette carte présente également un
avantage, car vous pouvez extraire de telles
informations en cliquant sur les icônes. Cependant, vous souhaiterez peut-être
transformer cette carte pour afficher un attribut plutôt que simplement l'emplacement
des volcans. ce faire, il peut y avoir différentes méthodes,
cela dépend de vos connaissances en
matière de cytographie, mais je pourrais faire en sorte que la
carte montre un attribut ici Par exemple, je pourrais
modifier les couleurs de ces marqueurs pour
afficher réellement la plage d'altitude. Disons que nous pouvons classer ces marqueurs en trois couleurs. Supposons que le vert, l'orange et le rouge, vert indiquerait des altitudes 0 à 1 000 mètres, par exemple, ou 2 000 mètres et orange de 2 000 à 3
000 mètres, puis les marqueurs rouges
représenteraient des volcans d'une altitude
supérieure à Alors, comment faire
cela avec le volume ? Revenons-en à Atom. Voici notre code, celui
que nous avons jusqu'à présent. Actuellement, ce que nous
passons à l'argument icône est un argument couleur
avec une valeur verte. En gros, ce que nous devons faire, créer cette
dynamique pour que la couleur change en
fonction de l'altitude. Malheureusement, nous ne pouvons pas
le faire avec les volumes. Volume ne possède pas de fonctionnalité
native permettant de créer des couleurs dynamiques
pour vos marqueurs. Par conséquent, nous devons faire preuve d'un peu créativité et utiliser les fonctionnalités de base de
Python
pour ce faire. Quand on pense à la dynamique, je pense aux fonctions. En gros, cette boucle
passe par la latitude, la
longitude, l'altitude, puis elle transmet ces trois valeurs
dans cette expression ici. Cependant, la couleur est toujours
transmise sous forme de chaîne. Mais comment le modifier en
fonction de l'altitude, par exemple ? Eh bien, pour ce faire,
il faut créer une fonction,
une fonction qui obtient l'altitude en entrée, puis effectue certaines actions
à l'intérieur de la fonction, puis qui renvoie une couleur en
fonction de la valeur d'altitude. Vous pouvez dire, si l'altitude
est inférieure à cela, donnez-moi la couleur verte, une chaîne verte ici. Et ainsi de suite.
Pour vous donner une idée, la façon dont cela fonctionnerait est me
laisser écrire la fonction ici. Ce serait un bon
endroit pour le faire
avant de créer un objet cartographique. Mais
vous devez toujours créer une fonction car je vais
appeler la fonction ici, vous devez
donc créer
la fonction avant
cette expression à partir d'
ici et vers le haut. Je vais le créer ici. Appelons une fonction,
appelons un producteur. Restons
simples pendant un moment, juste pour vous montrer
comment cela fonctionnerait. Restons très, très simples. Disons Return Green. Si vous le remplacez color producer et que vous n'
oubliez pas les crochets, en passant des crochets,
cela signifie que vous appelez
la fonction. Si vous ne passez pas les crochets, cela signifie
que vous appelez simplement nom de
la fonction et que vous
n'exécutez pas la fonction. Je vais juste le garder comme
ça
et exécuter la carte à un point pi. C'est bon. Rechargez et
vous obtiendrez la même chose Parce que c'est ce qui se passe. Ce truc, cette
fonction, le charbon,
sera égale à ce que
vous renverrez ici. Le type de cet objet
est en fait une chaîne. C'est exactement le fil vert. Par conséquent, vous pouvez maintenant ajouter
des conditions ici. En gros, vous devez
passer une entrée ici, altitude, laissez-moi écrire la variable
que vous voulez, écrire altitude et ici, vous devez passer
L. L pour letlon L, disons que nous avons 62 lignes dans la table de données et que la boucle passe par la
première ligne de la table Il obtiendra une altitude et la
transmettra à cet appel de fonction. La fonction passera L en altitude,
puis vous dites ici que
si l'altitude est inférieure à
1 000, si l'altitude est inférieure vous souhaitez revenir
au vert pour une altitude
inférieure à 1 000 mètres. altitude d'une feuille se situe
entre 1 000 mètres, elle est supérieure à 1 000 mètres ou inférieure à 3 000 mètres. Renvoyez l'orange. Sinon, retournez en rouge. Le rouge sera renvoyé si aucune de ces conditions n'
est satisfaite, ce qui signifie que l'altitude
n'est ni inférieure à 1 000 mètres ni inférieure à 1 000 à 3
000 mètres Ce qui reste est donc
supérieur à 3 000 mètres. Dans ce cas, nous
retournerons le rouge. Pour découvrir ces
valeurs,
vous devez en fait explorer un
peu les données. Par exemple, vous
souhaiterez peut-être examiner les données rapidement de cette manière
pour voir quelles sont les valeurs que vous avez. Ensuite, décidez du seuil de
catégorie. Mais vous pouvez également effectuer analyse
statistique
plus significative vous pouvez créer un histogramme et voir la distribution des données
, puis décider de ces valeurs Mais restons simples et décidons
de ces valeurs. Je vais résoudre cette vérification si tout est en
place rapidement. Laisse-moi essayer le code.
Va recharger. Nous avons quelques
couleurs différentes ici. Ouais. Ça a l'air bien. Permettez-moi de vérifier les valeurs. Par exemple, l'orange se situe entre 1 000 mètres
et 3 000 mètres. Nous nous en sortons bien. Le rouge
est au-dessus de 3 000 mètres. Il semble que cela fonctionne.
95. 94. HTML et Python : comment ajouter et styliser des marqueurs: C'est bon. J'espère que vous aurez
résolu l'exercice, mais ne vous inquiétez pas si votre carte est un peu différente de la mienne. Bref, voici mes marqueurs, des marqueurs
circulaires, en fait. Et j'ai des marqueurs verts, oranges,
rouges et oranges. Tu as compris l'idée.
Et ils ont également une
sorte d'opacité J'ai donc défini une valeur d'
opacité de 0,7, ce qui représente 70 % pour eux. Comme vous le voyez, vous pouvez voir le marqueur qui
se trouve en dessous de celui-ci ici. Quoi qu'il en soit, voici un code. Permettez-moi de vous expliquer ce que j'ai changé par rapport au code d'origine par rapport
au précédent. J'ai remplacé le marqueur
par le marqueur circulaire. L'emplacement reste le même. L'attribut pop up
reste également le même. Et puis j'ai ajouté ici un
rayon de six, ce qui signifie six pixels. C'est la taille de
ces marqueurs circulaires. Ensuite, j'ai ajouté une couleur de champ. L'attribut de couleur du champ concerne la zone intérieure
du cercle. Vous voyez cette zone orange, mais vous avez également cette
couleur extérieure que j'ai définie sur le gris et vous le faites
avec l'argument couleur. La couleur est égale au gris
pour tous les marqueurs. La couleur par défaut sera le noir,
ce qui, à mon avis, est un peu
lourd pour les yeux. Quoi qu'il en soit, voici une opacité du champ. Pour ce qui
est de la transparence, je l'ai dit à 0,7, et c'est tout. J'espère que c'est clair maintenant
et je vous parlerai plus tard.
96. 95. HTML et Python : travailler avec des données JSON: Bonjour, bienvenue à nouveau.
Dans cette conférence, je vais vous montrer comment ajouter
une autre couche à cette carte. Actuellement, nous avons deux couches. Nous avons la carte de base, composée de tuiles par
boîte de carte, que vous pouvez voir ici, et les données sont diffusées
par OpenStreet Map Vous avez également votre couche
personnalisée, qui est une couche
contenant des marqueurs circulaires Dans les systèmes
d'information géographique SIG, ces couches sont appelées couches. J'aimerais maintenant ajouter une
troisième couche à ma carte, qui sera une couche polygonale Cette couche actuelle avec des
marqueurs peut
être appelée couche de points. Vous avez également des couches de lignes
et des couches de polygones. Avec les points, il est
préférable que les points représentent des emplacements et vous avez des lignes, les
lignes sont idéales pour représenter des entités
géographiques qui ressemblent à des lignes
telles que des routes et des rivières. Ensuite, nous avons des polygones. Les polygones sont les meilleurs
pour représenter des zones. Par exemple, dans cette conférence, je vais vous montrer
comment ajouter une couche,
une couche polygonale qui représente la population
mondiale par pays Les pays sont
représentés sous forme de zones. Et ce que nous allons faire, c'est chacun des pays aura une couleur spécifique qui indiquera la
population de ce pays. Points pour les emplacements,
lignes pour lignes et polygones pour les surfaces Bien entendu, vous avez besoin de
certaines données pour créer
une couche de polygones Tout comme nous l'avons
fait avec les marqueurs, nous disposions de certaines données au format
CSV au format texte. Ensuite, nous utilisons ces données, nous les ouvrons avec des pandas
, puis nous avons parcouru ces lignes de données et nous avons ajouté les
marqueurs à la carte Maintenant, pour les polygones, la
méthode pour ajouter des polygones via le
volume consiste à utiliser la méthode GeoJSON à point de
volume En gros, permettez-moi de
faire de
la place ici, car cela fonctionnerait comme suit. Vous souhaitez ajouter une variable de
groupe de fonctionnalités ici, vous souhaitez ajouter un
enfant, qui serait un objet Geo JSON en volume Il s'agit de la méthode
avec des crochets ici. Cela crée un objet GeoJSON. Pour les données GeoJSON, nous utiliserons
ce fichier JSON à points mondiaux. Vous pouvez le trouver en
pièce jointe dans cette conférence. Laissez-moi vous expliquer ce que c'est, mais attention à ne pas l'ouvrir sur Atom car si votre
ordinateur est un peu lent, votre atome risque de se bloquer. Essayez de l'ouvrir avec un
éditeur plus léger tel que Notepad, par
exemple, ou CAT sur un terminal
Linux ou Mac Quoi qu'il en soit, il s'agit du fichier JSON. Vous pouvez l'appeler JSON ou GeoJSON. En fait, GeoJSON est un cas
particulier de JSON. En gros, le format
est toujours le même. Il commence par des
crochets et contient essentiellement une chaîne
qui ressemble
à un dictionnaire Python
avec des clés et des valeurs Les clés sont la clé et la valeur où
se termine ce crochet frisé quelque part ici, je crois, si je ne me trompe pas Maintenant, celui-ci s'arrête là. Ouais. Ensuite, vous avez l'autre géométrie clé.
Qu'est-ce que la géométrie ? Eh bien, le type de géométrie
est multipolygonal. En gros, vous disposez de
ces attributs qui décrivent les données. Entrez les coordonnées de plusieurs polygones. Cela commence maintenant à décrire les entités,
les polygones Il s'agit des coordonnées du premier polygone qui
sera affiché sur la carte Supposons qu'il s'agisse d'
un pays
spécifique Antigua-et-Berbuda Un petit pays, mais quand même. Il s'agit des
coordonnées qui
détermineront l'emplacement
du polygone sur votre carte En gros, le volume lira toutes ces informations et décidera où
placer les polygones Ensuite, vous pouvez également utiliser d'autres attributs
tels que la population, qui est ici, vous allez utiliser cette valeur de population pour mettre
une couleur pour cette population. Et ainsi de suite, vous avez tous les pays
du monde dans ce fichier JSON. Passez quelques minutes à regarder ce fichier pour comprendre
sa structure. Dans la prochaine conférence,
je vais charger le fichier JSON dans Python et afficher
la couche de polygones On se voit là-bas.
97. 97: Génial. Dans la conférence précédente, je vous ai montré à quoi ressemble un fichier
JSON. Dans cette conférence, je vais ajouter ce
fichier JSON au code. N'oubliez pas que je
vous ai fourni le fichier JSON. Lors de la conférence précédente,
vous pouviez le
télécharger à partir des ressources de la conférence. Cette méthode GeoJSON
obtient donc un attribut
de données égal à l'objet
de fichier des données JSON En gros, vous devez
créer un objet de fichier Python que vous pouvez créer avec open. N'oubliez pas que open est une méthode Python
classique pour créer des objets de fichier. Le chemin passe
au-dessus du fichier. Il se trouve que c'
est dans le même répertoire que mon script Map one point py. Je suis juste en train de passer devant World JCO. Je l'ouvre essentiellement
en mode lecture. Je vais le laisser comme ça
pour le moment, enregistrer, exécuter. Je pense que nous allons avoir une erreur ici. Oui, nous devons
y ajouter
un paramètre d'encodage comme suggéré par
le message d'erreur. Cela fait partie
de la méthode ouverte. Correspond à huit SIG UTF. Encore une fois, lancez le chargement, et les polygones sont
affichés sur la carte C'était assez facile à faire. Vous devez savoir
que vous pouvez également ajouter des points via GeoJSO Dans ce cas, nous ajoutons des polygones, mais ce fichier JSON
peut également avoir des lignes ou des
points dans ses attributs Dans celui-ci,
nous avions un
attribut qui indiquait qu'il s'agissait plusieurs polygones, mais cela pouvait être des
points ou Dans ce cas,
le volume affichera ces fonctionnalités en fonction de
cet attribut de type ici. Bien entendu, vous auriez également l'attribut de coordonnées avec les coordonnées de la ligne. Aux points où
la ligne se brise et tourne dans le cas de points, vous auriez
des paires de coordonnées ici. J'espère que tu as compris l'idée.
C'était à propos de cette conférence. Dans la prochaine conférence,
je vais vous montrer comment créer une carte choroplèthe, c'est-à-dire une carte qui utilise coloration de zones pour
représenter des entités Dans ce
cas particulier, nous aurons
ces polygones différentes couleurs pour représenter la population du
monde pour quel pays Nous le ferons lors de la
prochaine conférence. À bientôt.
98. 97. Python et JSON : styliser la couche de population: Bonjour, encore une fois. Dans cette conférence, je vais vous montrer comment créer une carte
pays par population. Nous montrerons la population de chaque pays à travers des couleurs
graduées. Nous allons donc réfléchir à
une gamme de couleurs pour représenter la population,
du plus faible au plus élevé. Nous avons cette information
dans notre fichier JSON w point, qui est stocké dans cet attribut
pop 2005. Pop 2005 signifie
population de 2005, ce qui est assez vieux, mais cela ne devrait pas poser de problème à des
fins éducatives. Revenons donc au code et à
la manière de
changer la couleur de ces
polygones, car par défaut, nous avons cette couleur verte Il y a également de la transparence
sur les polygones. Vous pouvez voir la
carte de base en arrière-plan. Pour changer cela, vous devez
accéder à l'argument de la
fonction de style. Mais j'ai oublié quelque chose de
la conférence précédente, ce qui pourrait poser
quelques problèmes plus tard Il n'est pas nécessaire que ce
soit entre crochets, alors supprimez-le également ici. Nous avons donc un, deux, trois crochets ouverts et
trois crochets de fermeture. Maintenant, ça devrait aller. Nous devons ajouter un autre
argument à GeoJSON C'est le premier argument. Les données sont le premier argument
qui se termine ici. Ajoutez-y un autre argument de
fonction de style, et vous pouvez réellement
couper la ligne ici. Vous êtes libre de couper
des lignes en Python lorsque l'expression est
entre crochets, carrés ou bouclés Dans ce cas, cette expression
est entre crochets, nous pouvons
donc la casser et
il est bon de la
casser par une virgule La fonction de style est égale à, maintenant cela attend une fonction
Lambda. Les fonctions Lambda sont
comme les fonctions, les fonctions
normales, mais elles sont écrites en
une seule ligne de code Par exemple, disons que
L est égal à Lambda. Il s'agit d'une fonction Lambda
X en puissance de deux. Oh, désolée, j'ai eu une faute de frappe, pas et bub mais de l'
agneau. Une autre A est une fonction ici,
tout comme vous
auriez une fonction normale,
puis vous pouvez appeler L. Vous pouvez transmettre une valeur telle que
cinq et cela renverra
cinq puissance de deux. Comme vous pouvez le constater, vous
pouvez écrire la fonction sur une seule ligne. Cela peut également être
utile dans d'autres cas comme celui-ci que
vous verrez dans un instant. Lambda X. Cela vous permet également d'
écrire des fonctions anonymes Cette fonction
n'a pas de nom. Comme ici, j'ai attribué un nom à cette fonction car je
devais l'appeler plus tard. Mais celui-ci, nous n'avons pas
besoin de l'appeler plus tard, vous n'avez
donc pas besoin
de donner un nom. Ici, la syntaxe serait
correcte si je le faisais comme ça. Allons-y et faisons-le. Remplissez la couleur avec un C
majuscule, un F minuscule, majuscule et cela
devrait être Disons, jaune. Maintenant, si tu veux, tu
peux le laisser comme ça. Enregistrez le script. Quittez
le shell Python et exécutez le script. L'exécution s'est bien passée. Laissez-moi vérifier la carte, rechargez-la et vous verrez que les couleurs des polygones
passent au C'est ainsi que vous pouvez modifier les attributs de
votre fichier JSON. Autrement dit, vous ajoutez cet attribut qui
ne se trouve pas dans le fichier JSON
si vous le recherchez. Vous n'y trouverez rien. Vous pouvez maintenant
contourner ce problème en ajoutant des conditions
dans ce dictionnaire, telles que I X properties Pop 2005 est inférieur
à 10 millions,
dix, un, deux, trois, un, deux, trois,
un, deux, trois Ce que je fais ici, c'est que je
dis que définissez le jaune sur la cinquième couleur si X représente
l'entité adjacente ici. Si les propriétés sont réellement
l'attribut Pop 2005 de cet attribut de cet
attribut qui se trouve ici, s'agit de Pop 2005. Je sais que c'est un
peu compliqué. Laissez-moi prendre une enveloppe logicielle. Maintenant, j'ai tous les
textes enveloppés ici dans la vue et Pop 2005 fait en fait partie de ce
dictionnaire jusqu'ici Ce dictionnaire est un ensemble de propriétés. Ce dictionnaire est la valeur de cette clé de la clé de propriétés. Cela signifie
que nous accédons à la valeur du
schéma d'hélice en utilisant cette syntaxe
, connue en Python Pendant ce temps, les propriétés X, ce que c'est X ici,
représentent des fonctionnalités. Vous accédez donc aux
propriétés à partir des fonctionnalités. arrière-plan,
c'est un peu une boîte noire, mais volume, ce que fera le volume, c'
est qu'il passera en revue toutes les caractéristiques de
tous les polygones et vérifiera si la valeur de pop 2005 est
inférieure à 10 millions, et si c'est le cas, il
définira cette couleur pour
remplir l'attribut de couleur C'est plus ou moins le problème. Je pense qu'il vaut mieux
mettre ce vert. Si c'est moins de 10 millions, mettez-le en vert ou en orange. Si vous êtes entre 10 millions,
faites la même chose ici. Propriétés, en fait, vous
pouvez déchiffrer le code ici. Donc, Properties Pop 2005 mettons ici 20 millions. Ce ne sont que
des chiffres arbitraires. Vous pouvez mettre tout ce
que vous voulez, mais cela affectera la façon dont vos polygones sont
classés Pour une population de
10000000-20 millions d'habitants, nous aurons des couleurs orange Sinon rouge. Tout ce qui dépasse dix
sera coloré en rouge. Sauvegardez ceci et j'espère que
cela fonctionnera. Aucune erreur. Rechargez. Nous avons les États-Unis colorés en
rouge parce qu'ils ont une population de
plus de 20 millions d'habitants, cela semble bien fonctionner. Oui, Portugal Le Portugal
a une population d' environ 12 ou 15 millions d'
habitants. Je ne suis pas sûr. Il se situe dans le milieu de gamme de
notre algorithme de classification. c'est plus
ou moins ça, et si tu veux, tu
peux poser des questions. Je serais heureuse de vous aider et je
vous parlerai plus tard. Merci.
99. 98. Python et JSON : ajouter un panneau de commande de couche +: Bonjour, et bienvenue à nouveau à une
autre conférence sur la cartographie
Web avec
Python et volume. Il s'agit de la carte
pour laquelle nous l'avons créée. Elle contient
une couche de base, une couche de polygones et une couche de marqueurs
. C'est notre code. Maintenant, ce que je veux
faire dans cette conférence, implémenter une
fonctionnalité qui me permet d'activer et de désactiver les
couches personnalisées. concerne les couches personnalisées, je parle de
la couche polygonale et la couche de marqueurs, car il
n'est pas possible de désactiver
la carte de base, du moins pour autant que je sache Cela n'aurait aucun sens de
désactiver la couche de base. Tu ne veux pas une page blanche. Voyons donc comment procéder. La principale caractéristique ici est classe
de contrôle de
couche du module de volume, qui peut être ajoutée comme ceci. Vous souhaitez
pointer sur l'objet
cartographique auquel vous souhaitez ajouter un enfant. Le contrôle des couches est
ajouté en tant qu'enfant. Contrôle de la couche de volume. Maintenant, cela ne fonctionnera pas. Mais je veux quand même l'exécuter pour que vous ne commettiez pas
cette erreur plus tard. Permettez-moi de recharger la page. Vous ne voyez que la carte de base ici, aucune couche. Cela ne fonctionne pas parce que lorsque vous avez ajouté le
contrôle des couches à la carte, vous n'aviez toujours pas ajouté
le groupe d'entités, qui est un objet contenant la couche Jason
et la couche de marqueurs. Donc, en gros, pour
contrôler les couches, nous rechercherons le
groupe d'entités ajouté à la carte, mais il ne le trouve
pas pour le moment. Par conséquent, les choses se gâtent. Il est important de placer
cette offre : vous avez ajouté la
couche de groupes d'entités sur la carte ici. Exécutez à nouveau. Rechargez la carte et vous verrez les couches qui s'y trouvent et
vous verrez cette boîte ici Boîte à cartes lumineuse. Il s'agit de la carte de base
et vous ne pouvez pas la désactiver. Vous avez également cet élément
Ma carte ici dans le panneau de contrôle des
couches. Il s'agit du
panneau de configuration de la couche et vous pouvez activer ou désactiver cette couche. Mais comme vous le voyez, cela
désactive et active à la fois le polygone et la couche de
points, ce que
vous ne voulez pas Nous allons de l'avant et changeons cela. Je vais expliquer pourquoi cela se produit. Cela se produit parce que le contrôle des
couches, ce qu'il fait, c'est rechercher les objets ajoutés à la carte
avec un enfant, comme ici. Vous avez ajouté un
enfant et vous n'avez ajouté qu'un seul enfant
à l'objet cartographique. Par conséquent,
le contrôle des couches considérera cet objet comme un élément unique du panneau de contrôle des couches. Mais cet objet de groupe d'entités contient des marqueurs de cercle, mais il contient également
la somme GOJ Couche. Par conséquent, vous devez
modifier votre stratégie ici. Comment peux-tu faire ça ? Il
peut y avoir différentes manières. L'une des solutions consiste à
créer un
groupe de fonctionnalités pour les volcans. Appelons-le Fg V. Vous ajoutez GV ici et vous voulez
un autre groupe vedette Permettez-moi de copier cette
ligne, de la coller ici. Vous voulez un autre
groupe d'entités pour la population. Appelons cette population. Appelons cela
des volcans comme ça, changeons le nom de la variable FGP, FGP ici, FV là Ajoutez un lapachild qui doit
être FG P pour la population. Maintenant, tout semble bon. Voyons si le contrôle des couches sera désormais en mesure de lire ces
deux groupes d'entités. Allez-y et rechargez la
carte, ça va. Les volcans fonctionnent
bien, la population aussi. Tout fonctionne
bien. Il s'agit d'une carte. Si vous avez pu le construire
comme je l'ai fait, alors bon travail. Vous pouvez également choisir de ne pas
utiliser réellement de groupes de fonctionnalités. Vous auriez pu ajouter directement GeoJSON
à la carte. Toutefois, dans ce
cas, pour les volcans où vous exécutez la méthode at child
plusieurs fois, vous aurez une
couche pour chaque volcan Vous auriez ajouté
62 enfants à votre objet cartographique si
vous aviez créé une carte sans groupe
d'entités ici. Cela signifie que dans ce
panneau de configuration, vous auriez 62 entrées, 62 couches, et ce
n'est pas ce que vous voulez. Le groupe de
fonctionnalités est utile ici. Pour les volcans, c'est nécessaire. Mais pour GeoJSON, vous
auriez pu utiliser la carte ici et
tout irait bien. Mais pour des raisons de cohérence,
il est bon d'ajouter les deux à
des groupes de fonctionnalités spécifiques. Des volcans ici et de
la population ici. Voici donc le code, et j'espère que vous avez apprécié ce programme et n'
hésitez pas à poser des questions. Je te parlerai
plus tard. À bientôt.
100. 99. App 2 : thésaurus anglais +: Bonjour et bienvenue dans cette nouvelle
section du cours, et c'est dans cette section que
commence la vraie affaire. Dans cette section,
nous allons donc développer la première application
du cours. Jusqu'à présent, vous avez étudié
les bases de Python. Vous apprenez les fonctions, les boucles, les conditions, la gestion de
fichiers, etc. Nous allons maintenant mettre en pratique
tous ces concepts en
créant de
vrais programmes qui peuvent être utilisés par les utilisateurs au lieu de simplement parcourir des
chaînes et des nombres triviaux, etc. Alors, qu'allons-nous
construire dans cette section ? Eh bien, vous allez créer un programme dans lequel vous
pouvez donner un mot, un mot anglais, et
le programme renverra la définition de
ce mot en anglais. Permettez-moi donc de vous
présenter le programme. J'utilise Python 3.
App point p est un script. Le programme
vous demande donc de saisir un mot
dont vous souhaitez obtenir la
définition. Par exemple,
disons Mountain. Vous obtenez ainsi la
définition de la montagne. Et dans ce cas, il se trouve qu'
il y a deux définitions. La montagne est donc une caractéristique de la surface de la Terre qui
s'élève au-dessus de la base. R, la montagne a une autre signification, qui est un
grand nombre de choses qui
ne sont pas empilées. Quoi qu'il en soit, il y a des mots qui
n'ont qu'un seul sens, comme
les mathématiques. Oui, j'espère. Vous n'avez donc qu'une seule
définition des mathématiques. Mais le programme possède également
d'autres fonctionnalités, exemple si vous mettez
AN avec un double N, donc avec un N supplémentaire
et appuyez sur Entrée. Au lieu de se bloquer,
le programme affiche un message Il vous dit : « Est-ce que
j'ai plutôt plu ? » C'est donc un programme assez
intelligent qui devine le mot que l'utilisateur avait peut-être en tête en le
tapant Entrez donc Y si oui, si vous vouliez dire pluie ou N si non. Oh, oui, je voulais dire pluie, alors pourquoi ? Et vous obtenez la
définition de la pluie, qui se trouve avoir
deux définitions. C'est le premier, et
c'est le second. Le programme
dira : si vous entrez un mot très aléatoire qui n'a aucune
signification de ce genre, vous recevez le message,
le mot n'existe pas, veuillez le vérifier
car le programme ne trouve pas de
mot similaire à celui-ci. Il ne trouve pas de mot en premier. De plus, il essaie de trouver
un mot similaire à celui-ci, mais il ne le fait pas
parce que je ne pense pas qu' il y ait de correspondance avec celui-ci. Il imprime donc ce message. Il y a aussi d'autres
choses, comme, vous savez, si vous avez un mélange de lettres
majuscules, comme R et A majuscules, vous obtenez toujours la
bonne saisie C'est donc un programme. Il possède
une interface de ligne de commande, ce qui signifie que
vous êtes une entrée , vous passez l'entrée par la ligne de commande
et vous
la recevez à nouveau depuis
la ligne de commande. Cependant, plus loin dans les sections suivantes, je vais expliquer
vos applications Web, comment créer des
applications Web avec Python. Vous revenez donc ici
et créez une application Web en utilisant le code que vous allez apprendre
dans cette section. Vous pouvez donc étendre ce programme pour le rendre plus convivial avec une interface Web
où les utilisateurs peuvent saisir l'entrée
via un formulaire Web, parcourir une
page Web, puis appuyer un bouton, puis obtenir le
résultat sur la page Web. Cependant, le code que
vous allez apprendre dans cette section est
très important. Cela s'appelle Python. Vous allez donc en apprendre davantage
sur les conditionnels et les boucles. Vous allez donc mettre en œuvre
tout ce que vous avez appris dans la section précédente en
développant ce programme. J'espère donc que cela vous plaira
et je vous souhaite beaucoup de succès. Rendez-vous lors de la prochaine conférence.
101. 100. Comprendre votre ensemble de données dans Python +: Salut, encore une fois. Dans
la vidéo précédente, j'ai fait une démonstration du
programme afin que vous sachiez quoi ressemble le programme et quelle est la sortie qu'il
génère. Également l'interface
du programme, qui est une interface de
ligne de commande. Vous entrez les données
via l'interface, l'utilisateur saisit les données via l'
interface de ligne de commande et vous obtenez à nouveau
le résultat depuis
la ligne de commande. Maintenant, j'ai créé un dossier ici quelque part et je lui
ai donné un nom. Vous pouvez lui
donner le nom que vous voulez dans ce dossier, je vais mettre tous les
fichiers de ce projet. Nous parlons de
fichiers de données tels que data point JSON. Il s'agit d'un fichier contenant
un vocabulaire que le
programme va extraire, nous allons demander un mot et ce fichier contient la
définition du mot. Et les fichiers point Pi
seront également placés ici. Nous connaissons le résultat, nous devons
maintenant
déterminer comment y accéder et nous allons adopter l'approche
étape par étape, ce qui signifie que nous allons d'
abord
développer une
version simple du programme,
il suffit de donner un mot au programme et le programme renverra la
définition de ce mot. Mais ce sera très
simple car l'utilisateur peut
parfois transmettre un
mot qui n'existe pas, et en tant que programmeur, vous devez compter ce mot
pour ce mot inexistant. Au lieu de casser,
d'interrompre le programme, montrer une erreur à l'utilisateur, vous devez lui montrer un message plus convivial C'est ce que je ferai dans
les prochaines vidéos. Mais pour l'instant, la
toute première chose à laquelle nous devons penser, ce sont les données. J'ai donc fait quelques recherches
sur le Web et j'ai trouvé cet ensemble de données de mots
et de définitions. Maintenant, cela représente environ
5 mégaoctets de données. Dans Atom, l'ouverture prend
un certain temps, alors j'ai cliqué dessus et j'
attends toujours qu'il s'
ouvre. Maintenant, il s'ouvre. Si votre atome se fige, vous pouvez l'ouvrir avec un éditeur plus léger
tel que Notepad ou Nano
sur Mac ou Quoi qu'il en soit, il s'agit
d'un fichier JSON à points. Jon JSON
ressemble à un langage. Certains disent que ce n'est pas une langue, c'est juste un ensemble de règles
pour formater certaines données. Le format JSON suit ce format. Tout commence par un crochet, puis nous n'avons que des paires de clés et
de valeurs C'est comme un dictionnaire
Python. La clé est séparée par
la valeur par une colonne. ce cas particulier, nos valeurs sont entre crochets, ce qui suggère que vous pouvez
parfois avoir plus d'un élément entre crochets, par exemple. Permettez-moi de rechercher le mot
control F ou Command F. Rain. Cela nous mènera ici. Tout d'abord, laissez-moi passer à View
et à Toogle Soft Wrap. Cela fera en sorte que le texte
s'adapte à mon écran. Pour le moment, vous voyez que les précipitations se situent en dehors
des limites de l'écran. Cela prend également un certain temps car nous avons
beaucoup de données ici. Maintenant
que les données semblent meilleures, permettez-moi de rechercher à nouveau la pluie, trouver si c'est la pluie clé , disons, le mot pluie et voici la définition de la pluie. Dans ce cas, nous
avons deux définitions ,
car pour certains mots, vous pouvez avoir
plusieurs significations ou avoir plusieurs formes. Par exemple, c'est
la pluie en tant que nom, c'est une précipitation et
c'est le verbe pour la pluie Quand il pleut, tomber des
nuages et des gouttes d'eau. Il s'agit d'un verbe et d'un nom séparés par une virgule. C'est donc comme
un dictionnaire Python. Nous devons maintenant comprendre comment
charger ces données dans Python. Parce que pour accéder aux
données de ce fichier, vous devez d'abord le charger dans
Python en tant que type de données
Python spécifique, puis accéder aux données à
partir de ce type de données. Réfléchissez un instant au type de données
Python le plus approprié
pour ce fichier JSON. Pensez-y
et je vous le montrerai dans la prochaine
conférence.
On se voit là-bas.
102. 101. Chargement de données JSON dans Python: Je pense donc qu'il était assez
facile de se rendre compte que la meilleure façon de
charger ces données en Python est un dictionnaire Python. Cela ressemble à
un dictionnaire Python et une fois que vous l'avez chargé dans
un dictionnaire Python, il devient très facile d'
accéder à la valeur d'une clé. Alors, comment le charger
dans un dictionnaire Python ? Eh bien, laissez-moi ouvrir un shell de
commande ici. Pour l'instant, je vais juste
démontrer quelque chose de rapide dans un shell Python interactif. Mais d'abord, vous devrez peut-être fermer ce fichier JSON car cela ralentit l'atome.
Ne dites pas les modifications. Je n'ai fait aucun changement de toute façon. Python 3, qui
ouvrira mon Python 3.6 0.1. Quoi qu'il en soit, même si
vous avez Python deux, ce programme fonctionnera de la même manière. Alors, comment charger du JSON
dans un dictionnaire Python ? Eh bien, pour cela, nous devons utiliser
la bibliothèque standard JSON. Avec une bibliothèque standard, cela signifie que vous n'avez pas
besoin d'installer JSON. Il vous suffit de continuer
et de l'importer. Une fois que vous avez fait cela, il existe une belle méthode de
chargement par points JSON. Cette méthode de chargement, les
attentes en fait, je peux la montrer comme ça, aider JSON point Load. Cela
permet d'obtenir cet argument ici, qui est un
objet semblable à un fichier contenant
un document JSON. Nous parlons d'un objet
fichier en Python, et nous devons créer le fichier. La façon de le faire est simple. JSON fait à nouveau Load. La façon dont nous créons un objet fichier est d'utiliser la méthode open. Tu le sais déjà. Ensuite, vous transmettez le chemin du fichier. Maintenant que mon terminal pointe vers
ce dossier, me suffit de passer un nom de fichier. Je n'ai pas besoin de suivre
un chemin complet pour y entrer. Ainsi, vous pouvez soit
passer la méthode R, qui signifie mode lecture, soit simplement la
laisser comme ça et le mode lecture est par défaut. Assurez-vous de fermer les
crochets deux fois. Nous avons deux
crochets ouvrants ici, deux crochets
fermants ici, c'est tout. Maintenant, que sont les données ?
Les données sont un dictionnaire. C'est un dictionnaire
Python que vous pouvez imprimer. Oui, c'est beaucoup de données. Cela a pris un certain temps, mais normalement vous n'aurez pas à
imprimer le dictionnaire en entier. Ce que vous pouvez vérifier, c'est
d'accéder à un mot ou à une clé
du dictionnaire. Disons le chiffon,
vous devez utiliser des crochets, désolé, des guillemets pour la clé Voici ce que vous obtenez, définissez la valeur du mot
pour le tableau de touches. Maintenant que vous savez plus ou moins comment
cela fonctionne, essayez de créer une
fonction qui obtient en entrée une clé puis renvoie la valeur de
cette clé en particulier, et essayez également d'intégrer le chargement de la chute adjacente et d'imprimer le résultat Si
cela vous pose des problèmes, dans la vidéo suivante, je vais vous montrer comment nous
procédons. On se voit là-bas.
103. 102. Restituer à l'application la définition d'un mot: J'espère que vous avez compris
comment créer une fonction qui obtient une clé, un mot et renvoie la
définition de ce mot. Permettez-moi de
créer rapidement ce programme. Permettez-moi d'appeler cette application
Ones point in pot Jason. Données (voir, par exemple, chargement JSON, point de données
ouvertes, point JS). C'est ça. Définissez la fonction. Traduire, laissez-moi
appeler cela traduire. Word, et tout ce que vous avez à
faire est de renvoyer le mot de données. C'est ça. Ensuite, vous pouvez soit, disons, faire quelque chose
comme Word Eagle pour
arranger un tableau, soit le faire dynamiquement en
demandant l'avis de l'utilisateur Imprimez un mot comme celui-ci, laissez un espace, puis il ne
vous
reste plus qu'à imprimer le résultat
du dictionnaire. Comme vous connaissez ce
dictionnaire pour le moment, il renvoie simplement une chaîne, mais vous n'
imprimez aucune sortie. Si vous souhaitez afficher cette
sortie dans la ligne de commande, vous devez
imprimer le mot de traduction. C'est ça. Maintenant, ne vous trompez pas
avec ces noms de variables. Il s'agit d'une variable globale et c'est également une variable
globale. Nous définissons la variable ici
et nous la transmettons ici. Alors tout ce qui est transmis ici va
à celui-ci ici. Il peut s'agir d'un autre mot ou d' un autre nom de variable. Supposons donc W W. Il s'
agit d'une variable locale. Cela a un sens dans la fonction et cela
peut être tout. Si vous dépassez W ici, il faut aussi qu'il y ait W ici. Cela transmet cette valeur
à cette valeur ici. Généralement, les programmeurs
préfèrent
simplement saisir le même
nom ici et là Mais pour vous, en tant que débutant, je voulais
vous montrer cette différence : il n'est pas nécessaire qu'il en
soit de même pour cela. Enregistrez le script,
ouvrez peut-être un autre terminal. Python Three App point pi, execute, Enter a word, Rig, et voici le résultat. Que diriez-vous de ces mots ? Nous avons reçu une grave erreur. Mais vous ne voulez pas le montrer
à l'utilisateur car ce n'
est pas très lisible. Retracez le
dernier appel, comment prenons-nous en compte ce scénario dans notre code ?
Il faut que tu découvres ça. Pensez-y.
C'est exactement ce que
nous ferons lors de la prochaine conférence. Nous devons donc
tenir compte que le mot transmis par l'
utilisateur ne figure peut-être pas dans le jeu de clés du
dictionnaire. La pluie était une clé de données du dictionnaire
Jason, mais ce nom ne l'était pas Nous devons
donc compter pour cela. Je vous le montrerai
lors de la prochaine conférence. À bientôt.
104. 103.Comment l'application traite les mots non existants: Très bien,
allons-y et rendons ce programme plus convivial. Au lieu d'afficher
ce bloc d'erreur, nous allons afficher
un message
indiquant que le mot n'existe pas, veuillez le vérifier
ou quelque chose comme ça. Pour ce faire, laissez-moi passer au shell interactif Python. Vous pouvez vérifier quelque chose comme cette pluie dans les données
et vous en obtenez deux. Si vous le faites dans les
données, vous obtenez une fausse information. Nous devons nous en servir et dire que
s'il s'agit
d' un mot dans une donnée, ce doit être W. Nous
parlons de cette variable, donc s'il s'agit de données, ce que vous voulez faire
est de renvoyer la valeur. agit de la valeur, et si elle renvoie vrai, elle est exécutée, s, return le mot
n'existe pas, veuillez la vérifier. Lorsque cela est faux, reste est exécuté. En fait, l'expression
sous else est exécutée, mais elle n'est pas exécutée. Comme vous le voyez, c'est assez
lisible, très lisible avec humour. C'est en fait une bonne
des fonctionnalités
géniales de Python. Je peux l'enregistrer maintenant et aller
ici, exécuter le programme. La pluie fonctionnerait comme avant. Et cela indique que le
mot n'existe pas, veuillez
le vérifier. C'est aussi simple que ça. Le programme prend forme. Cependant, vous devez effectuer
d'autres tests pour vérifier les différentes entrées
afin de prendre en compte
toutes les entrées possibles que l'utilisateur peut y mettre. Supposons que l'utilisateur mette la pluie en majuscules et
que cela indique que le mot n'existe pas. Mais en réalité, le mot « pluie »
est présent dans votre jeu de données. Et alors, comment compte-t-on les
différentes lettres majuscules ? Vous pouvez aussi avoir un mélange
de lettres comme ça, et cela indique toujours que
le mot n'
existe pas ou qu'il pleut comme ça. Le mot n'
existe pas. Pensez-y à nouveau et lors de
la prochaine conférence, je l'implémenterai, ce qui
est très simple. On se voit là-bas.
105. 104. Comment l'application traite les mots sensibles à la casse: Génial. Nous avons maintenant ce
programme qui renvoie une valeur à partir
d'un mot que nous avons mis. Je raisonne sur la définition
de ce mot. Cela compte également pour les
mots inexistants dans notre ensemble de données,
à savoir data point JS. Pour compter les différents cas de lettres que nous pouvons saisir, vous pouvez consulter le cher STR qui devrait vous
montrer les méthodes que
vous pouvez appliquer à une chaîne. Voici une méthode inférieure. Ce que cela fait, c'est que si
vous y mettez de la pluie, c'est le cas. La méthode doit donc
être appliquée entre crochets. Tu reçois la
version inférieure de la lettre. Comme nos données sont toutes en minuscules dans notre point de
données JS sur le fichier, que vous dès que vous obtenez l'
entrée ici, la chaîne,
vous pouvez la convertir en
minuscules, puis transmettre
cette version à l'expression de l'axe du dictionnaire Ce serait quelque chose
comme, vous savez, W est égal à un point inférieur. Nous mettons à jour
la valeur W ici, la chaîne saisie par l'utilisateur, puis le W
sera transmis en minuscules, aussi simple que Laisse-moi faire un petit test. De la pluie et vous obtenez la
bonne définition de la pluie. Réfléchissons à
d'autres valeurs possibles que l'utilisateur pourrait saisir. Laissez-moi effacer la
ligne de commande, afin que vous puissiez mieux voir. Permettez-moi de rappeler le programme. La météo fonctionne bien. Mais au lieu
de mettre de la pluie, l'utilisateur
saisit un extra dedans. Le programme dit que le mot
n'existe pas, ce qui est vrai. Mais en tant que programmeur, vous voulez rendre votre programme aussi intelligent que possible. Dans ce cas, vous pouvez
envisager de vérifier les chaînes similaires
à celles saisies par l'utilisateur. Dans, vous devez
vérifier s'il
existe une chaîne
similaire à ce mot. Au lieu de dire que le
mot n'existe pas, vous voulez suggérer à l'utilisateur que vous vouliez peut-être dire ce mot, comme si vous faisiez
une recherche sur Google. C'est un peu complexe,
mais pas tant que ça. Je vais vous montrer comment
implémenter cela étape
par étape dans la prochaine conférence. Donc là.
106. 105. Déterminer la similarité entre les mots: Bien. Comme je l'ai déjà mentionné
dans la vidéo précédente, nous devons
maintenant prendre en compte le fait que l'
utilisateur tape mal quelque chose. Au lieu de cela, ils y entrent un extra ou
quelque chose comme ça. Dans ce cas, vous devez
informer l'utilisateur
qu' il a mal saisi quelque chose. Comment s'y prend-on ? Eh bien, si vous ne
savez pas comment procéder, la meilleure pratique
consiste à faire des recherches sur Google,
car le monde de la programmation est très vaste et vous n'avez pas
nécessairement besoin de connaître toutes les
solutions ou solutions possibles pour faire quelque chose En gros, nous devons
trouver un algorithme pour comparer, disons le tableau avec
N et le tableau de mots
réel avec un N, la fin et dire s'ils
sont similaires ou non ,
mais vous n'avez pas à réinventer la roue si quelqu'un d'autre
l'a déjà roue si quelqu'un d'autre
l' C'est pourquoi vous devez
faire des recherches sur le Web et voir
si c'est quelque chose qui existe, s'il
existe une bibliothèque ou quelqu'un, un code
source qui le fait, une fonction ou
quelque chose comme ça. Mais en général,
vous trouvez souvent une bibliothèque pour cela. Si vous faites des recherches, vous vous rendez compte que vous pouvez le faire
en utilisant quelques bibliothèques, et l'
une d'entre elles est une bibliothèque
standard appelée D Flip. D'ailleurs, vous pouvez obtenir une liste des
bibliothèques standard de Python sur cette page. Index de la bibliothèque Python.org (point HTML). Voici le lien. toutes les bibliothèques standard que vous pouvez importer en Python. Permettez-moi d'aller ici et d'importer Dilip. Il s'agit d'une bibliothèque
permettant de comparer du texte. L'une des méthodes
est le séquenceur. C'est un nom long, donc ce que
vous pouvez faire, c'est dire à partir de Lip, Importer un matcher de séquences Ce qu'il fait, c'est un
séquenceur. Tu n'as pas besoin d'y passer. Aucune valeur n'indique que la valeur
de l'argument est indésirable. Le premier argument est un
argument appelé junk, ce qui signifie que si vous
comparez deux blocs de texte, dans ce cas, nous comparons
simplement des mots Si vous comparez
deux blocs de texte et que vous y trouvez
des éléments indésirables, des lignes de rupture et des espaces, vous
devez transmettre ici une fonction qui
ignore ces Nous n'avons pas ce scénario pour le moment, alors
restons simples. Nous rejetons
cet argument. Ensuite, vous passez les deux chaînes, vous voulez comparer le mot
pluie avec le double N au mot pluie réel et cela renverra un objet
séquentiel, ce qui n'a rien d'intéressant Vous devez
donc appliquer
la méthode du ratio à cela pour obtenir le ratio réel Cela indique une
similitude entre ces deux chaînes
sur une échelle de 0 à 1 Ils disent qu'ils
sont assez similaires. s'agit maintenant d'obtenir la similitude
entre deux chaînes, mais ce dont nous avons besoin à la
place, c'est d'avoir une liste, une séquence de chaînes. Nous avons ces clés du dictionnaire. Nous avons un dictionnaire
avec de nombreuses clés et l'utilisateur passe un mot, disons rage avec
N, et vous
devez comparer ce mot
avec toutes ces clés
du dictionnaire car vous
ne pouvez pas comparer RN avec N avec un N dans votre programme parce
que
vous ne savez pas si c'est vraiment
similaire à cela. C'est le
problème inverse, pour ainsi dire. Mais Diflip a une autre
fonctionnalité pour cela et cela s'
appelle des matchs rapprochés comme ça Vous devez l'importer
depuis DLPGclose matches. Mais j'aborderai cette fonctionnalité lors de la prochaine conférence. On se voit là-bas.
107. 106. Trouver les meilleures correspondances d'une liste de mots: Nous avons donc examiné la
classe
Sequence Matcher qui renvoie la méthode du
ratio de cette classe Il renvoie ce numéro, mais nous
devons maintenant voir comment extraire le mot le plus similaire d' une liste ou des
clés d'un dictionnaire. Concentrons-nous d'abord
sur la séquence. Une liste est une séquence et
à partir de l'entrée Philip, vous obtenez des correspondances proches. Maintenant, si tu m'aides,
fais des matchs serrés. Vous pouvez voir les
arguments que vous pouvez transmettre à cette méthode. Le premier est le mot. Ce sera le mot
que l'utilisateur transmettra, et vous aurez alors une
série de possibilités. Word est une séquence pour laquelle des correspondances
proches sont souhaitées,
généralement une chaîne. Il s'agit généralement d' une chaîne que vous
souhaitez comparer. Possibilités est une liste de séquences ou une liste
de chaînes que vous pouvez dire, généralement une liste de chaînes. Alors vous avez N égal à trois. Cela définira le nombre de correspondances que vous souhaitez que la méthode get close matches renvoie. Supposons que vous passiez une liste
de possibilités de six éléments et
que chaque élément ait le ratio 1-0 0-1 et que cette méthode
renverra les trois correspondances les plus
similaires, les chaînes les plus similaires
au mot transmis ici Vous pouvez modifier la valeur de cet
argument si vous le souhaitez, et
vous avez une limite. C'est le ratio
ici. Par défaut, ne renverra que
les éléments
dont le ratio est d'au moins
0,6 ou supérieur. En vertu de cela, les matchs ne
seront pas inclus. Q à l'aide et
laissez-moi essayer des matchs serrés. Voyons ce que nous allons obtenir. Supposons qu'il pleuve, alors vous avez une liste
entre crochets, bien sûr. Disons qu'il faut aider les
pyramides et la pluie. Je vais laisser le N et le
seuil tels qu'ils sont par défaut. Dans ce cas, il pleut. La raison pour laquelle il pleut est
que la pluie avait un seuil supérieur à 0,6 ou
similaire Si le seuil vous
intéresse, vous pouvez utiliser une correspondance de séquence, mais la valeur spécifique ne nous
intéresse pas Rain était donc le
seul à satisfaire à
ces conditions. Nous avons la pluie ici sous forme de liste. Nous sommes capables d'obtenir les
correspondances les plus proches d'une liste, mais comment pouvons-nous obtenir
les correspondances les plus proches entre les clés de notre dictionnaire ? Eh bien, nous avons toujours une variable de
données ici, que j'ai chargée précédemment
ici dans cette session, je la charge à partir du fichier JSON. Donc, avec des touches à points de données. Il existe une méthode de dictionnaires, appelée clés,
avec
laquelle vous
pouvez obtenir une liste de toutes les clés du dictionnaire Nous
ne parlons que des clés et de toutes les valeurs des clés. Ce sont les mots et chacun d'eux a une valeur qui lui est
associée. En gros, vous pouvez vérifier
le type de data point kiss, juste pour voir de quoi il s'agit. C'est comme un baiser creusé,
mais il se comporte comme une liste Tout ce que vous pouvez faire alors est d'appliquer les méthodes G matches. Passez-y la pluie pour Data Dot
Kiss. Voyons ce que nous allons obtenir. Nous avons trois matches. Il a plu. Entraînez-vous et il pleut Si tu passes le bout de cinq points, tu obtiens plus de matchs. Mais il est important de noter
que la liste ici est ordonnée. Le tout premier mot est
celui qui présente le taux de similitude le plus élevé, nous ne nous intéressons qu'
à ce premier mot. Comment l'obtenir ? Eh bien,
vous allez ignorer ce chiffre puisque vous
ne voulez que le premier mot et vous pouvez
y passer zéro parce que c'est une liste et que le premier élément
a un indice de zéro, donc vous obtenez un mot mal orthographié «
pluie pour pluie » Donc, en gros, nous
avons le moteur pour extraire le mot
le plus similaire de la séquence maintenant, et tout ce que nous avons à faire est d'
implémenter cette fonctionnalité
dans notre fonction ici. Tout d'abord, je voudrais simplement
informer l'utilisateur par le biais d'un message qu'il a
saisi un mauvais mot. Je veux juste en informer l'utilisateur afin qu'il puisse réexécuter
le programme. La prochaine fois, ils saisiront
un nouveau mot pour le moment, mais plus tard, nous ferons
quelque chose de plus intelligent. Donc, pour l'instant,
pensez-y, envoyez un message
dans lequel vous mentionnez votre suggestion avec
le mot correct que l'utilisateur avait
peut-être en tête. Faisons-le lors de la
prochaine conférence. À bientôt.
108. 107. Trouver le mot le plus similaire parmi un groupe de mots: Génial. Le programme se déroule bien. J'espère que cela vous plaira. Ce n'est pas un gros programme , nous n'avons donc pas
beaucoup de code ici. Cependant, cela implémente de
nombreux aspects de Python. Nous chargeons des données
en Python dans un type de données Python,
et nous avons des fonctions, nous avons des conditions ici, nous avons des entrées utilisateur
et plus tard, nous allons également implémenter
quatre boucles dans ce code Nous expliquerons plus tard
pourquoi nous avons besoin de quatre boucles. Nous avons des bibliothèques,
nous importons des bibliothèques. Voici Jason. Nous devons également importer
la bibliothèque Diflp. Sur lequel nous travaillons
actuellement. Concentrons-nous sur le revers de la médaille pour le moment. Et le mot que nous avons, c'est que nous passons cette chaîne par un double et voilà, nous avons reçu une
série de suggestions. Les meilleures correspondances du mot sont extraites des clés de
notre dictionnaire. Mais l'utilisateur peut également transmettre un mot qui n'
existe pas du tout et qui
ne présente aucune
correspondance similaire. En gros, vous avez
trois scénarios. L'utilisateur saisit le mot exact comme pluie, et vous
renvoyez immédiatement les données avec cette clé particulière,
c'est le premier scénario. Le deuxième scénario
est celui où l'utilisateur saisit un mot très
proche de l'un des mots que vous avez trouvés dans votre dictionnaire, comme la pluie avec un N. Dans ce cas, vous souhaitez renvoyer le premier élément de la liste généré par les résultats de la recherche. Le premier scénario est celui où
vous obtenez une liste vide, ce qui signifie qu'il
n'y a aucun mot similaire
dans votre liste. Nous avons trois scénarios,
ce qui signifie que nous devons appliquer trois conditions dans
le bloc conditionnel ici. Pour le moment, nous n'en avons que deux. Nous en avons besoin d'un autre qui dise, vous
vouliez dire ce mot,
veuillez le vérifier. Pour l'instant, nous allons simplement transmettre un message et
noter quelque chose. Vous pouvez également
y transmettre une valeur limite plus élevée, par exemple 0,8 Parce que parfois, si c'est un faible 0,5 et que vous passez
un mot au hasard, cela
vous suggérera quelques mots que vous ne voulez peut-être pas. Vous devriez peut-être
jouer avec ça. Dans ce cas, vous
obtenez une liste vide. Je pense que je vais utiliser une valeur de 0,8 pour la coupure lorsque je l'
implémenterai dans le script ici. Passons donc à notre code. La première chose que nous
devons vérifier est si le mot est dans les données et renvoyer
la valeur de ce mot. Vous vous demandez peut-être : et si vous vouliez d' abord
vérifier les similitudes et non cela ? Eh bien, je pense que la première
condition que vous
devez appliquer est celle qui, selon vous, se produira le
plus souvent. Si vous pensez que
la plupart des utilisateurs saisiront
le mot correct, vous
devez d'abord vérifier
cette condition. Vous ne voulez pas que le
programme soit soumis à des conditions
moins susceptibles de se produire. Vous devez donc d'abord passer par ceci, puis les autres seront
ignorés si cela revient à vrai. Si cela ne redevient pas vrai, si c'est faux, vous devez
vérifier l'existence d' une autre condition. Lorsque vous recherchez
plus de deux conditions, vous devez implémenter
l'instruction IF pour plusieurs conditions. En gros, nous devons vérifier si cette
liste est vide ou non. S'il n'est pas vide, cela signifie que nous avons une
correspondance dans le dictionnaire. Dans ce cas, nous
voulons suggérer ce match. Nous voulons mentionner ce
match dans le message. Ce qui signifie que si vous vous rapprochez. Désolée. Permettez-moi d'abord de l'importer. À partir de l'importation de la bibliothèque,
obtenez des correspondances proches. ALIF, obtiens des matchs serrés. Le mot donné dans
DTakes est comme ça. Il s'agit d'un objet de liste. C'est la même chose
que celui-ci ici. Il s'agit d'un objet de liste et
vous souhaitez vérifier si la longueur de cette liste
est supérieure à zéro. Si c'est le cas, vous voulez y retourner. Message, disons, l'
avez-vous fait ? Nous utilisons ici un
format de chaîne, en pourcentage. Je vais expliquer ce que c'est. En avez-vous plutôt
besoin ? Après la chaîne, après
avoir fermé les codes, se trouve l'opérateur de pourcentage, et vous passez ici la
variable qui
remplacera ce formateur
dans cette chaîne Cela sera remplacé par
la variable que vous lui
transmettez directement ici. Dans notre cas, nous voulons transmettre
des correspondances proches pour W et keys et vous voulez obtenir le premier élément de cette
liste et le mettre ici. C'est pour le comprendre. Supposons que nous ayons une
variable qui a une valeur de un et que vous dites :
« Hé, comme ça, pourcentage A et le pourcentage S
seront remplacés par un. C'est exactement ce que
nous faisons ici. Et c'est tout ce que nous avons à faire. Si cela correspond à des chutes, et que cela est également évalué
à faux, cela signifie que nous avons
affaire à une liste vide L'utilisateur a saisi un mot qui
ne correspond à aucune correspondance dans notre dictionnaire et qui n'a aucun mot similaire
dans notre dictionnaire. Vous souhaitez renvoyer le
mot n'existe pas. Laisse-moi dire le script,
va au terminal. La touche fléchée qui apparaît pour appeler une commande précédemment exécutée. Python Three App One point
py, exécutez Enter word. Permettez-moi de commencer par
un mot correct, pluie, et vous obtiendrez d'autres
définitions de la pluie. Laissez-moi exécuter à nouveau,
pleuvoir avec un N. Nous avons reçu ce message. Vouliez-vous plutôt dire pluie ? Le pourcentage a a donc
été remplacé par le premier élément de la liste
renvoyé par get close matches. Encore une fois, si vous passez une chaîne très
aléatoire, elle indique que le mot n'
existe pas, veuillez la vérifier. C'est ça. Cependant, je
vois toujours un problème avec cela, nous pouvons toujours rendre le
programme plus convivial. problème maintenant, c'est que lorsque l'utilisateur saisit une
pluie par erreur, que
dites-vous, vous lui faites simplement passer un message disant que vous
vouliez plutôt dire pluie ? Ah oui, je veux dire pluie, mais
comment puis-je entrer la pluie ? Pourquoi dois-je à nouveau quitter
le programme ? Je pense donc une solution où au lieu de simplement passer un message
ici et de terminer le programme, vous exécutez
une autre instruction d'entrée. Une autre instruction de saisie et une
autre fonction de saisie
comme celle-ci ici, où vous demandez
à l'utilisateur de saisir, disons, Y s'il veut dire chiffon ou N pour non, y pour oui, et pour non, s'il ne veut pas dire chiffon Si oui, alors en gros,
vous passez, vous renvoyez
la valeur du mot pluie. S'ils refusent
le message saisi, vous dites « désolé » si ce
n'est pas le mot que vous vouliez dire, alors nous ne savons pas
ce que vous avez en tête. Nous disons donc que le mot
n'existe pas, veuillez le vérifier.
C'est ce que je pense. Oui,
pensez-y et je vais l'
implémenter dans la prochaine
conférence. Parle-toi là-bas.
109. 108. Obtenir des vérifications de la part de l'utilisateur: Génial. Comme je l'ai déjà mentionné
dans la vidéo précédente, nous allons
maintenant implémenter un
message d'entrée utilisateur supplémentaire dans le programme. Au lieu de renvoyer
cette chaîne, je veux
essentiellement
renvoyer un message d'entrée. Si le programme découvre
que l'utilisateur a transmis un mot contenant des
mots similaires dans un dictionnaire, vous
devez demander à l'
utilisateur de saisir Y ou N. Comment faites-vous ? Eh bien, avec une fonction de saisie, bien sûr. Comme ça. Ajoutons un autre
message à la liste. Entrez. Pourquoi ? Oui Moi, oui. Ou N I non. En gros, quelle que soit
la saisie par l'utilisateur, vous devez traiter cette
entrée Y ou N, elles seront essentiellement stockées
dans une variable mais pas encore. Dans cette configuration
que nous avons ici, rien ne sera stocké
dans la variable. Ce ne sera qu'une
valeur à la volée, vous devez
donc la stocker
dans une variable. Disons que Y N, donc pour oui et non, c'
est égal à cela. Alors maintenant, Y ou N
seront stockés dans Y et variable. Vous devez traiter
cette variable. YN Eagles aussi, oui,
que devons-nous faire ? Si l'utilisateur voulait dire « pluie », nous renvoyons des données. Ici, nous devons transmettre
le bon mot. Le mot correct, on
obtient le bon mot à partir de cette expression. correspondances rapprochées
nous donneront la meilleure correspondance et nous devons transmettre cette correspondance dans
le dictionnaire de données,
afin d'obtenir la valeur, la
définition de la pluie
que nous utilisons pour cette correspondance, car l'utilisateur a convenu que la meilleure correspondance était la pluie. Cela sera
remplacé par de la pluie et l'utilisateur a accepté. J'espère que c'est clair.
Veuillez poser des questions. Si c'est compliqué, je me ferai un plaisir de vous répondre. Si oui, renvoyez-le. Laissez-moi vérifier, exécuter cette étape
intermédiaire Désolé, j'ai utilisé l'opérateur égal ici, qui est un opérateur d'affectation Vous devez vérifier pour utiliser
l'opérateur de comparaison, qui est composé de
deux opérateurs égaux. Enregistrez à nouveau le script et
allez-y, entrez le mot Rain. Vouliez-vous plutôt dire pluie ? Entrez Y si oui ou N si non. Laissez-moi entrer Y. Nous avons correctement obtenu les définitions de la pluie Génial. Peut-être que je dois
améliorer le message ici, supprimer le point et utiliser une
colonne et un espace. Cela devrait être
mieux. Si vous retrouvez
la pluie et si
vous répondez oui ou non, vous dites simplement N, vous n'en aurez aucune. Parce que vous ne tenez pas
compte de la chaîne N. Vous obtenez non parce que la fonction ne renvoie rien. Ce qui s'est passé ici, c'est
utiliser un laissez-passer ici. Un mot est donc équivalent à la pluie. Le message est transmis ici. Y est égal à la pluie
, puis on vérifie si la pluie dans les données n'est pas dans
les données parce que c' avec N. Cela n'est pas exécuté. La fonction n'
exécute pas cette instruction, elle ne renvoie pas la
définition de la pluie, mais elle passe à cette instruction. Cela trouve une similitude pour que la
liste soit supérieure à zéro, puis il exécute cette opération. C'est pourquoi nous avons reçu un autre message
d'entrée ici. Ensuite, nous continuons là-bas. Nous sommes en retrait
sous L si nous avons une autre condition imbriquée,
ce qui ne pose aucun problème Mais attention, vous
devez le mettre en retrait. Il s'agit d'un niveau d' indentation
plus profond que celui-ci ici Nous y voilà. Si l'utilisateur est décédé, pourquoi renvoyons-nous cette déclaration ? Si l'utilisateur réussit
tout le reste, vous ne comptez pas pour
ce scénario en particulier. Par conséquent, aucune instruction de
retour n'est exécutée Le programme s'
arrêtera
donc ici et ne
renverra aucune car
rien n'a été renvoyé. Cela ne sera pas non plus exécuté car il s'agit d'un niveau d' indentation avec celui-ci
et puisque celui-ci a été exécuté, le programme n'atteint
jamais ce niveau ici Ce que nous devons faire,
c'est compter
pour les autres entrées utilisateur telles que N. Dans ce cas, si l'
utilisateur saisit N,
tout ce que nous pouvons faire est de renvoyer le mot du
message qui n'existe pas, veuillez le vérifier, ce
qui est le même
que celui-ci ici. Nous devons compter pour
une autre condition. Les utilisateurs peuvent transmettre N, mais ils peuvent également transmettre une autre chaîne aléatoire et vous ne voulez pas que le programme
n'en renvoie aucune, vous voulez que le programme
renvoie un message. Par exemple, nous n'avons pas compris
votre question. C'est ça. C'est tout ce que vous pouvez
faire pour votre inscription, peut-être que c'est mieux.
Il s'agit d'un programme. Encore une fois, nous avons un scénario lequel l'utilisateur
saisit exactement la pluie, et cela sera
exécuté dans ce cas, et le scénario où
l'utilisateur saisit un mot, qui n'a aucune correspondance. ASD CAC C, quelque chose comme ça. Dans ce cas, cela ne
sera pas exécuté. J'ai trouvé ce siège. Laissez-moi
tester le programme maintenant. Entrez un mot. Pluie. Nous obtenons
les définitions de la pluie. Entrez à nouveau un mot.
De la pluie, comme ça. Vouliez-vous
plutôt dire pluie ? Entrez si oui, entrez, non, sinon. Laissez-moi essayer oui, et nous obtiendrons
la bonne définition. Et entrez N pour non. Le mot n'existe pas,
veuillez le vérifier. C'était bien aussi.
Nous l'avons fait exécuter. L'autre scénario
serait le même. Au lieu de saisir Y et N, vous tapez simplement quelque chose et vous dites que nous n'avons pas
compris votre saisie. Bien. L'autre scénario est celui où vous entrez un mot qui ne correspond pas du
tout, et dans ce cas, cela
sera exécuté immédiatement. Et c'est tout. D'ailleurs, même si vous entrez des chiffres, disons un, le mot n'
existe pas car il n'est pas
inclus dans le dictionnaire. Je pense que notre programme
est plutôt intelligent maintenant. Il envisage
de nombreux scénarios
et il est assez
convivial, je dirais. Cependant, il y a
une dernière chose que nous pouvons améliorer, c'est la façon dont le programme
affiche les définitions. Lorsque vous réussissez, disons que trois a
également deux définitions. Passons un mot qui n'a qu' une seule définition.
Structure, peut-être. Oh, cela a trois définitions. C'est bon. Pyramide. Cela a également deux définitions.
Bref, tu as compris l'idée. J'essayais de trouver un mot
qui ait une définition. Mais en gros, ce que vous obtenez avec un mot qui a seule définition, c'est que vous obtenez
toujours une liste, qui se termine ici,
donc il n'y a pas virgule et il
n'y a aucun autre élément C'est une liste avec un seul élément. Lorsque vous avez un mot qui
a plusieurs significations, vous obtenez cette liste avec
plusieurs éléments. Vous ne voulez donc pas afficher
la liste des utilisateurs avec de tels
crochets. La meilleure chose à faire pour montrer
à l'utilisateur est que
si vous n'avez qu'une seule signification, une seule définition pour le mot, vous devez simplement afficher cette définition, pas de guillemets, pas de
crochets, juste une définition. Si vous avez
plusieurs définitions, vous ne montrez qu'
une seule définition par ligne. Donc, en gros, vous avez plusieurs
lignes avec des définitions. Oui, nous devons également l'
implémenter pour dire enfin que notre programme est bon et
peut être utilisé par n'importe qui, et que le résultat est facile à lire. Réfléchis à ça. Nous allons l' implémenter dans la
prochaine conférence, SU.
110. 109. Optimisation de la sortie finale +: Génial. Nous avons maintenant un programme fonctionnel et nous modifions toutes les
fonctionnalités que nous voulions. Le seul problème
avec le programme, c'est que le résultat n'est pas
très convivial. Sur ce, je veux dire,
disons oui. Ceci est le résultat et
vous obtenez une liste ici. C'est une liste Python. Ce que nous voulons faire à la place,
c'est afficher chacune de ces lignes sur une
ligne distincte dans le terminal. Ainsi, cette sortie sera plus
lisible à l'œil nu. Allons-y et faisons-le. Comment pouvons-nous mettre en œuvre une
telle chose ? Cette sortie
est désormais un objet de liste, ce qui signifie que l'appel ici, l'appel de fonction,
produit cet objet de liste. Ce que nous pouvons faire, c'est que nous pourrions peut-être
parcourir cet objet de liste par itération
, par exemple, nous pouvons stocker l'objet de liste
dans une variable, sortie se verra
attribuer cette liste Ensuite,
vous pouvez enregistrer quatre éléments dans la liste de sortie, imprimer l'élément. Sauvegardons ceci et essayons. Nous allons avoir
un problème ici, mais une étape à la fois. Entrez Y, Y, et c'est
ce que je voulais avoir. La première définition, c'
est-à-dire les précipitations sous forme d' eau
liquide, correspond à
la première ligne et la deuxième définition,
à savoir
les précipitations tombant des nuages et des gouttes d'eau
, correspond à la deuxième ligne. C'est une bonne chose. Cependant, nous devons garder à l'esprit que notre programme
ne produit pas uniquement des listes, mais parfois il produit également des
chaînes, comme celle-ci ici. Non, ce n'est pas
ce que je voulais dire. Quoi qu'il en soit, c'est
ce que vous obtenez et
vous ne le voulez pas. C'est un message indiquant
que le mot n'existe pas. Donc, ce que fait le programme, ce que fait Python,
c'est qu'il itère sur
tous les types de sortie
générés par la fonction Une fonction génère une liste, parfois et parfois
elle génère une chaîne. Comment pouvons-nous résoudre ce problème ? Nous
avons une liste et une chaîne. Pensons à la différence. Comment différencier
une liste d'une chaîne ? Quelle est la différence entre
une zone de liste et une chaîne ? Eh bien, la différence réside
clairement dans le type de données. Une liste est un objet de liste et
une chaîne est un objet de chaîne. Que diriez-vous d'implémenter
un conditionnel ici ? Nous disons quelque chose comme
ceci s'il s'agit d'un type de sortie. C'est une liste, puis indentez-la avec quatre espaces
et celle-ci également Cette apparence est désormais imbriquée
dans le conditionnel et sera exécutée que lorsque
cela sera évalué comme vrai, uniquement lorsque le programme nous renvoie
une liste Sinon, s'il ne s'agit pas d'une liste, ce doit être une chaîne. Dans ce cas, nous
voulons imprimer le résultat sans l'
itérer. Laissez-moi vérifier. Et nous obtenons le résultat
correctement. Cette fois le message que le mot n'
existe pas , veuillez le vérifier. Vérifions-le une autre fois avec un mot correct et nous y trouverons les bonnes définitions. Essayons un autre
mot. Mathématiques. Cette fois, le
mot mathématique n'a qu'une seule définition, nous avons
donc la définition
pret ici C'est une science. Essayons également l'autre
scénario, chiffon. Vouliez-vous dire range ? Le mot n'existe pas,
veuillez le vérifier. Nous avons fait exécuter cette ligne ici. Voici donc le code complet. Je pense que nous pouvons considérer que
notre programme est terminé maintenant. C'est ce que j'ai pensé
ajouter au programme. Maintenant, le programme est assez convivial et
nous envisageons de nombreux scénarios que l'utilisateur
pourrait saisir dans le programme. Cependant, l'interface est toujours
une interface de ligne de commande, il ne s'agit
donc pas d'un programme
graphique de bureau ni d'une application Web. L'interface est
la ligne de commande, vous envoyez des entrées via la ligne de commande et vous obtenez sorties via la ligne de commande. Ce que j'essaie de dire,
c'est que vous pouvez réellement étendre ce programme
afin transformer en
une application Web où l'utilisateur, au lieu de saisir l'entrée
via la ligne de commande, peut entrer une entrée
via une page Web. Grâce à un site Web en ligne,
ils peuvent saisir, appuyer sur un bouton, puis obtenir le résultat dynamiquement
sur la page Web HTML. C'est possible avec Python, mais vous n'êtes toujours pas
prêt à le faire car nous avons encore
quelques sections à parcourir. Nous avons quelques applications
dans lesquelles je vais vous
apprendre à développer des
applications Web avec Python. Ensuite,
vous pouvez revenir à ce code, l'étendre et
créer une interface Web. Vous serez également capable de créer une
interface utilisateur graphique de bureau grâce aux
connaissances que vous aurez acquises dans
ces sections, car nous aborderons également les interfaces
utilisateur graphiques dans le cours. Nous
couvrons également les bases de données. Pourquoi je parle de bases de données ? Eh bien, parce que dans ce programme, nous utilisons ce fichier
pour stocker notre ensemble de données. Le problème, c'est que si cela devient trop gros pour le moment, ce n'est que 5
mégaoctets, c' Mais si le fichier devient trop volumineux, vous
devez le
charger en
Python à chaque fois que vous
exécutez le script. Comme ici, nous
chargeons le fichier dans la session Python lorsque
vous exécutez le script. Maintenant, si le fichier est trop volumineux, cela coûtera très cher
en termes de temps. Ce que vous voulez faire à la place, utiliser une
base de données. Peut-être. Avec la base de données, vous envoyez une requête à la base de données et, au lieu d'
obtenir l'ensemble de données dans son intégralité, vous
n'obtenez en fait que la ligne ou la valeur
que vous recherchez. Les bases de données sont très efficaces et aborderont les bases de données
plus tard dans le cours. Après quelques sections, je
reviendrai sur ce programme. Je vais vous le donner sous forme
d'exercice afin que vous puissiez l'étendre en
créant une interface, une interface graphique pour
cela ou une interface Web, et je vous donnerai accès à une base de données où
vous pourrez interroger des données pour ce programme afin qu'il devienne vraiment robuste avec une interface utilisateur très
conviviale. J'espère que l'idée vous plaît et que vous
appréciez le cours Passons à d'
autres sections. Je te verrai plus tard
111. 110. Comment corriger les erreurs de syntaxe dans Python: Bonjour, bienvenue à
cette nouvelle conférence. Il s'agit de la conférence la plus
importante que vous ayez entendue jusqu'
à présent dans ce cours. Essayez d'en tirer
le meilleur parti. Il s'agit en fait d'une nouvelle vidéo que j'ajoute au cours. Je n'ai pas assisté à cette
conférence il y a quelques temps, alors je l'ai ajoutée un
certain temps après avoir
publié le cours. Et jusqu'à présent, j'avais
expliqué ce concept, donc les erreurs petit à
petit dans d'autres conférences. Mais je trouvais que cela ne
suffisait pas et je
voyais que les étudiants éprouvaient toujours
des difficultés à comprendre et à
gérer les erreurs en Python. J'ai décidé de faire une conférence
dédiée
aux erreurs en
Python. Nous y voilà. J'ai dit que c'est la conférence la
plus importante car nous en apprenons jusqu'à
présent sur les fonctions , les chaînes
et les nombres dans les vidéos précédentes. Et ce sont des
concepts individuels que vous apprenez une heure ou plus tard, vous apprenez des
fonctions,
des chaînes, etc. Mais si vous ne savez pas
comment lire une erreur, comment comprendre une
erreur et comment y faire face, si vous ne le savez pas, vous
aurez du mal à tout gérer
, y compris
tous les autres objets
tels que aurez du mal à tout gérer
, les fonctions les
chaînes, les nombres, etc. Il est donc très important de comprendre une erreur et de savoir
comment y faire face et de savoir
comment y faire face et comment la corriger. Et même les programmeurs les plus
expérimentés
commettent des erreurs
dans leurs programmes La différence est qu'ils savent comment lire ces erreurs, comment les comprendre et les corriger. Mais tout le monde commet des erreurs. Si une erreur apparaît dans votre
programme, pas de panique, suivez
simplement les instructions
que je vais vous donner dans cette vidéo
pour savoir comment corriger l'erreur. C'est le sujet de cette
conférence. Alors, qu'est-ce qu'une erreur de toute façon ? Une erreur dans un programme est un bogue qui provoque le mauvais fonctionnement du programme
. Maintenant, en Python, nous avons
essentiellement deux types d'erreurs. Nous avons des erreurs de syntaxe
et des exceptions. Concentrons-nous d'abord
sur les erreurs de syntaxe et
oublions les exceptions. Nous passerons aux exceptions après avoir
expliqué les erreurs de syntaxe. J'ai ce code
ici et en fait, il s'agit d'un fichier Python. Il s'agit de l'icône
qui s'affiche sur un Mac. Actuellement, je suis sur
un ordinateur Mac, mais cela ne fait pas la
moindre différence, où que vous soyez, Linux, Windows ou Mac,
tout est pareil. J'ai le terminal ici et laissez-moi
exécuter ce programme. Cela comporte quelques erreurs.
Laisse-moi leur montrer. Sur Mac, vous pouvez appeler Python trois à l'aide de la commande
Python trois. Sous Windows, vous pouvez simplement appeler Python ou n'importe quelle
commande que vous utilisez. Vous pouvez également utiliser n'importe quel
éditeur de votre choix Errors point pi est un nom que j'ai
donné au script execute. Voici donc maintenant un exemple
d'erreur de syntaxe. Il s'agit du corps entier
du message d'erreur, ce qui est très important. Chaque fois que vous recevez une erreur, le premier conseil que je
vous donne est de ne pas paniquer. Concentrez-vous simplement sur l'erreur, lisez-la ligne par ligne, comme si vous lisiez
un poème ou autre. La première ligne
de l'erreur
indique donc le nom du
fichier contenant l'erreur. Dans ce cas, ce sont les erreurs point pi. Ensuite, vous avez une virgule
et après la virgule, vous avez la ligne où
l'erreur C'est la troisième ligne et vous pouvez voir ici que la
troisième ligne est celle-ci. Mais pour
votre commodité, Python imprime la
ligne dans le terminal. Dans neuf, voici où se trouve l'
erreur et ensuite, vous avez le type de l'erreur. C'est une erreur de syntaxe. Vous avez également d'autres
types d'erreurs telles qu'une erreur de nom, une erreur de type, mais ce sont des exceptions, et j'expliquerai plus tard pourquoi
nous les appelons exceptions. Il s'agit d'un type d'erreur de syntaxe et les autres sont des exceptions. Il s'agit d'un type, puis vous avez une description après la colonne. Parfois, la description est plus précise, plus détaillée. Cette fois, la syntaxe n'est
pas valide. Vous devez déterminer
où vous avez commis une erreur ou où vous avez oublié une
syntaxe de votre programme. Vous avez également cette flèche
pointant vers le haut, et elle
vous indique soit
le jeton à l'
origine de l'erreur, soit la
fin du jeton. Le jeton, c'est un jeton
dans ce cas, neuf. Cela peut être un nombre, une chaîne, n'importe quoi. À ce stade, cela
pointe vers le jeton. Mais ça peut aussi
être comme ça 999, sauf le script
mignon dans ce cas, vous voyez qu'il
vous pointe vers le bout d'un jeton. Ici,
vous avez une flèche maintenant et je sais que c'est en fait une fonction
et que les fonctions en Python ont besoin
d'avoir des crochets, vous devez
donc passer 999 entre crochets comme
ça, et vous le laissez. Enregistrez et exécutez à nouveau. C'est bon. Vous
avez une autre erreur, mais ne paniquez pas à nouveau. C'est toujours mon conseil. Au lieu de cela, j'ai lu
l'erreur, elle indique des erreurs de
fichier ligne cinq,
ligne cinq cette fois. Ce n'est plus la troisième ligne, ce qui signifie que la
troisième ligne a été corrigée. Ce que
fait Python, c'est qu'il parcourt toutes les lignes une
par une de haut en bas. Il vérifie la première ligne,
il dit que c'est bon. Aucune erreur, passe
à la ligne suivante, pas d'erreur, passe à la troisième
ligne, pas d'erreur cette fois. La quatrième ligne convient également. La cinquième ligne contient une erreur. Encore une fois, il s'agit d'une erreur de syntaxe, et celle-ci est décrite plus
précisément. Parenthèse manquante
dans l'appel à l'impression. Notez que vous n'obtenez cette
erreur que si vous utilisez Python trois. Si
vous utilisez Python deux, ce ne sera pas une flèche
car Python deux, print était une instruction
et non une fonction. Avec des instructions telles que return
ou print en Python 2, vous n'avez pas besoin de passer de crochets. La syntaxe serait correcte. Encore une fois, cette flèche vous
pointe vers le jeton, nous y ajoutons simplement des crochets. Contrôlez S pour enregistrer le
script et l'exécuter à nouveau. Cette fois,
nous n'avons aucune erreur, le script s'est bien exécuté et a
imprimé le résultat
ici, un, deux, trois. Nous avions trois fonctions d'
impression, la sortie d'impression. Cela ne renvoie aucune sortie car nous n'
imprimons rien. Cela obtient simplement l'entrée de la
fonction et produit une sortie, mais cela n'imprime rien. Si vous souhaitez l'
imprimer, vous devez y transmettre la
fonction d'instruction d'impression. Il peut également y avoir d'autres
types d'erreurs de syntaxe, par exemple vous souhaitez définir
ces un, deux et trois. Mais au lieu de le fermer
avec un crochet, vous utilisez un crochet
rond comme ça, enregistrez le script et vous l'exécutez. Vous voyez que vous avez reçu une erreur de syntaxe.
Syntaxe non valide à la ligne 5, c'
est-à-dire celle-ci ici. Encore une fois, la flèche
vous pointe vers le jeton Vous devez
donc trouver
comment fixer ce support rond
ici, et vous le savez. Vous devez le fermer
avec un crochet, cela devrait résoudre le problème. Il s'agit d'erreurs de syntaxe. Ils sont très faciles à réparer. Dans la prochaine conférence, j'
expliquerai les exceptions.
Je t'y verrai.
112. 111. Comment corriger les erreurs d'exécution dans Python: Bonjour, encore une fois, bienvenue
à cette nouvelle conférence. Dans la
conférence précédente, nous avons
parlé des erreurs en général et je me suis concentré sur les erreurs de syntaxe, qui sont l'un des deux types d'erreurs que l'on rencontre en Python. Vous avez des erreurs de syntaxe
et des exceptions. Nous allons maintenant
parler des exceptions en Python. Tout autre type d'
erreur qui n'est pas une erreur de syntaxe constitue une exception. Souvent, toutes les
erreurs, erreurs de syntaxe et exceptions sont appelées erreurs. Vous allez donc entendre
ça partout. J'ai maintenant un nouveau script que j'ai créé
pour cette conférence. Essayez de deviner ce que je vais
obtenir en sortie lorsque j'
exécute ce script. J'ai A égal à un, B égal au caractère deux, imprime en 2,5 et j'imprime A plus B. Devinez ce que je vais
obtenir pendant un moment. Maintenant, laissez-moi exécuter le script, Python 3, les erreurs pointent Pie. Les erreurs de fichier indiquent que pi, ligne quatre, qui
est la dernière ligne. Celui-ci, nous obtenons une
erreur de syntaxe. Syntaxe non valide. Cela peut être très déroutant
pour vous maintenant, car vous
regardez l'expression
d'impression A plus B, mais vous n'y voyez
aucune flèche. Pour un débutant, cela peut
être assez frustrant, mais essayez de regarder en arrière sur la
gauche de la flèche. Pensez à la flèche pointée vers
le jeton et
le jeton n'a pas été écrit correctement
dans le script. Dans ce cas, le problème
ici est que cette ligne a un crochet ouvert, un crochet
rond, puis
elle a une fonction int, puis la fonction int
a son propre crochet qui s'enroule dans son entrée. Ce sont les crochets
de la fonction in, mais la fonction d'impression n'a
pas de crochet de fermeture. Ce que tu as fait à la place,
ce que j'ai fait en fait. Ce que j'ai fait, c'est qu'au lieu
de mettre un support, j'ai écrit
une autre fonction d'impression. Python s'attendait à une
fermeture entre crochets, mais j'ai saisi une fonction d'impression C'est pourquoi cela signifie
que cette fonction d'impression n'
est pas dans la bonne
position. C'est l'idée. Lorsque vous voyez cette flèche, regardez toujours d'
abord cette ligne
, puis regardez avant
. Désolée pour ça. Lorsque vous voyez
cette flèche ici, regardez toujours d'
abord cette ligne, mais n'oubliez pas que le problème peut également se
situer avant cette ligne. C'était à cause d'une erreur de syntaxe. Je vais vous expliquer pourquoi j'ai
parlé de cette erreur de syntaxe ici. Laisse-moi recommencer. L'erreur de syntaxe est maintenant corrigée, mais une autre erreur persiste. Donc, la raison pour laquelle j'ai inclus
une erreur de syntaxe dans mon code était de vous montrer que
Python vérifie d'abord
les erreurs de syntaxe. En gros, il analyse le code. Il recherche les erreurs de syntaxe. Il n'exécute pas encore le code. Lorsque j'ai exécuté Python, trois
erreurs (point pi) ici, le code n'a pas été exécuté, mais l'interpréteur
vérifie simplement les erreurs de syntaxe. Il ne vérifie pas encore les
exceptions. Vous devez d'abord corriger
les erreurs de syntaxe, et c'est ce que nous avons fait ici. Nous avons ajouté ce crochet et
nous avons corrigé les erreurs de syntaxe. Python lance
maintenant une exception. Et voici où j'ai exécuté le code et
voyons la ligne suivante, nous avons le numéro deux, qui provient de la
sortie de cette ligne ici. À partir de la troisième ligne, nous avons obtenu
le résultat correct. Fondamentalement, encore une fois, Python exécute un script de haut en bas. S'il ne trouve aucune erreur de
syntaxe, s'il trouve des erreurs de syntaxe, il n'exécute rien. To est imprimé, puis vous obtenez cette trace
de l'erreur. Qui commence ici
et se termine ici. C'est un bloc de l'erreur. Parfois, les erreurs peuvent avoir plusieurs types d'erreur. Dans ce cas, nous
n'avons qu'un seul type d'erreur, qui est une erreur de type, mais il se peut
que vous ayez plusieurs
blocs ici. Cependant, l'erreur la plus
importante sur laquelle vous
devez vous concentrer est la
dernière ligne de l'erreur, le dernier bloc de l'erreur. Dans ce cas, nous n'
avons qu'un seul bloc sur lequel
nous nous concentrons. La quatrième ligne est
celle-ci. C'est une ligne. Encore une fois,
la ligne s'imprime comme dans le
cas d'une erreur de syntaxe. Ici, vous avez un type
d'erreur, qui est une erreur de type. Qu'est-ce qu'une
erreur de type ? Une erreur de type signifie qu'il
y a un problème avec l'un de vos
types d'objets dans votre script. Vous en avez la description ici. J'ai soutenu l'opérande de
type quatre plus. Cela essaie donc de dire que l'opérateur plus a
un type non pris en charge, en d'autres termes, l'opérateur plus ne prend en charge aucun
des types que vous lui
avez donnés, qu'il
s' agisse du type de variable A ou du
type de variable B. Il indique Int et string Il ne dit pas spécifiquement si Int ou string est un objet, mais il indique que vous ne pouvez pas utiliser un opérateur plus
avec un entier et une chaîne logiquement erroné car vous ne pouvez pas
ajouter de nombre à du texte C'est ce que Python
ne comprend pas et il génère une erreur de type. Les exceptions sont des erreurs logiques et vous devez maintenant
utiliser votre logique pour corriger l'erreur et utiliser notre logique en
inspectant soigneusement l'erreur,
et c'est ce que nous avons fait Ce que nous voulons faire
, c'est régler ce problème. Maintenant, c'est à moi de décider si
je voulais concaténer ces deux objets ou faire une opération d'addition mathématique Supposons que si j'avais l'intention de
faire une addition entre
ces deux nombres
, je devrais convertir
B en nombre flottant ou en entier Dis ça. Exécuter. R, dans ce
cas, vous n'obtenez aucune erreur, vous en avez deux imprimés à partir de la troisième ligne et 3.0 à partir de la dernière ligne que
nous venons de corriger. Cependant, si mon intention était d'
imprimer
la concaténation entre ces deux chaînes, au lieu de convertir
B en flux, je devrais
convertir A en Dans ce cas, je vais recevoir le
texte un et deux, un et deux. Il s'agirait d'un
objet de chaîne, pas d'un nombre. Même s'il
s'agit d'un chiffre, c'est ainsi que le
terminal l'imprime. Encore une fois, il s'agit d'erreurs
qui se produisent lors de l'exécution Le script s'exécute
donc Les erreurs de syntaxe étant des erreurs d'
analyse, l'interpréteur
essaie de comprendre si le script est
syntaxiquement correct,
si vous êtes complet, si vous avez les règles de syntaxe de Python Vous avez besoin d'un support, d'un
support de fermeture pour l'ouverture du support. Vous avez besoin d'un devis de clôture après le
devis d'ouverture, etc. Maintenant, il existe également d'autres
types d'exceptions. Non seulement une erreur de type, se peut que
vous ayez une erreur de nom. Disons ici qu'au lieu
d'imprimer, nous
imprimons C, sauvegardons, exécutons. Voici un retraçage. Encore une fois, deux ont été imprimés à
partir de la troisième ligne. Le retraçage indique la quatrième ligne à l'impression C. Le nom de l'erreur de
nom C n'est pas défini Encore une fois, il ne s'agit pas d'
une erreur de syntaxe car vous n'avez commis
aucune erreur de syntaxe. Le
nom de cette variable est correct. Vous avez des supports qui ouvrent supports
ronds et se
referment autour du support. Tout est
syntaxiquement correct, mais cet objet C,
Python ne le sait pas Vous n'avez pas défini
cette variable C, Python ne sait pas
quoi imprimer. Python est capable d'imprimer
A parce qu'il sait que A fait référence à
un entier et qu'il imprime
donc un entier, mais C n'a rien. Cette erreur de nom s'affiche. Et chaque fois que
vous obtenez une erreur de nom, vous savez que ce nom n'
a pas été défini par vous. Pour résoudre ce problème, vous
pouvez définir C comme ça et exécuter et
vous n'aurez aucune erreur. Vous pouvez également avoir d'autres
types d'erreurs,
comme C divisé par zéro,
voyez ce que vous obtenez. Erreur de division zéro,
division par zéro. C'est la description
de cette erreur. La division par zéro n'est ni mathématiquement possible
ni significative Puisque Python est basé
sur les mathématiques, il génère une erreur
et vous devez corriger cela, vous devez supprimer cette
expression qui divise par zéro. Quoi qu'il en soit, cela concerne
les erreurs en Python J'espère que vous avez bien compris cette conférence ainsi que la conférence
précédente Il est relativement facile de
corriger les erreurs,
mais il peut arriver
que vous
ayez du mal à
comprendre et à corriger. Plus tard, par exemple,
nous travaillerons sur les bibliothèques et
parfois les bibliothèques contiennent différents
types d'erreurs. Cependant, ne vous
inquiétez pas , car il
y a d'autres choses que vous pouvez faire pour une erreur
que vous ne comprenez pas. J'en parlerai lors de la prochaine conférence. Je t'y
verrai, tu verras.
113. 112. Comment corriger les erreurs difficiles: Génial. Bienvenue
à nouveau dans cette nouvelle vidéo. Il s'agit de la troisième
vidéo sur les erreurs. Nous avons parlé des erreurs de syntaxe, nous avons parlé des exceptions, et maintenant nous allons
parler de la façon de
corriger une erreur lorsque vous ne
comprenez pas le message. Concentrons-nous sur cette erreur. Une erreur de division zéro. Si vous êtes
bon en mathématiques, vous pourriez facilement
corriger ces erreurs. Vous
comprendrez que vous ne pouvez pas diviser, vous ne pouvez pas diviser
un nombre par zéro. Vous pouvez résoudre ce problème en supprimant
cette expression ici. Cependant, si vous n'étiez
pas très bon en mathématiques, vous pourriez avoir du
mal à comprendre cela. Dans ce cas, le
moyen le plus rapide de corriger cette erreur est copier cette ligne
ici, en contrôlant C. Sélectionnez-la, copiez-la avec bouton droit de la souris et copiez-la là, puis accédez à Google. Il suffit de le coller. Maintenant, sur Google, ils ont obtenu environ
100 000 résultats. Python est très populaire
et vous trouverez une solution à presque tous les problèmes
que vous rencontrez avec Python. Avant de consulter la documentation ou de poser une question quelque part, il est fort probable que
quelqu'un d'autre ait eu votre problème avant poser une question à ce sujet et il existe également une solution
à ce sujet. Un très bon site de
questions-réponses est
stock overflow.com Presque toujours, lorsque vous
recherchez une erreur sur Google, les premiers résultats proviennent de
Suck Overflow Quelqu'un a posé une
question portant ce titre. Je rencontre une erreur lorsque j'exécute
le programme en utilisant Python. C'est exactement la même
erreur que celle que vous aimez. Comment éviter cette erreur ? Il parle également
du résultat souhaité. Il y a deux réponses
à cette question. La réponse avec cette marque
verte ici est une réponse
acceptée et elle
a le plus grand nombre de votes positifs. 11 et cela a deux
votes négatifs, moins deux. En fait, la différence
entre les votes positifs
et négatifs est en
faveur des votes négatifs. Ce sont deux
réponses différentes que vous pouvez examiner. Habituellement, vous voulez regarder la réponse acceptée
qui contient la solution. Cependant, dans ce cas, cela a également une explication. Il dit qu'on ne peut pas
diviser par zéro. Cela provoque une erreur en Python
. C'est quand même une bonne
réponse, et je pense qu'elle ne méritait pas
cet équilibre des votes. Mais celui-ci donne une solution
sur la façon de gérer une erreur qui nous amène à un autre concept qui consiste à
gérer les erreurs en Python. Supposons que vous ayez un programme, une fonction qui obtient deux valeurs d'entrée
, puis divise ces
deux valeurs d'entrée. Cependant, l'utilisateur peut parfois
transmettre zéro comme deuxième entrée. Dans ce cas, si vous
divisez, disons que la première valeur est deux et la deuxième valeur est zéro,
votre programme se bloque et si vous le souhaitez,
vous pouvez utiliser la
gestion des exceptions pour éviter
que ce programme ne plante Vous pouvez le faire avec les instructions try
and accept. Quoi qu'il en soit, nous aborderons cela dans les prochaines conférences
de cette section. Il s'agissait de rechercher une erreur sur Google et vous pouvez facilement trouver
la solution. Comme tu le vois. Ce sont là des questions
très claires. C'est une grande communauté
et tout le monde peut voter pour ou contre
et commenter. En gros, les réponses
sont très précises. Cependant, vous ne
trouvez pas toujours de réponse sur Google. Dans ce cas, il est temps
de poser votre propre question. La première chose à faire est, encore une fois, vérifier si vous comprenez l'erreur et de la corriger
si vous la comprenez. La deuxième chose est
que vous faites une recherche sur Google et si les deux premières
ne résolvent pas votre problème, il est temps de
poser une question. Vous pouvez poser une question
soit dans le cadre du cours. Lorsque vous regardez une vidéo,
vous pouvez parcourir les questions-réponses, qui signifient
question et réponse, et vous pouvez effectuer une recherche rapide si vous trouvez une réponse existante
à votre question ici, et si vous ne la trouvez
pas, vous pouvez poser une question ou poser une
question sur Stock Overflow Vous pouvez utiliser ce bouton ici, poser une question et je
serais heureuse de
vous aider ici sur l'interface du
cours, dans la section
questions-réponses, ou d'autres personnes peuvent également vous aider
sur Stock Overflow Cependant, il est
très important de savoir quelque chose. La structure de
votre question est très importante
pour obtenir une bonne réponse. Parfois, il y a de très
mauvaises questions comme, disons, mon code ne
fonctionne pas, comment puis-je résoudre ce problème ? C'est tout. Avec ce très
peu d'informations, il est très difficile d'
obtenir une bonne réponse. Il est très important de
poser une bonne question et je vais vous montrer comment
poser une bonne
question de programmation lors de la prochaine conférence. C'est également une
conférence très importante. Voyez-y.
114. 113. Comment poser une bonne question de programmation: Salut, encore une fois et bienvenue
à une autre conférence. Dans cette conférence,
je vais vous montrer comment poser une bonne question
de programmation. Comme je l'ai mentionné dans la conférence
précédente, il est très
important de
poser une bonne
question de programmation pour obtenir une bonne réponse. Permettez-moi d'abord de vous montrer ce qu'est
une question de programmation des lits. Par exemple, je
vais cliquer sur Poser une question et voici
le titre de la question. Une question de programmation Bt aurait un titre très
générique comme celui-ci. Voici le corps de la question lequel vous devez décrire
votre question en détail. Certaines personnes disent simplement que j'ai eu une erreur en essayant de saisir deux chiffres. Je mets juste la question en
pause. Une meilleure question serait d' y
inclure le code que
vous avez exécuté comme ça. Cependant, cela ne suffit pas non car vous devez également
afficher le message d'erreur. Permettez-moi de supprimer ceci et une bonne question de
programmation
serait lorsque vous
parlez de questions
contenant une erreur, questions qui parlent d'une erreur que vous
avez détectée dans votre code. C'est ton code.
Un bon titre serait d'inclure le message d'erreur. Celui-là serait une bonne solution. S'il s'agit d'un message très long, vous pouvez choisir de n'
inclure que le nom de
l'erreur dans tout cela. Et alors, une bonne
question serait : bonjour. J'ai exécuté le code suivant
et je m'attendais à une division lors de la dernière impression
principale, mais j'ai eu une erreur. Voici mon code. Vous y
mettez donc le code,
le script entier. Ne vous inquiétez pas si votre
question est longue, il vaut mieux être longue
que incomplète. Voici l'erreur. Ici, assurez-vous d'inclure l' intégralité de
votre traçabilité des erreurs
, y compris la sortie. De cette ligne de commande
jusqu'à la ligne suivante. Tout cela répond
à ta question. Il suffit de le copier. Ne
vous inquiétez pas si c'est long. Peux-tu m'aider ? Ce serait
une bonne question de programmation. Maintenant, il manque encore
quelque chose de très important, savoir la
mise en évidence du code. Vous devez sélectionner le code
et cliquer sur cette icône ici. L'erreur aussi.
Permettez-moi de poser la question. Les liens externes doivent fournir
un contenu éducatif gratuit, il suffit de cliquer sur continuer. Voici une question qui
semble être à l'autre bout du fil. Cette question comporte quatre bons éléments qui en
font une bonne question. Le premier élément est que
l'auteur mentionne ce qu'il
s'attendait à obtenir en sortie du script
qu'il exécutait. Il est donc indiqué que je m'
attendais à obtenir la division dans le
dernier communiqué imprimé, c'
est-à-dire celui-ci,
mais j'ai reçu une erreur. La première chose à faire est que vous devez inclure le résultat attendu. Vous devez expliquer ce à quoi vous vous attendiez,
sinon, si vous n'expliquez pas
ce que vous attendez, l'autre
personne qui veut
vous aider ne connaît pas le but de votre code ou de votre question, elle ne sait
donc pas comment
vous aider à atteindre cet objectif. Attendre le résultat est
la première chose à faire. La deuxième chose est que vous devez
inclure l'intégralité de votre code. Et assurez-vous d'
inclure votre code sous forme de texte. Il est préférable d'utiliser du texte sous forme écrans plutôt que de
captures d'écran, car texte, la personne qui
souhaite vous aider peut copier votre code et l'exécuter sur
son interpréteur Python. Mais si vous incluez des captures d'écran, sont des images
et il est difficile pour d'autres personnes d'
essayer votre code. Si vous posez cette question sur
Stack Overflow, votre question sera
close, car si vous la posiez en utilisant une capture d'écran
plutôt que la version texte
de votre code, la question se
rapprochera car les règles de
Stack Overflow sont très strictes pour questions
et réponses soient de haute qualité C'est le deuxième élément.
Le troisième élément est que vous devez inclure l' intégralité du retraçage des
erreurs sur
votre écran, désolé Du début
à la fin,
c'était le troisième élément
et le dernier élément,
le quatrième élément, c'est que vous
devez mettre en évidence votre code. Juste comme ça, vous
voyez que cela est beaucoup plus visible et plus facile à résoudre pour les
autres L'interface du cours possède cette fonction qui vous
permet de mettre en évidence votre code. cas de dépassement de stock, vous
avez également cette capacité. Il vous
suffit de poser une question, rédiger votre carrière
, de la mettre en évidence,
puis d'utiliser ce support bouclé Oui, c'est ça. Si vous posez de bonnes questions, il y a de fortes chances
que vous obteniez également une bonne
réponse. J'espère que cela a du sens
et j'espère vous avoir montré quelque chose que vous
ne saviez pas et je vous parlerai plus tard. À bientôt.
115. 114. Gérer les erreurs de code par lui-même: Bonjour, encore une fois. Faisons une autre conférence sur
les erreurs en Python. Cette conférence
portera notamment sur la gestion des erreurs. La gestion des erreurs peut être
un concept avancé à assimiler pour le moment, car vous êtes encore en train de suivre
les bases de Python et vous n'avez encore vu
aucune application réelle. Mais plus tard, nous utiliserons gestion des
erreurs lorsque nous
développerons des
applications du monde réel. Vous comprendrez donc mieux la gestion des
erreurs par la suite. Pour l'instant, concentrons-nous sur la syntaxe et essayons de
comprendre autant que possible. Je vais donner un exemple ici,
que j'ai mentionné plus tôt Supposons que nous ayons une fonction qui fait la division entre
deux nombres donnés comme ça. Renvoie A divisé par B. Ensuite, vous appelez la fonction. Divisez un, deux. Dans ce cas, la fonction essaiera
de diviser un par deux. Permettez-moi d'imprimer
le résultat afin que nous puissions le voir sur le terminal. Accédez au terminal et
exécutez le script, vous obtenez 0,5. Maintenant, c'est bien. Cependant, si l'utilisateur
entre, disons, zéro comme ça, exécutez et votre
programme se bloquera, il affichera
donc une erreur. Maintenant, celui-ci
est un exemple d'un message d' erreur plus long que
j'ai mentionné précédemment dans les vidéos précédentes, indiquant
que vous pourriez avoir plusieurs erreurs
dans votre retraçage. Par exemple, cela indique la quatrième
ligne du fichier, cette ligne ici. C'est sur cette ligne que Python
a d'abord capturé l'erreur. En fait, Python essayait
d'exécuter cette ligne, mais il ne pouvait pas le faire. Il n'a pas réussi
à le faire parce que cette ligne essayait d'
obtenir les informations de cette fonction et que cette
fonction essayait d'effectuer cette
opération mathématique en utilisant zéro après la division. Ce n'est donc pas possible et Python
le signale ici. C'est la principale erreur de
ligne dans cette expression. C'est sur cela que tu devrais te concentrer. Cependant, lorsque vous posez des questions, vous devez inclure le message d'erreur
complet dans votre question, comme je l'ai
mentionné précédemment. Pour en revenir à la gestion des erreurs, ce que j'essaie de dire
ici, c'est que si vous avez d'
autres fonctions ici et d'autres lignes de code que vous souhaitez exécuter,
vous voulez que Python exécute. Mais si l'utilisateur passait
ce zéro ici, les autres lignes
ne seraient pas exécutées. Votre programme tomberait
en panne, ce que vous ne voulez pas. Le moyen d'éviter cela est
d'utiliser try and accept. En gros, vous essayez de
capturer l'exception. Pour gérer l'exception. La façon de le faire
est assez simple. Essayez, vous dites essayer et renvoyez A B. Cela doit être
indenté comme ça Try est indenté parce qu' il se trouve sous la définition de la
fonction, puis return est
indenté parce qu' il se trouve sous l'expression tri Il ne vous reste plus qu'à exécuter. Cela doit être au même niveau d'
indentation que tr. Il s'agit du même bloc. Sauf exception,
ce que vous voulez faire, c'est
avant de diviser par zéro ou cela n'a aucun sens Laisse-moi essayer maintenant. Et vous obtenez que
la division zéro n'a aucun sens. Désolé, je voulais faire
ici le retour, pas l'imprimer. Je vous explique pourquoi
vous n'en trouvez aucune. Vous n'en
avez obtenu aucune en sortie parce que la fonction a
essayé de faire cette expression, mais elle a reçu une erreur.
Elle ignore donc cette ligne, ne l'exécute pas,
puis elle passe à la ligne suivante Cette ligne est exécutée lorsqu'elle
n'est pas exécutée. impression d'une
division zéro n'a donc aucun sens, mais elle n'en a également imprimé aucune car lorsque vous exécutez une fonction qui n'a pas
d'instruction de retour, comme dans ce cas, nous
avions une instruction d'impression ici, une fonction
d'impression, pas
une instruction de retour Dans ce cas, si la fonction
ne renvoie rien, elle peut également avoir une fonction d'impression
ou une autre fonction. Mais s'il n'
a pas de relevé de retour, il n'en imprimera aucun. En gros, il exécute les autres procédures
telles que l'instruction d'impression, il imprime l'instruction Mais s'il n'
a pas de relevé de retour, n'en imprime-t-il aucun ? Quoi qu'il en soit,
répétez cette exécution et dans ce cas, vous obtiendrez que seule cette division zéro n'a aucun sens
imprimée là-bas En gros, si vous aviez
d'autres lignes de code ici, comme ça, elles
seraient également exécutées. Cela se produit en utilisant le bloc
try and accept, qui garantit
la continuité du flux de code. Une autre
chose importante à noter est qu'il est conseillé
d' utiliser ici le nom exact de l'erreur que
vous souhaitez accepter. Donc zéro erreur de division. Comme vous le voyez, cela
est devenu bleu, qui signifie qu'il s'
agit en fait d'un mot-clé Python
reconnu par Python. Dans ce cas, si
vous l'exécutez, vous obtenez le même
résultat comme ça. Ou si vous y
passez un chiffre à partir duquel il est possible
d'obtenir une division,
vous l'obtiendrez. Désolée pour le backslash. Je l'ai de
nouveau tapé par erreur sur mon exécution interne, donc vous l'avez compris Ce que j'essaie de dire à propos de l'erreur de division
zéro, c'est que vous pouvez parfois avoir d'autres types d'
erreurs dans votre code. Autres types d'exceptions. Supposons que vous y ayez
une erreur de nom et que vous dites qu' l'exception de toutes les erreurs lorsque
vous ne le transmettez pas, vous y incluez essentiellement
tous les types d'erreurs. C'est un peu dangereux pour votre code, car vous pourriez avoir des problèmes que vous ne
remarquerez pas et, en gros, vous les ignorez,
mais vous ne devriez pas le faire. Vous devez être précis
, explicite comme ça. S'il existe d'autres types d'
erreurs, comme une erreur de nom, cette erreur de nom fera planter votre programme. Vous
savez ce qui se
passe et vous devez être précis. Si vous souhaitez également gérer
cette erreur, vous pouvez ajouter
une autre exception ici, sauf l'
erreur de nom par exemple. Oui, il s'agit de
gérer les erreurs en Python. J'espère que cela a
du sens. J'espère avoir bien expliqué
cela à propos des erreurs. Je vous parlerai
lors des prochaines conférences.
116. 115. Introduction à la vision par ordinateur avec Python +: Bonjour, bienvenue dans
cette nouvelle section. Et tout au
long des cours de cette section, vous allez apprendre la vision par
ordinateur avec Python. J'expliquerai la
vision par ordinateur dans une minute. C'est ce que nous allons
apprendre dans cette section. Ensuite, dans la section
suivante, nous allons créer une application qui détecte les objets en mouvement
à partir de la webcam de l'ordinateur et qui enregistre et visualise les heures auxquelles les objets sont entrés et sortis de
l'image vidéo C'est donc un
domaine d'application de la vision par ordinateur. Vous avez peut-être une idée
de ce qu'est la vision par ordinateur, mais sinon, je vais vous l'expliquer maintenant. vision par ordinateur
est donc le domaine qui traite de l'acquisition
et du traitement des images, et qui prend des décisions en
fonction de celles-ci ou des images. Vous transmettez donc une image
à l'ordinateur, essaie de la comprendre et
il peut faire certaines
choses, par exemple vous dire combien de
phases il y a dans l'image et quelle couleur
domine l'image, etc. Je sais, les ordinateurs sont vains. Je veux dire, tu dois
leur dire quoi faire exactement. Et c'est là qu'intervient
Python. Nous utiliserons Python pour charger
des images, les traiter
et effectuer des tâches telles que la détection de visages
et de mouvements. Désormais, la vision inclut
à la fois des images et des vidéos, car les vidéos sont simplement des piles d'images
qui s'affichent très rapidement Les ordinateurs et donc Python utilisent les mêmes commandes
pour lire les images et les vidéos. Et vous pouvez faire de la vision
par ordinateur avec Python en utilisant OpenCV. OpenCV est l'acronyme de Open
Source Computer Vision. Et la bibliothèque Ise
est utilisée non seulement en Python, mais dans d'autres
langages de programmation également
dans d'autres
langages de programmation pour effectuer des tâches de
vision par ordinateur. Dans cette section,
je vais donc vous
présenter OpenCV et vous
apprendrez à l'utiliser en
détectant des visages à partir d'images Ensuite, dans la section suivante, nous approfondirons et
traiterons les vidéos avec OpenCV et détecterons
certains objets
en mouvement dans une vidéo de webcam en temps réel Donc, oui, c'est
à propos de cette conférence, et passons à autre chose et configurons rapidement OpenCV lors de
la prochaine conférence, puis travaillons avec lui par la suite Alors oui, merci et à bientôt
lors de la prochaine conférence.
117. 116. Chargement, affichage, redimensionnement et création d'++s d'image avec OpenCV: Génial.
Allons-y et jouons un peu avec OpenCV Plus précisément, ce cours vous apprendra cours à charger des images en
Python à l'aide d'OpenCV, à les
afficher, à les redimensionner,
puis à enregistrer les
images redimensionnées dans de Alors chargez, affichez, redimensionnez
et écrivez des images. Et j'ai une belle image de la galaxie, donc je vais
jouer avec ça. La première chose à
faire est d'importer la bibliothèque. La deuxième chose est que vous
voulez charger l'image en Python. L'image serait donc égale à la méthode REIT d'image à
deux points cv. La méthode attend donc maintenant le chemin vers l'image que
vous souhaitez charger en Python. Et ce serait
Galaxy Dot JPG. Donc, mon script, un fichier Pi à
point, est dans le même
répertoire que Galaxy point JPG. Il me suffit donc de passer
le nom du fichier ici. Et puis il y a encore
un autre paramètre d'image
pour lui dans la méthode. Et puis ce paramètre
prend trois arguments. Maintenant, ce paramètre indique comment vous souhaitez lire
l'image en Python. Alors, voulez-vous le
lire sous forme d'image RBG, ce qui signifie que vous voulez
trois bandes dans votre image Vous voulez donc une
image couleur avec une bande rouge, une bande bleue et une bande verte. Donc, si vous voulez lire l'
image telle qu'elle est avec les couleurs, vous devez en transmettre une ici. Si vous souhaitez lire l'image
sous forme d'image en noir et blanc
dans une échelle de gris, vous devez passer à zéro. Et le fait d'avoir une image en niveaux de gris implique que votre image
comportera une bande Et je vais revenir sur les groupes et les
expliquer dans un instant. Nous avons donc également moins un. Cela signifie une image en couleur, mais vous avez également
un canal Alpha, ce qui signifie que votre image aura des
capacités de transparence. Donc, si vous appliquez des opérations
qui nécessitent de la transparence, vous pouvez le faire en lisant lorsque vous chargez l'image avec un argument de
moins un ici. OK, donc j'
aimerais essayer zéro. Génial. Maintenant, avant
de montrer l'image, avant de l'
afficher à l'écran, j'aimerais que vous compreniez en quoi consiste
cet objet image. Je voudrais donc en imprimer le
type, juste comme ça. Exécutez le script. Scénario 1. Ouais Bien sûr, et réessayez. Il s'agit donc d'un tableau
dimensionnel NumPin. Et si tu veux, tu
peux l'imprimer. Et vous verrez le tableau num pi
réel. Il s'agit donc d'un
tableau bidimensionnel avec
des valeurs sur l'axe horizontal et également
sur l'axe vertical. Pensez donc à l'image maintenant, et ce serait
la toute première, donc la
valeur d'intensité en haut à gauche d'un premier pixel. Ainsi, 14, par exemple, serait la
valeur d'intensité dans l'échelle de gris. Pour le premier pixel
de l'image, donc pour le
pixel supérieur gauche de l'image. Et puis le deuxième
pixel et ainsi de suite, puis vous avez ces points, ce qui signifie que Python
ne peut pas afficher
la liste, la longue liste ici
parce que vous avez quelques milliers de
valeurs dans la première ligne, puis vous avez la
deuxième ligne de pixels dans l'image et la
troisième et ainsi de suite. Et cela constitue la matrice
des pixels de l'image. Et si vous voulez
savoir combien de nombres, combien de valeurs vous avez dans le sens horizontal et combien de valeurs vous avez dans
le sens vertical, vous pouvez continuer et
imprimer la forme de l'image. OK. Supposons donc que la
résolution de l'image soit de 14 85 x 990. Python stocke donc l'image sous forme tableau
d'arbitres, sous forme de matrice
de nombres, aussi simple que cela Si vous souhaitez vérifier
le
tableau des dimensions de votre image, vous pouvez le faire avec
cette expression Et vous voyez que vous
avez deux dimensions. Maintenant, si c'était une image en couleur, donc avec trois chauves-souris rouges, bleues et vertes, les choses
changeront un peu. Vous avez donc trois dimensions. Et vous voyez également que le nouveau
tableau est un peu différent. Vous avez donc ici des valeurs pour chacune des bandes pour le vert,
pour le rouge, le vert et le bleu. J'aimerais donc m'en tenir
à l'image grise. Et ce que je peux faire maintenant c'est afficher l'
image à l'écran. Et pour cela, vous voulez
utiliser l'image, alors je suis la méthode show. Et cela affichera une fenêtre et vous
voulez nommer cette fenêtre, donc vous voulez mettre un titre pour cette fenêtre. Disons galaxie. Et ce que vous transmettez ici
est l'objet image. Donc celui-ci. Génial. Ensuite, vous
voulez
spécifier l'heure de fermeture de
votre fenêtre , car cela
affichera la fenêtre, mais vous souhaitez également définir certaines fonctionnalités afin que l'utilisateur puisse fermer la fenêtre. Si vous mettez zéro ici, lorsque l'utilisateur appuie
sur un bouton, la fenêtre se ferme. Permettez-moi de changer cela en Cb 2. Donc, si vous mettez zéro, l'utilisateur peut fermer la fenêtre en
appuyant sur n'importe quel bouton. Si vous voulez indiquer une heure, vous pourriez dire 2000, ce qui
implique 2000 millisecondes Cela signifie donc 2 secondes. Nous avons donc expliqué comment l'utilisateur
souhaite fermer la fenêtre, puis vous devez
spécifier ce qu'il doit faire lorsqu'il appuie sur un bouton
ou attend 2 secondes. Vous voulez donc
détruire toutes les fenêtres. C'est une méthode qui
ferme la fenêtre. Bien. Voyons
ce qui va se passer. OK, nous avons donc affiché l'
image, elle a attendu deux
sagas, puis elle s'est fermée Si vous le mettez à zéro, l'
image y restera. Et si vous appuyez sur le
bouton, il se ferme. Permettez-moi de vous montrer à nouveau l'image. Maintenant, la raison pour
laquelle
l'image ne correspond pas à mon
écran est que l'image,
telle que vous le voyez ici dans ces
valeurs, mesure 1485 pixels de haut Donc, la hauteur, c'
est la hauteur, et la largeur est de 990 pixels. La résolution de mon écran est donc fixée à 1280 x 720. Cela signifie donc que cette image
de cette taille ne
convient pas à mon écran car mon
écran est trop petit pour cela. Donc, dans ce cas,
laissez-moi clore ceci. Ce que vous pouvez faire, c'est
redimensionner l'image, puis
afficher l'image précise Nous chargeons donc l'image
et avant de l'afficher avant de
la passer à la méthode I'm show, vous voulez dire,
disons, redimensionner Image. Ce serait égal à. Le CV deux est redimensionné, ce qui donnerait
deux paramètres Le premier est, bien sûr, l'objet image que
vous souhaitez redimensionner IMG est donc notre variable, puis vous voulez spécifier un tuple avec les nouvelles dimensions, je dirais 1 000 par 500 Ensuite, vous voulez
transmettre la nouvelle image ici. Donc, ce qui se passe ici, c'est que Python est en train de
redimensionner le tableau num Pi. Il prendra donc le tableau avec ce nombre de pixels
de valeurs, et il créera un tableau
avec ces nouvelles dimensions. Donc, ce qui va se passer
là-bas, c'est que Python va interpoler
ces valeurs Il a donc
beaucoup de valeurs ici, mais il passe ensuite
de ceci à cela. Ainsi, lorsqu'il voit, disons, il en a quatre pour une valeur, puis six
pour la valeur voisine. Et ce que Python va faire, c'est
qu'il en obtiendra quatre et six, en
gros, et qu'il en
fera simplement une valeur. Disons donc cinq. C'est
essentiellement l'idée. Il interpole donc les valeurs, puis affiche l'image
interpolée à l'écran Ce qui est plutôt
joli à nos yeux. OK, voyons voir ça. Et voici l'image. Et vous voyez que c'est
un peu exagéré. C'était donc une image haute, mais maintenant elle est assez large. Et parce que c'est en fait la largeur de l'
image et c'est sa hauteur. Donc, si vous voulez, vous
pouvez dire 501 000. Encore une fois, et maintenant vous voyez plus ou moins le
ratio deux de l'image. Mais si vous voulez conserver
le ratio de l'image, vous devriez aller
plus loin ici. Disons qu'à partir de là, disons que nous voudrions
afficher une taille égale à la moitié de celle-ci afin de conserver
le ratio de l'image. Ce que nous pouvons faire, c'est avoir
accès à ces valeurs. Et nous pouvons récupérer ces
valeurs à partir de la méthode de forme. Cela produit donc un tople
avec ces deux valeurs, puis nous allons ici
et disons, image, forme Et ce serait cette valeur, donc 990, qui a
un indice de un. Et puis nous avons,
encore une fois, une image et une
forme avec un indice de
zéro pour ce nombre. Ensuite, nous voulons le
diviser par deux. OK. Et je m'attends à une erreur,
mais qu'est-ce que S. Donc oui, nous avons une erreur. C'est une erreur de type, l'
argument entier attendu est un float. Mais ici, ce que nous faisons
ici, c'est que lorsque nous
divisons ce nombre par
deux, nous obtenons un flottant. Nous obtiendrions donc
quelque chose comme 742,5. Dans ce cas, nous
voulons le
convertir en un entier. 742,5 devient donc 742. OK. Et gardons la
cohérence, donc des entiers pour cela également. Voyons voir. Nous avons ici une
syntaxe invalide, elle nous pointe
donc vers la ligne 11, quelque part au
début, ce qui peut être assez trompeur. Vous voulez donc voir avant
cette ligne, qui se trouve ici. Et vous pouvez voir que ce
crochet se ferme ici. Nous avons donc besoin d'un autre support, qui se ferme dans le
premier support ici. Alors, gardez-le. Essaie à nouveau. Et cette fois, l'
image est belle. Vous apprenez donc à charger
une image en Python, à redimensionner une image, à afficher une image à
l'écran Et maintenant allons-y
et écrivons l'
image redimensionnée dans un nouveau fichier Pour cela, vous devez
utiliser la méthode d'écriture par messagerie instantanée. Donc, une photo. Et vous voulez donner un nom
à la nouvelle image, Galaxy,
disons, un JPG à points redimensionnés Ensuite, vous passez
l'objet image que vous souhaitez stocker dans ce fichier. La virgule devient donc un sel ici, et l'image que vous souhaitez
stocker est une image précise. C'est ça. Exécuter. Et nous avons
redimensionné l'ancienne image à la volée. Python obtient donc le tableau numpy. Je l'intercale,
il le redimensionne, puis il l'affiche
à l'écran Voici donc Galaxy,
celui-ci ici, et ensuite nous pourrons le fermer. Et voici
notre nouvelle image. Donc, redimensionnez la galaxie. Donc, si vous allez dans le dossier
où se trouvent ces fichiers, vous verrez que cette
image a de nouvelles dimensions. Donc 495 par 742. C'est ce que je voulais vous
apprendre dans cette conférence. J'espère que cela vous a plu
et qu'on se reparlera plus tard.
118. 117. Explication de l'exercice précédent: Eh bien, j'espère que vous aurez
résolu l'exercice, et je crois qu'il
n'a pas été difficile. Mon but était de
vous habituer au code OpenCV. Pourquoi ne pas
pratiquer un for loop ? Comme vous pouvez l'imaginer, cet exercice serait
vendu en utilisant une boucle for. Permettez-moi donc de parcourir rapidement le
code ligne par ligne. Nous avons donc deux OpenCV importants, SL CV deux et la bibliothèque de globes
. Maintenant, si vous vous en
souvenez, Globe trouve les
noms
de chemin de certains fichiers selon
un certain modèle. Dans ce cas, par exemple, j'ai ces fichiers JPG ici, donc une, deux, trois,
quatre, cinq images. Et j'ai dit : OK, créez
une liste de noms de fichiers
contenant tout ce qui se trouve dans la première partie ,
puis JPG comme extension. Cela créera donc
une liste telle que, disons,
C, puis le chemin ici,
puis Galax C, le GPG Et puis l'autre chemin de l'image et ainsi de suite, vous voyez l'idée. Ensuite, nous devons parcourir cette liste pour chaque chemin d'image de
la liste de cette liste Nous allons effectuer ces opérations
pour chacun des éléments de la liste. Nous lisons donc d'abord
ce chemin d'image. OK, ce fichier image contient
en fait une image en noir
et blanc. Donc, zéro est un drapeau est un argument, ce qui implique un taux d'image en noir et blanc dans l'échelle de
gris, en fait. Ensuite, nous créons une variable dans laquelle nous stockerons les images redimensionnées L'image est donc de 100 x 100. Je transmets ici l'
image d'origine et la taille, la nouvelle taille que
l'image obtiendra. Ensuite, nous voulons montrer l'
image juste à des fins de démonstration. Ce n'est pas vraiment important, mais cela vous permet de
vérifier les images qui
sont redimensionnées Voici le
nom de la fenêtre. Et puis je passe ici
une méthode clé humide, et 500 signifie 500 millisecondes Ainsi, chaque image s'
affichera et
attendra une demi-seconde,
500 millisecondes Et puis après cette
demi-seconde, Python passera à la ligne
suivante, puis à la suivante, puis à l'élément suivant de
la liste et ainsi de suite. Attendez donc 500 millisecondes, puis nous détruirons
toutes les fenêtres une fois
ce délai écoulé Ensuite, nous écrivons
l'image redimensionnée. RE était donc une variable qui
contient l'objet image,
l'objet image redimensionné Et tout ceci, c'est
le nouveau nom du fichier. Donc, ce que nous obtenons
ici, c'est que nous
aurons une précision au début du nom
de l'image Et puis, juste après, nous aurons le nom de
l'image d'origine. Ainsi, par exemple, pour Galaxy, nous
aurions ReciseGalaxy point JPG Donc, l'image ici serait un
point de galaxie JPG ici, qui
est celui-ci ici. Et ici, comme
le script se trouve dans
ce dossier , cette
liste, en fait, l'image
ressemblerait à Galaxy point JPG, puis Kangourous, vous savez, Australie, point GBG, etc. Cela permet donc d'obtenir
les chemins relatifs des fichiers. Nous n'allons pas obtenir le chemin complet. OK, j'espère que c'est clair. donc redimensionné Galaxy, nous pourrions
ajouter un trait de soulignement afin distinguer le mot
précis de l'autre nom d'image. Génial. Laissez-moi exécuter ce script
Python. Donc, seconde alpha, seconde alpha, et oui, c'est fait. Et regardons les images. Donc, à partir de là,
ce sont les images originales, et ce sont les produits
d'image. Vous pouvez donc voir ici que
toutes ces valeurs sont de 100 par 100. Et ils sont dans une échelle de gris. OK, c'est ça. Rendez-vous lors
de la prochaine conférence.
119. 118. Détection de visages dans les images avec OpenCv et Python: Bonjour, bienvenue à
cette nouvelle conférence. Et ici, tu
apprends à détecter les visages. Et nous utiliserons OpenCV avec
Python pour détecter un ou
plusieurs visages à partir d'une image Alors, en gros, comment fonctionne la
détection des visages de toute façon ? Eh bien, l'idée est que quelqu'un
a créé des cascades, qui sont essentiellement des fichiers
XML comme celui-ci. Ce fichier EML contient des
informations sur les caractéristiques que contient
l'image d'un visage Nous parlons donc du ratio des ombres des yeux, du
nez et des lèvres et
toutes ces caractéristiques,
ces chiffres d'intensité en pixels stockés, sont enregistrés
dans ce fichier XML, qui a été créé en utilisant des images avec
des visages
comme échantillons d'entraînement. Donc, en gros, vous
dites à vos ordinateurs :
OK, ce sont tous des visages, puis vous utilisez un logiciel comme OpenCV pour créer de tels fichiers XML C'est ce qu'on appelle des cascades
dures, et il s'agit d'une cascade dure
pour un objet frontal. Et si vous voulez d'autres objets, vous pouvez les
trouver sur ce lien ici. Vous avez donc le corps entier, l'œil
gauche, le bas
du corps et ainsi de suite. Vous pouvez également utiliser une section
de ressources de cette conférence. Vous pouvez
le télécharger sur un fichier Zip avec toutes les cascades XML qui s'y trouvent. Mais dans cette conférence, nous nous
concentrerons sur le devant du visage. Nous allons donc utiliser cette
cascade pour détecter les passes. La façon dont cela fonctionne maintenant est que nous allons charger
l'image en Python, puis nous dirons à
Python qu'il s'agit d'un modèle que vous voulez rechercher dans l'image et que
vous voulez trouver ce modèle, donc le modèle XML dans l'image. Et ce que Python va faire
avec l'aide d'OpenCV, il va commencer à rechercher toutes les images à
l'aide d'une fenêtre Ensuite, il
redimensionnera l'image, il diminuera la taille de l'image
et, en utilisant la même fenêtre, il détectera les passes
plus petites, etc. Nous allons passer en revue
cela étape par étape. Écrivons donc le script
qui détecte les visages. L'impulsivité est la première
chose que vous voulez faire. Ensuite, vous voulez lire
la cascade en Python. Appelons donc la cascade de phase
variable. CV deux, et nous avons une méthode
appelée classificateur en cascade. Cela créera donc un objet en
cascade de phases en Python, et il ne nous reste plus
qu'à indiquer le chemin de la cascade
cardiaque. C'est ça. Et cela créera un objet classificateur
en cascade. Vous pouvez désormais utiliser cet objet classificateur en
cascade de la fonction Pace
pour rechercher une phase dans votre image La prochaine chose que
vous voudrez peut-être
faire est de charger l'
image en Python, l'image dans laquelle vous
souhaitez rechercher le visage. Disons que l'image est égale à. Vous savez donc que nous
pouvons charger des images en Python via la
méthode de lecture d'image du CV ouvert, et vous pouvez simplement passer le nom du fichier
photo dig PG ici. Je transmets le
chemin du fichier de cette image. Je ne passe donc aucun
deuxième paramètre ici. Cela signifie que je lis l'
image sous forme d'image couleur. Cependant, il est conseillé d'utiliser des images en niveaux de
gris lorsque vous
recherchez un visage J'ai donc chargé l'image ici, mais j'utiliserai la version en niveaux de gris de l'image
pour rechercher un visage dans cette image Cela est censé produire plus grande précision lors de la
recherche de visages, car vous
remarquerez peut-être que lorsque vous avez des images très chargées
avec de nombreuses fonctionnalités, OpenCV n'est pas précis
à 100 % Vous pouvez donc obtenir des visages qu'
OpenCV manquera, ou vous pouvez obtenir des fonctionnalités qui
seront classées comme L'utilisation de l'image en niveaux de gris augmente
cependant la précision. Je pourrais passer un drapeau zéro ici pour pouvoir lire cette image
sous forme d'échelle de gris, mais j'aimerais
conserver l'image d'origine en couleur parce que je veux montrer la
version couleur à la fin, mais utiliser l'image grise. Passez-le aux méthodes que nous rechercherons pour le visage. Je vais donc créer ici une variable d'image grise dans laquelle je vais trier la
version en niveaux de gris de l'image. Donc CV deux, et nous avons une
méthode appelée couleur CVT, qui prend comme argument, l'image originale,
bien sûr, et un drapeau Donc une dispute. Appelé Cv
bicolore BGR deux gris Cela signifie donc que cela convertira l'image BGR, donc les bandes bleues, vertes et rouges, en
une image en niveaux de gris Voyons voir. Donc, si vous voulez
afficher rapidement cette image grise, si vous le souhaitez, Civ Two y
affiche l'image grise Nous donnons un nom à la fenêtre, gris et à l'image que
vous souhaitez afficher, puis vous devez passer le paramètre clé de
pondération ici. Disons zéro, donc nous allons appuyer sur Aiki pour
fermer la fenêtre Le CV 2 détruit toutes les fenêtres. Vous avez donc appris ces méthodes
dans les conférences précédentes. Laisse-moi exécuter ça. Il s' agit donc d'une
version en niveaux de gris de l'image. Viens. Nous allons maintenant utiliser une méthode
appelée détection multi-échelle. Et ce que
fera cette méthode, elle
recherchera le classificateur
en cascade Il recherchera donc ce
fichier XML de face frontale dans notre image, et il renverra
les coordonnées du rythme dans l'image. Ainsi, par exemple,
c'est l'image, et ce que cette méthode
renverra,
c'est qu'elle trouvera le visage
et qu'elle dira. Il
vous donnera donc le numéro de la ligne et de la colonne
du point supérieur gauche du visage. Cela va donc commencer ici et
cela vous donnera également la hauteur du visage et
la largeur du visage. Nous obtenons donc un rectangle. Ensuite, nous allons dessiner ce
rectangle dans l'image. Donc c'est en gros, mais
vous le comprendrez mieux. Nous devons donc créer, disons, une variable d'
objet pass. Où stockeront ces valeurs X, Y, de largeur et de hauteur. Alors, saisissons-le rapidement. Nous devons donc nous référer à l'objet classificateur en
cascade, qui est celui-ci ici Et ce que nous voulons faire
avec cet objet, c'est détecter Mul ti scale, et vous voulez détecter
l'image grise Ensuite, vous voulez y faire passer un facteur d'
échelle. Vous savez que lorsque
vous avez beaucoup de paramètres et qu'ils sont
trop nombreux pour tenir dans une ligne, après la virgule, vous pouvez
simplement appuyer sur Entrée et Python
lira votre ligne comme
s'il s'agissait d'une seule ligne. Ils ne manqueront donc pas d'
appuyer sur Entrée après le coma. Nous avons donc un facteur d'échelle. Et une bonne valeur à donner
pour cela serait 0,5. Maintenant, qu'est-ce que
cela signifie ? Bref ? Eh bien, considérons cette image. Ce que fera Python, c'est qu'il partira de la taille
d'origine de l'image, et qu'il recherchera. Je créerai une fenêtre qui
recherchera les visages dans l'image. Donc, recherchez dans cette zone dans
cette zone dans cette zone. Une fois cela fait, en donnant un facteur d'
échelle de 1,05, vous dites à
Python de réduire l'échelle de 5 % pour
la phase suivante de recherche Python réduira donc la taille de l'image de 5 % Et il recherchera des visages
plus grands sur l'image. Donc, effectuez une nouvelle recherche, puis réduisez à nouveau de 5 % l'image et
recherchez des visages plus grands, et ainsi de suite jusqu'à ce
que la taille finale soit atteinte. Cela signifie donc qu'une
valeur plus faible signifie une plus grande précision. Si vous donnez, par exemple, 0,5 Python, diminuez
l'échelle de 50 % Il partira donc de
la taille d'origine, puis il augmentera de 50 %
et vous n'obtiendrez donc pas
beaucoup de précision avec cela. L'avantage avec ce nombre est que le script s'exécutera plus rapidement. Ainsi, vous aurez moins de passes sur
l'image à la recherche d'un visage. 0,5 c'est bien. OK. Et puis vous avez un autre paramètre appelé voisins
minimaux. Ce paramètre est généralement fixé à cinq. Et en gros,
cela indique Python le nombre de voisins à
rechercher dans la fenêtre. Vous voudrez donc peut-être expérimenter un
peu
avec ces chiffres et voir lequel
donne les meilleurs résultats. Mais ces deux chiffres sont bien
acceptés. Alors faisons quelque chose maintenant. Imprimons les visages et
voyons de quoi il s'agit. Alors de quel type d'objet s'agit-il ? Et je pourrais aussi imprimer le
type de visages, juste comme ça. Je vais donc exécuter le script maintenant
et le script va lire ce fichier
XML, charger l'image, créer la version
en niveaux de gris de l'image Ensuite, il détectera
les coordonnées
du coin supérieur gauche
du visage dans l'image ainsi que la largeur
et la hauteur
du rectangle définissant
le visage dans l'image. Ensuite, il
imprimera le type des visages et il
imprimera les visages, l'objet réel des visages. Appuyez donc sur le dossier pour quitter cela. Et donc pace est un tableau NumPi, un objet tableau à N dimensions Et il s'agit d'un tableau
à quatre valeurs. Nous avons donc détecté
notre visage. Ce sont des valeurs qui définissent essentiellement
la phase de l'image. Donc, en gros, ce que
nous avons ici, c'est 155, qui devrait être
la 155e colonne Voici donc le X. Le rectangle
doit
donc commencer quelque part
ici, sur le front. Et cela devrait être 83. Donc, la ligne 83, la colonne 155, puis nous avons la largeur, qui est 382, et la
hauteur, qui est la même. Nous avons donc un
rectangle dans le visage. Maintenant, allons-y et dessinons ce rectangle sur
le visage de l'image. Nous avons donc créé le tableau de visages. Ensuite, ce que nous voulons faire, c'est accéder à toutes ces
valeurs de ce tableau. Pour cela, nous pouvons
utiliser une boucle à quatre boucles. Donc quatre X, Y, largeur et hauteur dans les faces. Eh bien, image. Nous mettons donc à jour l'objet image que
nous avons lu ici, nous avons chargé ici. Nous allons
donc le mettre à jour dessinant un rectangle
dans l'image. Et encore une fois, vous devez transmettre
l'objet image ici, puis vous devez transmettre
quatre autres arguments. Le premier argument
serait le point
de départ du rectangle. Ce serait donc X et Y. Donc, ces coordonnées du réseau
de phases. Génial. Et puis le
paramètre suivant est un autre tuple définissant les coordonnées de l'autre coin de l'image Nous avons donc le coin supérieur
gauche ici, et nous avons le coin inférieur
droit ici. Donc, ce serait
X plus la largeur. Et Y plus la hauteur. C'est ça. Encore
un autre paramètre. Il s'agit de la couleur que vous souhaitez donner
à ce rectangle. Cela se présente donc sous la forme d'un format BGR. Vous voulez donc transmettre une valeur
pour la couleur bleue. Disons donc zéro pour le bleu, et avons un rectangle
vert. 255 pour le vert. Nous aurons donc un vert
complet, puis zéro pour le rouge. Vous pouvez également passer
un autre paramètre, qui serait la
largeur du rectangle. Disons trois. OK. Et une fois que vous avez fait cela, donc une fois que vous avez
mis à jour votre image, vous voudrez peut-être afficher votre
fenêtre d'image à l'écran maintenant. Nous utilisons donc la méthode d'affichage d'image, mais ici nous avons une image grise, nous voulons
donc transmettre l'objet image
mis à jour. Et nous devrions être prêts à partir. Enregistrez le script, essayez
de l'exécuter. Et mon système n'arrive pas à trouver le visage atx it point py Oui, j'ai fait une erreur
avec un nom ici, alors laissez-moi changer
ce point py, Enter Donc rien à voir
avec le script. Et laissez-moi réessayer. Génial. J'espère donc que c'est ce à
quoi vous vous attendiez. Le rectangle commence donc ici, il a une
largeur et une hauteur, et il finit ici. Cependant, comme
vous le savez peut-être déjà, vous pouvez avoir des images plus grandes
que la résolution de votre
écran. Dans ce cas, votre image ne
rentrerait pas dans votre
écran. Vous
pouvez donc redimensionner l'image
avant de l'afficher Permettez-moi donc de créer une variable
redimensionnée ici, qui serait égale
à cv two resize, et vous voulez transmettre l'image, qui contient le
rectangle, et vous voulez redimensionner l'
image à ces Vous devez donc définir la
résolution de l'image ici. Et comme vous le savez, vous pouvez simplement mettre
des valeurs ici, disons 500 par 500. Mais ces valeurs peuvent
étirer votre image Il est donc préférable d' accéder
à la forme
de l'image. Ou la résolution de l'image, devrait être la
largeur de votre image. Vous le savez
donc déjà. Je l'explique. Je vais donc passer en
revue les choses rapidement, et pour vous assurer d'
obtenir une bonne taille, vous pouvez la diviser par trois. Et puis encore une fois, dans la forme,
vous obtenez la hauteur, qui est la première valeur du tuple, et vous
la
divisez à nouveau par trois Et vous souhaitez également convertir ces deux nombres entiers car
vous pourriez obtenir des nombres flottants, et Python dira qu'il ne peut pas redimensionner une
image en nombres flottants Donc ça devrait aller.
Ensuite, vous souhaitez afficher l'image redimensionnée.
Testez-le rapidement. me manque un support, donc tout cela devrait être un
renversement,
mais ici, je ne le
commence pas comme un renversement Donc, le crochet est ici et
se ferme ici. Cela devrait fonctionner maintenant. Ouais. C'était donc ma photo, mais essayons une photo plus
stimulante maintenant. Celui-ci, ici. Nous avons donc deux visages
qui ne sont pas très clairs. Il ne s'agit pas d'une véritable phase
frontale. Ce type, ici, a les yeux fermés et son menton n'
est pas visible. Et nous avons également ces deux visages
dans les journaux, ce qui m'a permis d'ouvrir l'image
originale d'ici, qui a essentiellement une
très faible résolution, et je pense que Python
ne sera pas capable de détecter
ces deux visages. Alors laisse-moi vérifier ça. Voici notre détecteur de visage, et nous voulons transmettre le
nom du nouveau fichier image. Enregistrez le script
et lancez-le. Nous en sommes donc à un
retour à la réalité. Et comme vous le voyez cette fois, Python et OpenCV ont
pu détecter cette phase, même si elle n'est pas dans
une position très frontale Et évidemment, il a également pu détecter la main de ce type. Python le lit donc comme une phase. Et ce que vous pouvez faire dans ce cas c'est modifier ces valeurs ici, donc le facteur d'échelle et
les voisins minimaux Vous serez peut-être également
intéressé de savoir que le tableau des phases contient
deux listes dans ce cas. Il s'agit donc de la première phase, des coordonnées de
la première phase, puis de la deuxième phase. qui, dans ce cas, se trouve être une question de main, mais de toute façon, vous avez compris l'idée. Donc, probablement
en utilisant une échelle de 1,1, vous pourrez peut-être vous
débarrasser de cette main. Donc oui, c'est ça. Vous pouvez également essayer de
détecter le rythme de ce type, mais je ne pense pas que vous y
arriverez. Juste pour que vous sachiez
que ces techniques ont leurs limites.
C'est donc un ordinateur. Ce n'est pas un être humain, il y aura
donc toujours des
inconvénients en termes de précision J'espère que vous avez trouvé cela si bas, et je vous verrai lors
de la prochaine conférence.
120. 119. Capturer une vidéo avec OpenCv et Python: Bonjour, bienvenue à
cette nouvelle conférence. Et dans cette conférence,
nous utiliserons OpenCV pour capturer des vidéos à
partir de la webcam de l'ordinateur. Vous aurez donc besoin d'OpenCV et vous importerez en tant que CV deux,
comme vous le savez déjà OpenCV est ce que nous utilisons pour le traitement
d'images et, bien
sûr, pour le traitement vidéo, car la vidéo est composée d' Nous avons donc beaucoup d'images et elles sont appelées
cadres. Et ces images,
ces images s'
affichent les unes après les
autres à grande vitesse, puis nous pouvons
les voir sous forme de vidéo. Et soit vous détesterez
cette conférence, soit vous l'adorerez. Ce que nous allons faire,
c'est passer à un très faible niveau de traitement d' image en ce qui concerne
le traitement vidéo. Nous allons lire les cadres un par un, donc
les images une par une. Et vous verrez comment nous
utilisons des boucles en Python pour afficher ces images et
pour créer
une fenêtre dans laquelle
les images s'affichent rapidement, et vous pouvez la voir sous forme de vidéo. Donc, si vous avez un ordinateur portable, vous avez probablement
une caméra de construction. Si vous avez un ordinateur de bureau
sans caméra,
vous aurez besoin d'une caméra externe
pour me suivre dans cette conférence. Et maintenant, la première chose que vous
voudrez peut-être faire est de lire une vidéo. Ensuite, une fois que vous avez lu une vidéo, vous pouvez lire une vidéo soit à partir de la webcam, soit
à partir d'un fichier vidéo. Et une fois que vous avez lu la vidéo, vous pouvez appliquer
d'autres opérations telles que le grisonnement de la vidéo ajout de texte à la vidéo
ou la détection d'objets dans la vidéo, etc. Donc, la première chose que
vous voulez
faire est de créer un objet,
disons, une vidéo, et cela sera équivalent
à une capture vidéo par point CV. C'est donc la méthode qui déclenche un objet de capture vidéo. Et cela donne ici un argument, qui peut être un
nombre tel que zéro, un, deux, trois ou
le chemin du fichier vidéo. Ainsi, lorsque vous entrez un chiffre, cela signifie que vous
capturez une vidéo à partir d'une caméra. Disons que j'ai une caméra intégrée
dans mon ordinateur, mais aussi une caméra
externe. Dans ce cas, l'une de mes caméras aura
un indice de zéro, l'autre
aura un indice de un, et si j'ai une troisième caméra, elle aura un indice
de deux et ainsi de suite. Alors c'est tout. Si vous
aviez un fichier vidéo, vous pourriez simplement dire Movie Dot MP Four ou
quelque chose comme ça. Cela dépend du nom de votre fichier
vidéo, et vous devez avoir ce fichier quelque part
sur votre ordinateur. Mais dans cette conférence,
nous
parlons de la capture vidéo
à partir de la webcam. Je n'ai donc qu'une seule
webcam dans mon ordinateur, donc je vais passer à zéro ici. C'est ça. Une fois que vous l'avez fait, vous devez vous assurer
que vous allez publier. La caméra. Vous souhaitez donc accéder
à votre objet, Video Dot Release est la méthode. Et puis vous n'avez pas besoin d'y faire
passer d'arguments. Voyons donc ce que nous
aurons si nous exécutons cela. Ce fichier Python.
Python, capture point pi est le nom de mon fichier. Et évidemment, rien ne se passe. Mais de mon côté, j'ai remarqué
que mon appareil photo était allumé pendant une seconde ou
une fraction de seconde. La lumière de la caméra a donc été allumée, puis
elle a été fermée. Il a été immédiatement éteint. Donc, ce qui se passe, c'est que nous déclenchons
la caméra ici, la webcam, puis nous la relâchons
immédiatement. Python va donc ouvrir la caméra et la relâcher en une milliseconde
environ Laisse-moi réessayer. Parfois, il peut arriver que vous ne
voyiez même pas de lumière du tout. Vous ne le voyez donc pas car le processus se déroule très rapidement. Votre ordinateur a donc probablement besoin quelques secondes pour allumer la lumière
de votre appareil photo. Et on peut lui donner
quelques secondes, donc. Pour ce faire, vous souhaitez importer
la bibliothèque de temps intégrée. La bibliothèque de temps fournit certaines opérations liées au temps. Ainsi, par exemple,
dans notre cas, nous l'utiliserons pour maintenir
le script pendant 3 secondes. essaiera donc d' Python essaiera donc d'exécuter
le script ligne par ligne, afin d'importer le
CV deux à temps, puis de
déclencher la caméra. Ensuite, avant de
relâcher la caméra, nous ferons
attendre le script pendant 3 secondes. Cela sera donc exécuté. Patientez 3 secondes, puis exécutez
l'autre méthode. C'est ça. Maintenant, laissez-moi l'
exécuter à nouveau. OK, la lumière est allumée.
Un, deux, trois, c'est parti. Ouaip. Et la vidéo est publiée. Maintenant, vous vous demandez peut-être
pourquoi ne voyons-nous pas votre visage apparaître dans la caméra
vidéo de la fenêtre ? Eh bien, la raison
en est la suivante :
voyez-vous une ligne
où je montre une fenêtre ? Non. Alors pourquoi tu t'attends à ce que
mon visage y apparaisse ? Pour ce faire, nous créons d' abord un objet cadre qui lira les images de
cet objet de capture vidéo. Et permettez-moi de le faire d'abord avant d'entrer dans
d'autres explications. Alors laissez-moi dire check frame. Cela équivaudrait à un
point vidéo ROUGE, juste comme ça. Donc, ce que nous lisons ici, c'est que nous avons un type de données booléen et un
tableau d'arbitres Alors laissez-moi l'imprimer pour
que vous compreniez mieux. Vérifiez donc d'abord
, puis imprimez le cadre. OK ? Exécutez le script. Patientez 3 secondes et fermez-le. Donc, ce que nous avons ici,
c'est que je vais développer cela. Nous avons donc opté pour
la variable check. Et nous avons le tableau numpi, qui représente l'image Cette image est en fait la première image capturée
par la vidéo. Cette année, le lingot, nous pouvons l'utiliser pour
diverses opérations
telles que vérifier si la
vidéo fonctionne ou non Vous devrez donc peut-être vérifier cela
lors de l'exécution de vos programmes. Et le cadre est le
plus important ,
car nous utiliserons
l'objet cadre Nous allons
donc utiliser ce tableau d'arbitres, qui est un tableau
tridimensionnel car c'est une image en couleur, elle comporte
donc trois bandes Et vous l'avez appris lors
des conférences précédentes où nous avons traité des images. OK. Et nous allons parcourir ce cadre et le montrer en utilisant
la méthode d'affichage d'image. Je montre donc la
méthode d'affichage de l'image de la bibliothèque CV Two. Nous allons donc afficher de manière récursive chaque image vidéo
capturée J'espère donc que cela a du sens. Donc, avant de
le faire de manière récursive, je voudrais montrer
une fenêtre ici. Donc, voici le CV 2, et donnons un nom à la capture de fenêtre et passons
l'objet du cadre dedans. N'oubliez pas non plus que lorsque vous passez une méthode d'affichage d'image, exemple lorsque vous affichez une fenêtre, vous devez vous assurer que
la fenêtre est fermée. Et vous le faites en utilisant la méthode de la touche de poids
Cv, et vous pouvez passer zéro pour vous
permettre d'appuyer sur n'importe quel bouton
et de fermer cette fenêtre. Et ce que vous voulez faire, c'est que
CV Two détruit toutes les fenêtres. Ainsi, lorsque vous appuyez sur ce bouton, vous détruisez toutes les fenêtres. Et en fait, vous voulez le
mettre ici, afin que la vidéo ne soit pas publiée
avant que vous n'appuyiez sur cette touche. Ce qui se passe, c'est que
Python exécute ces lignes, puis il attend que
vous appuyiez sur la touche, puis il publie la vidéo, puis il détruit la fenêtre réelle que
vous voyez à l'écran OK, voyons ce qui
va se passer maintenant. Surprise, je
n'ai que deux dents. Tu ne le savais pas. OK,
je plaisante. J'en ai plus. Mais ce que Python a fait ici, c'est qu'il
a déclenché la caméra. Il a donc déclenché la caméra ici, puis il a lu la
première image de la vidéo. Donc,
dès que la caméra se déclenche,
la caméra lit la première image
, puis nous l'avons imprimée et elle
se trouve quelque part dans
la ligne de commande,
puis le script est quelque part dans
la ligne de commande, resté en
veille pendant 3 secondes, donc il n'a rien fait. Il a attendu 3 secondes, puis en CV deux avec
la méthode AMShow, il a créé une fenêtre dans laquelle il a montré la première
image de la vidéo La photo que vous venez de
voir est donc la première
image de la vidéo. Et puis le cadre lui-même, la fenêtre, est toujours ouverte, donc il attend que nous appuyions sur une
touche. Donc, si j'appuie sur une touche maintenant, ces deux dernières lignes
seront exécutées. Cela signifie donc que la vidéo sera publiée et que cette
fenêtre sera détruite. Donc, appuyez sur la touche, et
oui, c'est arrivé. Python traite donc une image vidéo
comme de simples images. Cela signifie que vous pouvez également
appliquer des méthodes
telles que CV à deux points, couleur
CVT Vous pouvez transmettre ce cadre ici, puis l'
enregistrer
dans la couleur gris BGR. Enregistrez-le dans une variable grise. Donc, ce que
je fais, c'est convertir le cadre, donc le cadre couleur,
en une image grise. Et en fait, je
dois le faire ici. Ensuite, je peux montrer la
version en niveaux de gris de l'image ici. OK, laisse-moi réessayer. Il s'agit donc d'une version en niveaux de
gris affichée l'aide de la
méthode imshow.
C'est donc l'idée. Maintenant, pourquoi ne pas y montrer
une vraie vidéo, pas une seule image ? Eh bien, la réponse est que nous
devons utiliser une boucle sauvage ici. La raison pour laquelle nous devons le faire est
qu'une boucle while exécute
certaines instructions à l'infini
jusqu'à
ce que certaines instructions à l'infini vous interrompiez la
boucle à un moment donné en utilisant des instructions
telles que break, par exemple L'idée est donc que
nous devons mettre tout le code ici. Nous devons donc le mettre dans
une boucle temporelle, et c'est exactement ce que
je vais faire. Vous pouvez donc soit utiliser un raccourci
clavier en fonction
de votre clavier soit accéder à édition de lignes, puis mettre en retrait
pour mettre en retrait ces Voici donc un raccourci. Mais de toute façon, alors vous
voulez écrire en étant vrai. Et puis tout s'enfonce dans la boucle aussi simple que cela. Mais nous n'avons pas encore terminé. Nous avons d'autres
choses à faire ici. Mais avant tout, j'aimerais vraiment m'assurer que vous
comprenez la boucle Wil. Permettez-moi donc de déclencher rapidement
la console Python ici. Donc, ce que fait la boucle Wil, c'est
que, si elle est vraie, c'est imprimer. Disons un. Si vous l'exécutez maintenant, l'un d'eux sera imprimé à l'infini Ma console est donc
très occupée ici, et je peux l'interrompre interrompant le clavier
, donc contrôlez C ou contrôlez
cela si cela ne fonctionne pas. Wilby dit donc que même si c'est vrai, ce qui sera toujours vrai,
exécutez ces lignes Mais si j'essaie de l'exécuter maintenant, Python déclenchera la capture vidéo
et affichera la fenêtre, mais ce n'est qu'une seule fenêtre. Une simple image est donc la
première image de la vidéo. Parce que ce qui se passe,
c'est que la
boucle de fil démarre, mais elle disparaît. Il crée une image, la première image de la vidéo. Ainsi, l'image actuelle, qui est la toute première image
où la vidéo commence, convertit
ensuite l'image en une image en niveaux de gris. Et puis ça glisse
pendant 3 secondes, d'accord ? Ensuite, il montre l'image. Et puis, ce que fait la boucle
i ici, elle attend que vous appuyiez sur une touche Ensuite, si vous appuyez sur une
touche, le processus s'arrête. Donc, ce que vous pouvez faire dans ce
cas, c'est en saisir un autre. Laissez-moi y faire de la place. Vous devez donc modifier cette
valeur ici, donc les arguments. Lorsque nous entrons zéro, cela signifie que toute touche que vous
appuyez sur
le clavier ferme cette fenêtre. Mais si vous entrez,
disons, 2000, cela signifie
que le script
attendra 2000 millisecondes, soit Et voyons ce qui
va se passer ici. Donc, il montre d'abord mon visage, puis il attend
3 secondes ici. Ensuite, il attend
encore 2 secondes. Ensuite, il montre l'autre image. C'est donc très lent,
juste comme ça. OK. Maintenant, si vous appuyez sur n'importe quelle touche, rien ne se passera car vous supprimez le zéro d'ici. Dans ce cas, je vais
arrêter de force le script ici, Control C. Nous n'avons plus besoin de
ce bordereau temporel, et nous avons également besoin d'un
conditionnel ici Et avant cela, nous allons enregistrer cette action
dans une variable clé. Ensuite, nous disons que la touche I est
égale à ou à la méthode, puis vous passez une
touche du clavier. Donc, si le est égal à Q, alors interrompez la boucle while. Et disons 1 000
cette fois. OK. Maintenant, ce que cela va faire, c'est qu'il va capturer la vidéo, je vais démarrer la vidéo, puis elle va itérer sur
toutes ces lignes Il créera donc un cadre, convertira en gris et
affichera le cadre ici, puis il
attendra 1 seconde. Et si vous appuyez sur
la touche du clavier, cela rompra la boucle du fil. Et puis s'il se casse et que la
vidéo publiée sera exécutée, la vidéo s'arrêtera et
la fenêtre sera détruite. Mais si vous n'appuyez sur aucune touche, cela attendra 1 seconde, puis
l'image suivante s'affichera. Et puis après 1 seconde, il affichera l'
image suivante et ainsi de suite. Alors, enregistrez le script, exécutez-le. La vidéo s'améliore donc. Oui, ça a l'air bien maintenant. OK, si tu appuies sur
Q, tu l'arrêteras. OK, améliorons-le davantage. Pourquoi pas une milliseconde ? Salut, comment allons-nous ?
Donc, ça marche bien. Et vous pouvez également voir ici
que le lingot de chèques, le NumPirea, est
imprimé à chaque itération Et on peut arrêter ça maintenant en
appuyant sur Q, juste comme ça. Maintenant, si vous voulez
savoir combien d'images sont générées, il existe une
astuce intéressante que nous pourrions faire. Nous pourrions créer une
variable, disons que égal à
un
en dehors de la boucle y. Et puis ici, vous dites que
A est égal à A plus un. Ensuite, une fois la boucle interrompue
, vous devez imprimer A. Donc,
lorsque vous exécutez le script, A obtient la valeur un,
puis lorsque la
boucle murale commence à s'exécuter, elle passera par
la première itération et augmentera la valeur
A d'un A est donc égal à un plus un. Il y en aura donc deux. A
sera donc mis à jour à deux. Ensuite, il remontera jusqu'
à la fin, puis il redémarrera. Donc, cette fois, ce sera à nouveau A, égal à deux plus un. A sera donc égal à trois à
la deuxième itération, et ainsi de suite, ou vous pouvez le mettre
à un en fait Donc, si nous avons deux itérations, cela signifie
que A sera deux, et si nous en avons trois, ce
sera trois et ainsi de suite Ensuite, nous imprimons A ici
en dehors de la boucle, d'accord ? Et voyons ce que
nous avons. Je vais faire tourner
la vidéo pendant 3 secondes, et nous verrons combien d'
itérations nous aurons Alors, capturez un, deux,
trois, et arrêtez. La dernière valeur
imprimée ici est donc une valeur. Cela signifie que nous avons
effectué 51 itérations en 3 secondes environ
, soit, disons, environ
20 images par seconde Donc, notre appareil photo, mon appareil photo capture
20 images par seconde. Permettez-moi de l'exécuter une
dernière fois, la dernière fois. Donc, si je mets mon doigt
ici dans l'appareil photo, j'ai masqué l'
image et vous verrez que le tableau numpy est
maintenant nul, zéro, zéro En raison des cadres de l'image, elle ne contient que des valeurs nulles. Il n'y a donc aucune
intensité dans l'image. Oh. OK, c'est ce que je voulais vous montrer
dans cette conférence. Donc, comme je l'ai dit, une fois que
vous
avez ces cadres, vous pouvez leur appliquer des
opérations, afin d'y dessiner des
rectangles, détecter des images, etc. C'est ce que nous allons faire, afin de créer
notre application du monde réel. En implémentant une
détection de mouvement dans nos images, nous capturerons ensuite
les fois où un objet entre dans notre image ou notre vidéo, et nous aurons
une liste de ces moments. J'espère donc que vous aimez cette conférence, pas que vous l'avez détestée, et je vous
verrai à la prochaine.
121. 120. App 3 : application de détection de mouvement pour webcam: Bienvenue à cette nouvelle
conférence, bien sûr, est très spéciale. Il se trouve que je suis devant la caméra
parce
que dans cette conférence, vous allez
créer un programme qui détecte les objets en mouvement
devant la webcam d'un ordinateur. Et puis ce qu'il
fait, il enregistre l'heure à laquelle l'objet
est entré dans la webcam. Donc, l'image vidéo et l'heure à laquelle l'objet est sorti de
l'image vidéo. Il y a donc maintenant un objet en mouvement. Dans le cadre, et si je m'en vais, vous verrez qu'il n'y a plus de
rectangle vert dans la vidéo. Et maintenant je réapparais, déménage à nouveau, et ainsi de suite. Nous allons donc créer
cette application à partir de
zéro en utilisant Python. Oui, nous avons beaucoup
de choses à apprendre, comme le traitement
d'image et
le traitement vidéo, etc. Enfin, ce que nous faisons,
si vous appuyez sur Q pour arrêter, vous obtenez un graphique. Et comme je l'ai dit, le
graphique indiquera les moments où l'
objet est entré dans le cadre. Nous avons donc affaire à un graphique
interactif. Et oui, ce sont les moments où l'objet
est entré dans la webcam, comme ici, et ici ça dure plus longtemps. Et donc, eh bien, cela peut être une excellente application si vous
souhaitez détecter des objets. Vous pouvez
placer cette application de
ce programme Python
dans le serveur Raspberry, par
exemple, qui
est un petit serveur, et vous pouvez la placer quelque part où vous voulez
peut-être
détecter des animaux. Vous voudrez peut-être savoir
quand cet animal entre dans le
cadre et quand
il en sort ou avec des
personnes, le cas échéant Donc oui, c'est un programme, et j'espère qu'il vous plaira. Nous avons beaucoup
de code à écrire, alors commençons, et je vous
en parlerai lors de la prochaine conférence.
122. 121. Détection d'objets mobiles à partir du webcamp avec Python: Hey, nous y revoilà. Et dans cette conférence, nous
continuerons à développer notre programme de
détection de mouvement dans le monde réel. Maintenant, avant de
commencer à écrire le code, j'aimerais d'abord vous expliquer l'architecture du programme
que nous allons construire. Alors, comment ce programme est-il capable de détecter le
mouvement dans la vidéo ? Et je suppose que vous savez déjà
comment créer ce script. Nous l'avons donc développé dans
les conférences précédentes. Et ce que
fait ce script, au cas où vous l'auriez manqué, c'est Hey. Cela
déclenche donc la vidéo, comme vous. Depuis la webcam de l'ordinateur. Nous traitons donc les images ici dans cette boucle de Wile, et ainsi de suite Donc tu le sais. Je ne vais pas les
passer en revue pour l'instant. Donc, ce que nous devons faire
ensuite, c'est
traiter les images qui sont itérées dans
cette boucle Wile Et j'ai quelques
photos ici pour illustrer mes
idées, mes concepts. Permettez-moi d'aller au répertoire
où ils se trouvent. Donc ce que fera ce programme
de détection de mouvement c'
est qu'il déclenchera la webcam comme le fait notre script
actuel. Et l'une des conditions pour que
le programme fonctionne correctement est qu'une fois que vous avez
déclenché
la webcam, la première image de la vidéo doit être
l'arrière-plan statique. Donc, si vous envisagez
d'utiliser ce programme,
supposons que vous configuriez une webcam sur un ordinateur portable ou
un serveur Raspberry Pie. Supposons que vous souhaitiez détecter le mouvement d'un certain
animal dans une zone. Donc, vous
voulez d'abord déclencher la caméra alors que l'
arrière-plan est statique, puis vous voulez
utiliser cet arrière-plan comme image de base afin de
pouvoir comparer les autres images. Python peut alors
détecter s'il y a un changement entre la première
image et les images suivantes. C'est donc une chose
que tu dois faire. Voici donc un
exemple de contexte. Et puis quelque chose, l'animal apparaîtra
sur votre appareil photo. Ensuite, ce que vous devez écrire dans votre script dans le
programme, c'est d'abord nous voudrions
griser cette image, donc l'image d'arrière-plan et le cadre actuel de la caméra. Vous allez stocker la première image
de la capture vidéo dans une variable, puis vous allez convertir cette image en image
en niveaux de gris Ensuite, l'iloop parcourra les images en cours et vous ferez de même pour
l'image en cours. Vous les convertirez
donc en
niveaux de gris
, Vous les convertirez
donc puis vous appliquerez ces deux images en niveaux
de gris boucle la
différence entre ces deux images en niveaux
de gris de l'
itération en cours de la C'est la différence, un exemple de
trame de différence de trame Delta, si vous pouvez le dire comme ça. Sur cette image en particulier, vous remarquerez que derrière moi, il y a une lampe de la pièce. Normalement, vous ne pouvez pas voir la lampe, mais Python fait
la différence entre
le cadre où j'apparaissais et le cadre d'arrière-plan
où la lampe est visible. Il en résulte donc cette image grise où chaque
pixel a une certaine valeur. Il a donc des
valeurs d'intensité. C'est bon. Cela signifie, par exemple, que les valeurs d'intensité élevées
comme celle où
je me trouve indiquent qu'il y a un
mouvement potentiel dans cette zone ici. Alors que les zones noires
indiquent qu'il n'y a aucun mouvement. Mais vous voyez aussi des pixels clairs et
noirs ici parce que
lorsque j'apparais devant la caméra, il y a de l'ombre
derrière moi, etc. Mais nous appliquerons
quelque chose d'autre plus tard, qui s'appelle le seuil. Nous allons donc dire que
si vous voyez une différence dans le cadre Delta dans le
cadre que je viens de vous montrer,
si vous constatez une différence d'intensité
supérieure
à 100, convertissez ces pixels en pixels blancs, d'accord ? Et pour les pixels
inférieurs au seuil, convertissez-les en noir. D'accord. Vous obtenez donc le contour de l'objet qui se déplace
dans la caméra dans le cadre. Nous effectuons donc tous ces
processus à l'intérieur de la boucle. Ensuite, une fois que nous avons calculé le cadre de seuil à
l'intérieur de la boucle, nous allons trouver
les contours des
objets blancs dans le cadre pour le cadre
actuel . D'accord. Donc, pour cette image
en particulier, nous aurions des contours
autour de cet objet ici et des contours autour de celui-ci et
autour de celui-ci également. Ensuite, nous allons écrire une
boucle à quatre boucles qui
parcourra tous les contours
du cadre actuel. Il ira de ce contour à
celui-ci, à celui-ci et à celui-ci. Ensuite, à l'intérieur de cette boucle, nous allons vérifier
la zone des contours. Cela
a donc, par exemple, une surface de, disons, 500 pixels. Ainsi, si la zone du contour
est supérieure à 500 pixels, par
exemple, considérez
cela comme un objet en mouvement. Si la zone est,
disons, inférieure à 500, comme celle-ci est
probablement de 20 pixels, disons que cela ne sera pas
considéré comme un objet en mouvement. J'espère que cela a du sens. Ensuite, nous allons dessiner un rectangle autour des contours supérieurs
à
la surface minimale. Cela affichera ces rectangles
dans l'image d'origine. Donc, dans la version couleur
du cadre actuel. Cela signifie que nous
verrons un rectangle dans la vidéo pendant que
la vidéo est en cours de lecture, nous verrons un rectangle
autour de l'objet. Plus tard, nous détecterons
le moment où l'objet, l'objet en mouvement, est entré dans
l' image vidéo au moment où
l'objet est
sorti de l'arrière-plan Mais pour l'instant,
concentrons-nous simplement sur la détection de l'objet, l'objet en mouvement dans la vidéo. OK, et
revenons au script. Fermez ceci, ceci et cela. D'accord. Et supprimons ici quelques lignes
inutiles. Nous avions donc une variable ici, que nous avons créée parce que
nous voulions voir nombre d'images que nous
avions dans la vidéo. Nous n'en avons donc plus besoin,
et nous n'avons pas besoin que le script
s'arrête pendant 3 secondes. J'enlève donc le temps qui a
glissé et celui que j'ai vu. D'accord. Et maintenant, la première partie est la
plus délicate Nous devons trouver un moyen de stocker l'
image actuelle de la vidéo. Ainsi, dès que la vidéo démarre, nous voulons stocker
ce tableau numérique
dans une variable et avoir
cette variable statique Nous ne voulons
donc pas modifier
la valeur de cette variable
pendant que la boucle
s'exécute dans le script Et pour ce faire,
nous devons d'abord
créer un cadre variable
pour le premier cadre. Nous devons donc
lui attribuer une valeur non valable. Aucune n'est donc un type de données
Python spécial qui vous permet de créer une variable et de
ne rien lui attribuer, mais vous avez la variable là. Donc, si vous appelez cette
variable ultérieurement, Python ne dira pas que la
variable n'est pas définie. OK, si vous ne le
comprenez pas, veuillez patienter et vous l'
aurez dans un moment. Et ce que vous devez
faire maintenant, c'est écrire un conditionnel et y appliquer une instruction
continue. Laissez-moi d'abord écrire le
conditionnel
, puis je
vous expliquerai à quoi cela sert. Nous voulons donc vérifier
si le premier cadre
n'est pas et s'il est connu, nous allons attribuer le premier
cadre, le cadre gris. Cela fait donc que
le script s'exécute, la vidéo se déclenche. Ensuite, la boucle filaire
commencera à fonctionner, et elle obtiendra la
première image ou vidéo, et elle la stockera dans
cette variable d'image. Cette variable de cadre sera
convertie en cadre gris. Ensuite, nous disons que si la
première image est connue, ce qui est vrai lors de
la première itération de la boucle, c'est vrai La première image est donc en fait non car nous n'en attribuons aucune ici. Assignez le NumPi à
la première image. Ainsi, à la première image, vous
obtiendrez l'image en niveaux de gris, qui représente la toute
première image de la vidéo Cela se produit donc dès
la première itération
de la boucle, d'accord ? Mais ensuite, Python
exécutera ces autres
lignes de code,
puis
passera exécutera ces autres
lignes de code, à la deuxième boucle. Et ce que Python
va faire, c'est saisir la deuxième image de la vidéo. D'accord ? Supposons que la première
image soit une image d'arrière-plan, puis qu'un objet
apparaisse soudainement dans l'appareil photo
devant l'appareil photo. Python va donc récupérer un tableau d'arbitres
contenant cet objet Ainsi, le deuxième cadre et ce cadre seront
convertis en gris. Ensuite, nous disons que si la
première image n'est aucune, la première image est variable, nous allons obtenir la première
image de la vidéo. Et une fois que nous avons saisi
la première image, nous ne voulons pas que ces autres
lignes de code soient exécutées. Parce qu'ici, nous allons
appliquer la différence entre les cadres et nous allons
flouter les cadres et ainsi de suite Nous ne voulons donc pas qu'ils
soient exécutés. Nous voulons plutôt que Python aille
au début de la boucle et continue
avec la deuxième image. Pour ce faire, nous
devons continuer ici. Cela signifie donc
continuer jusqu'au début de la boucle et ne pas
exécuter le reste du code. D'accord. La première
image est donc nulle. La première image obtient la valeur de la première image de la vidéo, puis passe à l'itération suivante Ensuite, à l'itération suivante, nous allons
saisir la deuxième image de la vidéo, puis elle
calculera la
version grise de cette image Et puis on passe
à nouveau au conditionnel. Et dans ce cas,
la première image est-elle nulle ? Non, ce n'est pas parce que la
première image a obtenu la valeur de l'image grise lors de la première
itération de la boucle while Donc, ces lignes ne seront pas exécutées à la deuxième
itération de la boucle, d'accord ? Génial. Cela signifie que nous pouvons maintenant
appliquer un cadre Delta, afin de calculer
la différence entre le premier cadre et le
cadre actuel de l'image. La première image est donc la
première variable de cadre et le cadre actuel
est une variable grise. Mais avant cela, nous
aimerions modifier le cadre
actuel de l'image. Nous voulons appliquer un
flou gaussien à l'image. Et un point ici. Donc, la raison pour laquelle nous voulons appliquer flou
gaussien est que nous
voulons brouiller l'image, donc la rendre floue,
donc la lisser, car cela supprime bruit et augmente la précision un flou
gaussien est que nous
voulons brouiller l'image,
donc la rendre floue,
donc la lisser,
car cela supprime le
bruit et augmente la précision
du calcul de la différence. Cela permet donc d'obtenir en paramètre l'image que vous souhaitez flouter Ensuite, nous transmettons l'image grise ici
et nous stockons nouveau
la version floue de l'
image dans l'image grise Et puis nous avons
un autre paramètre qui se présente sous la forme d'un tuple, et ici nous devons transmettre la largeur et la hauteur
du noyau gaussien Quels sont donc essentiellement les
paramètres du flou, mais 21 seraient des nombres
acceptés Et vous avez également besoin d'
un autre paramètre perdu. Ce serait donc l'
écart type et je passerai zéro. Ici, le zéro est également couramment utilisé. Si vous voulez en savoir plus à leur sujet, vous pouvez consulter
la documentation, mais ces valeurs seraient utiles. Nous rendons donc l'image
grise floue ici. Ensuite, ici, nous devons comparer le
premier cadre de l'image, donc l'arrière-plan avec
le cadre actuel. Appelons cela le cadre, et cela serait égal à la différence entre les applications
CV point. Donc différence absolue entre le premier cadre et le cadre
actuel, qui est gris. Notez que le premier cadre
sera également une version grise,
une
version grise floue, en fait Nous comparons donc ici à des images
floues en niveaux de gris. D'accord ? Et ça va
nous donner une autre image, d'accord ? Et en fait, j'aimerais montrer cette image ici à l'écran. Affichage de l'image CB Two. Châssis Delta. Voyons ce que nous en
retirerons. Et avant d'exécuter le script, je vais d'
abord disparaître de la vue, puis nous apparaîtrons. Encore une fois, voyons voir. OK, rien ne s'est passé car j'ai oublié de
saisir le nom de la fenêtre. Appelons cela Delta. Châssis. Et disons un cadre
gris pour cela. Maintenant,
laisse-moi le refaire. Et je suis là. Il s'agit donc d'une version floue en niveaux de gris qui se trouve ici, et nous
avons la différence D'accord. Vous pouvez donc voir la lampe derrière moi
dans le cadre Delta. Génial. Appuyez sur le Qiki
et quittez la vidéo Maintenant, si je veux imprimer, juste pour vérifier le cadre delta, cela nous permettra de voir
la différence entre les intensités des pixels
correspondants Alors laisse-moi voir. Et si j'arrête ça
maintenant. Allons-y. Donc, ce que nous avons ici cinq
signifie qu'il n'y a aucune différence. Donc, dans cette zone,
il n'y a
probablement aucun mouvement, mais vous en avez
174, qui sont assez blancs. Cela signifie donc que Python
classera cela comme du mouvement. OK, c'était juste pour vous
montrer les valeurs
du bloc de données. Il nous faut maintenant
classer ces valeurs. Supposons donc que nous
voulions attribuer un seuil. Supposons donc que nous ayons des
valeurs supérieures à 30, donc si la différence entre la première image et l'image
actuelle est supérieure à 30, nous les classerons en blanc. Nous allons donc dire qu'il y a probablement du
mouvement dans ces pixels. Il y a donc un objet
dans ces pixels. Et si la différence
est inférieure à 30, nous lui attribuerons un pixel noir. D'accord ? Nous pouvons donc le faire. Nous sommes donc là. Nous
pouvons le faire en utilisant la méthode
des seuils de la bibliothèque CV two. Supposons que le Delta frais soit égal
au cv deux, le seuil. Et ce que cela attend,
c'est l'image. Que vous souhaitez définir un seuil, puis vous souhaitez
spécifier une limite de seuil. Donc 30 ans, nous en sommes à 30. Et quelle couleur souhaitez-vous
attribuer aux valeurs
supérieures à 30 ? Eh bien, vous voulez attribuer
une couleur blanche qui correspond à la valeur 255. D'accord. Et vous avez également besoin d'
un autre argument ici , à savoir la méthode du seuil. Il existe de nombreuses
méthodes, mais nous utilisons
cette méthode ici. Donc, seuil binaire. Vous pouvez expérimenter avec
d'autres personnes si vous le souhaitez. Génial. Voyons maintenant à quoi ressemblera
ce
cadre Fresh Delta. Le CV 2 montre le cadre, d'accord. Delta frais. Génial. Voyons voir. Apparemment, j'ai écrit le mauvais cadre Delta,
pas le cadre Delta. Et encore une faute de frappe dans la ligne 19, qui est ici le CV deux OK, espérons que
cette fois-ci fonctionnera. Et encore une erreur. Cette fois, j'ai raté
quelque chose. D'accord. Cette méthode ici, donc la méthode du seuil renvoie
en fait un tuple avec deux valeurs Et la première valeur est nécessaire lorsque vous utilisez
d'autres méthodes de seuil. Ainsi, le premier élément du
basculement suggère essentiellement une valeur pour le seuil si
vous utilisez d'autres méthodes Mais pour le seuil binaire, il
suffit d'accéder au
deuxième élément du tuple, qui est le
cadre réel renvoyé À partir de la méthode du seuil. Vous souhaitez donc accéder au
deuxième élément du tuple. OK, je te promets que c'
est une erreur de perte. Génial. Enfin, et c'
est le cadre de référence. Vous voyez, vous pouvez y voir
mon contour, mais vous pouvez également
y voir des zones
blanches cause des ombres. Je suis donc détectée
en tant qu'objet, mais mes ombres sont également détectées
en tant qu'objets. D'accord ? Donc, vous avez compris l'idée. Maintenant, nous pouvons tout de suite utiliser ce cadre Thresh Delta, ai appelé Thresh Je devrais l'appeler
le Thresh Frame, vous savez, juste pour la cohérence des
noms Nous pouvons donc
maintenant créer les contours des
objets blancs dans le cadre. Mais avant cela, j'aimerais
faire autre chose. J'aimerais retarder ces zones. Je veux donc supprimer
les trous noirs de ces
grandes zones blanches de l'image. Donc, en gros, je veux
assouplir mon cadre de seuil. Et pour ce faire, vous devez utiliser la méthode différée
de la bibliothèque CV two. Supposons donc que nous voulions
modifier le cadre de seuil, CV deux, DLD. Encore une fois, vous voulez y passer un cadre de
seuil Maintenant, si vous avez un tableau de noyaux et que vous voulez que ce processus
soit très sophistiqué, vous devez transmettre ce tableau ici. Nous n'en avons pas et
nous n'en avons pas besoin Vous devez
donc en transmettre aucun
pour ce paramètre. Et il y a encore un autre
paramètre ici, les itérations. Disons deux. Cela définit donc
combien de fois vous souhaitez parcourir l'image
pour retirer les semelles. Donc, plus ce nombre est élevé, plus
l'image sera lisse. D'accord. Laissez-moi vérifier rapidement. Oh, oui, j'ai changé
le nom tout à l'heure, mais je ne l'ai pas changé ici
dans la méthode I'm Shaw. Cadre frais. D'accord. Vous
remarquerez donc probablement que les zones,
les zones blanches,
sont maintenant plus lisses. Donc, si je m'en vais, vous ne remarquerez que quelques zones qui sont là à
cause de mon ombre. Donc, cela semble
fonctionner jusqu'à présent. Créons-le maintenant.
Génial. Nous avons donc ces trois cadres. Quelle est la prochaine étape ? Eh bien, nous devons ensuite
trouver les contours de ce cadre de seuil
dilaté En ce qui concerne
la détection des contours avec OpenCV, vous disposez de deux méthodes Vous disposez donc d'une méthode de recherche de contours
et d'une méthode de dessin de contours. Et avec la méthode de recherche de
contours, vous
recherchez les contours votre image et vous les
stockez dans un tuple D'autre part, la méthode de
dessin des contours
dessine les contours d'une image. Donc, dans ce cas, ce que nous voulons
faire, c'est trouver les contours, puis nous voulons vérifier
la zone des contours. Supposons donc que vous ayez un
contour tel qu'un cercle et que vous souhaitiez trouver la zone définie par
ce contour. Vous voulez donc stocker
ces contours dans un tuple. Vous voulez donc écrire CNTs
C et un autre trait de soulignement. D'accord. Ce serait égal à. CV 2, trouvez les contours. Ensuite, vous
voulez passer le cadre dont vous souhaitez trouver
les contours. Et il est préférable d'
utiliser une copie du cadre, afin de ne pas
modifier le
cadre de seuil. Utilisez donc une copie ici. s'agit donc
du premier paramètre, le cadre à partir duquel vous souhaitez trouver les
contours, puis vous avez la méthode
retrieve. Externe Vous souhaitez donc dessiner les contrastes externes
ou les objets que vous trouverez dans l'image Et vous avez encore une autre chaîne d'
arguments, un symbole prox. Il s'agit donc d'une
méthode d'approximation qu' OpenCV appliquera pour
récupérer les contrôles Génial. Donc, ce que nous avons, c'est que nous sommes en train d'itérer dans
le cadre actuel. Nous le floutons donc, le
convertissons en niveaux de
gris , trouvons le cadre delta
et appliquons le seuil Donc, l'image en noir et blanc. Ensuite, nous trouvons tous les contours des objets des différents
objets de cette image. Ainsi, si vous avez deux zones blanches continues dans votre image, mais qu'elles sont distinctes,
vous obtiendrez deux contours. Donc, un contour pour
chacune des zones. Ces contours seront stockés
dans cette variable CNTs. Nous parlons donc
du x actuel. Ce que nous voulons faire, c'est
filtrer ces condors Nous voulons donc vérifier que nous voulons conserver uniquement
les condors qui ont,
disons, une surface supérieure à 1 000 pixels Pour cela, vous devez
itérer, disons, pour le contour dans les CNT Et si CV, contour,
zone de contour. Ainsi, le contour que nous
sommes en train d'itérer, s'il est inférieur à
1 000, continue jusqu'au début
des quatre boucles. Cela signifie donc que Python a trouvé
trois condors, qu'il passe par le premier et qu'il
indique la zone de ce conor Nous utilisons donc la zone conor
de la bibliothèque CB two. Si la zone comporte
moins de 1 000 pixels, passez au compteur suivant. Passez donc au deuxième conor et vérifiez encore et
encore. Sinon, si la surface
est supérieure ou égale à 1 000, les lignes suivantes après les
quatre boucles seront exécutées. Alors, que voulez-vous faire si un contour est
supérieur à 1 000 pixels ? Eh bien, nous voulons
dessiner le rectangle entourant ce contour
dans le cadre actuel. Assurez-vous donc que vous êtes
à l'intérieur des quatre boucles. Nous sommes donc toujours en train
d'itérer . Voici donc les paramètres qui
définissent le rectangle, qui seraient égaux au rectangle de liaison à
deux points CV ou au contour actuel Ainsi, si le contour est égal ou
supérieur à 1 000 pixels, donc s'il a une surface
égale ou
supérieure à 1 000 pixels,
cela sera exécuté. Nous créons donc un rectangle, puis nous voulons dessiner ce rectangle de notre cadre
à notre cadre actuel. Donc CV deux rectangles. Nous utilisons donc déjà
cette méthode dans nos cours sur la
détection de phase. Et ici, nous voudrions
passer le cadre de couleurs. D'accord. Voilà le cadre, et vous voulez spécifier X et Y. Voici les coordonnées
du coin supérieur gauche
du rectangle, X Y, et vous voulez également spécifier les coordonnées du coin inférieur
droit les coordonnées du coin inférieur
droit
du rectangle Donc X W juste comme ça. Et aussi la couleur
de votre rectangle, voyons voir. Vert et largeur. Disons trois. Donc, ce que nous avons
fait dans ces deux lignes, c'est que nous avons créé ce tuple
avec ces quatre coordonnées Et ces valeurs, elles
seront attribuées automatiquement. Ainsi, X et Y
obtiendront la valeur
du rectangle reliant
cette commande
de courant des quatre boucles. Ensuite, ces valeurs
seront utilisées pour dessiner un rectangle dans le cadre
du cadre actuel. Ensuite, nous voulons montrer
cette image actuelle. Permettez-moi donc de l'ajouter
ici. Exposition d'images. Appelons cet appel
le cadre et le cadre. En fait, cette méthode
est un collage, c'est correct. Très bien, laissez-moi essayer
le script maintenant. Un CV à deux ne possède aucun
attribut find contours. J'ai donc ici un U qui ne devrait pas être là.
Essayons encore une fois. Oui, c'est marrant. J'ai tendance à mal taper ce
mot « zone de contour ». Ligne 24, retirez le U.
Et ça devrait aussi être le contour
ici D'accord. Le contour
n'est pas redéfini. J'en ai un autre ici. Alors, supportez-moi. Essaie à nouveau Euh, oui, cette fois ça a l'
air de marcher. Donc pas d'objets. Objets. Aucun objet. Objets. Génial. Génial. C'est donc ce que je voulais vous enseigner
dans cette conférence, et nous continuerons avec les prochaines conférences, car
ce que nous avons fait jusqu'à présent c'est que nous pouvons détecter cet objet et nous pouvons dessiner un rectangle autour de cet objet. Mais cela n'est pas très pratique. Je veux dire, dans le monde réel, il ne suffit pas dessiner un rectangle
autour de votre objet, et puis c'est tout. Dans
la prochaine conférence, nous allons donc enregistrer heures auxquelles
l'objet entre dans
le cadre lorsque l'
objet sort du cadre Nous avons donc quelques
lignes supplémentaires à ajouter à ce code. Et je sais que ce code
était assez gourmand, mais j'espère qu'il est clair maintenant. Si vous avez des questions, n'
hésitez pas à les poser, et je vous verrai lors de
la prochaine conférence.
123. 122. Stockage des horodatages de détection d'objets dans un dossier CSV ++: Très bien, j'ai donc mon
programme de détection de mouvement ici. Et comme vous le voyez, cela me montre en train de
bouger en ce moment. Si je m'éloigne, vous ne pourrez y
voir que quelques ombres. Donc, eh bien, c'est génial, mais comme je l'ai dit, vous pouvez stocker les
moments où un objet entre dans le cadre pour obtenir
quelque chose comme ça. C'est donc la première entrée. Comme heure de début, voici l'endroit où l'objet
est
sorti du cadre ,
puis la deuxième entrée
de l'objet et ainsi de suite Dans cette conférence,
je vais donc vous montrer comment créer
cette table à l'aide de ce script. Nous allons donc ajouter un peu
plus de code ici. Et pour
commencer, il d'abord déterminer le point, la ligne du script où
le statut passe,
disons, du mouvement au non-mouvement. Il n'y a donc aucun mouvement ici. Donc, dès que la webcam se déclenche, disons, le statut est nul. Donc, juste un symbole que
je choisis pour indiquer qu'il n'y a aucun mouvement
dans l'image en cours. Vous obtenez donc
cette première image, qui a un statut nul,
puis vous réduisez, puis vous vérifiez si
la première image n'est aucune, puis vous reprenez
la boucle, puis vous récupérez
la deuxième image. Le statut est donc toujours nul, puis vous appliquez la différence, le seuil, vous
le dilatez. Puis parcourez les contours. Donc, si vous trouvez une zone inférieure à celle que j'ai
modifiée plus tôt, je la mets à 10 000. J'ai donc voulu détecter des objets
plus gros parce que j'
étais plus proche de la caméra, alors j'ai voulu l'ajuster. Ainsi, en fonction des objets que
vous souhaitez capturer, vous devez ajuster
ces pixels ici. 10 000, c'est donc une fenêtre de
100 x 100 pixels. Nous vérifions donc si vous ne
trouvez pas de fenêtre supérieure à 10 000, puis vous continuez
jusqu'au début de
la boucle jusqu'à ce que vous trouviez un contrôle dont
la taille est supérieure à celle-ci. Lorsque Python trouve ce
contrôle avec cette taille, nous voulons changer
le statut en un OK. Et
imprimons maintenant cette variable d'état. Donc, ce que vous voulez faire, c'est l'
imprimer à la fin de
votre boucle, donc status. Et laissez-moi supprimer
ces tableaux numpy, qui sont en cours d'impression Nous n'en avons pas besoin et
faisons de la place ici. C'est donc dans la boucle, et je m'attends maintenant à voir l'
état de un ou de zéro
imprimé selon qu' il y a un objet
dans le cadre ou non. Donc, si cela fonctionne, signifie
que nous avons maintenant l'état
réel du cadre, et que nous pouvons utiliser ces 10 pour
d'autres choses. Alors voyons voir. OK, il n'y a rien pour le
moment. Permettez-moi de minimiser cela afin que
nous puissions également voir la console .
Génial. Donc, zéro est imprimé,
et si quelque chose
apparaît, vous en voyez un maintenant. Encore une fois, un, zéro, un,
un, zéro. Génial. Nous pouvons maintenant simplement appliquer
une méthode date-heure, vous savez, comme le fait actuellement
la date et l'heure. Et cela enregistrerait
l'heure de chaque image. Ce n'est donc pas exactement ce que nous voulons. Nous voulons utiliser la méthode daytime
do now, mais pas comme ça, car cela permettrait d'enregistrer les
temps pour chaque image. Nous voulons donc savoir quand
le statut passe de 0 à 1, ce qui indique qu'
un objet entre dans le cadre Nous voulons donc enregistrer ce temps. Et nous voulons également
enregistrer l'autre fois
où le statut change de 1 à 0, sorte que l'objet quitte le cadre Disons une liste d'état, ce serait égal à des
crochets vides, une liste vide. Ensuite, je veux
ajouter le statut de l'objet à cette liste Donc, une fois cette boucle
terminée, qui est là, je veux être ici au
même niveau que la boucle, donc je veux appliquer
quelque chose en dehors de la boucle. Donc, liste de statut, je
veux ajouter l'état actuel de la liste ici dans
cette liste de statut Génial. Et pour illustrer, pour vous montrer en quoi consiste cette liste de
statut, j'aimerais l'imprimer
, en fait. Et je voudrais imprimer une liste
en dehors de
la boucle filaire, donc je ne veux pas l'imprimer à chaque itération de la boucle. Donc du mouvement ici. Et arrête. Voici donc les statuts
de chacune des images. Donc zéro, zéro,
zéro, aucun mouvement, et puis quelque chose
est entré dans le cadre. Et ce quelque chose est
entré, disons, 30 images, puis l'
objet sort du cadre Et c'est tout. Ce que nous voulons faire maintenant, c'est saisir ce qui va suivre. La prochaine étape est donc de
capturer le temps pendant lequel nous passons de 0-1 à 1-0 Donc, en gros, ce qui nous
intéresse, c'est de
capturer les deux derniers
éléments de la liste de statut. Supposons donc que nous
ayons le statut zéro. Nous commençons donc avec une liste vide, et le premier élément
qui sera ajouté
à la liste de statut est zéro Et puis le deuxième élément,
disons, sera zéro ou
disons que ce sera un. Nous voulons donc appliquer le
conditionnel pour vérifier si les deux derniers éléments
de la liste changent. Je sais donc que cela peut prêter à confusion, mais une fois que j'aurai écrit ces
quatre lignes de code ici, vous le comprendrez et cela
aura beaucoup de sens. Nous voulons donc vérifier
si le statut est répertorié. Ainsi, le dernier élément de
la liste de statut, dont l'indice est inférieur à
un, souvenez-vous de l'indexation des listes, si celui-ci est égal à un,
et de la liste des statuts dont l'
indice est inférieur à deux Ainsi,
l'élément qui
a été ajouté en premier est
égal à zéro. Nous voulons enregistrer le jour
de cet événement dans une liste. Créons donc une liste ici,
disons que le temps est égal à vide. Ensuite, nous allons ici, ici, et nous disons que les heures s'ajoutent, jour, les points maintenant, vous
connaissez déjà cette fonction Nous voulons donc ajouter
l' horodatage actuel lorsque
ce Cela signifie donc que nous devons importer ou partir
de la date, de l'
heure, de la date et de l'heure d'importation. Donc, cours diurne de
la bibliothèque datetime. Nous enregistrons donc essentiellement l'heure à laquelle le
statut est passé à un. Et nous voulons également enregistrer
l'heure à laquelle le
statut change de 1 à 0. Nous aurions donc une condition
similaire, mais celle-ci serait nulle, et
celle-ci serait une. OK. Donc, ce qui se passe ici, c'est que
nous allons revenir au
début de la boucle. Python a donc capturé
la première image, convertit
en gris, la floue et y applique un flou gaussien à Ensuite, nous stockons
la première image dans la première variable d'image, puis nous calculons la différence entre la première image
et
l'
image actuelle, nous trouvons des contours, puis si ce faible trouve des
contours supérieurs à 10 000, la variable d'état
passe de zéro, elle a
donc commencé à zéro, donc elle change à un ici. Cela signifie que cette liste de statut
vide aura une autre valeur. Mais la première valeur
étant toujours zéro, la liste
commencera par zéro. Tu sais, comme ici. La
toute première valeur est donc zéro. Disons que pour
les dix prochaines images, ce sera zéro,
zéro, zéro, zéro, etc. Et puis si un objet
entre dans le cadre, le statut
passe à un. Nous aurons donc zéro, zéro, zéro, zéro, puis un. Ensuite, ce que nous
faisons ici, c'est comparer les deux derniers
éléments de la liste. OK. Et ici, j'aimerais
imprimer la liste des horaires pour que
vous puissiez voir ce qui se passe. Et je m'attends à une erreur lors la première exécution car nous avons
encore quelque chose à faire, mais voyons voir. Donc, oui, cela indique que
l'index de la liste est hors de portée. Cela signifie donc que Python a du
mal à accéder
au deuxième élément de la liste car la
liste ne contient aucun élément ici, elle n'a
donc aucun élément. Ensuite, nous ajoutons un élément, donc nous ajoutons un statut. Ensuite, Python essaie de
trouver le deuxième élément, mais il n'y en a pas. Nous devons donc faire un truc ici. Nous devons ajouter deux éléments. OK. Disons qu'aucun et aucun. Maintenant, exécutons à nouveau
le script. Il n'y a donc
aucun objet pour le moment. Maintenant qu'un objet apparaît, il repart deux
fois et une fois de plus. Donc trois entrées.
Et j'ai arrêté. Alors laissez-moi passer en revue
cette liste maintenant. Voici notre liste de temps. C'est donc le moment. Voici donc le mois, le jour, et combien de minutes et de secondes, puis de microsecondes. Il s'agit donc de l'heure de début à laquelle un objet est entré dans le
cadre pour la première fois. Et puis c'est le moment où
l'objet sort du cadre. Je suis donc restée là pendant 2 secondes, donc 51 à 53. L'objet suivant entre dans le cadre. Donc, de cette seconde à cela, donc pendant deux autres secondes, puis une troisième
fois 0-1 pendant 1 seconde Nous avons donc trois
entrées dans le cadre. J'espère donc que cela a du sens. C'est une bonne chose, mais il
arrive
parfois que lorsque vous
exécutez le script, alors que vous avez un arrière-plan, l'objet apparaisse, et l'objet
disparaît, s'affiche à nouveau. Et ensuite, si vous quittez le programme à ce
stade, laissez-moi le quitter. Vous verrez que vous
avez une heure de début ici pour la première entrée, puis une heure de fin, puis
une autre heure
de début pour la deuxième entrée. Mais dans ce cas, vous n'
avez pas l'heure de sortie. Vous pouvez donc ajouter l'heure de fin de la sortie
de votre dernier objet, qui se trouve être celle à laquelle
la fenêtre a été fermée. Vous voulez donc vous rendre
ici à la fin, et le script
attend une clé. Donc, si vous appuyez sur Quitter ici, la boucle while sera interrompue. Mais avant cela, vous
voudrez peut-être vérifier le statut. Donc, si le statut en est un, et dans ce cas, vous vous
retrouverez avec ce scénario ici. Donc, si le statut est un, lorsque vous appuyez sur la touche
du clavier, vous souhaitez ajouter un autre
élément à votre liste de temps. Donc, les heures se sont ajoutées à la journée,
c'est maintenant, super. Cela devrait donc fonctionner
différemment maintenant. Exécutons donc le script. Aucun objet. Objet. Aucun objet, objet dans le cadre, quittez. Et maintenant, nous devrions
passer quatre jours ici. Quatre fois, une, deux, trois et quatre. Cela a donc été enregistré dans
cette expression ici. Génial. Et la prochaine chose que nous voulons
faire maintenant est de placer
cette liste dans un cadre de données
Pandas ,
puis dans un fichier CSV. Nous aurons donc une colonne de début
et une colonne de fin. Et dans la colonne de début, nous aurions, par exemple, cette valeur, et dans
la colonne de fin, nous aurions les autres valeurs. Donc celui-ci ici et
le dernier. OK. Donc, tout d'abord, nous avons besoin d' une trame de données vide, la trame de données
Pandas. Nous utiliserons donc des pandas pour créer des
trames de données, bien sûr Permettez-moi donc d'importer des pandas ici. Et disons que le bloc de données
DF est égal à Pandas DataFrame avec des colonnes de début et de fin aussi simplement que cela. Cela créera donc une structure de
trame de données pour nous, qui n'a pas de valeurs, mais qui comporte deux colonnes. Ensuite, la prochaine
chose que vous voulez faire est de sortir de la boucle. Ainsi, une fois que vous avez créé une fois que vous avez généré
votre liste de temps, vous souhaitez
parcourir cette liste,
puis ajouter ces valeurs
dans le cadre de données Pandas Vous avez donc besoin d'une boucle, disons, pour que je sois à portée. Et donc ici, vous devrez
itérer avec un pas de deux. Et vous devriez
itérer autant de fois qu'il y a de
valeurs dans la liste Donc, vous partez de zéro et vous vous retrouvez à combien de valeurs
vous avez dans la liste ? Eh bien, vous pouvez le trouver
en utilisant la méthode de la longueur, donc la longueur est multipliée par
un pas de deux. Génial. Ce sera donc le cas pour
chaque itération, la trame de données solide
DF
sera égale à elle-même. Point ajouter. Vous
mettez donc à jour le bloc de données et vous devez ici
transmettre un dictionnaire. Donc, pour la colonne de début, vous devez saisir des fois
I et pour la colonne de fin. Les clés du dictionnaire
sont donc le début et la fin, et vous devriez ajouter les
fois I plus un Et vous voulez ignorer l'index. Tellement égal à t. Génial. Donc, disons que
pour moi, je suis dans la gamme, disons que nous avons une
liste de six éléments. Nous avons donc trois étoiles
et trois fois. Cela signifierait donc aller de zéro
à six avec un pas de deux. Donc, pour zéro, c'est ce que nous ferions. Nous partirons donc de
zéro dans la boucle, et nous accèderons à l'élément
avec un indice nul en termes de temps, qui se trouve être cet
élément, par exemple. Donc, le premier article. Ensuite, nous ajoutons cet élément à la première ligne de
la colonne de départ Ensuite, nous accédons à l'
élément zéro plus un, qui se trouve être un
élément avec l'index un, qui devrait être cet
élément, donc le deuxième élément. Et nous ajoutons cet élément à la dernière colonne de la même ligne Alors c'est tout. Ensuite, nous passons au point suivant. Donc, cette fois, nous
commencerions par l'index trois, et donc trois ici, ajouterions à la colonne de début,
puis quatre, nous l'ajouterions à la colonne de début à la
colonne de fin, désolé et ainsi de suite. Enfin, nous
aurions une trame de données. Et ce que vous voudrez peut-être
faire alors, c'est au format PDF deux CSV. Disons fois CSV. Nous exportons donc le bloc de
données vers un fichier CSV. Génial. Voyons donc
comment cela va se passer. Il commence à faire très sombre ici. OK. Et encore une fois. Frame, arrête. Et comme vous le voyez, le CSV
a parfois été créé dans mon système de fichiers. Et c'est ainsi que l'époque est arrivée. Je peux également l'ouvrir avec Excel. Voici donc les heures de
début et de fin. Si vous le souhaitez, vous pouvez
les formater dans les cellules ici, et vous pouvez voir les dates maintenant. Génial. Génial. C'est la fin de cette conférence,
et j'espère qu'elle vous a plu. Nous avons maintenant un très bon script, et pour le rendre plus beau, nous voudrions afficher
ces temps sous forme de graphique. C'est ainsi que vous transformez vos
données en informations réelles. Et nous le ferons lors
des prochaines conférences. Mais avant, j'aimerais
vous présenter la bibliothèque Bouquet, qui est une bibliothèque
de
visualisations interactives dans le navigateur Veuillez donc suivre les conférences
dans le bon ordre, et je suis sûr que vous en
apprendrez beaucoup. Je te parlerai plus tard.
124. 123. Introduction à la bibliothèque Bokeh +: Bonjour, et bienvenue dans cette nouvelle
section très excitante, bien sûr. Et dans cette section, donc tout au long
des cours de cette section, vous
apprendrez à générer des visualisations sur le
navigateur avec Python Nous parlons donc de visualisations
interactives, et nous utiliserons la bibliothèque Bouquet
Python pour ce faire Boke est donc une bibliothèque Python,
et elle est assez récente. Et avec Bouque, vous pouvez récupérer des données provenant de
différentes sources de
données, de formats de fichiers de données tels que CSV, liste
Python,
fichiers JSON, etc. Et vous pouvez créer de magnifiques visualisations dans le navigateur. J'ai déjà utilisé
Math Plus Lib et Seaborn. Il y a donc deux autres
bibliothèques Python qui sont utilisées pour effectuer des visualisations
avec Python Mais je dirais que
Boke est plus moderne. Et une fois que je vous l'aurai présenté, je suis sûr que vous l'utiliserez pour vos
projets de visualisation de données. Dans cette section,
je vais donc vous montrer comment créer des graphiques linéaires et des diagrammes dispersion, ainsi que comment combiner différents diagrammes en différents diagrammes en
un seul graphique et des graphiques de
séries chronologiques Et nous allons écrire le code
dans le bloc-notes Jupiter,
anciennement connu sous le nom de bloc-notes iPython Et le bloc-notes Jupiter est comme une combinaison
de console Python Vous pouvez
donc écrire du code interactif, mais vous pouvez également enregistrer le
script que vous écrivez. Le carnet Jupiter
ressemble à ceci. OK. Et je vais vous montrer comment installer le bloc-notes Jupiter
dans la prochaine conférence. Jupiter est donc idéal pour
effectuer des analyses de données et visualisations, du scrapping Web
et d'autres analyses exploratoires Donc je suis sûr que vous allez
l'adorer. Et ici, passons à
la prochaine conférence.
125. 124. Créer votre premier scénario Bokeh: Génial. Vous savez maintenant ce qu' est Boke parce que je l'ai expliqué
dans la conférence précédente Dans cette conférence, je vais vous
montrer comment créer un graphe de livre très basique. Oui, nous allons donc repartir de
zéro et, étape par étape, nous allons améliorer ce graphique. Oui, disons que c'
est votre premier
graphe de livre ou peut-être que vous avez déjà
créé des graphiques de livre. Donc, avant de suivre ce cours, vous savez, déjà quelques points. Je vous suggère tout de même
de commencer par là, car je vais vous montrer la bonne logique pour
créer des graphes étape par étape. Ah, allons-y
et faisons-le. Mm. J'utiliserai parfois bloc-notes Jupiter
pour écrire du code Python, et d'autres fois, j'utiliserai l'éditeur Atom. Le bloc-notes Jupiter
est donc un bon point de
départ, car il nous permettra d'
écrire du code interactif. Nous pouvons simplement écrire une seule ligne de code et voir ce que cela fait. C'est donc idéal pour
commencer avec une bibliothèque afin de
pouvoir explorer la bibliothèque en
dégustant de petits morceaux de code. Et en appuyant sur Shift et en
cliquant avec le bouton droit sur Windows sur le dossier, vous pouvez aller ici et
ouvrir une fenêtre de commande ici, ce qui ouvrira une invite de commande dans
le dossier actuel. Ainsi, sur une Macro Linux, vous pouvez peut-être faire quelque chose
comme ouvrir un terminal ici ou ouvrir
un terminal normalement, puis vous pouvez accéder au
chemin de votre chemin de travail sur CD. Je vais donc écrire le
code dans ce répertoire. Et pour installer Jupiter, vous diriez que PIP installe
Jupiter Notebook Et c'est une
exigence déjà satisfaite car j'ai déjà installé Jupiter Notebook. Si ce n'est pas le cas, vous pouvez
simplement le faire
et, vous savez, il
sera installé pour vous. Et pour démarrer Jupiter Notebook, vous diriez Jupiter
Notebook, juste comme ça. Et cela ouvrira un
bloc-notes Jupiter sur un hôte local. C'est donc comme un bloc-notes
basé sur les services. Et oui, si vous créez maintenant, vous créez un bloc-notes
gratuit en Python. Et nomme-le. Un
graphique de base, juste comme ça. Et dans le dossier de démonstration vous trouverez ce point
graphique de base IPYNB,
qui signifie bloc-notes
IPython, mais maintenant le bloc-notes IPython est renommé Jupiter Notebook Mais l'extension
reste la même. Et vous avez également
ces points de contrôle, qui sont des fichiers automatiquement réduits lorsque Jupiter
enregistre vos sessions Vous devez maintenant garder votre front de
commande ouvert, puis c'est ici
que vous écrivez le code. Vous savez, si vous ne
préférez pas utiliser les livres de Jupiter, vous pouvez utiliser votre éditeur
préféré. Ce serait donc Atom ou Vim ou l'IDE
Python par défaut, et ainsi de suite Cela n'a pas beaucoup d'importance. Et j'utiliserai
des commentaires
pour commenter mon code, ce qui vous aidera à lire et à comprendre mon
code plus facilement parce que, vous savez, j'écrirai ce qui vous aidera à lire
et à comprendre mon
code plus facilement parce que,
vous savez, j'écrirai du code ici et du code
et plus tard comme ça. Et je vais expliquer le code
au fur et à mesure que je le tape. Mais parfois, vous
oubliez ce que j'ai tapé ici et vous avez du mal
à le comprendre, mais si j'ai quelques
commandes ici, disons, pour tracer
les valeurs X et Y. Et si j'écris
ce commentaire ici, Python ne le lira pas sous forme de
code, il l'ignorera donc, mais vous pouvez le lire
et vous supposerez que j'écris ce
commentaire pour le bloc suivant. J'écris donc la commande, je ne laisse aucun espace et j'y
tape le code. Ensuite, je laisse un espace là et j'
y tape un autre code. C'est donc un autre bloc qui n'a rien à voir
avec cette commande. Ce commentaire portera donc sur
ce bloc de code. Parfois, je souhaiterai peut-être
appliquer des commentaires spécifiques
sur des lignes spécifiques. Par exemple, celui-ci ici. Dans ce cas, j'écrirai
la commande juste là. Disons donc pour
les valeurs X ici ou
quelque chose comme ça. Génial. Et le premier commentaire portera
généralement sur le script. Nous allons donc
créer un graphe boe de base. Il s'agira d'un graphique
linéaire. Génial. Et je vais laisser un espace là,
et là je commence le code. Donc, tout d'abord, je vais importer Boke, je l'
expliquerai plus tard, mais Bouquet possède
quelques interfaces Et la première interface
est le traçage de bouquets. C'est ce qu'on appelle l'interface de
traçage Bouquet. Et je passerai en revue
les interfaces plus tard. Pour le moment, concentrons-nous
sur l'apparence d'un graphe et sur le code
pour créer un graphe booger Ainsi, à partir de
l'
importation du tracé de Bouquet , vous importez l'objet figuré, qui est l'objet le plus
important Bouquet car il
contiendra un conteneur
dans lequel
vous ajoutez des points, de Bouquet car il
contiendra un conteneur
dans
lequel
vous ajoutez des points, des lignes, des
étiquettes pour les points, et des notes pour le
tracé, les légendes et tout Vous allez donc tout ajouter
dans cet objet figuré. C'est ça. Et puis
vous devez disposer de quelques outils utiles de
Bokeh issus de l'interface
Booke Dot IO À partir de là, vous souhaitez
importer le fichier de sortie et l'afficher. Oui, c'est essentiellement
ce dont nous avons besoin. Vous verrez ce que tout
cela signifie dans un instant, puis nous devrons
créer des données. Créons-y donc de fausses données. Préparez des données. J'utiliserai des listes. Disons un, deux,
trois, quatre et cinq. C'est donc pour l'axe X. Ainsi, dans le graphique,
ces valeurs
seront mappées le long de l'axe X. Et puis nous avons
l'axe Y. Disons six, sept,
huit, neuf, dix. Notez que ces listes doivent
avoir la même longueur pour pouvoir être tracées dans Bukit Dans le cas contraire, Bouquet
générera une erreur. Je dois dire que vous savez, Bouquet va commencer à
prendre des paires de cette liste. Il faudra donc un et six, et il les cartographiera
le long des axes X et Y. Cela créera donc un point
avec les coordonnées un et six, puis deux et
sept, et ainsi de suite. Je passe par cinq et dix. Ensuite, si vous ajoutez un
numéro de ligne ici, disons sept ou autre,
Python dira :
Oh, je n'ai pas trouvé de paire
pour sept sur l'axe Y. Vous obtenez donc une erreur. Génial. Nous avons donc les données. Préparez le fichier de sortie. C'est donc ici que vous utilisez
la fonction de fichier de sortie. Et là, vous passez le nom du fichier HTML qui
sera créé Vous pouvez donc choisir
tous les noms que vous voulez. Ensuite, la prochaine chose
à faire est de
créer une instance d'
objet figuré. Vous y avez la classe des figurines. Vous l'avez saisi
et vous pouvez l'utiliser maintenant, juste comme ça Je le stocke
dans la variable F. Permettez-moi de commenter ceci.
Créez un objet figuré. Et enfin,
créez un tracé linéaire. Et pour créer
le tracé linéaire référer à l'
objet de figure que vous avez créé, puis vous appliquez
la méthode du trait si vous souhaitez créer une ligne. Et la ligne attend
de vous que vous transmettiez le tableau X avec
les données ainsi que le tableau Y. Je sais donc que tout ce que
je passe ici correspond aux exigences minimales
pour construire un terrain. Mais vous ajouterez
de nombreuses
fonctionnalités plus tard
dans le code afin
que ajouterez
de nombreuses
fonctionnalités plus tard
dans le code afin nous enrichissions nos diagrammes
avec des fonctionnalités
telles que des légendes, des étiquettes des couleurs, de
la transparence, etc. Mais c'est l'
épine dorsale, pour ainsi dire. Et une fois que vous avez
créé une ligne, il ne vous
reste plus qu'à utiliser la méthode show pour montrer
votre objet figuré. Et pour exécuter cela dans Jupiter, vous pouvez simplement appuyer sur
Ctrl et Entrée. Attends une seconde. Et j'
ai reçu une erreur. Oh, en d'autres termes, cela devrait être un fichier
de sortie. Désolée. Exécutez à nouveau, et
voici le graphique linéaire. Quoi qu'il en soit, si vous regardez cela, vous voyez que le premier point de la ligne se trouve aux coordonnées 1 Voici donc l'axe X, un pour le X six pour le Y. Si vous regardez, voici un et six, puis vous avez
deux et sept et ainsi de suite un jusqu'au dernier point, soit cinq à dix Cinq et dix. Ouais. C'est donc un graphique. Et ce n'est pas une image graphique. Comme vous pouvez le constater, je peux
déplacer les choses et vous avez également
quelques outils ici. C'est ce qu'on appelle des outils. Et ce que vous pouvez en
faire, c'est, disons, qu'il s'agit d'un stylo, et que vous voyez cette ligne bleue
verticale ici, cela signifie
que l'
outil Stylo est déjà activé. Et si je déplace mon
curseur comme ça, je dessinerai le contour du graphique. Si vous cliquez, par
exemple, sur le zoom à molette, vous verrez que le zoom panoramique et le zoom à molette sont désormais
activés, et je peux utiliser la molette de
ma souris pour zoomer en avant et en arrière. Maintenant, souvenez-vous que je vous l'ai dit, bouquet produit
des graphiques interactifs. Alors voilà. Cependant, il ne s'agit que
d'une fonctionnalité
d'interactivité de base car plus tard, comme je vous l'ai dit plus tôt, j'ajouterai ici des
widgets qui interagiront de manière très
puissante avec un graphique Quoi qu'il en soit, en gros, vous avez
également cette case Zoom dans laquelle vous pouvez zoomer sur une
certaine zone de votre graphique. Vous avez également
rétabli cette valeur, qui rétablit en fait la vue par défaut du
graphique Et ce qui reste, c'est ce bouton d'aide, qui vous amène à la documentation de
Bouquet, et je passerai en revue la documentation de
Bouquet plus tard, qui
vous sera très utile pour obtenir de l'aide. Et c'est aussi un
bouton sécurisé que vous pouvez utiliser pour enregistrer vos tracés
dans des graphiques PNG, des images. Donc, si vous souhaitez convertir votre graphique en images,
vous pouvez utiliser ce bouton. Et oui, il s'agit de
créer un graphique de base, et j'aimerais vous faire quelques exercices
pratiques, vous savez. Vous savez, ici j'ai
utilisé un graphique linéaire, mais vous pouvez utiliser d'autres
types de glyphes C'est ainsi que ces
géométries sont appelées dans Boha et vous pouvez vous faire une idée
des glyphes que vous pouvez utiliser, vous pouvez appliquer à votre
figure en faisant D et F, qui sont l'instance
d'objet de votre Vous allez voir ici,
trouvons la ligne. Voici la ligne. C'est donc
celui que tu as utilisé. Mais j'aimerais vous demander de créer vos propres graphiques
en utilisant un triangle d'
abord, un cercle d'Alana Ce serait donc très simple. Au lieu de faire la queue, passez simplement ces informations ici et
voyez ce que vous obtenez. Mais essayez de créer le graphique à partir de zéro
au lieu de copier le mien. Et permettez-moi de commenter ceci.
J'ai oublié de commenter. Vous pouvez également jouer avec d'
autres données pour
voir comment cela se passe. Et oui, cela vous
permettra comprendre comment créer une parcelle de bouquet
très basique. Dans la prochaine conférence, je vais vous montrer comment utiliser
des données plus réelles. Nous l'utilisons donc ici, mais
dans la prochaine conférence, nous utiliserons des fichiers CSV. traçant à partir d'un fichier CSV, nous allons créer le même
graphique. On se voit là-bas.
126. 125. Utiliser Bokeh avec les pandas +: Bien. Nous avons pu créer un graphique linéaire à
l'aide de ce code, et j'espère que vous avez
joué un peu avec ce code
et que vous vous êtes familiarisé avec celui-ci. Maintenant, vous voyez ici que nous
avons deux listes en sortie. Dans cette conférence, je vais vous
apprendre à
utiliser des fichiers CSV pour alimenter
vos graphiques de boket Et je vais utiliser ce
code comme référence. Donc je vais juste, tu sais, tu dois appuyer sur Escape. Lorsque vous appuyez sur
Escape, vous pouvez appliquer des
raccourcis clavier à vos cellules. Et vous pouvez voir une liste de raccourcis ici. Et par exemple,
ce que je veux faire maintenant, c'est
copier une cellule avec C, puis je veux
coller cette cellule ci-dessous avec
V. Mais tout d'abord, vous devez être en mode commande. Donc, pour passer en mode commande, vous devez appuyer sur Escape, comme le dit le script d'aide. Et oui, assurez-vous de vous échapper
, puis C et ensuite, et vous aurez une autre
cellule ici. De plus, j'aimerais
supprimer cet en-tête
ici et passer à view, à Togle header puis à
togletolBR J'ai donc plus d'
espace pour toi ici. C'est donc le code avec lequel
je vais travailler. Entrez, et oui, je vais
travailler sur ce code pour le moment. Et laisse-moi y aller. Il s'agit d'un répertoire de travail. Je vais simplement
créer un fichier CSV. Disons CSV point point. Oui, et je vais juste le
modifier avec Nopats. Vous pouvez utiliser Excel si vous le souhaitez. Je vais donc avoir juste
deux colonnes ici. C'est l'en-tête,
puis un pour X, six, pour Y, deux et sept,
trois et huit, quatre
et neuf, et un de plus, dix. Sauvegardez ça. Ferme-le. Notez donc que le point de
données CSV se trouve dans le
même répertoire point graphique
de base IPYNB
et accédez à votre script Maintenant, nous importons Boca ici, mais je vais également importer
des panneaux Parlons donc de cela
ici et des pandas. Permettez-moi d'utiliser la minuscule
B et d'importer des pandas. Oui, préparez quelques données. Hmm. Donc, je suppose que
tu connais les pandas Donc, en gros, le
bloc de données est l'objet principal, et vous souhaitez créer
un dataframe à partir de
CSV à points de données CSV, juste comme ça Ensuite, créons
deux variables ici. La variable X
sera donc égale à DF. Crochets, colonne X. Ne confondez donc pas la
colonne X avec la variable X. Il se trouve qu'ils portent
le même nom. OK. Et aussi le réseau Y, le F. Y ? OK. Ouais. Cela devrait suffire. Permettez-moi de le renommer.
À partir d'un fichier CSV. Exécuter. Et vous obtenez exactement
la même ligne que nous l'avons fait plus tôt avec
la simple liste ici. Et, ah, c'est
essentiellement ainsi que vous alimentez tracés de
vos bookmakers avec les tableaux
DataFrame de Panda Encore une fois, euh, juste pour clarifier
les choses, il
s'agit du cadre de données. Il comporte deux colonnes, et vous
avez alors la colonne X. Cela a donc été stocké. En fait, c'est la
colonne d'index, celle-ci ici. Il s'agit des
données réelles de cette colonne. Et vous y avez également
la colonne Y. Donc, c'est ça. Comme vous le voyez, Bouquet est capable de
lire des playlists, donc Pythléis comme celle-ci ici, et aussi
des blocs de données ou une série C'est ce qu'on appelle un sérieux. Tu peux vérifier ça.
Oui, c'est sérieux. Et oui, c'est ça.
DD pour supprimer une cellule. Et oui, nous allons passer à d'autres
conférences, à bientôt.
127. 126. Créer une intrigue de série temporelle +: C'est bon. Dans cette conférence, vous allez apprendre à créer des graphiques de séries
chronologiques. Nous parlons de données
où l'un des axes. Normalement, l'axe X est
constitué de dates ou d'heures. Supposons que nous ayons
des observations de température pour plusieurs dates et que nous
devions tracer ces valeurs le long des axes X et Y. J'ai ici quelques
données intéressantes que nous allons prendre à
partir de ce lien. Il s'agit donc d'un fichier CSE. Vous n'êtes pas obligé de télécharger
le fichier CSV, car nous le transmettrons directement sous
forme de lien vers
la méthode CSV. Nous avons donc ici
une colonne de date et
d'autres attributs. Vous souhaiterez donc peut-être tracer
les données le long de l'axe X. Ensuite, dans l'axe Y, vous souhaitez afficher l'une
de ces fonctionnalités. Disons cet attribut, fermez. Je vais donc
fermer ça. Je n'ai pas besoin de ce
fichier car je vais utiliser un lien direct et
me permettre de créer une nouvelle cellule. Je vais donc utiliser, à nouveau, l'interface de
traçage du bouquet ici Et importez également des pandas. L'essentiel ici est que nous utiliserons une trame de données
Pandas, puis nous analyserons cette colonne de
données temporelles sous forme de dates afin que
Python les lise sous forme dates et puisse réellement les
tracer sur l'axe X. Ensuite, nous utiliserons un glyphe
linéaire pour tracer ces données. Donc, un glyphe linéaire
serait, vous savez,
vous pouvez utiliser des cercles, des triangles,
etc., mais vous
pouvez également utiliser des lignes vous pouvez utiliser des cercles, des triangles, etc., mais vous
pouvez également Vous devez donc passer la ligne ici, mais la taille n'a
aucun sens, car vous voudrez peut-être passer la ligne pour la ligne. Donc, pas de taille, mais de ligne avec. Et, vous savez, si vous l'exécutez , vous ne verrez plus de
cercles. Ce n'est
donc plus un diagramme de dispersion maintenant, mais un graphique linéaire Nous allons donc utiliser le même concept pour créer ce
graphique horaire journalier, un graphique de série chronologique. La première chose à faire est donc charger les données CSV dans Python. Donc, le panneau lit le CSV, et vous pouvez en fait transmettre le lien directement
à la méthode CSV. Alors, est-ce pratique ? Ensuite, vous voulez transmettre le paramètre d'
analyse des dates, année, et vous voulez spécifier le nom de la colonne
où se trouvent ces dates Et le nom de cette
colonne était date. Donc, si vous vous souvenez
du fichier CSV que j'ai ouvert plus tôt,
c'était la date. Ainsi, une fois que vous avez chargé
l'objet du bloc de données, vous souhaitez créer
un objet de figure. Disons que la largeur est égale
à 500 et battons-nous. Disons 500 pour l'instant, puis nous vérifierons comment cela se passe et nous pourrons le modifier plus tard. Nous avons donc ici le paramètre
de type d'axe X. Cela devrait donc faire en sorte que
votre axe, votre axe X, soit spatial afin qu'il
puisse lire les types de données de date et d'heure. Donc, pour déclarer
que vous avez daytis, vous devez y passer un
argument daytis sous forme de chaîne Alors c'est tout.
Ensuite, ce que vous voulez faire, c'est appliquer l'
objet linéaire qui s'y trouve. Donc, comme cela maintenant, vous devez passer l'
axe X et l'axe Y. L'axe X ici
devrait donc être la date DF. Et l'autre axe est, disons proche, donc
la colonne fermée. Et rendons la ligne
orange. Et quoi d'autre ? Peut-être une transparence de 0,5. Et spécifiez où vous
souhaitez l'enregistrer. Alors sous quel nom HTML
Time series dot HTML. Et enfin, montrez l'
intrigue. Et voyons voir. Et quelque chose ne fonctionne pas, donc Python n'est pas en
mesure d'en extraire les données. Oh, je dois transmettre les données
ici sous forme de liste en fait. Donc oui, ça a l'air mieux, mais ça a aussi l'air
un peu serré. Donc, ce que vous pouvez faire ici, c'est
changer ce paramètre en 250, par exemple, et vous
obtiendrez un meilleur graphique. Maintenant, si vous souhaitez l'étendre à
l' ensemble de la page, vous pouvez y faire
quelque chose. Vous pouvez réellement passer
le responsive et définir comme vrai. Eh bien, voyons voir. Vous obtenez donc un graphique plus grand. Et bien sûr, vous pouvez
zoomer pour voir certains détails. Donc, pour le 8 mai, vous avez une valeur d'une unité. Tu as compris l'idée. C'est ainsi que s'
achève cette conférence, et je vous verrai
dans la prochaine.
128. 127. Plus d'exemples de visualisation avec Bokeh: Très bien, résumons maintenant. Nous avons donc pu
générer des graphiques, et vous avez vu que jusqu'à ce que la loi soit adoptée,
nous produisions des graphes uniques. Ainsi, par exemple, ici, vous verrez un graphique linéaire. Maintenant, si vous voulez combiner
plusieurs glyphes dans un seul diagramme, ce serait très simple Supposons que vous
ayez deux complots. Vous y ajouterez un diagramme de
dispersion. Vous devez donc
ajouter un glyphe circulaire. Donc, juste en dessous de ce glyphe linéaire ou au-dessus, cela n'a pas Donc, on fait des cercles avec ces coordonnées
ou on peut les changer. Doublons donc l'axe X. Huit fois deux pour moi dans cette
liste, qui se termine ici. Et puis cela
devrait être la taille, disons huit et olive. C'est ainsi que vous pouvez obtenir
plusieurs glyphes dans un seul diagramme. Cela a été très facile.
Je crois donc que je vous
donne une bonne introduction
à la bibliothèque Bouquet. Et je crois que vous
voyez son potentiel C'est
donc formidable d'utiliser
Bouquet pour générer
des visualisations. Maintenant, si vous voulez
approfondir le bouquet que vous devrez peut-être
tracer différents types de graphiques,
dirigez-vous d'abord
vers cette ressource. Voici donc la documentation,
la documentation du bouquet. Et il s'agit de
tracer avec des glyphes. Vous avez donc ici
plusieurs exemples. Nous utilisons celui-ci en fait et
d'autres aussi, des lignes. Et vous pouvez également tracer des patchs. Donc, en gros, vous passez les
coordonnées de chacun des points
du polygone ici et Bouquet y dessinera
le polygone Ce sont donc les éléments de base. Et là, j'aimerais m'
arrêter un peu. C'est ce qu'on appelle
un diagramme à quadrats, en fait, celui-ci ici Ainsi, au lieu de passer un cercle de lignes,
vous passerez un quad. Et cela consiste
en un sommet. Donc, la limite supérieure
de votre quadrant. Ainsi, par exemple, le
premier quadront a une bordure supérieure de deux
et une bordure inférieure d'un C'est donc une frontière entre un et deux. Et puis une gauche
serait un et une droite, 1,2, donc une gauche et 1,2 droite. Et puis vous avez
le quadrant suivant, qui est également celui-ci avec
ses coordonnées,
et voici donc les couleurs afin que vous
puissiez utiliser des
codes de couleur CSS si vous le souhaitez, en
plus d'utiliser des chaînes de couleurs comme le rouge, l'orange
et le jaune, etc. Donc, si j'ai arrêté
cette intrigue, c'est parce que nous allons
l'utiliser pour visualiser les
heures de notre programme vidéo. Il s'agit des moments où
un objet entre dans l'image vidéo et où l'objet sort de
l'image vidéo. Ce serait formidable si vous
commenciez à réfléchir maintenant à la manière dont vous allez
utiliser le fichier CS que nous avons
généré dans le programme vidéo plus tôt et tracer ce fichier dans un graphique
similaire à celui-ci. Il y a quelques
astuces, et je
ne m' attends pas à ce que vous résolviez
complètement le problème, mais il est bon d'
y réfléchir. Vous avez également cette galerie
ici, la galerie Bouquet. Nous avons ici de
belles parcelles. Vous avez l'histogramme. Si vous cliquez sur l'un d'
entre eux, par exemple, je vais
créer cette carte. Vous pouvez donc simplement copier ce code, le coller dans
votre script et l'exécuter, et vous obtiendrez la même carte. C'est ce que je voulais vous
apprendre à propos de Bouquet, et nous l'
utiliserons plus tard, comme je l'ai dit, pour visualiser ces moments
où un objet se déplace dans notre image vidéo devant notre webcam. Je te
parlerai donc plus tard.
129. 128. Tracer les intervalles de temps à partir des données générées par l'application Webcam: Bonjour et bienvenue à
cette nouvelle conférence. Donc, ce que je vais faire
ici, c'est apporter la touche finale à notre programme de détection de
mouvements. Plus précisément, je
construirai un tracé à l'aide la bibliothèque Bouquet
où je visualiserai le moment où l'
objet entre et sort de l'image, de
l'image vidéo Et le résultat final
ressemblera à ceci. Nous avons donc ici
un diagramme avec un axe X. Ce qui représente le jour, alors que l'axe Y
n'a aucun sens, en fait Donc, juste une extension verticale
des barres qui se trouve ici. Donc, disons que
j'ai démarré la caméra à cette
date, donc le 17 mars. Voici donc cette première
capture, vous pouvez voir qu'elle a commencé à cette date et qu'elle s'est terminée au
bout de 4 secondes. Cet objet est donc entré dans l'
image à la date de début et y est resté pendant 4
secondes
, puis est sorti de l'image vidéo Donc, de même, nous avons
cet autre objet. Donc toujours le 17 mars. Et puis il y en
a une autre ici. Et puis ça commence
l'autre jour. Donc le 18 mars, et voici les heures
entre ces deux jours. Donc 16 h, 8 h, 12, 16 h et tente. Et vous pouvez également voir
que j'ai ajouté des fonctionnalités de
survol ici, de sorte que lorsque je passe la
souris sur ces barres, j'obtiens ces informations Et vous pouvez également zoomer ici. Donc, si vous souhaitez plus
d'informations à ce sujet, vous pouvez les
voir clairement ici. Voilà donc le produit. Maintenant, le script
produit actuellement l'heure de début et l'
heure de fin
de l' objet entrant dans
le cadre dans un fichier CSV. Plus précisément, le programme déclenche
la
vidéo à partir de la webcam. Et puis vous y avez
des objets. Appuyez sur le bouton pour arrêter de fumer. Et donc ce que vous obtenez,
ce sont les fois le CSV. Où chaque ligne représente l'heure de
début, puis l'heure. OK, tu le sais déjà. Donc, pour le moment, nous avons également ici
une liste avec l'état
de la trame en cours. Il y a donc,
disons, 100 éléments, ce qui signifie que nous avions 100 images
dans cette vidéo de sept secondes. Maintenant, la première chose que
vous voudrez peut-être faire est d'apporter une petite
amélioration très rapidement. Cette liste, si vous avez
une webcam, capture une longue vidéo. Donc, si vous
l'exécutez pendant de nombreuses heures, cette liste peut devenir trop longue Pour éviter les problèmes de mémoire, vous pouvez vous rendre ici. Vous vérifiez donc ici
le dernier élément de la liste et l'élément
précédant le dernier élément. Donc, les deux derniers articles, cela signifie
que nous n'avons pas
besoin de ces autres articles. Nous n'avons donc besoin de conserver que
deux objets perdus. Cela signifie que juste après avoir
ajouté le nouveau statut ici, nous disons que la liste des statuts
est égale à la liste des statuts, mais avec seulement les deux
derniers éléments Donc, si je l'exécute maintenant, je n'obtiendrai que
les deux derniers statuts de l'image vidéo
imprimés sous forme de liste La liste est donc imprimée ici. C'est donc une amélioration
pour la mémoire. Maintenant, comment contourner la
construction d'un terrain avec un bouquet ? Nous devons donc d'abord réfléchir à la structure de nos scripts. Donc, cet
objet de traçage que nous
allons créer à l'aide d'un quadrant s'attend à ce
qu'une
trame de données soit envoyée en entrée Nous avons donc en fait
une trame de données ici. Et nous envoyons
le bloc de données au même moment que le fichier CSV. Ce que je vais faire ici, c'est
créer un autre fichier, script
Python, par exemple en
traçant le point pi Et c'est ici que j'
écrirai le script, le code pour tracer les données Dans ce cas,
cela signifie que nous devons récupérer la trame de données de ce programme de
détection de mouvement dans ce script Donc, ce que vous pouvez faire, c'est
dire à partir mouvement, d'un détecteur, d'importer un PDF. Cela rendra donc disponible la trame de données DF générée dans ce programme de détection de
mouvement, qui signifie que lorsque vous
voudrez exécuter le programme ultérieurement, vous exécuterez le point de
traçage pi avec Python Ainsi, lorsque vous
exécutez Plotin point pi, tracé du point pi nécessitera
l'exécution de ce script de
détection de mouvement point py Ainsi, la vidéo d'une webcam
démarrera , puis lorsque
ces boucles se termineront, cette trame de données
sera générée. Cela signifie qu'après cela, le script, le code
du point de traçage pi
sera exécuté Ici, vous allez
obtenir le bloc de données tracer
et ainsi de suite J'espère que c'est clair. Allons-y maintenant et importons l'interface de traçage de Boke Ainsi, à partir de BokePloting, l'
intégralité de l'interface de traçage ne
sera pas importée Nous n'avons besoin que de l'affichage des
figures et du fichier de sortie. Restons serrés. Et puis allons-y et
créons l'objet figuré. Et X est le type qui sera
de type date et heure. Fixons une hauteur de
100 et une largeur de 500. Et rendons-le réactif. Titre du graphe : graphe de
mouvement. OK. Donc, une fois que nous avons une figure, nous voulons tracer un
glyphe dans cette Ce glyphe, dans ce cas, serait un quadrant, donc un quadrant Un quadrant serait donc plus approprié pour y tracer ces intervalles de
temps L'astuce pour avoir
ce quadruple glyphe pour
visualiser votre date et
vos heures le long de cet axe X
est donc ce quadruple glyphe pour
visualiser votre date et
vos de passer les paramètres de gauche à droite, bas en bas et de haut Donc, pour la gauche, vous devriez dépasser l'heure de début,
donc
à gauche de la boîte de
cases que vous voyez ici. La bordure gauche serait donc l'heure de début tandis que
la bordure droite. DF serait donc la fin des temps. Voici donc notre CSV, qui n'est pas celui que nous utilisons, mais il s'agit d'une
structure des données. heure de début est donc sur la gauche, puis l'heure de fin bordant la droite du rectangle
du quadrant Et puis voici une astuce
que nous pouvons faire pour le bas. Nous voudrions conserver une valeur fixe. Donc zéro pour chaque quadrant, puis un pour chaque
quadrant également C'est ça. La couleur n'
est pas un problème. Disons vert. Et j'
aimerais essayer ça pour le moment. Je vais donc mettre un fichier. Ce serait du Graph Dot HTML. Montrez la figure Pi. Et voyons ce qui
va se passer jusqu'ici. Donc, Python, nous ne voulons pas
exécuter le détecteur de mouvement maintenant, mais nous voulons exécuter le
tracé de ce Pi C'est donc dans notre script
principal que nous commençons. Et j'ai une
stupide erreur
de syntaxe dans Book a
plotting figure Je parie que vous saviez que j'ai oublié
le mot clé import ici Donc, à partir de BokePloting,
importez la figure, affichez le fichier, enregistrez et réessayez Et voici l'objet webca. Object à nouveau. Une autre fois. Arrêter. Et voyons
ce qui va se passer maintenant. Et encore une
erreur, responsive. Bien. Je suis désolée pour ça. Essaie à nouveau. Premier objet, deuxième objet
là, et encore un ? Arrêter. Et nous devrions
voir le graphique. Ouais. Oui, ça a l'air bien. Je peux donc voir ici et
vous pouvez également remarquer que nous avons une granularité assez
inutile ici Nous n'avons donc pas besoin de tous
les autocollants ici. De plus, vous pouvez voir ici
que c'est 19 secondes, ce qui signifie que 19
secondes se sont écoulées après la dernière minute. Donc, si c'était, disons, 15 minutes et 19 secondes. Donc 20 secondes sur
15 minutes et ainsi de suite. Ainsi, vous ne pouvez pas vraiment avoir une
vue d'ensemble en seulement 10 secondes de vidéo, mais aussi pour la rendre
plus informative, j'ajouterais un outil de survol à cette barre. Ainsi, lorsque je passe
la souris ici, comme vous le savez,
vous devriez voir les heures de début et de
fin afin que vous puissiez voir le temps complet qui
s'y trouve si les étiquettes ne
suffisent pas Mais d'abord, retirons
les autocollants ici. Nous revenons donc au script
et laissez-moi le noter. Pour ce faire, nous
devons modifier l'objet de la
figure, donc la variable P. Nous travaillons donc sur
l'axe Y, donc Yaxs. Nous accédons donc à l'
objet de l'axe Y de l'objet de la figure, puis à la couleur de la coche mineure, et nous voulons lui attribuer la valeur none. Donc ça marche ici. Vous pouvez également voir que
nous avons également une grille. Nous ne voulons donc pas de ces lignes
intermédiaires ici, et nous pouvons le faire en
accédant à l'objet de la grille, qui est une liste Vous devez
donc accéder au
premier élément de la liste. Il y a donc une sacrée astuce,
mais il faut faire
la paix avec ça. Donc, le ticker indique « souhaité ». Nombre de tiques. C'est donc la méthode
et définissez-la sur un. Voyons donc comment le graphique
va changer cette fois-ci. Et c'est une bonne idée de donner autre nom
au graphe afin de
pouvoir comparer les deux graphes. Donc, tracez un graphique pour cela. Et voyons voir. Ici. Et arrête. Et j'ai un attribut de couleur
secondaire pour les tiques. J'ai tendance à mal le dire. bien, c'est que Bouquet gère assez bien les erreurs Il s'agit
donc d'attributs similaires
ou d'une couleur de ligne de coche mineure. Il est donc capable de lire
ce que vous y entrez et il vous
suggère ce que vous devez saisir
si peu de couleur de ligne. Nous avons donc une ligne ici. Alors réessayez. Voyons voir, cette fois,
ce que nous allons obtenir. Alors maintenant, ça a l'air plus propre,
comme vous pouvez le voir. Voici notre graphique précédent. C'est le nouveau, nous n'avons
donc pas les quadrillages horizontaux
et les ticks ici. Et j'ai pensé à arrêter
cette conférence à ce moment-là. l'autre cours, je vais vous montrer comment
ajouter ces
fonctionnalités de survol à votre graphique Je vous parlerai donc
lors de la prochaine conférence.
130. 129. Implémentation d'une fonction de survol permanent: Génial. Nous avons un
graphique visualisant les intervalles de temps entre lesquels
l' objet est entré dans
l'image vidéo. Maintenant, modifions-le notre code afin
d'ajouter une fenêtre Une fenêtre apparaîtra
ici lorsque l'utilisateur
passe la souris sur
ces quadrants C'est ce que nous allons faire. Et l'outil Boke permettant d'implémenter la fonctionnalité Hover s'
appelle l'outil Hover Et cela est accessible depuis l'
interface de niveau inférieur appelée modèles, donc modèles boket point Vous souhaitez donc importer
l'outil Hover. Voyons maintenant comment nous allons utiliser dans notre script. Et en gros, il s'agit
d'une méthode qui attend de vous des
tableaux contenant des données afin que la méthode de l'outil Hover les
affiche lorsque l'utilisateur
passe la souris
sur Donc, si le curseur se trouve sur
ce quadrant en particulier, disons que les données
de ce quadrant seront affichées dans
la fenêtre contextuelle Donc, une fois
que vous avez
créé votre figure, vous voulez créer
un objet survolant, qui sera équivalent
à l'outil Hover contient un
paramètre à deux pointes, et celui-ci obtiendra une liste d'
arguments de tuples, et dans chaque tuple, vous souhaitez spécifier les
lignes de la fenêtre contextuelle Supposons donc que dans la première
ligne de votre fenêtre contextuelle, vous souhaitiez avoir
une chaîne de départ, et à côté de celle-ci, vous souhaitiez avoir le
tableau contenant vos données. Il y a ce
décorateur spatial ici. Dans notre cas, il s'agirait donc de la colonne
de départ du bloc de données. Nous voulons donc l'heure de début, puis l'heure également. Donc pour la chaîne et
pour le nom d'une colonne. Donc ça devrait presque suffire. Mais nous devons ajouter cet outil
en utilisant la méthode at tools. Donc, l'objet du
survol doit être ajouté
aux menus des outils Cela devrait donc être un
point. Et c'est tout. Et nous allons
devoir en ajouter d'autres ici, mais voyons ce que
nous en sommes. Python trace donc le point py. Voici un objet, un autre
et un troisième, et quittez. Alors oui, voici un graphique, et nous
y sommes presque, mais pas encore. Comme vous le voyez, pour une raison quelconque, Python a du mal à récupérer les valeurs des colonnes de
début et de fin Et vous remarquerez également que nous avons deux colonnes pour chacune
de ces lignes ici. La première chose
à faire est donc de supprimer cette colonne. Vous n'en avez pas besoin
car Bouquet l'ajoute par défaut. Alors c'est tout. Et maintenant, pour résoudre
l'autre problème, le principal problème
des points d'interrogation consiste à ajouter la méthode de source de
données par colonne. Ce qui provient de l'interface de bas niveau
des modèles réservés. source de données en colonnes est donc un moyen standardisé de
fournir des données à un graphique comptable. Donc, si vous avez des blocs de données, des listes ou d'autres objets, pour certaines fonctions
du livre, vous
devez les convertir en objet de source de données de
colonne. Ce qui est en fait très simple. Et laissez-moi le faire ici. Nous prenons donc le bloc de données ici, puis disons une source de données de
colonne, CDS, qui serait égale
à une source de données de colonne. Donc, les méthodes et les données que
vous souhaitez lui transmettre. Nous avons donc un
bloc de données dans ce cas. Une fois que vous avez fait cela,
vous devez ajuster ici, et vous devez ajuster ici, non l'objet de la figure, car nous ne transmettons aucune donnée ici. Nous construisons simplement l'
environnement de l'intrigue, mais vous devez modifier
le quad. Méthode. Plus précisément, vous souhaitez
transmettre le paramètre source ici, qui doit être égal à l'objet de source de données de
colonne. Donc CDS dans notre cas,
celui-ci ici. Vous dites donc à
Bocket d'utiliser ces données, et vous n'avez pas besoin de
pointer vers le bloc de données Il vous suffit donc d'y entrer les noms
de vos colonnes. Voyons donc ce que
nous avons cette fois. Object, un autre démissionne. Voici un graphique. Et
oui, on y est presque. Mais le problème, c'est cette fois, nous n'obtenons pas les jours dans le bon format. La raison en est
la méthode Hotol. Alors voilà, nous sommes là. La méthode Hovertol
ne permet pas de
récupérer les types de données diurnes. Mais il n'y a pas de quoi s'
inquiéter , car ce que
nous pouvons faire, c'est convertir les heures de données en
chaînes dans le bloc de données. Ainsi, avant de passer le bloc de données à la méthode objet de la source de
données en colonne, nous convertissons les colonnes de début et de fin en types de données de
chaîne Vous savez donc déjà comment
travailler avec daytis. Dans ce cas, nous allons donc effectuer
un formatage diurne. Nous pourrions donc en créer une
autre, donc une nouvelle colonne, disons, une chaîne de début. Donc, la version sous forme
de chaîne de la colonne de départ, qui doit être égale à
la colonne de départ existante. Dot DT, qui vous permet d'effectuer le formatage
diurne et le STR f time. Et voici maintenant comment définir
la date à afficher. Vous devriez donc
afficher l'année d'abord, puis le mois, un tiret et le jour suivant, et peut-être un espace,
une heure, des minutes et des secondes. Il en va de même
pour la dernière colonne. Donc string, et ici,
et pareil ici. Et comme vous pouvez le supposer maintenant, nous devons refléter
ces changements ici. Cela devrait donc être la chaîne de début et
la chaîne de fin. Nous affichons donc
maintenant
ces chaînes dans la fenêtre contextuelle. Et voyons comment
cela se passe cette fois. Le premier objet y passe, second, le dernier
et un autre. Démissionner. Et nous avons un problème
ici, je suppose. Je n'ai pas changé les
valeurs ici. J'ai donc fait complètement
la mauvaise chose. Je n'aurais pas dû changer les
jours dans cet objet du quadrant car il s'agit des dates et des heures car nous avons défini
l'axe jour ici Donc, ce jour express l'est. Donc, ici devrait commencer la colonne de début d'origine
et ici la colonne de fin. Donc, par erreur, j'ai mis
ces valeurs là-dedans. Commencez donc la chaîne ici
et la chaîne ici. Cela devrait donc suffire cette
fois. Vérifions-le. Tout semble
bon. Et voyons voir. Allez-y. Oui, nous avons
pu récupérer les données. Voyons voir. Oui,
ça a l'air bien. Alors maintenant, je pense que ce
graphique est tout à fait lisible, et je pense que vous êtes capable d'
en
extraire certaines informations. Ainsi, vous pouvez voir
combien de temps un objet est resté dans l'image vidéo et quand vous l'avez démarrée et
quand il en est sorti Et j'espère que
cela vous sera utile parfois. Comme je l'ai déjà dit, vous pouvez
utiliser un serveur à tarte aux framboises. Nous n'avons donc qu'un petit ordinateur et hébergeons cette application
sur ce serveur. Et bien sûr, vous pouvez
construire et bien sûr monter une caméra
sur ce serveur et
lui faire capturer
des vidéos selon vos besoins. Plus important encore, j'espère que vous avez tiré des leçons de cette activité d'
entraînement, et je sais que c'était
beaucoup à consommer. Mais si vous avez
des questions, je serais heureuse d'y répondre. N'hésitez donc pas à
les demander sur le forum de discussion. Et je vous parlerai plus tard lors des prochaines
conférences. On se voit.
131. 130. App 4 partie 1 - Analyse et visualisations de données avec Pandas et Matplotlib +++: Bonjour et bienvenue dans l'un des projets
les plus importants du cours,
le projet d'analyse et de
visualisation des données. Comme vous le savez peut-être,
Python est sans aucun doute le meilleur
langage de programmation pour l' analyse et la visualisation des
données. Python a réussi à dépasser les langages utilisés dans l'analyse de
données tels que R, et le secret de Python réside une grande variété de bibliothèques que vous
pouvez utiliser avec Python Cela signifie que vous pouvez combiner vos rapports d'analyse de données et les
graphiques que vous créez avec Python avec d'autres bibliothèques
Python pour des applications
complètes telles que applications
Web ou même des applications de bureau, automatiser des choses, etc. Python est donc certainement le bon outil à utiliser pour
l' analyse de données.
C'est très puissant. Maintenant, dans cette section,
je ne vais pas simplement vous montrer le code qui effectue telle ou telle
opération,
mais je vais également vous montrer la
logique qui sous-tend l'analyse des données, ce que vous devez faire lorsque vous
avez un projet d'analyse de données. Comme j'ai un diplôme en analyse de
données géospatiales, je vais
donc vous montrer une partie de
mon expertise dans le Je vais vous fournir un ensemble
de données de 45 000 enregistrements, et nous allons transformer
ces données en informations C'est en cela que consistent l'analyse
et la visualisation à
transformer les données en informations. Par exemple, nous allons
répondre à des questions telles que quel est le jour de la semaine
où les gens sont les plus heureux ? Et nous allons utiliser
nos données pour cela. Les données ne sont que des données, mais connaître le jour le plus heureux de la semaine, c'
est Maintenant, une partie importante de cette section est la partie
visualisation des données. Permettez-moi donc de vous montrer certaines
des intrigues que nous allons
créer dans cette série de vidéos, afin de
vous inciter, de vous motiver
à regarder cette
série de vidéos. Tous ces graphiques
sont interactifs. Donc, juste pour vous donner une idée quoi ressembleront ces graphiques, voici quelques diagrammes
que nous allons créer. Celui-ci montre la note
moyenne quotidienne, donc la date est sur l'axe X, et la note
moyenne sur l'axe Y. Ensuite, nous allons créer des
diagrammes à secteurs comme celui-ci. Et aussi d'autres
types de graphiques intéressants. En fait, je vais
vous montrer comment créer n'importe quel type de graphique adapté à
vos données, à vos besoins. Et cela va être
assez facile, en fait, parce que je vais vous expliquer le truc, la
logique qui sous-tend tout cela. Et la bonne nouvelle
avec ces graphiques c'est que vous n'
avez pas à effectuer beaucoup de configuration, car ils sont magnifiques dès le départ, et cela est rendu possible grâce à
la bibliothèque que
nous allons utiliser. Alors préparez-vous, et je vous parlerai
dans la prochaine vidéo.
132. 131. Explorer l'ensemble de données avec Python et Pandas +: Bon retour. Lorsque vous
effectuez une analyse de données, la première chose à
faire est de vous
familiariser avec vos
données à l'aide de l'outil,
l'outil d'analyse
de données que vous avez choisi d'utiliser pour votre projet
en particulier. Dans ce cas, l'
outil est Python. Donc, dans
cette vidéo, nous
allons charger les données dans Python à l'
aide d'un bloc-notes Jupiter. Examinez ensuite ces
données et extrayez des informations très basiques
sur les données, telles que les noms de
colonnes que nous avons, nombre de lignes que nous avons et d'autres
attributs simples de nos données. C'est ce que nous allons faire. J'aimerais vous
faire savoir que j'ai créé un
dossier vide nommé review. Underscore Analysis et j'ai mis les critiques dans ce
fichier CSV dans ce dossier Vous pouvez trouver ces critiques un fichier CSV joint
à cette conférence, en
tant que ressource de conférence. Veuillez donc le télécharger et placer dans un dossier,
comme je l'ai fait. Ensuite, vous devriez
être en mesure de localiser ce dossier depuis la page d'accueil de
Jupiter, qui est localisée
8888 slash 3 J'ai donc créé ce dossier
directement dans le dossier de mon utilisateur, c'est
donc le dossier. Je peux cliquer dessus et voici
les critiques de ce fichier CSV. Dans votre cas, vous pouvez le
créer où vous le souhaitez puis le localiser à l'aide de
cette arborescence de répertoires ici. Pendant que je suis dans ce
dossier depuis Jupiter, je peux accéder à la nouvelle
liste déroulante et accéder à Python 3 pour créer un nouveau bloc-notes
Jupiter. Le carnet Jupiter
a donc été créé. Je peux le renommer
en un autre nom, le nom du bloc-notes
Jupiter Restons simples
et donnons des avis. Renommez et vous
obtiendrez l'extension IPYNB. Permettez-moi de faire un peu plus de place ici pour que vous puissiez voir plus de code. Je vais désactiver
l'en-tête. Et maintenant, commençons à coder. La toute première chose
que nous voulons faire, bien sûr, est d'importer Pandas, la bibliothèque utilisée pour effectuer des analyses de données
avec Python Ensuite, nous voulons créer une
variable qui
contiendra les données
égales à celles lues par Pandas Puisque nous travaillons
avec un fichier CSV, la méthode que nous voulons utiliser en dehors de la
bibliothèque Pandas est Read CSV Entre parenthèses, nous
voulons mettre des guillemets simples ou doubles
, où vous le souhaitez Le chemin d'accès au fichier CSV. Maintenant, si vous ne tapez
pas le nom correctement, vous allez recevoir une erreur. Laissez-moi donc essayer d'
exécuter cette cellule en utilisant Control Enter si vous êtes sous Windows ou Command
Enter si vous êtes sous Mac. Comme je vous l'avais prévenu, j'ai reçu une erreur. Il indique qu'aucun
fichier ou répertoire de ce type n' parce que j'ai mal saisi le Donc des critiques. Cette fois, si j'exécute,
je ne reçois pas d'erreur, cela signifie
que les données ont été
chargées avec succès Je peux appuyer sur Escape, B, Enter, appeler
à nouveau
la variable de données et Control Enter pour voir le bloc de données. Nous pouvons donc voir que nous avons une, deux, trois, quatre colonnes. Et nous avons également cette colonne d'
index
ajoutée automatiquement par Pandas Il s'agit essentiellement d'une plage de
nombres commençant à zéro. Voici donc la première ligne de
nos données, celle-ci ici. Cela a cet indice de zéro. Et ça se termine au dernier rang. Vous pouvez voir qu'il s'
agit de la première ligne, deuxième, de la troisième, de la quatrième ou de
la cinquième rangée, puis Jupiter
n'affiche pas puis Jupiter
n'affiche pas les lignes cinq parce qu'
il y a beaucoup de lignes, et il serait peu pratique de les
voir ici Cependant, vous pouvez voir les cinq dernières lignes
du bloc de données. Cela vous donne une
vue d'ensemble du bloc de données. Cependant, ce que j'aime faire
à la place, c'est simplement imprimer la tête
du bloc de données, qui ne contient que les premières lignes. Donc, les cinq premières lignes vous offrent une vue
plus compacte. Cela vous donne une idée des
colonnes que vous avez et du
type de lignes que vous avez également. Il est donc bon que la tête
du bloc de données soit
affichée ici. Ensuite, nous pouvons appuyer sur Escape. B et créez une nouvelle cellule ici. Entrez pour écrire un autre code. Vous pouvez obtenir la forme du bloc
de données en accédant à
la propriété shape. Il s'agit donc d'une méthode
entre parenthèses. C'est une propriété. Il n'a pas besoin de parenthèses. Ensuite, vous arrivez à la
forme du bloc de données, qui est essentiellement le nombre de lignes et le nombre de colonnes. Vous voyez une, deux,
trois ou quatre colonnes. Vous souhaiterez peut-être également entrer, afficher les colonnes de
votre bloc de données. Même si nous les avons là, c'est une autre
façon de voir les noms des colonnes en accédant à
la propriété columns. Ensuite, généralement, lorsque vous
travaillez avec des données, certaines colonnes
spécifiques vous intéressent, qui peuvent être une ou plusieurs
colonnes. Dans ce cas, nous
aimerions peut-être voir un aperçu de la colonne pour voir quelle est la
note minimale et quelle est
la note maximale
ainsi que la distribution de ces notes et
les
afficher sous forme de graphique ici afin que
nous puissions mieux
comprendre nos données. Je vais donc faire escape, B, enter et data point Hit. Ce sera donc un histogramme. Entre parenthèses, nous aimerions voir la
distribution des notes Par conséquent, j'entre dans la colonne de
notation ici, je dis chaîne, exécute, et nous obtenons ce graphique. Laissez-moi vous expliquer
ce que signifie ce graphique. Cela signifie que,
par exemple , commençons par
la droite. Ce bar ici, ce premier bar
signifie que nous avons environ 24 005 étoiles, évaluations Vous voyez, par exemple, nous avons
obtenu une note de 5 étoiles. Nous avons donc environ 24 005 étoiles dans l'ensemble
du cadre de données. Et au total, nous avons
45 000 lignes au total. Ensuite, dans cette barre, notes
sont de 4,5 étoiles, comme celle-ci. Et nous en avons environ, disons, 7 000. Ensuite, nous avons quatre étoiles, environ 9 000, peut-être
3,5 étoiles. Il s'agit d'un classement de trois étoiles. C'est aux alentours de 2000. Ensuite, nous avons une note de 2,5 étoiles. Celui-ci est là, avec
deux étoiles. Évaluation de 1,5 étoile. C'est le chiffre
le plus bas de toutes les évaluations. Les gens ne laissent donc pas
beaucoup de notes de 1,5 étoile. Et nous avons également ce classement d'une
étoile ici. Ce n'est pas le graphe des basses. Personnellement, je n'aime pas cela, mais c'est un moyen rapide de
savoir comment vos données
sont distribuées. Vous savez que, d'accord, nous avons des données de 1 à 5 et que cinq est la
valeur la plus fréquente de vos données Et c'est à propos de cette conférence. Cela vous permet d'avoir une
vue d'ensemble de votre bloc de données. Dans la prochaine conférence, nous
allons
zoomer sur notre bloc de données pour pouvoir
sélectionner des lignes ou des tranches
particulières de notre bloc de données afin de voir des valeurs individuelles. En d'autres termes,
nous allons utiliser Python pour
parcourir nos données sélectionner des sections particulières des données et les afficher. Je vous verrai donc dans
la prochaine vidéo.
133. 132. Sélection de données avec Python: Bonjour, bon retour. Dans cette vidéo, nous allons
zoomer sur les données de
notre bloc de données en sélectionnant des colonnes
particulières du bloc de données, lignes
particulières,
plusieurs colonnes, plusieurs lignes,
des étagères spécifiques dans le bloc de données Nous allons
apprendre à appliquer conditions afin que vous puissiez extraire des données en fonction de différents
filtrages, etc. Commençons donc. Je
vais ouvrir Jupiter. Et je vais passer à
l'analyse des critiques. Dossier et cliquez sur le fichier
Jupiter Notebook. Maintenant, vous devez savoir
que si je suis dans une nouvelle cellule ici et que j'essaie d'accéder à
la variable de données, nous allons obtenir
cette erreur de nom. Les données ne sont pas définies car lorsque vous ouvrez simplement
un bloc-notes Jupiter, les cellules ne sont pas
automatiquement exécutées. s'agit donc pas
encore d'une variable dans l'espace de noms de cette session Python
interactive. Par conséquent, vous devez
exécuter les cellules soit en accédant à la première cellule
et en appuyant sur Shift Enter, puis Shift Enter pour exécuter
l'autre cellule Shift Enter, Shift Enter, soit en cliquant sur ce bouton. Pour faire fonctionner toutes les cellules. Appuyez donc dessus, redémarrez
et exécutez toutes les cellules. Ensuite, vous allez avoir accès à la
variable Delta comme ça. , donc je voulais juste m'
assurer que vous saviez
que vous êtes au courant du comportement spécifique de Jupiter. Maintenant, je voudrais mettre quelques
titres ici, du texte. Par exemple, je veux
mettre le titre de cette première section que nous avons
faite dans la vidéo précédente. Je voudrais donner un nom à ça. Je veux donc ajouter une
cellule au-dessus de cette cellule. Par conséquent, ce que je fais, c'est d'abord m'assurer que je
ne suis pas dans un certain mode, alors j'appuie sur Escape pour cela. Ensuite, j'appuie sur la touche A du clavier, et la nouvelle cellule
va être ajoutée. Puis j'appuie sans
entrer dans la cellule. Donc, sans entrer,
assurez-vous d'appuyer sur Escape. Sans entrer dans la
cellule, nous appuyons sur M, et cela convertira la
cellule en cellule Markdown, ce qui signifie que la cellule
n'attend plus de code Python Il attend du texte Markdown, qui est essentiellement une
sorte de langage Par exemple, si nous écrivons
deux de ces symboles de hachage et que nous sommes juste au-dessus
du bloc de données Ensuite, nous appuyons sur Command Enter, cela va
être converti
en titre, en titre. En gros, H pour le titre. Si vous en ajoutez une de plus, vous obtiendrez des polices
plus petites , etc. Donc deux, c'est bien. Ensuite, je vais ajouter ici, donc convertir cela en
markdown avec escape, puis juste ici, sélectionner des données dans
le bloc de données Et puis B pour entrer
la nouvelle cellule de code, il s'agit
donc d'une cellule de code
qui est une cellule Markdown Je vais donc vous montrer comment
sélectionner une colonne
du bloc de données. Évasion. Sélectionnez une colonne. Entrée de contrôle. B, Entrée
Pour sélectionner une colonne, vous pouvez utiliser cette syntaxe
puis exécuter. Et ceci est une chronique.
Maintenant, vous pourriez vous demander pourquoi devons-nous
sélectionner une colonne ? Quel est l'intérêt de tout cela ? Eh bien, la réponse est qu'il
s'agit de la première étape d'une analyse plus approfondie. Par exemple, si vous
souhaitez extraire la moyenne, la moyenne de la colonne de
notation, nous
devons d'abord extraire
la colonne, puis
appliquer cette moyenne La méthode s'exécute, ce qui vous donnera la note moyenne de tous les cours pour l'ensemble
du bloc de données Donc, la note de toutes
les 45 000 lignes. C'est donc un exemple de la raison pour laquelle nous devrions sélectionner une colonne. Mais permettez-moi de supprimer la moyenne maintenant. Voilà comment
sélectionner une colonne. Maintenant, échappez à B, entrez. Sélectionnez plusieurs colonnes. Exécutez, B, entrez. Pour sélectionner plusieurs colonnes, vous devez utiliser plus ou
moins la même syntaxe. Mais au lieu d'insérer
une seule colonne ici comme nous l'avons fait pour l'évaluation des chaînes, dans ce cas, nous insérerions
une liste de plusieurs colonnes Disons que nous voulons le nom du cours. Donc, une chaîne,
une virgule, autre chaîne, une note,
puis exécutez Et cela vous donnera essentiellement un bloc de données contenant
uniquement ces deux colonnes. Maintenant, il y a une différence
fondamentale entre cette sortie et cela. Vous pouvez également constater que ce
format est différent selon
les lignes Il ressemble
donc à un tableau car il s'agit
en fait d'un bloc de données Donc, si vous appliquez le type,
de cette expression. C'est donc de l'expression. Nous avons utilisé. Si vous l'exécutez,
vous verrez qu'il s' agit d'un bloc de données. Mais si nous voyons le type de
cette autre expression, vous verrez
qu'il s'agit d'une série. Une série est donc un autre type de données sur les
pandas, tout comme nous cadre de données, nous avons
des séries, et les séries sont utilisées pour représenter des colonnes individuelles
comme celle-ci ici. Donc, la colonne de notation uniquement. Mais lorsque nous avons
plusieurs colonnes, Pandas utilise un
bloc de données comme celui-ci C'était donc juste une
information à garder à l'esprit. Cela ne changera pas grand-chose à la façon dont vous établirez les
statistiques par la suite, mais il est bon de
savoir comment fonctionne Pandas Voyons comment sélectionner ARO. Avec les rangées, c'est un peu différent. Bien entendu, vous
devez d'abord vous référer à la variable de données,
puis à I lock. Ensuite, vous avez besoin de
crochets. À l'intérieur de ces crochets, vous devez placer l'index de
la ligne à laquelle vous souhaitez accéder. Supposons, par exemple, que nous voulions cette ligne ici ou que nous y fassions mieux
référence. Donc, la méga-malédiction de Python
avec une note de cinq, qui a un indice de trois. Voyons si nous
allons obtenir cette ligne. Exécute. Donc oui, il semblerait que ce soit le méga-cours de Python et il a obtenu une note de cinq. L'horodatage est
ici, donc 333. Voyons le bloc de données dans son intégralité. Donc 333, celui-là. C'est cette rangée. Le type de cet objet
est à nouveau une série. Pandas utilise donc également des séries
pour les lignes, pour les lignes simples. Permettez-moi de supprimer ce type, puis de l' exécuter à nouveau. Il
s'agit du résultat. Suivant. Sélection de plusieurs roses. B Entrez les données. Encore une fois, c'est iloc que nous utilisons. Et cette fois, comme nous
travaillons avec plusieurs lignes, nous voulons saisir une tranche. Supposons que nous voulions passer de l'
index un à l'index trois, ces lignes, et que nous obtenions cette trame de données cette
fois, pas aussi grave. Nous avons donc obtenu la ligne avec l'
index 1 et la
ligne avec l'index deux parce que l'index supérieur n'
est pas inclus dans la tranche comme c'est presque
toujours le cas avec Python. Donc, fois 512, horodatage, 511. 512, cinq, Index un, index deux. Ouais. C'est ainsi que
vous obtenez plusieurs lignes. Suivant. Sélection d'une section. Ce que je veux dire par là
, c'est essentiellement une coupe transversale. Ainsi, des colonnes et des lignes
particulières nous donneront essentiellement une tranche
de la trame de données. Par exemple, nous voulons
sélectionner des colonnes spécifiques. Encore une fois, nous utilisons la même
syntaxe que précédemment. Vous voyez donc ici lorsque nous avons
sélectionné plusieurs colonnes, donc
l'évaluation du nom du cours dans une liste. Évaluation du nom du cours. Cela nous
donnera donc essentiellement cela. Ensuite, à partir de cette trame de données, nous appliquons
Alok parce qu'il s'agit d'un objet de trame de
données, n'est-ce pas ? Alok parce qu'il s'agit d'un objet de trame de
données, n'est-ce pas C'était également un objet
de trame de données. Et puisque nous pouvons appliquer
Alok à cette trame de données, nous pouvons également appliquer Ioc
à cette trame de données. Il s'agit du même type d'objet. Ainsi, nous
passons, par exemple, d' ligne
d'index un
à une ligne d'index trois,
sans trois, et nous obtenons cette
section du bloc de données,
qui est, encore une fois, un
bloc de données, un type d'objet. Donc, seules les colonnes de nom du cours et de
notation et
uniquement ces deux lignes. Et enfin, sélectionner une cellule. Nous suivons la même
syntaxe, la même logique. Supposons donc que nous voulions
sélectionner cette cellule ici. Donc, la cellule qui est
la section transversale de ligne avec l'index deux et
la colonne d'horodatage,
celle-ci dedans, horodatage, index deux, Ce que nous faisons,
c'est d'abord extraire la colonne en utilisant la même syntaxe que celle que nous avons
utilisée pour sélectionner une colonne, à savoir celle-ci, Delta. Horodatage des données d'évaluation cette fois. Donc, en gros, cela nous
donne une colonne, mais à partir de là, nous pouvons également
verrouiller une série. Il s'agit donc d'une série,
pas d'une trame de données, mais une série peut également utiliser cette propriété de journal et en extraire
l'index deux, et cela nous donne la valeur, qui est une chaîne de caractères. Donc, si vous vouliez plutôt une note, vous obtiendrez une note flottante parce que les
notes sont flottantes, 4.0, celle-ci là-dedans. Et c'est comme ça qu'on obtient un portable. Maintenant, cette méthode est
très cohérente car elle utilise la même syntaxe
que les autres méthodes. C'est donc cohérent avec les autres méthodes de sélection des données, mais il existe un moyen plus rapide de faire la même chose en utilisant les
données, la propriété at. Et vous passez d'abord l'
index de la ligne
, puis juste le nom de la
colonne, la note, par exemple. Et cela devrait
vous donner la même valeur. Il est donc recommandé de
l'utiliser lorsque vous
sélectionnez une cellule. C'est donc à propos de cette conférence. Dans la prochaine conférence, nous
allons approfondir la sélection des données, mais en
utilisant des conditions. Par exemple, donnez-moi toutes les notes
supérieures à quatre. Filtrage donc basé sur les conditions
de la vidéo suivante. Voir.
134. 133. Filtrage du jeu de données: Bonjour, bon retour. Dans cette vidéo, vous allez apprendre à
filtrer les données de
votre bloc de données. J'entends par là l'extraction de groupes
particuliers de données fonction de différents
types de conditions Par exemple, supposons que
dans notre bloc de données, nous ayons des parcours différents, même si vous ne voyez ici les mégacures de Python, car
nous ne voyons que les cinq
premières lignes Nous avons d'autres cours
notés. Ainsi, si vous vouliez, par exemple, connaître la note
moyenne d'un cours en particulier uniquement, vous
devez filtrer les données en appliquant
certaines conditions. Le filtrage
vous permet donc d'effectuer une analyse sur un groupe particulier de vos données. C'est ce que nous allons faire. Tout d'abord, je vais attribuer un numéro à chacune
des rubriques principales C'était donc une vue d'ensemble. La deuxième conférence portait sur la
sélection, donc c'est la deuxième. Cette fois, nous passerons au troisième point, filtrant les données en
fonction des conditions. C'est vrai. Appliquons d'abord
une condition. Je vais donc créer
une cellule Markdown
et énoncer une condition. Appliquons une condition
qui nous donnerait le cadre de données dans lequel les
notes sont supérieures à quatre. Pour ce faire, vous devez
suivre cette syntaxe. Maintenant, assurez-vous d'abord
que votre
variable de données se trouve dans l'espace de nom en
exécutant cette première cellule. Contrôlez Entrée pour
exécuter cette cellule. Nous sommes maintenant sûrs que les données
se trouvent dans l'espace de noms. Il s'agit de la syntaxe
entre crochets et à l'intérieur se la condition. Nous avons donc dit que nous voulions le bloc de données dont la note est supérieure à quatre. Par conséquent, nous disons que l'
évaluation des colonnes est supérieure. Laissons un espace
supérieur à quatre. Si nous l'exécutons, nous
obtenons une trame de données et toutes ces lignes ont une
note de 4,5 ou plus, non de quatre parce que c'est plus grand, ce n'est ni supérieur ni égal. S'il était supérieur ou égal, nous obtiendrons également les
quatre notes, soit 4.0. Mais ce n'est pas le cas ici, c'est ce que nous obtenons. Vous voyez, par exemple, que
les lignes avec l'indice 012 n'étaient pas incluses dans le bloc de données du bloc
de données de sortie,
et vous pouvez voir la
longueur de ce bloc à l'aide d'une fonction Python
length function Nous obtenons 29 758 lignes dont la note est
supérieure Une autre méthode, si
vous ne voulez pas utiliser la fonction native de Python, est d'utiliser count. Il s'agit donc de l'objet du bloc de
données, et les objets du bloc de données
ont une méthode de comptage. Et vous obtenez ce résultat, qui
indique essentiellement que nous avons cette quantité de valeurs
dans le nom du cours, cette quantité de
valeurs dans l'horodatage, cette quantité dans l'
évaluation et Parce que les commentaires ont
ces valeurs non valables qui sont fondamentalement une
valeur inexistante, elles n'existent pas. Par conséquent, nous avons 4 927 évaluations avec des commentaires dans lesquels personnes ont réellement écrit quelque chose Donc le reste, ce
point négatif qui nous donne un certain nombre de commentaires sans valeur. Bien entendu, vous pouvez
appliquer différents types de statistiques à ce sujet dès maintenant. Par exemple, il s'agit
d'un droit relatif à une trame de données. Comment extraire
uniquement la colonne ? Comment sélectionner uniquement
le classement de la colonne ? Eh bien, vous pourriez jeter un
œil ici, en sélectionnant une colonne. Voici donc comment sélectionner
une évaluation des données de colonne. Maintenant, il s'agit du bloc de données. Par conséquent, vous appliquez une note et vous obtenez les évaluations avec
une valeur de 4,5 ou plus. Donc, pour comprendre cela, est disons
que D deux le cadre de données que nous
obtenons en fonction de cette condition. Il s'agit donc d'un bloc de données.
Ce bloc de données comporte une colonne de notation. C'est donc ce que nous obtenons. C'est la même chose
que nous avons faite ici, évaluation
des données, D pour la notation. J'espère que c'est clair. Cela vous
permet également d'appliquer
des fonctions telles que la moyenne. Vous obtenez la moyenne des
notes supérieures à quatre. Je vais laisser les choses telles
qu'elles étaient à l'époque.
Ensuite, il y a plusieurs conditions. Supposons que nous voulions filtrer le bloc de données dont la note
est supérieure à quatre et dont le nom du cours est égal à celui le cours Python complet dix applications opérationnelles professionnelles
créées par
le cours Python complet. C'est vrai. Donc, ce cours ici. Permettez-moi de copier la chaîne pour
ne pas faire de fautes de frappe. C'est ainsi que vous effectuez
ce filtrage, double filtrage.
Tu commences par ça. Ensuite, au lieu de mettre une condition comme nous l'avons fait ici,
nous en mettrions deux
qui
seraient séparées entre parenthèses Donc, la première condition est là et la deuxième condition est là. Donc, comme première condition, nous mettrions la même chose. Cette note delta
est donc supérieure à quatre. Vous voyez donc que la
condition est entre parenthèses.
C'est
la première condition. La deuxième condition
est que Delta, nous avons dit que le nom du cours est
égal à deux, la chaîne, le cours complet de Python, colonne a créé dix applications OP
professionnelles, right, execute, et nous obtenons le bloc de données basé
sur ce filtrage. Donc, comme il s'agit d'une
trame de données, de cette trame de
données, nous pouvons en extraire la note puis obtenir la moyenne
de la colonne de notation, et cela
nous donnera ce chiffre. Donc, la note moyenne
des notes est supérieure à
quatre pour ce cours. Et il s'agit à nouveau de la trame de
données du filtre. Et c'est à propos de cette conférence. Dans la prochaine conférence, nous
allons examiner le filtrage des données en fonction du temps. Alors, comment pouvez-vous
extraire des parties de votre cadre de données pour
une période donnée ? Vous voyez donc que nous avons cette colonne d'
horodatage ici, qui s'étend de
2018 Voyons comment procéder dans
la vidéo suivante.
135. 134. Filtrage basé sur le temps: Bonjour, bon retour. Dans
la vidéo précédente, nous avons filtré
en fonction des conditions. Nous avons donc appliqué une condition ici et plusieurs
conditions ici, deux, pour être exact. Mais nous pouvons en appliquer plus de
deux en utilisant la même syntaxe. Très bien, nous avons donc appliqué la condition
en comparant les nombres. Nous avons donc travaillé avec des types de nombres, la colonne de notation
contenant des types de données numériques et la colonne du nom du cours
où nous avons indiqué que nous voulions uniquement les enregistrements le nom du cours est
égal à cette chaîne. Donc, ces colonnes de noms, les types de données de chaîne. Donc des types de données de chaîne, des types de données
numériques. Mais comment comparer ? Comment filtrons-nous les données
en fonction de l'heure des données ? Ce n'est pas aussi simple, mais ce n'est pas difficile non plus. Alors faisons-le.
Ajoutons une nouvelle section principale. Disons donc ce filtrage basé sur
le temps. C'est vrai. Extrayons donc
les avis laissés au cours du
second semestre 2020. Essayons d'appliquer la
même syntaxe qu'ici. Nous commençons donc par le
bloc de données et les crochets. Maintenant, cette fois, nous avons besoin de
deux conditions. Pourquoi ? Eh bien, parce que dans le
premier cas, nous dirions Delta. L'horodatage est
supérieur au 1er juillet 2020, et l'autre est l'horodatage
Delta. C'est moins que le 31 décembre. Donc, plus que le premier
juillet signifie le 2 juillet,
le 3 juillet, le 4 juillet, et ainsi
de suite. Nous voulons donc ces données
pour cette période. Mais nous voulons également l'
autre condition selon laquelle les données ne doivent pas être
supérieures au 31 décembre. C'est pourquoi nous utilisons ce
délai inférieur au 31 décembre, qui serait le 30 décembre, le
29 décembre, etc. Mais comment écrire le 1er juillet ici ? Eh bien, pour cela, nous avons besoin d'
un objet datetime. Nous ne pouvons pas simplement écrire une chaîne, écrire comme les sept,
20 ou 20 premiers Python n'est pas si intelligent que ça. C'est un langage de programmation. Eh bien, il est possible que
les développeurs Python puissent écrire quelque chose pour lire
ce type de chaîne, mais cela serait sujet à des erreurs. Vous savez, quelqu'un l'
écrit différemment, quelqu'un l'écrit comme ça. Et ainsi de suite, vous
devez être explicite pour éviter les erreurs indésirables. Et par des moyens explicites, nous devons utiliser un type d'
objet datetime approprié Je vais donc importer depuis le
jour, importer la date et l'heure. Nous importons donc cet objet diurne hors de la bibliothèque diurne. N'oubliez pas d'exécuter cette
cellule, de descendre ici et utiliser cet objet datetime que nous venons d'importer
de la bibliothèque diurne, qui serait 2027, c'est-à-dire
juillet et 1er juillet Cela nous donnerait le 1er juillet
dans le type de données approprié. Nous pouvons faire de même
pour cette date et heure ,
2020, qui serait 12 pour
le 31 décembre. C'est vrai. Maintenant, je pense qu'il est plus significatif de dire
supérieur ou égal que le 1er juillet
et aussi inférieur ou égal. Vous avez donc l'idée d'inclure également
ces dates
dans la période. Exécutons maintenant ceci.
Et nous avons une erreur. Allons le lire ici. Il s'agit d'une erreur de type, ce qui signifie que le mauvais
type a été utilisé d'une manière ou d'une autre. Mais lisons-en davantage pour
comprendre ce que c'est. Cette opération, cet opérateur de
comparaison, n'est donc pas pris en charge entre les instances de chaîne et de date à cette date et heure Il semble donc
que cet opérateur ait été appliqué entre une chaîne
et un jour ce jour-là. Hein ? Alors, quelle est la
ficelle ici ? Le premier. L'horodatage des données est donc une
colonne contenant des chaînes. L'horodatage contient donc des chaînes. Ce sont toutes des chaînes. Même s'ils ressemblent à une
date, ce ne sont pas des dates. L'idée ici est donc que Python ne peut pas
comparer les dates-heures, donc cette date/heure
avec ces chaînes. Par conséquent, nous devons demander à
Python de les traiter comme dates-heures comme des objets diurnes afin que Python puisse
comparer deux objets diurnes, ce qui est
plus significatif que de comparer une
chaîne pendant la journée Pour créer Python,
lisez-les comme des heures de jour, nous devons aller en
haut de notre script. Et lorsque nous lisons le
bloc de données à l'aide de la méthode CSV, nous devons ajouter un autre argument, qui est la date d'analyse Grâce à cet argument, nous indiquons à
Python par les
crochets quelles colonnes doivent être
traitées comme des dates-heures. Donc horodatage, analyse les dates
égales à l'horodatage entre crochets N'oubliez pas d'exécuter cette
cellule, puis de descendre ici, exécuter à nouveau, la cellule. Nous avons une autre erreur cette fois, encore une fois, une erreur de type. Il dit que la comparaison
entre cela et cela n'est pas valide. Donc cette fois, tu vois
que c'est pour ça. Il s'agit donc d'une date/heure UTC. Et c'est ce jour là. Python
essaie donc de comparer ces deux objets,
qui, même s'ils
sont des objets diurnes, sont
tous deux des objets diurnes Python n'est toujours pas en
mesure de les comparer car l'un d'eux,
celui-ci ici, est un objet diurne naïf, ce qui signifie que l'objet
diurne ne connaît pas
son système horaire Par conséquent, Python, pour
être prudent, vous indique
que, d'accord, je ne sais pas quoi faire avec ces horaires de deux jours
parce que je ne peux pas
les comparer car je ne sais pas de
quel système horaire il s'agit. Donc, même s'ils peuvent sembler
plus petits que
cela, ils peuvent
en fait être plus grands que l'autre parce que cela
pourrait être un autre système temporel, nous devrions l'agrandir. Pour comprendre l'importance
de l' explicité dans la programmation, imaginez une tour de
contrôle du trafic aérien Ils ont cette application
qui reçoit les signaux de deux avions passant en même temps
par cette tour Un avion vient des États-Unis, un avion
vient d'Indonésie. L'application doit traiter le temps envoyé par
ces deux avions. Et dans ce signal,
outre l'heure, l'application doit également connaître le système horaire de chacune
de ces deux dates et heures. Sinon, si ces
deux vallées indiquaient simplement 6 h 00 en Amérique
et 7 h 00 en Indonésie,
le programme penserait qu'
il y a une heure de différence. le programme penserait qu'
il y a une heure de différence Cela pourrait alors perturber une
chaîne d'autres processus, ce qui pourrait être dangereux. Donc, il vaut mieux être explicite. Bref, pour être explicite, nous devons déclarer un
système horaire pour cette date et heure, tout comme celui-ci a un système horaire, et
vous pouvez le voir. Ajoutons une autre cellule ici, et vous dites donnée,
heure, horodatage, exécution,
vous obtenez la série. Mais aussi ici,
vous voyez la date et l'heure 64, c'est UTC, UTC. Déclarons donc la
date et l'heure également en UTC. Faites-le en utilisant TZ
info, cet argument, qui obtient une valeur,
un type d'objet, un type d'objet UTC, qui doit être importé. C'est un objet spécifique du système
temporel. Passez donc aux importations et
dites que depuis PY TZ Import, UTC, n'oubliez pas d'
exécuter cette cellule, descendre ici et de faire de même
pour l'autre heure de données. Donc, un autre argument Ts dont l'
information est égale à UTC, s'exécute. Et cette fois,
nous avons enfin obtenu le bloc de données filtré. Vous voyez les dates ici. 20, 30 décembre 2012. Et ici aussi,
nous voyons le 1er juillet. Avec une note assez faible, malheureusement. Quoi qu'il en soit, c'est ainsi que vous pouvez filtrer les données en fonction des horodatages Merci de m'avoir suivi.
Je te parlerai plus tard.
136. 135. Transformer des données en informations: Bonjour, et
bienvenue sur cette nouvelle vidéo, qui sera un peu
différente des autres. Dans les vidéos précédentes, je vous ai
montré quelques techniques pour filtrer les données
d'un bloc de données. Il s'agissait essentiellement d'accéder aux colonnes, aux lignes
et aux cellules et d'appliquer des conditions
lors de l'accès à ces colonnes, lignes ou
cellules d'un bloc de données. Cependant, ce que nous
avons fait jusqu'à présent, c'est simplement extraire
des données à partir de données s'agit toujours pas d'une
analyse de données, car le but de l' analyse
des données est de transformer
les données en informations. C'est le but de
l'analyse des données, mais il ne s'agit toujours
pas d'informations. Par exemple, supposons que nous
voulions obtenir des notes supérieures à quatre et que nous obtenions ce bloc de données, mais qu'il s'agisse toujours d'un bloc de données. Ce n'est pas convivial pour les humains. Ce n'est pas une information. L'information serait que nous obtenions plutôt la moyenne
des notes supérieures à quatre. Nous nous retrouverions donc avec
un seul chiffre. C'est une information parce qu'
elle est lisible par l'homme. Cela nous dit quelque chose, ou peut-être pourrions-nous créer un diagramme, un graphique où nous pourrions voir
les notes au fil du temps. Nous voyons le graphique,
nous pouvons voir une tendance et nous pouvons tirer certaines
informations de ce graphique. Transformer les données en informations est ce que nous allons faire ensuite, et pour cette vidéo en particulier, nous allons répondre à
une série de questions. En d'autres termes, nous allons
extraire certaines informations, telles que nous allons
obtenir la note moyenne, la note moyenne pour un cours
en particulier, etc. Maintenant, vous devriez être
capable d'écrire le code devant moi
car vous savez déjà, par
exemple, comment
extraire la colonne de notation. Et je vous ai également donné quelques
indices indiquant que vous pourriez utiliser une méthode moyenne pour obtenir la note
moyenne de cette colonne. Commençons donc par
les premières informations. La note moyenne de tous les
cours pour toutes les périodes. Ce serait une moyenne d'évaluation des données. Et c'est la note moyenne. Donc, comme nous l'avons fait ici lors de la sélection d'une colonne,
Delta Rating. C'est ce que nous faisons ici également. Cela nous donne une colonne, et cela nous donne une note. À droite, ensuite, note moyenne
pour un cours en particulier. Cette fois, nous devons appliquer
une condition selon laquelle le nom
du cours delta est égal. L'opérateur de double affectation
est donc égal à l'un des cours. Supposons que le méga-cours de Python ait créé dix applications
du monde réel. Maintenant, s'il vous manque une seule
lettre dans la chaîne, vous n'obtiendrez pas
le résultat escompté. Supposons que vous ayez écrit
un petit A au lieu d'un A majuscule et que vous obteniez un bloc de données vide Si je remplace le A minuscule par
une majuscule, nous obtenons la trame de données
filtrée,
et à partir de
là, nous
voulons la Ce sont donc les notes
des mégacurs Python, et la moyenne est la moyenne des mégacures Python,
la note moyenne, qui est légèrement supérieure la note moyenne
de tous les cours C'est vrai, note moyenne
pour une période donnée. Data, je vais juste le
copier et le transmettre ici. Nous avons donc cette première condition,
cette deuxième condition. Nous
parlons donc de cette période. Vous pouvez changer cela pour
une autre période, disons toute
l'année 2020, du 1er janvier au
31 décembre. Vous pouvez maintenant diviser cette
expression tout en obtenant le même résultat
en entrant en appuyant sur Entrée
après l'opérateur t. Et vous obtenez toujours le cadre de
données du filtre , à partir duquel nous obtenons
les évaluations et à partir de
là, nous obtenons la moyenne. C'est la moyenne pour 2020. Ensuite, note moyenne pour une période donnée pour
un cours donné. Je vais le copier
en appuyant sur CC, en cliquant ici et en appuyant sur V. Ensuite,
après cette condition, donc une parenthèse, deux parenthèses, je vais
ajouter l'opérateur final Et appuyez sur Entrée, puis
appuyez de nouveau sur Entrée. Et ici, je vais
ajouter l'autre condition, qui est celle-ci. Le cours est égal à
cette chaîne particulière, le méga-noyau Python. Exécuter. Il y a un
décalage entre parenthèses Vous voyez que ce
crochet est surligné en rouge. Cela signifie que nous devons le supprimer. Exécutez à nouveau, et
c'est une évaluation. Pour le
méga-cours de Python de 2020. C'est ainsi que vous extrayez
des informations à partir de vos données. Continuons avec la moyenne
des notes non commentées. Donc des évaluations non commentées. Vous savez que, pour plus
de commodité,
je vais mettre la tête du bloc de données ici. Vous savez donc que nous avons ici
une colonne de commentaires, qui peut être un NaN, ce qui signifie noter un nombre, donc une valeur nulle, ou
une chaîne, quelque chose qu'un étudiant a écrit comme critique d'un cours
en particulier. Nous voulons obtenir la moyenne
des notes qui n'
ont aucune commande. Donc, pour ce faire, vous dites que
les données, la condition, commentaire
des données, sont nulles. s'agit en fait d'une méthode, Il s'agit en fait d'une méthode,
qui nous donne une trame de données
filtrée avec uniquement les lignes dont
la valeur de commentaire est NaN. Le contraire
n'est pas nul. Ensuite, vous obtenez les
lignes avec des commentaires. Ce que nous voulons est nul cette
fois et à partir de là, nous voulons la
colonne de notation et la moyenne. C'est le moyen. Bien entendu,
le
contraire ne serait pas nul. Et nous constatons que la note
moyenne des notes avec commentaires est supérieure la moyenne des notes
sans commentaire, ce qui me semble normal. Les personnes qui aiment le
cours ont peut-être aussi tendance à écrire quelque chose pour exprimer leur gratitude. Je ne sais pas, mais cela
nous dit quelque chose. C'est vrai, le nombre d'évaluations
non commentées. Eh bien, c'est facile, il suffit de le copier, coller une larme et au lieu
de dire « comptez ». Et voici le décompte.
Le contraire ne serait pas nul. Donc, les évaluations avec le nombre de commentaires. Et cela ajouté, j'en suis sûr, donne 45 000, soit un
nombre total de rangées de notes Donc, des évaluations sans commentaire, des
évaluations avec commentaire. Ensuite, le nombre de commentaires
contenant un certain mot. Dans le cadre de données
du commentaire, disons que certains étudiants parlent de l'
accent du professeur. Quelle est la moyenne des
notes contenant un accent ? Les gens se
plaignent-ils de l'accent et combien de personnes se
plaignent de l'accent
du professeur ? Trouvons cette information. Encore une fois, la condition
est que le commentaire Delta, la chaîne de ce commentaire
contienne le mot accent. Nous obtenons une erreur. Le problème est
que Python ne peut pas masquer avec un tableau non booléen
contenant des valeurs nulles Python ne peut donc pas rechercher
ces valeurs nulles dans les commentaires, ni rechercher de chaîne
dans ces types de données. Nous voulons donc indiquer à Python par le biais de l'
argument NA défini sur fold. Dans ce cas, Python
ignorera ces nouvelles valeurs et ne
recherchera l'accent dans les commentaires qu'avec une
chaîne contenant une valeur. Et il s'agit d'une trame de données
filtrée. Donc, tous ces commentaires mentionnent en fait
le mot accent. Combien d'entre eux ? Ce
ne sont que les évaluations. Le nombre de notes est de 77. Donc, 77 sur 45 000
au total, bien sûr, la moyenne
serait simplement cela, mais en changeant ce nombre pour une moyenne Et c'est une note faible,
comme je m'y attendais. Comme les cours sont
dispensés par des étudiants de
différents pays, certains d'entre eux peuvent trouver l'accent du
professeur désagréable. Alors peut-être qu'ils laissent un commentaire négatif et une note négative
le long du commentaire. Et c'est ainsi que s'achève notre conférence ici. Merci de m'avoir suivi. Dans les prochaines vidéos, nous allons créer
des tracés, ce qui est très
amusant, à mon avis, et c'est une belle
façon de présenter informations au
public à l'utilisateur Merci, je te
parlerai plus tard.
137. 136. Agrégation et traçage des notes moyennes par jour: Bonjour. Dans cette vidéo, je vais vous
montrer comment créer un graphique des notes moyennes quotidiennes. Notre graphique indiquera donc la note
moyenne pour chaque jour. Pour ce faire, je ne
vais pas travailler sur le précédent fichier Jupiter car j'aime bien
séparer les choses. Donc, pour la partie visualisation, je vais créer
un nouveau bloc-notes. Je vous suggère de faire de même. Donc, tout d'abord, nous devons
charger le bloc de données. Je vais donc simplement
copier cette cellule
du bloc-notes précédent, l'
y copier et imprimer rapidement l'en-tête
des données, juste pour vérifier
que tout est correct. Oui, ce sont donc le
Delta, le Delta brut. Appuyez ensuite sur Escape et appuyez
sur B sur votre clavier pour
créer une nouvelle cellule. Appuyez sur
Entrée pour entrer dans la nouvelle cellule et créons ce graphique. Mais avant de créer le graphique, nous devons effectuer une sorte
d'agrégation de données. vrai, nous transformons les
données en informations, mais nos données sont assez brutes. Vous voyez que pendant une journée, nous avons plusieurs évaluations
laissées par différents étudiants. Par exemple, à la seconde d' un prill,
nous avons cette note, nous avons ceci et cela, et ainsi de suite Nous voulons agréger ces chiffres pour obtenir
une note moyenne. Comment s'y prend-on ? C'est ce que nous faisons. Nous pouvons le faire en utilisant
la méthode du groupe B de Pandas, qui produit une nouvelle trame de données. Il s'agira donc d'
une nouvelle trame de données, mais avec des données agrégées. Donc, quelques nouvelles données qui sont des moyennes de la trame de données brutes Je vais vous montrer
comment fonctionne le groupe B. J'ai donc dit que le groupe B
produit une nouvelle trame de données. Par conséquent, je vais
créer une nouvelle variable dans laquelle le nouveau bloc
de données sera stocké. La moyenne journalière est donc
ma nouvelle variable, et cela équivaudrait aux données. Donc, ce groupe de trames de données B.
J'aime vraiment cette méthode. C'est très intuitif. Vous regroupez donc
ces données. Par. Par quoi voulons-nous regrouper ? Eh bien, par horodatage. Voyons ce que cela nous donne. Je vais donc
imprimer la moyenne ici,
le début de l'exécution moyenne et voyons ce que nous avons obtenu. Nous avons essentiellement le
même bloc de données. Cela est dû
au fait que le groupe n'a pas pu regrouper les données par horodatage, car le
groupe B essaie de
trouver des valeurs identiques
dans cette colonne donnée Dans ce cas, l'
horodatage n'a pas valeurs identiques car
chaque valeur est unique, vous pouvez le voir, c'est le même jour, mais cet avis a été
laissé pour le moment L'autre avis a été laissé
à ce moment-là et ainsi de suite. Chaque valeur est donc différente. Par conséquent, avant
d'appliquer le groupe B, nous devons effectuer un certain
traitement ici. Nous devons ajouter une nouvelle colonne
dans le bloc de données. Je vais nommer cette
colonne D en majuscule D. J'essaie simplement d' être cohérent avec
les noms des colonnes. Comme ils sont en
majuscules, ils commencent par une majuscule plus tard. Je vais créer cette nouvelle
colonne avec une majuscule plus tard. Le jour des données est donc égal
à l'horodatage des données. Ce DT DT est une
propriété qui nous donne accès à un certain nombre d'attributs
temporels tels que la date, désolé, la date, vous pouvez faire le mois. Et ainsi de suite. Pour l'instant, il
nous faut la date. Permettez-moi de commenter ceci Je vais
donc les
sélectionner et appuyer sur barre oblique
Ctrl ou sur la barre
oblique de commande pour les commenter. Et je vais
vous montrer le nouveau bloc de données. C'est donc le cadre de données. Donc ce que je viens de faire, c'
est d'extraire de cet horodatage, j'ai extrait uniquement la date Par conséquent, ce que j'ai
obtenu, c'est que pour chaque horodatage, j'ai obtenu la date Donc, pour cet horodatage, c'est le deuxième avril, le 2 avril, et ainsi de suite De cette façon, nous avons obtenu
des données identiques. Tu sais, si tu le veux par mois, tu auras le numéro
du mois. Donc quatre, quatre, quatre, et ainsi de suite. Mais nous avons besoin d'une date, donc je
vais m'en tenir à cette date. Maintenant, nous pouvons éviter cela et supprimons les points de
données parce que nous
n'en avons plus besoin. Et maintenant, nous pouvons réessayer ce groupe par méthode
, mais attention. Cette fois, nous avons besoin d'une journée ici. Comme nous l'avons dit, nous
voulons nous regrouper par jour. Exécutons et
voyons ce que nous obtenons. Ce n'est peut-être pas le résultat
que nous attendions. Vous voyez donc que ce jour n'est pas encore agrégé car nous devons
donner une autre commande ici. Nous devons expliquer aux pandas la
méthode d'agrégation. Voulez-vous donc
agréger en fonction de la
moyenne ou du nombre ? Dans ce cas, c'est la moyenne. Nous dirions donc point mean, la méthode, execute, et cette
fois, c'est ce que nous avons obtenu. Donc c'est juste la tête. Mais si vous imprimez
le bloc de données dans son intégralité, vous verrez qu'il en
sera ainsi jusqu'à cette date. Donc, pour chaque ligne, nous avons un jour, premier janvier,
le 2 janvier,
le 3 janvier, et ainsi de suite. C'est donc la note moyenne de tous les cours de cette journée. Maintenant, vous devez
comprendre ce produit. Comme je vous l'ai dit, il s'agit d'un type de trame de données. Donc, le dataframe de Panda,
mais celui-ci n'a qu'une colonne. Ce n'est donc pas une colonne. Le jour n'est pas une colonne. Le jour est en fait l'indice. Vous voyez que si vous dites « moyenne
journalière » de ces colonnes, note est la seule colonne. Et si vous voulez accéder à la
notation, vous devez faire comme ça. Évaluez, et vous obtiendrez cette série. Maintenant, c'est quoi ça ?
Voici l'indice. Par conséquent, si vous souhaitez
accéder à la colonne du jour, vous ne le faites pas comme ça car il s'agit d'une syntaxe
pour accéder aux colonnes. Lorsque vous souhaitez accéder à
cette colonne spéciale, c'est-à-dire à cette colonne d'index, vous devez dire index à points. Et puis nous obtenons cette série
qui est de type index. Mais vous pouvez facilement le
convertir en liste. Par exemple, si vous
aimez les tracer. Ainsi, tout comme les colonnes, les index, tels que celui-ci, sont
également des types de listes Donc des tableaux de données. Faisons maintenant le tracé. Pour effectuer le traçage,
nous allons avoir
besoin de la bibliothèque MT plot leap Je vais donc le
saisir ici. Importez donc MT plot lib PyPlot. Nous avons besoin de ce module
de la bibliothèque, et une bonne pratique
consiste à utiliser SPLT. Vous verrez donc sur le Web
que tout le monde utilise le PLT. Donc, si vous voulez être cohérent
avec les autres programmeurs, vous devez importer un PLT Cela vous facilite également la
tâche, car vous n'avez pas à le taper, mais vous pouvez simplement dire PLT, comme nous le ferons ici diagramme à points PLT est donc la méthode, et cette méthode
obtient essentiellement deux arguments, le X et le Y. Nous construisons
donc un graphique
avec un axe X et un axe Y. Le long de l'axe X, nous allons avoir les jours. Cela signifie que nous voulons l'indice de points
moyen. Donc, ce tableau est là. Et le long de Y, nous voulons la colonne de notation
moyenne. Exécuter. J'ai eu une erreur, PLT n'est pas défini car
j'ai oublié d'exécuter cette cellule pour que
l'importation soit valide Maintenant, je peux l'exécuter à nouveau, et c'est un produit. Le long de l'axe Y,
nous avons les dates, dont je sais qu'elles
sont un peu invisibles, mais nous allons corriger cela Le long de l'axe Y, nous
avons la colonne des évaluations. Vous voyez que cela commence à 3,8 quelque part ici jusqu'à cinq. Maintenant, matplot leap choisit automatiquement cette plage en
examinant les données Dans notre colonne de notation, si
vous y jetez un œil, vous dites la note moyenne. Si vous extrayez la valeur maximale, vous
verrez qu'elle est de 5,0. Et si vous voyez le minimum, vous voyez qu'il se situe autour de 3,8. Un jour, les étudiants ont laissé une
note moyenne de 5,0, donc tous. Un autre jour, ils sont partis 3,8. Matplot Lip place donc
ces deux limites de
l' axe Y au lieu de commencer l'axe
de zéro à cinq, ce qui rendrait le
tracé moins lisible C'est donc une bonne
chose pour MT Plot Lip. Le problème, c'est
que, comme vous pouvez le constater, ce graphique n'est pas interactif, il s'agit
donc simplement d'un fichier image. Vous ne pouvez pas avoir de
fonctionnalités contextuelles, vous pourriez donc voir certaines valeurs si vous
passez votre souris quelque part. Matplot Lip ne peut donc pas faire cela. Cependant, nous pouvons améliorer
un peu cela en déclarant un objet figure et lui donnant un
argument de taille fixe, disons 253. C'est la largeur et c'est la
hauteur du tracé. Alors maintenant, vous pouvez voir que nous avons un axe X plus long et
un axe Y plus court. Maintenant, si vous n'êtes pas
d'accord avec ce graphique, si vous pensez qu'il n'
est toujours pas lisible, cela ne vous dit pas
grand-chose sur la tendance. Donc, si la note
augmente avec le temps ou non, nous
pourrions sous-échantillonner les données Ainsi, au lieu d'extraire des moyennes
quotidiennes, nous pourrions extraire des
moyennes hebdomadaires. Ainsi, nous aurions moins de points le long l'axe X et une Donc, à mon avis, ce
sont trop de données. C'est illisible,
ce n'est pas utile. Nous allons les sous-échantillonner avec un meilleur graphique dans
la vidéo suivante Voici donc ce que vous avez
appris dans cette vidéo. Vous avez
appris à regrouper des données et à les tracer. Maintenant, permettez-moi de faire une
petite révision
du groupe par méthode au cas où
vous seriez toujours confus. Permettez-moi donc de le supprimer dans une autre cellule
et d'
imprimer l'en-tête du bloc de données
agrégé. Vous voyez donc que nous avons une note
et un indice des jours ici. Que s'est-il passé avec le nom du cours ? Avec cette chronique ? Que s'est-il passé
avec la colonne des commentaires ? Que s'est-il passé avec
la colonne d'horodatage ? Eh bien, ils ont disparu
parce que cette méthode de moyenne ne fonctionne qu'avec les colonnes contenant des valeurs numériques
telles que l'évaluation. Je ne peux pas calculer de
moyenne sur cette colonne, ce
commentaire, ce
nom de cours ou cet horodatage Par conséquent, les colonnes telles que horodatage
courant et les noms de cours seront automatiquement
supprimées par cette méthode, et seules ces
colonnes seront conservées De même, vous pourriez faire
un décompte à la place de cela. Dans ce cas, vous obtiendrez
un bloc de données différent. Vous voyez donc que nous avons
le nombre de noms de cours, ce qui signifie que 46 lignes ont
été créées pour cette date. En d'autres termes, 46 avis. Nous avons donc 46 évaluations, quel que soit le nom que vous voulez lui donner. Nous en avons sept ici parce ce
que fait Pandas, c'est qu'il ne prend pas en compte des valeurs autres
que
celle-ci, celle-là, etc. Nous pourrions donc
avoir ce diagramme de dénombrement. Nous indiquons donc le nombre d'
évaluations que nous avons reçues chaque jour. C'est ce que je
voulais vous apprendre dans cette vidéo. Merci beaucoup Je te
parlerai plus tard.
138. 137. Sous-échantillonnage et traçage des notes moyennes par semaine: Je vais revenir. Dans
la vidéo précédente, nous avons développé un graphique montrant les moyennes
quotidiennes des notes, mais également le
nombre quotidien de notes Dans cette vidéo, nous voulons reconstruire ce graphique, mais
sur une base hebdomadaire. C'est ce que nous allons faire.
Organisons donc un peu ce bloc de données. Je vais cliquer ici,
appuyer sur A, sur Entrée, appuyer sur M, sur Entrée, et donner à cette section une note moyenne des titres par jour, puisque nous avons fait à la
fois des moyennes et des dénombrements Exécutez cette cellule.
Nous avons maintenant besoin d'une nouvelle cellule, notée B en moyenne par semaine. Encore une fois, assurez-vous
d'avoir accès à la variable de données. Voici donc mon bloc de données. Sinon, vous devez
d'
abord exécuter cette cellule , puis effectuer
les opérations suivantes. Donc, la première chose
que nous voulons faire, c'est que nous voulons copier cette ligne. Et ce que nous voulons changer
,
c'est d'abord créer une nouvelle colonne dans le bloc de
données. Disons-le donc « faible ». Et nous extrayons de l'
horodatage le point T. Doit-il être faible ?
Essayons ça. Ou imprimez simplement le
dataframe dans son intégralité. C'est bon. Nous recevons un avertissement. Ignorons cela pendant un moment. Et nous avons la colonne de la semaine. Nous voyons donc que c'est la 13e semaine. C'est la première semaine. Voyons voir. En fait, quel est
le maximum de cette colonne ? Donc c'est 53. Quel est le minimum ? C'en est un, je suppose. Hmm. Cela signifie que nous n'
avons que 53 semaines. Pandas agrège donc les
semaines de différentes années, ce agrège donc les
semaines de différentes années, qui signifie qu'
il agrège les
notes de, disons, la première semaine de 2019
avec
les notes de la première semaine de 2019
et
les notes de la
première semaine de Toutes ces trois semaines
seront donc regroupées en une seule, et ce sera
la première semaine. Ensuite, nous avons la deuxième semaine pour
la deuxième semaine de 2019, 2019 et 2020, et ainsi de suite. Au total, nous avons eu 53 semaines car c'est le
nombre de semaines par an. Eh bien, normalement, il y a 52
semaines pour autant que je sache, mais peut-être que l'une de ces années est
probablement une année bissextile, 53 semaines, je suppose. Quoi qu'il en soit, tu as compris l'idée. Ce n'est pas ce dont nous avons besoin. Essayons ce que l'avertissement
suggère DT so calendar. Cette semaine-là. Hum. Il semble que
le maximum soit à nouveau de 53. Nous avons tout de même des semaines
agrégées. Par conséquent, la solution
consiste à utiliser SDR f time, ce qui signifie chaîne à partir du temps. Et cela prend comme argument certains codes de date et d'heure
tels que le pourcentage Y, peut-être un tiret ou un
espace qui dépend de vous. C'est facultatif. Mais c'est le code que vous
devez utiliser si vous
souhaitez extraire l'année. Ensuite, nous extrayons
le numéro de la semaine. Voyons ce que nous obtiendrons cette fois. Nous sommes en train de discuter. Donc, cette fois, nous avons l'
année et la semaine. Par conséquent, nous pouvons
distinguer les différentes lignes. La semaine 13 de 2021 porte donc
désormais ce nom. Il n'y en a pas que 13. Nous aurons donc, encore une fois, 20 2013, 2019, 13, etc. Nous avons donc des
noms uniques depuis des semaines. Et c'est ce qui nous a aidés à créer ce format datetime Vous pouvez utiliser d'autres codes. Donc, si tu voulais un mois, tu utiliserais un mois inférieur. Ensuite, nous obtiendrions
le numéro du mois, avril ici, et celui de la semaine,
le numéro de la semaine. Comme je vous l'ai dit, c'est facultatif. Ainsi, au lieu du tiret, vous pouvez utiliser un espace, et vous pouvez obtenir l'espace entre
le mois et la semaine. Où pouvez-vous trouver ces codes ? Eh bien, vous pouvez simplement utiliser les codes de format datetime de Google
Python, et vous verrez une liste, une grande liste de ce que vous pouvez utiliser Utilisons donc ici le tiret et le numéro de
semaine. Alors, quelle est la prochaine étape ? Eh bien, la prochaine étape consiste à regrouper les données. Supposons donc que la
moyenne faible d'une nouvelle trame de données égale à un groupe de points de données par semaine. Donc cette colonne. Et nous voulons en extraire
le moyen. Voyons ce que nous allons obtenir.
Cela semble donc fonctionner. Tu vois ? Eh bien, d'accord, Python envisage
la première semaine, zéro, mais cela
n'a pas d'importance. Je pense que c'est bon. Nous avons donc la moyenne
pour chaque semaine. Encore une fois, ne l'oubliez pas. La colonne de la semaine est
en fait l'index. C'est donc la première semaine, la
deuxième semaine, et ainsi de suite. Et la note, c'est la colonne. Faisons donc le complot maintenant. Diagramme à points PLT. Nous devons donc donner un X et un Y. Cette fois,
le X
sera un indice à points moyen faible, sorte que la colonne de la semaine et l'évaluation
des données s'exécutent J'ai reçu cette erreur. X et Y doivent
avoir la même première dimension, mais avoir des formes telles ou telles. Il semble donc que j' utilise des colonnes provenant de
différents blocs de données. Il s'agit donc d'une trame de données
moyenne hebdomadaire, qui compte 173 lignes, et voici l'autre
trame de données qui compte 45 000 lignes Donc je voulais dire par jour,
désolé, moyenne hebdomadaire. Attendez, voici le graphique. Encore une fois, si vous souhaitez
appliquer un certain dimensionnement, vous devez le copier
et le coller ici Cela modifie essentiellement l'objet
de la figure. Et voici le graphique. Donc note moyenne par semaine. Maintenant, vous voyez que les étiquettes ici sont écrasées les unes avec les autres Et il existe des moyens d'y remédier. Mais je dirais que cela ne
vaut pas la peine de le faire ici avec Matt Plot Lee, car si vous voulez vraiment montrer
vos données aux utilisateurs, vous
devez utiliser une bibliothèque de traçage plus
moderne, telle que des graphiques élevés, nous
utiliserons dans les prochaines vidéos Les graphiques élevés afficheront désormais un graphique
plus intelligent
, convivial,
offrant une expérience utilisateur exceptionnelle
et essayant montrer les informations de
manière plus efficace. Je dirais donc que cette
représentation est suffisante pour utiliser Matplot Leap
dans le bloc-notes Jupiter Nous ne faisons donc qu'explorer les données. Je peux voir maintenant que nous observons une tendance selon laquelle les notes
augmentent avec le temps. Peut-être que cela n'était pas très
visible dans le graphique quotidien. Vous pouvez donc voir ce graphique ici. Cela contient les chiffres actuels, mais nous pouvons changer cela pour
signifier exécuter à nouveau la cellule, puis exécuter à nouveau les cellules de
traçage, et nous pouvons voir les moyennes
quotidiennes ici, les moyennes hebdomadaires Je crois donc que vous êtes d'accord
avec moi pour dire qu'il est plus facile de voir la tendance dans ce
graphique que dans celui-ci. Et c'est là le pouvoir du
sous-échantillonnage des données. Dans la vidéo suivante,
nous allons
sous-échantillonner encore davantage les
données, et nous allons montrer les notes
moyennes par mois Rendez-vous dans la prochaine vidéo.
139. 138. Sous-échantillonnage et traçage des notes moyennes par mois: Bonjour. Dans cette vidéo, je vais
vous montrer comment créer un graphique montrant la note
moyenne par mois. Ce sera
une conférence très courte car nous
savons déjà comment faire. Tout ce que nous avons à faire est de simplement
copier cette cellule comme ça ou vous pouvez également la copier en
appuyant sur Escape puis sur CC. Appuyez deux fois sur la touche C. Ensuite, il vous suffit d'y
aller et de dire V, et cela collera
la cellule pour que vous n'ayez pas à copier tous
les codes comme ça. Mais au lieu de
copier les codes, vous pouvez copier la cellule entière. Ensuite, nous devons
apporter quelques modifications ici, le mois ici, l'horodatage, puis au lieu de U, nous avons M. Au lieu de la
semaine, nous avons Au lieu d'une semaine
ici, nous avons un mois. C'est très bien. Ensuite, nous mettons à jour ici la moyenne
mensuelle variable. Exécution moyenne mensuelle, et il
s'agit de la moyenne mensuelle. Je pense donc que ça s'améliore. Vous voyez que nous voyons la
différence plus clairement maintenant. Et c'est aussi parce que
vous voyez que la fourchette a changé au fil du graphique depuis que nous disposons de plus en plus de données
agrégées Nous avons
donc maintenant des moyennes mensuelles Cela signifie qu'il n'y a
pas une grande amplitude, une grande différence entre la valeur la plus élevée. Vous voyez
donc que la valeur la plus élevée se
situe
maintenant entre 4,6 et la valeur la plus basse, qui se
situe entre 4,3 ou 4,35 Cela rendra les hauteurs et sommets plus apparents pour l'utilisateur. C'est vrai, et c'est
à propos de cette vidéo. Dans la prochaine vidéo, nous
allons faire quelque chose de
plus différent. Nous allons chercher à créer plusieurs lignes dans
un seul graphique, et chaque ligne représentera la moyenne mensuelle des
notes pour chaque cours. Jusqu'à présent, nous n'avions que des cours
agrégés. Alors parlons-en avec vous
dans la prochaine vidéo.
140. 139. Notes moyennes par cours par mois: Bonjour, bon retour. Dans cette vidéo, nous allons générer un graphique contenant
différentes lignes, et chaque ligne représentera la note moyenne par mois
pour un cours donné. Nous avons donc plusieurs cours. Nous allons avoir une ligne pour chaque cours. C'est ce que nous allons faire. Mettons un titre à l'âge de trois ans. Il s'agirait d'
une note moyenne par mois et par cours. C'est vrai. C'est ainsi que nous procédons. Tout d'abord, nous avons
besoin d'une colonne de mois dans le bloc de données. Maintenant, je sais que c'est ce que
nous avons fait ici. Nous avons déjà
cette colonne du mois, mais je veux garder
le code séparé, afin que cela ne fasse pas de mal si vous le refaites ici juste
pour des raisons de cohérence. Donc, pour dire que cette cellule
fait cette chose en particulier, elle construit un graphe
de plusieurs lignes, et pour ce graphique, nous avons
besoin de cette expression. C'est donc la même expression. Je peux juste le copier
et le coller ici. Bien, nous n'avons pas besoin de
changer quoi que ce soit, il suffit
donc d'extraire
le mois et de vérifier. Nous avons donc le
mois pour chaque ligne. Puisque nous regroupons par mois, il est logique de l'avoir. Ensuite, nous devons utiliser la
méthode group by pour créer
une nouvelle trame de données, qui serait une agrégation. Maintenant, juste pour que nous le
comparions pour le comparer. Voyons à quoi ressemble le cadre de données
moyen du mois
précédent . Encore une fois, c'est ce que nous avions. Ce bloc de données ne contient pas d'informations
sur les cours. Il manque donc les informations sur le nom du
cours. Vous voyez ici que nous
avons cette colonne. Nous devons intégrer cette dimension d' une manière ou d'une autre dans notre nouveau cadre de données
agrégées. Ce que nous devons faire ici,
c'est donc quelque chose de différent. Encore une fois, nous devons
créer une nouvelle variable. Appelons cela un CRS
moyen mensuel, bien sûr, pour faire
la distinction entre
cette trame de données et ce CRS
mensuel moyen Encore une fois, il s'agira d'un produit par produit de cette trame de données, en utilisant un groupe par méthode. Mais dans ce cas,
laissez-moi le supprimer afin que vous
puissiez voir l'autre code ici
pour voir la différence. Dans ce cas, non seulement le mois figurera dans la liste
des colonnes à utiliser pour
le processus d'agrégation, mais aussi, pouvez-vous deviner le nom du cours ? Donc, mois par mois,
c'est ce dont nous avons besoin. Appliquons maintenant sérieusement et
voyons ce que nous avons obtenu jusqu'à présent. Il s'agit donc d'un bloc de données. Et en gros, celui-ci comporte en fait deux niveaux d'index. Il contient le mois et
le nom du cours. Vous pouvez le constater si
vous faites cet index. Vous voyez donc que c'est un index multiple. Vous voyez la colonne du mois ainsi qu'un nom de cours
qui n'apparaît pas ici, mais il est là et
tel que vous l'avez vu, vous pouvez le voir ici. Vous voyez qu'ils sont en gras. Ces valeurs, ce sont
donc des index. Et voici une chronique. Les colonnes
ne sont donc que des notes, une seule colonne. Maintenant, ce n'est pas encore très
utile car la façon dont cela est construit
est que nous avons une ligne ici. Il s'agit donc d'un groupe de
lignes. Tout commence ici. Donc le premier cours, le deuxième cours, le
troisième, le quatrième, le cinquième. Et il y a aussi
d'autres cours ici
, que nous pouvons voir
en appliquant ici une tranche. Voyons donc les 20
premiers enregistrements. Nous voyons maintenant les
20 premiers enregistrements dans leur
intégralité, le premier jour de pardon, premier mois de 2018, deuxième mois de 2018, et ainsi de suite. Ce cours a
obtenu cette note pour ce mois-là. Ce cours a obtenu cette note
moyenne pour ce mois et pour tous
les autres cours. Ensuite, le même schéma, tel que celui-ci ici, se répète encore et
encore pendant tous les mois. Maintenant, pour avoir ces données
dans une meilleure structure, nous devrions appliquer ici méthode de
dépile pour décompresser
essentiellement cette trame de données et obtenir cette meilleure Maintenant, nous avons une sorte
de tableau croisé dynamique, pour
ainsi dire, nous avons
le mois ici, premier
mois, le deuxième mois, le troisième mois, et chaque colonne
représente désormais un cours. Si vous
voulez savoir, par exemple, l'évaluation de l'ensemble du cours de
Python créé dix applications OOP professionnelles
pour un mois donné, disons que
celle-ci n'est aucune parce que le cours n'a pas été publié
Pourtant, à cette date. Mais si vous regardez à la fin, disons -20 Vous verrez que dès le
premier mois de 2020, nous avons une note moyenne
pour ce cours, n'est-ce pas ? Et ainsi de suite, que pouvons-nous faire cette trame de données maintenant ?
Eh bien, nous pouvons le planifier. Mais cette fois, nous
allons utiliser une approche différente,
car nous ne pouvons pas utiliser ce diagramme à points ,
car nous avons
plusieurs colonnes Cela suppose donc un X et un Y, mais lequel est le X ? Le X, bien sûr, est le mois.
Nous sommes clairs à ce sujet. Mais lequel est le Y ? C'est ça, ça ou ça ? Nous avons donc plusieurs colonnes. Une solution serait d'
écrire cette fonction de tracé
plusieurs fois, ou peut-être de créer une boucle qui itère dans
le bloc de données, mais une autre
méthode plus simple consiste à simplement pointer vers le diagramme
à points CRs moyen
et Villa, nous l'avons Bien sûr, cela semble un gâchis, mais améliorons-le un peu. Puisque nous avons utilisé la fonction de tracé directement à partir du bloc de données, non du PLT, nous pouvons utiliser des arguments de
taille de figure ici Disons 253. Et maintenant, ça a l'air un peu mieux. Ce n'est toujours pas l'idéal, peut-être
pourrions-nous augmenter ce chiffre à huit. OK. Maintenant, ça marche. Nous avons donc une légende qui indique la couleur de
chacun des cours. Encore une fois, je ne suis pas fan de
ce type de graphique, mais lorsque nous utiliserons la bibliothèque de graphiques
High avec l'interface Web, cela va beaucoup mieux
paraître. Et si nous utilisions le nombre ici ? Nous obtiendrions le
graphique correctement, mais la légende
serait un peu confuse. En effet, dans le cadre de données
CRS moyen du mois, nous avons non seulement le
décompte des notes, mais également d'autres comptes d' horodatages et
d'
éléments dont nous n'avons pas besoin Vous voyez que,
par exemple, dans ce cours,
100 exercices Python, l'un d'eux
est horodaté Vous voyez que c'est un autre
niveau de colonnes. Donc tout cela appartient
à l'horodatage, non ? Le nombre d'horodatages. Ensuite, nous avons le
décompte des évaluations, commençant par ici
et jusqu'à quelque part. Nous ne voyons pas toutes les colonnes parce que Jupiter les
tronque, mais vous voyez l'
idée, jour et semaine Alors, comment extraire
uniquement la note ? Eh bien, c'est facile en fait. Je vous ai dit que le groupe B, qui commence ici
et se termine ici, renvoie une trame de données. Maintenant, à partir de cette trame de données, nous n'extrayons que l'évaluation. Et le problème est résolu. Nous obtenons maintenant un graphique clair
indiquant le nombre de notes restantes pour
chaque mois de l'année. Ainsi, à partir du tout
début de 2019 et jusqu'en 2020, vous pouvez voir cette ligne rose ici, qui représente le nouveau cours, le cours complet de Python. Cela commence quelque part en 2021. Donc, le premier mois de 2021. Et bien sûr, vous pouvez encore une fois obtenir la moyenne comme
vous le faisiez auparavant. Mais avec la moyenne, nous
obtenons encore une fois les mêmes résultats puisque la méthode moyenne ignore ces horodatages et ces colonnes
non numériques Bref, ça les fait tomber. Mais le décompte ne les fait pas tomber. Il les compte et nous
donne tellement de données. Bien, j'espère que c'était clair, et je te parlerai plus tard. On se voit.
141. 140. Quel jour de la semaine sont les personnes les plus heureuses: Quel jour de la semaine les
gens sont-ils les plus heureux ? Pouvons-nous répondre à cette
question en utilisant Python et les données dont nous
disposons actuellement ? Eh bien, je pense que oui,
nous pouvons le faire,
et c' est ce qui fait la beauté
de l'analyse des données. Si vous êtes un peu créatif, vous pouvez répondre à
des questions très intéressantes sur vos données. Dans cette vidéo, nous
allons donc découvrir ensemble quel jour de la semaine les
gens sont les plus heureux ?
Comment s'y prend-on ? Eh bien, en générant un graphique. Alors, comment pouvons-nous le faire ? Eh bien, à mon avis, nous
pouvons utiliser la logique selon laquelle si la note
moyenne de tous les cours, disons le mercredi, est la plus élevée de la semaine, nous pouvons constater que
les participants
sont peut-être plus positifs
ce jour-là le mercredi Je suis sûr que nous pouvons le dire parce
que nous
avons tellement de données ici. Donc, des milliers d'évaluations, et statistiquement,
cela nous
donne, je pense, une grande
confiance dans le résultat. Ce que nous devons faire, c'est créer un graphique, qui comportera sept
jours sur l'axe horizontal, du lundi au dimanche, et
sur l'axe vertical, nous aurons la
moyenne pour chaque jour. Cela signifie que nous devons
effectuer une grande partie de l'agrégation de données. C'est ce que nous allons faire. Quel est le jour où les gens sont
les plus heureux ? Maintenant, nous allons utiliser comme
toujours le bloc de données. nous reste donc
ces évaluations à des horodatages
particuliers Alors, que devons-nous extraire ? Eh bien, le jour de la semaine.
Appelons ça comme ça. Ce qui est égal à
Data, timestamp. Donc, à partir de l'horodatage, nous accédons à la propriété DT,
et pour cela,
nous avons besoin de SDR FT. Et
le jour de la semaine. Donc, si vous voulez le dimanche, le lundi
ou le mardi, le nom du jour de
la semaine peut être extrait l'aide du code au format A. Vous pouvez le rechercher sur Google. C'est ce que je fais aussi. Il est impossible de se
souvenir de tout. Maintenant, nous pouvons à nouveau imprimer les données, et nous voyons que nous
avons un jour de semaine. Colonne. Les vendredis, vendredis et
vendredis se
répètent donc encore et encore, et nous devons maintenant
agréger les données pour obtenir la moyenne pour chaque jour de la semaine Supposons donc la
moyenne par jour de la semaine pour le bloc de données qui va contenir
les données agrégées. Encore une fois, le groupe B est notre épargnant. Mm. Qu'est-ce qu'on utilise cette
fois ? Eh bien, en semaine. Et puis fais le méchant. Et voyons ce que nous obtenons en moyenne par jour de la semaine Et c'est tout. Alors, il ne
nous reste plus qu'à le supprimer. Tout ce que nous avons à faire
est de tracer un diagramme à points. L'axe X serait
la semaine, l'indice moyen des points, et l'axe Y, la note moyenne, le
jour de la semaine, désolé. Plot, c'est la réponse. Je sais que la commande n'est pas celle vous vous attendiez,
mais nous pouvons régler ce problème. Quoi qu'il en soit, nous pouvons
dire que le vendredi est très
différent des autres jours. Ainsi, le vendredi, les gens laissent une note moyenne de
4,455 sur
une échelle de un à cinq Et c'est logique. Je pense que
je me situe également dans cette fourchette, donc j'ai tendance à être
plus heureuse le vendredi fin de semaine
et le week-end
approchent donc c'est logique. Maintenant, comment pouvons-nous ordonner ces données ? Nous devons donc commander la colonne
des jours de semaine. Eh bien, nous pouvons le faire. Permettez-moi commenter cela pendant un moment. La moyenne des jours de la
semaine est égale à la moyenne des jours de la semaine. Triez les valeurs par jour de la semaine
, puis imprimez-les pour voir
quelle est la moyenne des jours de la semaine. Et vous allez voir que ce n'est pas l'ordre auquel
nous nous attendions. Cela se produit, bien sûr, parce que la colonne d'index, ici, contient des valeurs de chaîne. Donc, le vendredi, le lundi, un
jour, tout est une question de conditions. Par conséquent, Python les classe dans un ordre alphabétique Donc, le vendredi, le premier, le
lundi, etc., sont des chaînes
car cette méthode produit une chaîne, une colonne de
jour de la semaine Vous voyez une chaîne de temps en temps. horodatage était donc l'heure, mais nous l'avons converti en chaîne Maintenant, il peut y avoir différentes
solutions pour résoudre ce problème. Ce qui me vient à
l'esprit, c'est que nous pourrions ajouter un numéro de jour de semaine. Ou simplement le numéro. Pour le bloc de données, et à partir de là, encore une fois, vous utilisez une chaîne de
temps en temps, mais cette fois, nous allons utiliser pourcentage en minuscules W. Et
ce que cela nous donnerait, c'est que laissez-moi vous montrer que Data now est ce bloc de données et
qu'il porte ce numéro de jour Nous avons donc maintenant un
numéro attaché à chaque ligne en plus du
nom du jour de la semaine. Cela nous permet maintenant de trier les valeurs en fonction de cette colonne du numéro du
jour. lundi est le
premier, le vendredi est le 5 et ainsi de suite. C'est ce que nous allons faire. Je vais supprimer
ce bloc de données delta à partir de là, l'impression, ce
qui
est rare, et le remplacer par le numéro du jour. Et ici, moyenne des jours de la semaine, supprimer, peu fréquent ceci, exécuter. Nous avons le numéro du jour de
l'erreur clé. Oh, parce que j'ai oublié
d'ajouter le numéro du jour ici. Encore une fois, nous avons une erreur. Voyons où l'
erreur s'est produite. Voici donc les erreurs
profondément ancrées dans les bibliothèques, que vous voyez dans MT plot Lip et cela montre l'
erreur dans notre code. C'est donc dans ce
diagramme à points linéaire. Et il dit que la valeur doit être un inceste de chaîne ou d'
octets, pas un tuple Essayons donc de résoudre
l'erreur ici. Je vais décommenter
cela et voir quelle est la moyenne par jour de la semaine Le problème ici
est donc que la
moyenne des jours de la semaine de cet indice
renvoie un indice double, qui ressemble à ceci, il s'agit
donc d'un indice multiple. Il contient le jour de la semaine
et le numéro du jour. Par conséquent, la
méthode de tracé sera confuse, sorte qu'elle ne saura pas lequel de ces tableaux doit être
tracé le long de l'axe X. Nous avons donc besoin d'un moyen d'
extraire uniquement les colonnes. Donc, les noms des jours de la semaine. Vous pouvez le faire en utilisant
les valeurs de niveau get. C'est une méthode qui
attend un argument. Dans ce cas, nous pouvons
saisir zéro ou un. Zéro signifie que nous extrayons, que nous accédons à la première
colonne du multi-index, et un serait
la deuxième colonne Nous avons donc besoin de la première colonne. Et cela nous donne ces jours, donc les noms des jours. Par conséquent, nous
pouvons maintenant
l'utiliser ici pour
copier cette expression. C'est le tableau que nous
voulons tracer le long de l'axe X. Nous l'avons donc mis ici. Exécutez,
et voici le résultat. Si nous voulons agrandir
l'image,
nous devons faire en sorte que la
taille de la figure soit égale à une liste de 253, cela fonctionne bien, ou peut-être un peu Plus petit. Oui, c'est mieux. Il faut donc trouver un bon rapport entre la
largeur et la hauteur. Et encore une fois, nous constatons que le vendredi est le jour où la note moyenne est la
plus élevée. C'était donc
à propos de cette vidéo. Merci beaucoup de m'avoir
suivi. Je vous parlerai dans les prochaines vidéos. À bientôt.
142. 141. Autres types de parcelles +: Bonjour. Dans cette vidéo, je vais vous donner quelques informations
importantes
sur les différents types de parcelles. Nous avons créé plusieurs
intrigues dans les vidéos précédentes, et elles avaient toutes
quelque chose en commun. C'étaient tous des tracés linéaires. Alors, comment utilisons-nous
différents types de graphes ? Eh bien, ces diagrammes linéaires sont
générés par la méthode du tracé. Mais si vous utilisez la
méthode du cerf pour explorer le PLT, donc le PLT, vous pouvez voir que vous
pouvez également saisir des informations ici. Vous voyez que vous pouvez également
utiliser d'autres types de graphes. Ils ne sont pas tous des graphiques. Certaines d'entre elles sont des propriétés que vous attribuez au graphique que
vous produisez, mais vous verrez, par exemple, diagramme se trouve quelque part ici. C'était donc un complot,
et vous pouvez voir, par
exemple, que nous
avons un bar, celui-ci. Si vous remplacez cela par une barre, nous placerons ces barres
à l'intérieur de la ligne. Mais ce n'est pas
une très bonne représentation pour ce type de graphique car les différences sont très
faibles entre les notations. J'opterais donc pour l'intrigue. Certains de ces types de diagrammes, par
exemple Pi, ne
conviennent pas à ce type de données. Donc, si vous essayez ce Pi, vous allez obtenir une erreur. Parce que si vous utilisez de l'aide, disons « aidez PLT Pi Donc, un graphique à secteurs,
vous allez voir que Pi attend
un X mais pas un Y. Alors, comment pourrions-nous utiliser
un graphique à secteurs avec nos données ? Eh bien, peut-être, alors laissez-moi
créer une nouvelle entrée ici. Nous pourrions peut-être créer un graphique
circulaire, disons, nombre de notes par cours,
ce qui serait logique. Voici donc ce que nous pourrions faire. Supposons que partager
le nouveau bloc de données soit égal aux données du groupe B. Nous voulons les regrouper par nom de cours, par cours, puis appliquer le nombre. Et cela nous donnerait
ce nouveau cadre de données. Nous nous
intéressons donc à la colonne de notation. Nous voyons combien de notes chaque cours a
reçu au total. Maintenant, si nous ne voulons pas
toutes ces autres données, seule la colonne de notation
nous
intéresse. Donc, entre le décompte des groupes
B et D, nous évaluons, nous
extrayons donc la colonne de notation. Cela
nous donnerait alors du sérieux. Nous pouvons donc l'utiliser.
Permettez-moi de créer une nouvelle cellule avec le point PLT pi Nous avons donc dit que
Pi avait un X comme argument. Ce serait donc
la série d'actions. Le X est donc au moins une série, une colonne de blocs de données. Ainsi, tout type de tableau s'exécute. Et oui, c'est la carte Pi. Mais il n'a pas d'étiquettes, alors donnons-lui quelques étiquettes. C'était comme ça ? L'argument. Des étiquettes ? Oui. Actuellement,
il est défini sur none, donc la valeur par défaut est none. Donc, si vous voulez donner des étiquettes, vous diriez partager un index par points. L'index est la colonne contenant
le nom de chaque ligne. Exécuter. Et oui, cette fois, nous recevons ces étiquettes pour
chaque tranche de tarte. Vous voyez donc que le
méga-cours de Python, par exemple, a obtenu le plus grand nombre de notes. Puis vient le Python pour
débutants avec des exemples, la tranche brune qu'elle contient, et ainsi de suite, d'autres
cours également. Maintenant, nous obtenons également ici
un tas
de métadonnées produites par cette
méthode. Mais comme je l'ai dit, matplot leap n'est pas la bibliothèque de traçage la
plus conviviale Elle est
donc idéale pour l'exploration de
données, mais elle n'est pas très bonne pour présentations destinées à d'autres spectateurs, à d'autres lecteurs, à d'
autres utilisateurs qui souhaitent voir Maintenant, c'est la fin de cette vidéo. Et comme je vous l'ai déjà dit, nous allons créer
tous ces graphiques, chacun d'
entre eux que vous avez vus, y compris celui-ci, laissez-moi
le reconvertir en graphique. Nous allons
reproduire ces graphiques, mais cette fois en utilisant une bibliothèque Web plus
moderne qui trace les données dans un navigateur. Vous
pouvez créer une application Web très facilement afin de
donner l'URL de votre application Web vers
votre site Web aux
utilisateurs afin qu'ils puissent explorer ces graphiques
eux-mêmes de manière interactive La bonne nouvelle, c'est que
nous n'allons plus faire d'agrégations en utilisant le
groupe car nos données sont prêtes Nous allons simplement
les copier , puis utiliser
la fonction
de traçage de la nouvelle bibliothèque de graphiques
élevés que nous allons
utiliser dans les prochaines vidéos Merci donc beaucoup d'avoir
suivi cette série. Je te parlerai dans
le prochain. À bientôt.
143. 142. App 4 (partie 2) : analyse et visualisation de données avec des tracés interactifs dans le navigateur: Bienvenue dans une nouvelle
série de vidéos. Dans ces vidéos, nous
allons apprendre
à créer des
graphiques interactifs avec Python. Permettez-moi de vous montrer les graphiques
exo que nous allons créer
tout au long de ces vidéos Ce sera le premier graphique. Vous voyez qu'ils sont interactifs. Par exemple, lorsque nous passons
la souris sur le graphique, ces
fenêtres contextuelles indiquent la valeur exacte à l' endroit où le
curseur est pointé Ce sera une
note moyenne par jour. Ensuite, nous avons
une note moyenne par semaine mois par mois, par cours,
pour plusieurs cours. Ensuite, nous avons ce graphique sympa. C'est un graphe de flux. Encore une fois, il s'agit de
notes moyennes par mois et par cours, mais présentées dans un graphique différent. Ensuite, nous avons la question de savoir quand
les gens sont les plus heureux. Enfin, nous avons
ce diagramme circulaire
qui, encore une fois, est interactif. Et il est bien plus
beau que les autres graphiques que nous avons
créés avec Matt Plot Lip. Ces graphiques sont donc
construits avec des graphiques élevés. Maintenant, High Charts est une bibliothèque de traçage
JavaScript, mais nous pouvons utiliser des graphiques élevés
en Python via Just Pi Et Just Pi est un
framework Web pour Python. C'est assez nouveau, y a
donc de fortes chances que vous
n'en ayez pas entendu parler. Juspi est donc un
framework Web comme FAS, mais Juspi présente un avantage crucial L'avantage de Juspi
est que vous n'avez pas besoin d'écrire du HTML, du
JavaScript ou du CSS Vous pouvez créer des applications complètes, des sites Web
complets d'apparence moderne uniquement avec Jus Pi. Vous allez donc tirer
2 pierres avec un seul oiseau. Je veux dire, un oiseau avec deux pierres
ou deux oiseaux avec une pierre. Tu as compris l'idée.
Vous allez donc apprendre à la fois le Jpi et les high
charts. C'est ce que je voulais dire. Et voici le plan.
Dans la vidéo suivante, je vais
vous montrer comment créer un site Web Pi d'une page, qui ne contient qu'un titre
et un paragraphe avec du texte. Donc, une simple page Web. Ensuite, dans la vidéo qui suit, nous allons développer
ce site Web en ajoutant un
graphique haut de gamme à la page Web. En d'autres termes, dans
les deux vidéos suivantes, vous allez apprendre à la fois comment créer une application Web Just
By et
comment ajouter un
graphique à graphiques à Justpy WebApp comment ajouter un
graphique à graphiques à Justpy Ensuite, dans les vidéos qui
suivront ces deux vidéos, nous allons apprendre
à créer d'autres graphiques. Donc, celles que je
vous ai montrées ici sont
les cartes que nous avons construites et que nous avons créées sur Jupiter
avec Mat Plot Lip. Nous allons donc créer
chacune d'entre elles. Alors préparez-vous, et je vous
parlerai dans la prochaine vidéo.
144. 143. Créer une application Web simple: Bonjour. Dans cette vidéo, vous allez
apprendre à créer une application Web simple avec le framework Web
Just Spy. Je vais utiliser le
code Visual Studio pour écrire l'application Web. Jupiter ne fonctionnerait donc pas ici. Je vous suggère donc d'
utiliser un IDE tel que le code
Visual Studio ou tout autre IDE ou éditeur de texte
que vous utilisez. J'ai donc lancé le code Visual
Studio ici. Je vais aller sur File Open. Dans le code Visual Studio
, allez ensuite dans le dossier où se trouve
mes révisions,
ce fichier CSV et appuyez sur Ouvrir Cela créera un
nouveau code Visual Studio, répertoire de
projet, pointant vers le dossier où se trouvent les
révisions de ce fichier CSV. Nous n'avons pas besoin de revoir ce fichier CSV pour le moment,
car dans cette vidéo, nous allons simplement
créer l'application Web. Créons donc un fichier Python. Je vais l'appeler
zero simple app point PY. Je vais donc créer
plusieurs applications Web, et j'utilise maintenant 01234 Dans les noms de ces fichiers. Pour utiliser Juspy, nous devons
avoir installé Justpy. J'utilise donc Python 3.9 3.9 maintenant, et je vais aller au
terminal New Terminal, et ici j'utiliserai
PIP 3.9 puisque j' utilise Python 3.9,
installez uniquement PY C'est bon. Cela a été un succès. n'ai donc commis aucune erreur. J'ai reçu ce message indiquant qu'il
était déjà installé. Quoi qu'il en soit, j'espère que vous avez également
réussi l'installation. Ensuite, nous
devons simplement importer. Pi. Une bonne pratique
consiste à l'importer en tant que
JP car vous
allez consulter la
documentation de Just Pi, et tous les exemples
utilisent ce nom JP. C'est donc une bonne idée d'être cohérent avec
la documentation. Désormais, chaque application By aura un objet principal
appelé page Quasar C'est donc la
page Web, en gros. Et cette page Web peut
contenir différents éléments. Il peut donc contenir,
par exemple, sur la première page, un
titre, un paragraphe
ou peut-être un tableau. Tous ces éléments
seront donc ajoutés à cette page Quasar sur
la page Web Pourquoi s'appelle-t-il Quasar ? Eh bien, parce que Jus Pi utilise
le framework Quasar, qui est essentiellement un framework qui n'est pas lié à Python C'est un framework construit
avec JavaScript, mais Jus Pi utilise ce framework et nous pouvons utiliser ce framework via Python. Permettez-moi donc de créer une page Quasar. Ce que nous faisons d'abord, c'est
créer une fonction d'application. Vous pouvez le nommer
où vous le souhaitez, mais en gros, l'idée est que cette application renvoie
cette page Quasar Ainsi, à l'intérieur de la fonction, nous créons une variable
égale à Jp quasar page Donc Q, P. C'est une classe que nous
instancions Nous créons donc une instance d'
objet d'instance de page
quasar ,
cette fonction devrait alors
renvoyer cette instance cette fonction devrait alors de
page quasar Et c'est entre les deux que nous
écrivons les éléments que cette
page va contenir. Créons donc une variable
pour chaque élément. Créons un titre. Un titre est donc essentiellement du texte, mais avec une très grande taille de police. Et nous faisons JP, donc nous pointons sur ce
point QD, donc QDV Il s'agit essentiellement d'une division si
vous connaissez le HTML. C'est une division, mais
c'est une division Quasar. Il a donc un
style Quasar qui lui donne un aspect moderne et
vous permet également de le personnaliser très facilement, comme vous allez le
voir dans un instant. Comme premier argument, nous devons passer à sa place. Bien sûr, cela appartient
à WP cette variable,
que j'ai nommée WP
pour représenter page Web, page Web. Cela fait partie de ça.
Ensuite, les autres arguments que QD obtient sont le texte Quel texte voulons-nous y
afficher ? Sous forme de chaîne, disons, une analyse des révisions de cours. Ajoutons également un paragraphe. Appelons à nouveau cela P un
égal à p point QDV. Nous utilisons toujours QDV et A, cela appartient à nouveau à WP.
Le texte, cette fois. Écrivons donc comme une
description de la page Web, ces graphiques représentent la révision du
cours. Analyse de la révision des cours. Ce serait une application Web très
minimaliste. Mais si nous en sommes là maintenant, rien ne se passera car nous créons la fonction, mais aucune instance n'
appelle cette fonction, donc nous ne l'
appelons nulle part. Faisons donc ce que
nous appelons cette fonction. Nous pouvons utiliser Pi de JP. Jus Pi est donc une fonction
et elle attend en entrée une fonction qui
renvoie une page quasar, qui est cette fonction ici Vous pouvez donc simplement
écrire une application sans appeler la fonction de l'application. Donc Pi, cette fonction se
chargera d'appeler cette fonction. C'est vrai. Si nous l'exécutons maintenant, vous devriez voir ce message
ici indiquant que Just By est prêt à se rendre à cette adresse avec
ce numéro de port de 8 000. Si vous appuyez sur Ctrl et cliquez sur
Commande puis sur Commande, cela devrait ouvrir votre navigateur
par défaut. Et voici l'
application Web, donc elle fonctionne. Maintenant, vous pouvez vous attendre à
ce que ce soit dans une police plus grande. Cela ne s'est pas produit
car nous n'avons ajouté aucun style à
aucune de ces divs. Ces divisions ne
sont donc que du texte brut. Pour ajouter du style aux éléments, vous pouvez ajouter un argument classes
à n'importe quel élément Q div, qui est égal à une chaîne. Alors, comment pouvons-nous agrandir cette division ? Eh bien, je peux vous le montrer, bien sûr, mais je veux vous
montrer comment vous pouvez trouver n'importe quel type de style que
vous pouvez utiliser avec Pi. Donc, ce que vous devez faire est
simplement de rechercher le style Quasar. Et puis passez au premier résultat. style et d'identité,
vous allez voir les attributs que vous pouvez
modifier pour les éléments de page, tels que l'élément div
que nous avons actuellement sous la main Nous sommes donc
préoccupés par la topographie. Si vous cliquez ici, vous
verrez des exemples ici. Donc, si vous voulez que
le texte soit aussi grand, vous devez utiliser le texte H. Essayons donc ça.
Copiez-le et modifiez-le ici. Envoyez un texto à H. Maintenant, si vous utilisez du code Visual
Studio,
vous
devez savoir utilisez du code Visual
Studio,
vous que si vous réexécutez le code
avec ce bouton, alors que le code est en cours d'exécution, rien ne se passera. Le programme va donc simplement se bloquer et si vous revenez
à l'hôte local, vous verrez que l'ancienne
application est toujours en cours d'exécution. Donc, ce que vous
devez faire, c'est vous rendre ici et appuyer sur Ctrl C pour arrêter le processus en cours, puis aller sur ce bouton
et l'exécuter à nouveau. Ensuite, vous allez voir que l'application est mise à jour et que nous
avons ces gros téléphones maintenant. Regardons donc Quasar sous l'angle du
style et de l'identité Nous
parlions donc de typographie. Vous avez également
ici d'autres exemples que vous pouvez modifier. Donc, si vous voulez ajouter
une autre propriété, disons que vous voulez placer ce
texte au centre, vous voulez utiliser du texte pour écrire. Donc, tu le copies.
Accédez à votre application, créez un espace et collez
l'autre propriété de style. Arrêtez le code, réexécutez. Rechargez la page. Et vous voyez que le
texte est parti vers la droite. Oui, donc je voulais
en faire un point central. Disons un centre de texte. Arrête de courir à nouveau. Nous recevons parfois cette fenêtre contextuelle qui envoie un SMS indiquant que
l'application change, nous pouvons
donc appuyer sur OK, et cela rechargera la page C'est donc ce à quoi je m'attendais. Si vous souhaitez un peu de rembourrage, c'est-à-dire si vous voulez que ce
texte ne soit pas trop proche de la
limite supérieure de la page Web, vous pouvez
examiner l'espacement Donc, en termes d'espacement, vous
allez voir
ici que vous avez
toutes ces options Ainsi, par exemple, si vous souhaitez que le rembourrage sur le dessus
soit très petit, vous utilisez ce texte Si vous voulez avoir
un rembourrage complet,
donc tout autour du texte, vous devez
avoir un espace ici, espace entre le texte et
la limite supérieure et un espace entre ce texte et
l'élément suivant, qui serait celui-ci ici Ensuite, vous voulez
peut-être utiliser le rembourrage sur tous les supports, donc vous voulez le
copier et l'y ajouter Alors créez un espace. Réexécutez, rechargez Et vous voyez que maintenant nous avions un peu plus d'espace entre
cela et cela. La dernière modification que je
souhaite apporter est de réduire un peu le texte. Contrôlez C, exécutez à nouveau, allez ici, rechargez, et
maintenant c'est plus beau C'est ainsi que vous créez
simplement avec des applications Web. Notez que l'ordre dans lequel vous créez
ces éléments est important. Vous voyez donc que l'analyse, bien
sûr, les avis sont au top. De l'autre élément ici. Donc, si vous voulez continuer à ajouter
des éléments ci-dessous, vous devez respecter l'ordre. Vous souhaitez donc ajouter
d'autres éléments ici et n'oubliez pas
que vous
devez toujours connecter cet
élément à la page Web. Voilà comment
créer une page Web simple. Mais les Q DFs ne sont pas le
seul élément que nous pouvons utiliser. Nous pouvons également utiliser un élément graphique
élevé, qui est un graphique que nous
pouvons ajouter à notre page utilisateur. C'est ce que nous allons faire dans la vidéo
suivante. À bientôt.
145. 144. Créer une application Web de visualisation de données: Bonjour, bon retour.
Dans la vidéo précédente, nous avons créé une application avec Just Pi. Cette application contenait
deux composants, ils sont
donc
appelés composants dans Jus Pi. Donc, ce composant ici, Q Div et un autre composant Q Div, sont tous deux ajoutés
au composant principal, qui est la page Quasar Dans cette conférence, nous allons
ajouter un troisième composant, qui sera
un graphique haut de gamme, qui est toujours un
composant de Just Pi. Faisons donc cela étape par étape. Je vais créer un nouveau Python dans lequel je
vais écrire cette nouvelle application Appelons-le « jour de notation
moyen ». Donc, note moyenne
par jour, c'est PY. Je vais juste copier
ce code parce que nous en avons besoin et l'espacer ici. Il ne nous reste plus qu'à ajouter
le composant High Charts. Alors allons-y
étape par étape. La toute première étape que nous
voulons franchir est de
trouver le graphique approprié
dont nous avons besoin. Il existe un très
bon moyen de le faire. Nous pouvons consulter la
documentation sur les graphiques élevés et regarder les exemples de graphiques qu'ils montrent sur cette page, puis nous pouvons
choisir l'un d'entre eux. Faisons-le. Choisissons le
graphique dont nous avons besoin. Accédez à votre navigateur et
recherchez simplement les
documents sur les graphiques élevés sur Google. Vous trouverez sur cette page la documentation de High
Charts. High Charts est donc également une bibliothèque JavaScript permettant
de produire des tracés. Donc, tout comme Quasar, Quasar était une bibliothèque JavaScript. Cela n'a rien à voir avec les palmarès élevés. Et Python réunit
ces deux bibliothèques, ces deux frameworks, ce qui est vraiment génial pour nous, programmeurs
Python, d'utiliser ces
deux
bibliothèques JavaScript modernes de Python Nous voici donc dans la documentation sur les
graphiques élevés, et nous voulons passer aux types de
graphiques et de séries. Et ici, vous
allez voir que nous
avons différents types de graphiques. Donc, dans notre cas, je pense qu'un graphique spline
serait approprié Donc, si vous cliquez
sur le graphique Spline, vous verrez
cet exemple ici Il s'agit de la température
par altitude. Il a cet axe de température horizontalement et cet axe
d'altitude verticalement. Maintenant, chaque graphique
fournit le code, le code JavaScript qui
produit ce graphique en particulier, et vous pouvez voir que vous
pouvez y accéder à partir du JSFiddle ou du stylo de code, qui sont essentiellement deux éditeurs de code
en ligne Si vous cliquez sur JSFiddle, le code
qui produit ce graphique s'ouvre Et chaque graphique
possède son propre code. Donc, si vous accédez au graphe de flux, vous revenez à JS v, il vous montrera le
code de ce graphe de flux. Bref, revenons en arrière. C'est donc le graphique qui
nous intéresse, et voici le code qui
produit ce graphique. Vous pouvez donc également voir une
version en direct du graphique ici. Si vous modifiez quelque chose ici, cela produira ce graphique. Mais je ne dis pas que vous
devez apprendre le Javascript. Tout ce que nous avons à faire
est de copier le code qui commence après
le coma de ce conteneur ici. Cela signifie donc qu'à partir de
ce support bouclé, vous devez le sélectionner Et descendez jusqu'à ce que vous voyiez cette demi-colonne et
cette parenthèse ronde,
et que vous vouliez copier vers le haut jusqu'
à ce que vous voyiez cette demi-colonne avec cette parenthèse ronde. Vous voulez donc inclure
ce support bouclé. Appuyez donc sur
Ctrl C ou allez-y et copiez-le
, puis passez à Python. Et ce que nous devons faire, c'est
créer une chaîne. Créons une variable. Supposons que la définition du graphique
soit égale à une chaîne. Je vais utiliser des guillemets. Donc six citations, et je
vais les partager. Donc trois citations ici, trois citations ici. Ici, je vais
coller tout ce code. Encore une fois, il faut
être très prudent ici. Ce code commence par
ce crochet, puis il passe sous
forme de
graphique et ainsi de suite, et il se termine par
ce crochet bouclé. Maintenant, avant de
vous expliquer ce que je fais ici, laissez-moi d'abord le
faire fonctionner rapidement, puis je reviendrai
au code et je vous expliquerai
ce qui se passe ici. Donc, une fois que vous avez la
définition du code, c'est une définition, vous pouvez aller
ici et disons HC pour les cartes hautes,
JP, C. C'est donc le composant que
nous voulons utiliser. Un égal à WP, donc l'argument
des standards. Et maintenant, ce composant High
Charts attend un argument options, égal à cette variable, qui contient le graphique de
code JavaScript Def dans mon cas. C'est ça. Maintenant, si j'
exécute ce code, vous voyez que l'application est en cours d'exécution, cliquez sur
Commande ou Ctrl, et voici l'application Web
avec le graphique à l'intérieur. Il s'agissait donc de la première étape
pour obtenir
le code de la
documentation de haut niveau et
le coller dans votre programme
Python Maintenant, laissez-moi vous expliquer la
première étape, ce que nous venons de faire. Donc, comme je vous l'ai expliqué, High charts est une librairie
JavaScript. Il s'agit donc ici d'
un code JavaScript. Mais dans ce cas, il s'agit de JSN. JavaScript utilise donc
JSON et le format JSON est un format familier pour Python. Cela ressemble donc à un dictionnaire. Vous pouvez voir que cela
commence par ce crochet, puis vous avez cette clé Ainsi, même s'il s'agit d'une
chaîne, actuellement,
c'est une chaîne Python, ce qui
se passe lorsque nous faisons cela ici, c'est que Juspi la
convertira en dictionnaire
Python Il s'agit donc d'un objet réel que Python
peut lire et manipuler. Juspi traitera donc
ce dictionnaire et le rendra sous forme
de graphique sur la page Web Je peux vous prouver que Python a réussi à lire cette
chaîne sous forme de dictionnaire en l'imprimant donc
avec les options de point HC. Donc, les options, parce que nous l'avons passé
ici en
argument, deviendront un attribut de HC et nous pourrons
y accéder comme ça. Je vais donc imprimer le
dictionnaire, et ici, j'imprimerai également le
type de cette option HC,
afin que vous puissiez voir de quel type il s'agit, et la console C pour interrompre à l'instance en cours
de l'application s'exécute à nouveau, et rien ne se passera
maintenant car je n'ai encore
chargé aucune instance
de la page. Donc, si je vais sur la page
puis que je reviens ici, vous verrez que
quelque chose a été imprimé depuis que j'ai
chargé la page, cette fonction de l'application est exécutée, et par conséquent, ces
deux lignes sont exécutées. Alors voyons voir. C'est
le dictionnaire, non ? Ça commence là, ça s'arrête là. C'est dans le même dictionnaire que nous le collons ici sous forme de chaîne. Vérifiez également que le type
n'est pas exactement un dictionnaire. C'est un
type de dictionnaire différent qui ressemble à un dictionnaire
Python en plus. Cela nous permet d'accéder aux clés
du dictionnaire
en utilisant une notation par points. Alors, par exemple, laissez-moi vous
montrer ce que cela signifie. Si vous allez dans hc point
Options et que vous répétez point, vous pouvez accéder à toutes les
clés de ce dictionnaire. Par exemple,
supposons que nous voulions changer le titre de ce
titre ici, n'est-ce pas ? Nous pouvons donc accéder à cette clé de
titre en utilisant le point title. Et puis ce titre possède également
un dictionnaire à part entière. Nous pouvons accéder au texte
du titre en utilisant à nouveau la notation par
points. Alors laisse-moi faire le texte du
titre, non ? Le texte du titre est une hiérarchie. Permettez-moi donc d'arrêter l'
instance de l'application et de l'exécuter à nouveau. Rechargez la page et voyez ce que nous allons
imprimer cette fois. Vous voyez, nous avons eu accès à
la valeur de cette clé de texte, qui était ce titre. Maintenant, cela nous permet de changer le titre pour un autre titre,
comme une note moyenne par jour. Permettez-moi donc d'arrêter l'instance, de l'
exécuter à nouveau, de la recharger. Et vous voyez que le titre est devenu une
note moyenne par jour. Ce que j'
essaie de comprendre, c'est que vous
pouvez tout changer à partir de ce graphique, tout ce que vous voulez, tout ce que vous devez changer à
partir de ce graphique. Et, bien sûr,
notre premier intérêt est de modifier les données de ce
graphique car actuellement, vous voyez que le graphique
possède cette clé sérieuse. Et cette clé de série a un nom, température et les données. Ce sont les données qui sont
tracées sur le graphique. Vous voyez donc un zéro, 15, dix -50. Ainsi, vous voyez, par exemple, 15 est une température, zéro est un kilomètre. Et puis,
comme je l'ai dit, nous en avons dix -50. Ainsi, à 10 kilomètres d'
altitude , la température
est d'environ -50 Telles sont donc les données. Remplaçons ces données
par autre chose. Pour ce faire, nous devons avoir accès
à la série de points
H C but options. C'est vrai, série. Et la série est une liste. Il faut donc être
très prudent ici. Vous devez comprendre les structures de données
Python, et c'est une excellente pratique pour vraiment comprendre et améliorer vos compétences avec structures de données
Python
telles que les listes et les dictionnaires La série est donc une clé et la
valeur de cette clé est une liste. Et cette liste est composée
d'un dictionnaire. Il n'y a donc qu'un seul article. Cette liste et cet élément
constituent le dictionnaire. Ce dictionnaire
comporte alors deux clés, une clé de nom et une clé de données. La clé de nom a pour
valeur la température. La clé de données a pour
valeur cette liste. Il s'agit d'une liste contenant plusieurs
valeurs sous forme de listes et d'éléments. C'est une liste de listes. Donc, la deuxième liste, la troisième liste, et ainsi de suite. Et jusqu'à présent, cela
nous donne cette liste, n'est-ce pas ? Et de cette liste,
nous voulons le premier élément. Ce sera donc un élément
avec un indice zéro, c'est vrai. Quel est donc le dictionnaire ? Cela signifie que pour l'instant, nous avons un dictionnaire. que ces données soient extraites du dictionnaire Nous voulons que ces données soient extraites du dictionnaire. Voici donc cette liste. Nous avons accès à cette liste
et nous pouvons la modifier. Nous pouvons ajouter une nouvelle valeur, une nouvelle liste à cette liste. Par exemple, laissez-moi
créer des données fictives,
trois, quatre, six, 789 Nous avons donc trois points. Permettez-moi d'arrêter l'application, de l'exécuter à nouveau. Charge R, et voici un nouveau graphique. Encore une fois, les données étaient trois, quatre, six, sept, huit,
neuf, trois, quatre,
donc trois, c'est le X. Donc, c'est un
graphique inversé, en fait. Trois, c'est Y, quatre, c'est X. Si vous voulez
inverser ce graphique, si cela ne vous
convient pas, vous pouvez vous rendre ici et
changer cela en chutes. Et vous pouvez également modifier ces
données directement ici sans avoir à les modifier ici
via le dictionnaire. Mais plus tard, nous allons injecter des trames
de données, donc des colonnes à partir de trames de données. Et c'est une bonne
façon de le faire. Donc celui-ci ici parce qu'
il nous permet de travailler avec un dictionnaire au lieu de
travailler avec une chaîne de caractères. Et la chaîne n'est pas une structure de données conçue
pour contenir des données. Quoi qu'il en soit, pour
des choses simples comme ça, vous pouvez simplement modifier les
valeurs directement ici. Donc, à l'envers, je vais le
régler pour qu'il se plie arrête, qu'il fonctionne, qu'il recharge Maintenant, le graphique est différent. Vous voyez donc que l'
altitude est en bas ici. La température est
maintenant sur l'axe Y. accord, donc je
tape manuellement quelques données ici, mais ce n'est pas à cela que ressemble la
vraie vie. Donc, dans la vraie vie, vous n'
aurez pas de données dans ce format. Habituellement, vous les avez dans un bloc de
données dans un fichier CSV, tout comme nous
les avons dans notre application. Nous avons donc les données
dans les avis au format CSV. Le format
sera donc légèrement différent. Habituellement, nous allons
avoir quelque chose comme un tableau X pour l'axe X, nous devrions regarder, disons, trois, six et huit, puis nous avons Y égal
à quatre, sept et neuf. Donc pas comme ça. Par conséquent, notre objectif est de transformer ces deux listes en
cette liste. Comment s'y prend-on ? Pour ce faire, nous utilisons l'objet zip, qui produit essentiellement ce type de liste. Donc dans les formats
avec des paires de listes. Cela suppose X et Y. Donc deux listes Cependant, il ne s'agit pas encore d'une liste. Il s'agit d'un objet zip. Je peux vous le montrer
dans un shell Python. Supposons donc que nous ayons cette
liste et que nous ayons cette liste. Et Zp XY
restera un objet zip. Vous souhaitez convertir
cet objet zip en liste à l'aide
de la fonction list. Donc X et Y. Maintenant, nous avons la liste à
laquelle nous nous attendions Par conséquent, nous pouvons obtenir cette
liste et l'utiliser là-bas. Maintenant, si je vais sur l'
autre terminal ici, j'arrête l'application, je la lance à nouveau. Rechargez, et nous obtenons toujours le
même graphique avec ces données. Et s'ils
proviennent d'une trame de données ? Cela nous amène donc à notre
application avec nos données d'avis. Permettez-moi donc de passer
au code sur lequel nous
travaillions sur Jupiter. C'est celui-ci ici. Nous chargeons donc le
bloc de données avec ce code. Je vais le copier
et le coller ici
en haut après avoir importé
Jus Pi, non ? Nous avons maintenant ce bloc de
données. Et que
savons-nous d'autre pour calculer
la note moyenne ? Oui, nous avions cette trame de données
moyenne quotidienne, qui était une version agrégée
de la trame de données. Je vais donc copier
ces deux lignes, et je vais les
coller ici. La moyenne journalière est donc le
cadre de données qui nous intéresse, et il contient un indice, qui
sera la date, et une colonne de notation contenant les notes moyennes
pour chaque jour. Vous pouvez donc simplement vous
rafraîchir la mémoire, cela ressemble à ceci. C'est vrai. Maintenant, au lieu de X, nous aurions une moyenne de d, l'indice de points de la trame de données. Il sera donc
utilisé comme axe X. Ensuite, pour Y, nous aurions une note moyenne
journalière.
Donc cette colonne. Elles sont donc traitées
comme deux listes par ZIP, puis par ZIP, nous les associons, afin de créer une paire
de date et d'évaluation. Ainsi, par exemple,
en arrière-plan, cela ressemblera à une liste de
listes, comme je vous l'ai expliqué. Donc, le premier rendez-vous
serait comme 2020 133, et la note 4,51, disons,
répondez une, la date suivante
et vous aurez compris l'idée Alors essayons ça. Cela ne marchera pas, et
je vais vous dire pourquoi. Donc, comme je vous l'ai dit, nous obtenons un
graphique vide et aucune erreur. La raison pour laquelle cela
ne fonctionne pas est que les graphiques
élevés tiennent compte de la date. Ces types de données sont donc considérés comme des catégories, des
types de données, et non comme des chiffres. Dans ce cas, vous devez fournir ces
données d'une autre manière. Cela se fait par le biais des options, des catégories de points de l'axe
X. Alors c'est quoi ça ? Eh bien, l'axe X est réellement là. Et nous créons des catégories de points sur
l'axe X. Maintenant, vous ne voyez pas de clé ici, mais nous sommes en train de créer cette clé. Cela sera égal pour
indiquer l'indice de points moyen. Nous convertissons donc
cela en liste et fournissons cette liste
à ces catégories. Voici une liste de dates. Ensuite, pour Delta, il ne nous
reste plus qu'
à convertir en liste la colonne de notation. Laissez-moi arrêter le script et voir ce que nous allons obtenir cette fois. Rafraîchissez et boum, nous obtenons le graphique que
nous attendions. Le graphique est interactif, mais vous voyez que nous
avons quelques étiquettes ici et quelques titres
pour les axes, qui proviennent de l'ancien exemple, donc altitude et température,
mais nous pouvons les modifier. Je vous suggère donc de les
modifier directement dans le code JavaScript. Vous pouvez donc modifier le texte
du titre à partir d'ici. Vous pouvez modifier le
sous-titre à partir de là. Je pense donc que c'est
facile à faire dans le code. Juste pour vous donner
un bref résumé, nous avons chargé le bloc de
données dont nous avions besoin ici. La moyenne journalière est donc le
cadre de données qui contient nos données. Ensuite, nous avons le code JavaScript
des High Charts. Ensuite, nous avons la fonction
qui affiche la page Web. Nous avons le composant page Web. Nous avons ces deux composants, les composants normaux, le texte, le QD. Et puis nous avons le composant
high charts, qui contient maintenant ce graphique
D JSON sous forme de dictionnaire. Nous pouvons donc accéder à ce
dictionnaire par le biais d'options, car celui-ci est stocké dans les options. Donc maintenant, HC options
est le dictionnaire, et nous pouvons donc accéder aux propriétés de ce dictionnaire et les modifier comme nous le souhaitons. Et l'utilisation la plus importante
de cela est de définir les données. Vous avez donc vu que pour les données contenant des catégories, et non des nombres, vous pouvez utiliser cet axe X et définir la
propriété de cette catégorie sur une liste, c'
est-à-dire une liste de dates. Et puis les données sont équivalentes à
une simple liste de notes. Voici l'appli.
Merci de m'avoir suivi. C'était une longue vidéo, mais les prochaines applications
prendront
beaucoup moins de temps, car vous connaissez
maintenant le processus
et avec un peu d'entraînement, vous serez capable de créer le
graphique de votre choix. Merci.
146. 145. Modifier les étiquettes de graphiques dans l'application Web: Bonjour, bon retour. Dans
la vidéo précédente, nous avons créé ce graphique
chronologique des notes moyennes
affichées quotidiennement. Vous voyez maintenant que nous avons
des étiquettes indésirables ici, telles que la température ici, nous avons des kilomètres comme
fin des étiquettes de l'axe X. Je vais donc rapidement
modifier cela dans mon code. Maintenant, vous pouvez
soit le faire via Python en utilisant la notation
par
points du dictionnaire, soit pour ces choses, je vous suggère de
passer directement par le
code JavaScript. Par exemple, nous
parlons de l'axe X, et ici nous avons l'altitude. Donc, l'axe X devrait
en fait être la date et la date. Ensuite, nous avons ces étiquettes, le format des étiquettes de l'axe X. Il y a donc ce kilomètre qui se termine, celui que vous voyez
ici. Si tu veux autre chose,
écris-le ici. Sinon, il suffit de le supprimer et de
laisser la valeur telle quelle. Ne supprimez pas ce type de balises
Javascript. Vous pouvez également modifier
la description de la plage, même si
elle n'apparaît nulle part. Je vais donc passer à
la température. C'est pourquoi
nous avons la note moyenne sur cet axe. Où d'autre avons-nous ce symbole de degrés
Celsius ici. Je vais le supprimer. Et nous avons ce nom de
température ici, qui est en fait le nom que nous obtenons ici dans la fenêtre
contextuelle. Donc une température qui
correspond à ça. Vous pouvez donc répéter ici, note
moyenne, puis
contrôler C, exécuter à nouveau. Et voyons les changements. Alors rechargez. Oui, note
moyenne ici, dates ici,
note moyenne là-bas. Nous voyons toujours ce
kilomètre dans la fenêtre contextuelle. Vous voyez 506 kilomètres. C'est ce que vous trouverez dans l'infobulle. Vous voulez donc le supprimer
et le supprimer également. L'infobulle a
ce format d'en-tête, qui est un nom de série, donc la température, et c'était la température avant
, c'est une note moyenne. C'est donc le nom du point de la série. Et nous avons également le point X. Il va
donc
afficher la valeur X. Dans notre cas, il s'agit du nombre, donc de la colonne d'index, qui est un nombre compris entre
zéro et un certain nombre. Donc, le numéro de la ligne, et c'est la
note moyenne que vous y voyez. Nous sommes donc à nouveau en fuite
et cette fois, tout devrait bien se passer. Et c'est ainsi que s'achève cette vidéo. Je te parlerai
dans le prochain.
147. 146. Ajouter un graphique de série temporelle à l'application Web: Bonjour, bon retour. Dans
les vidéos précédentes, nous avons créé ce graphique quotidien
des notes moyennes. Dans cette vidéo, nous
allons créer le même graphique mais
sur une base hebdomadaire. Maintenant, ce sera une courte vidéo car
je ne vais pas expliquer le code parce que
je l'ai déjà fait, donc vous pourrez facilement
comprendre ce que je fais. Permettez-moi donc de revenir au code de
Visual Studio, et je vais créer un nouveau fichier. Je vais appeler
ce F pour Average un Terrett pour Rating et Week C'est donc le numéro deux. Et ce que je
fais habituellement lorsque je ces graphiques, c'est d'aller sur ce modèle d'espion
et de le coller ici, puis je crée un nouveau composant de cartes
hautes qui appartient à WP
et, en option ,
il contient ce graphique de variable, ,
il contient ce graphique de variable,
qui sera
une variable ici. Ce sera une
chaîne multiligne entre guillemets. Alors maintenant, je vais
trouver un exemple à partir de graphiques élevés. Je vais donc réutiliser
la spline pour ce graphique hebdomadaire,
car je pense que c'est le type de
graphique le plus approprié pour
ce type d'analyse et pour
ce type de visualisations Je vais donc cliquer sur JS Fiddle et cela
me montrera le code JavaScript, qui est celui-ci ici Je peux copier tout cela
, accéder à Python et le coller là-bas, puis bien
sûr, supprimer cette partie. Cela commence par le premier
crochet avant le graphique, puis il se termine par
un crochet bouclé Je vais
donc supprimer la
demi-colonne Options pointe vers
cette chaîne de documentation. Avant d'appliquer mes propres données, j'essaie d'abord ce code
pour voir s'il fonctionne, mais je dois d'abord arrêter le processus en cours
avec Control C et exécuter Go to buy reload Oui, ça marche. Ensuite, je veux importer des pandas. Donc, comme je faisais déjà l'
analyse sur Jupiter, je peux simplement
copier-coller ces lignes. Collez-les là. Nous n'avons pas besoin de mes lèvres, je peux les supprimer. C'est notre cadre de données. Nous devons maintenant
analyser ces données. Retournez donc à Jupiter et trouvez l'analyse
hebdomadaire qui s'y trouve. La moyenne hebdomadaire est
la donnée dont nous avons besoin. Alors collez-les sous le cadre de données d'origine et nous devrions avoir la moyenne de
cette semaine maintenant. Maintenant, la moyenne hebdomadaire
aura comme colonne d'index les semaines. Donc, ici et par semaine, ce sera l'indice moyen par points de la semaine. Et il y aura également une colonne de notation dans le cadre de données de la moyenne
hebdomadaire. Utilisons donc ces deux
colonnes pour tracer les données. Nous devrions donc accéder aux Hc point options catégories
Hc point options
point X axis pour les
données catégoriques telles que la date Ce serait donc un indice de points
moyen faible, mais sous forme de liste. Nous devons donc le convertir
en liste juste pour
le reconnaître. Et puis HC Options, c'est
sérieux. Ces données. qui signifie que la série zéro nous
donne ce premier élément,
qui est un dictionnaire. Nous avons donc le dictionnaire ici, puis nous accédons à la
clé de données à partir de ce dictionnaire. Cela nous donnera donc réellement
la valeur de cette clé, qui est cette liste. Et nous remplaçons cette
liste par une autre liste, qui est une note moyenne faible. Cela devrait suffire. Alors arrêtez
le contrôle C, relancez, rechargez Voici notre graphique. Cela semble étrange parce que nous
devons l'inverser. En fait, c'est
à l'origine inversé. Nous devrions donc dire falls en tant que
valeur du contrôle C inversé, et réexécuter. Rechargez. Et oui, c'est ça.
Je ne vais pas vous faire perdre votre temps et changer toutes ces étiquettes comme je l'ai fait
dans la vidéo précédente. ai donc déjà
fait. Cela suffit donc pour cette vidéo. Merci de m'avoir suivi.
Je te le dirai plus tard.
148. 147. Plusieurs séries chronologiques: Bonjour, bon retour. Dans cette vidéo, nous allons créer une note moyenne par
mois et par graphique de cours. Comme vous le savez peut-être, nous avons
créé ce graphe déjà acheté avec Jupiter et Matplot Lib. Donc ça
ressemblait à ça. L'idée est que nous
allons avoir le mois sur l' axe horizontal
et
les notes moyennes
sur l' axe vertical, et nous allons
avoir plusieurs graphiques dans cette zone de graphique, chacun représentant un
cours dans notre Et comme vous le savez peut-être déjà, un bon moyen de créer
des graphiques à l'aide de diagrammes B et High est de consulter
le site Web higchart.com Vous passez donc sous les graphiques et les types de
séries et nous trouvons un graphique qui serait un bon
représentant de nos données. J'ai donc jeté un coup d'œil à ces
exemples et j'ai découvert que j'aimerais utiliser graphique
Area Spline,
qui ressemble à ceci Vous voyez qu'il comporte
plusieurs lignes, donc deux, dans ce cas, et qu'il a cet axe X avec des données
catégorielles Ce ne sont donc pas des chiffres, c'est lundi,
le mardi, le mercredi, etc. Et nous avons cet axe
Y numérique, donc des unités de fruits. Et cela représente la consommation
moyenne de fruits pendant une semaine
pour John et Jane. Dans notre cas, nous
allons modifier ce graphique et avoir
six ou sept lignes. Je ne sais pas combien de
cours il y a. Donc, une ligne pour
chaque cours indiquant les notes moyennes obtenues sur une longue
période au fil des mois. Avant de copier les codes, préparons d'abord
l'environnement. Créez le script et créez
l'application by, etc. Je vais nommer ces
quatre notes moyennes. Ce serait,
disons, le mois du cours. Donc, note moyenne par
cours et par mois que PY. Vous voyez que c'est différent
du mois d'évaluation moyen. Il s'agit de la note moyenne
par cours et par mois. Ensuite, je vais copier
ce modèle de J Pi. Copiez-le ici. HC sera le composant des graphiques
supérieurs, qui appartient à WP, et les options seront généralement
une définition graphique, qui doit être une
variable quelque part ici. Est égal à une chaîne,
une chaîne multiligne. Copions donc ce code
JavaScript. Donc, celui-ci ici,
je vais tout
copier coller dedans,
puis juste avant le graphique, puis juste avant le graphique, nous laissons cette
parenthèse frisée avant le graphique ici Nous laissons cela et supprimons la demi-colonne et
la parenthèse Nous sommes maintenant prêts à remplacer
les données par les nôtres. Mais ce que je
vous suggère de faire
d'abord, c'est d'essayer cet exemple pour voir si cela fonctionne actuellement sans modifier les
données avec vos propres données. Ce que je voudrais
faire maintenant, c'est essayer de l'exécuter puis de visiter l'URL, et vous
allez voir une erreur. Donc, erreur Jason Decode, identifiant
inconnu, high charts Cela se produit à cause
de cette ligne. Python ne peut pas reconnaître
cette expression ici car il s'agit de JavaScript. Vous voulez donc le supprimer et
ne laisser que cette chaîne ici, la couleur de la couleur de fond. Et maintenant, si j'arrête le
script et que je le lance à nouveau, et que je recharge la page, nous devrions voir l'
exemple tel que avons obtenu sur le site Web de
High Chart Maintenant, ces deux graphes
sont des splines de zones. Mais si vous voulez les
transformer en spline, vous devez accéder à
votre code et changer cette zone spline en spline,
arrêter le script, exécuter à nouveau.
Et rechargez. Et voici le résultat. Nous sommes maintenant prêts à injecter
nos propres données dans les données. Pour cela, nous
voulons nous rendre sur Jupiter où
notre analyse est prête. Copiez ce code, collez-le ici, et nous devons également effectuer les agrégations nécessaires
pour extraire le mois, les cours par mois, qui est ce code ici, et qui nous donne
ce cadre de données Maintenant, rafraîchissons notre mémoire quoi ressemblait le bloc de données. Vous pouvez donc soit les imprimer ici et exécuter le script, recharger la page et voir ce que vous
avez imprimé dans le terminal, soit voir le
résultat de Jupiter Donc, quoi que vous
préfériez, je vais juste exécuter le script ici. Nous
imprimons donc le bloc de données avant même de charger l'application Web, car il est
imprimé parce que l'
application Web se trouve à l'intérieur de la fonction Il se trouve
donc simplement dans
l'espace de noms global, dans la portée globale Ainsi, lorsque le script est
exécuté, ceux-ci sont exécutés. Si cela se trouvait dans
la fonction ici, elle ne serait exécutée que
lorsque nous chargerons la page. Et voici le cadre de données. Il a donc l'index de ce mois, et il comporte différentes colonnes. Voici donc la première colonne. Ensuite, nous avons d'autres colonnes
, que nous ne voyons pas ici. Et puis la dernière colonne est celle-ci et les valeurs
de chaque colonne. Donc, le nom d'une colonne, les valeurs de cette colonne, qui sont les notes moyennes. Et nous avons un
mois pour chaque ligne. Nous sommes donc en juillet 2019, août 2019, janvier 2021. Donc, indexez les colonnes. Voyons maintenant
comment injecter ces
données dans ces données ? Nous voyons donc que XXIs a ces catégories
avec ces jours de semaine Nous pouvons donc faire la même chose maintenant. Ici, nous disons hc
point options point XXI. XXs est donc la clé
du dictionnaire principal. Il est donc directement exposé
au premier niveau. Donc, titre du graphique, axe de légende. Et puis il y a
le deuxième niveau. La catégorie fait donc partie de l'axe. Par conséquent, nous pouvons y accéder comme si les catégories étaient une
liste, comme vous pouvez le voir ici. Par conséquent, nous
devons le remplacer par
une liste de CRS par mois en moyenne Il s'agit donc de l'indice par points de notre
trame de données. Donc cette colonne là-dedans,
20185, 20186 et ainsi de suite C'est vrai. C'était la partie la plus facile. Viennent maintenant les données. Ce que vous
devez faire, c'est comprendre la
structure des données. C'est la première étape très
importante. La série est donc une clé de premier niveau. Par conséquent, nous pouvons dire Hc
options, c'est une série, n'est-ce pas ? Cela nous donnera donc cette liste. Alors, cette liste contient
combien d'éléments ? Je vois un dictionnaire
allant de là jusqu'ici. C'est un dictionnaire
qui porte le nom John (paire de clé et de valeur). Le nom est donc la clé,
John la valeur. Ensuite, nous avons ces autres données
clés et une liste, et le dictionnaire s'arrête là. Et puis nous avons l'
autre dictionnaire. C'est donc Jane How et
voici les données pour Jane. La liste est composée de dictionnaires, et chaque dictionnaire représente
une ligne dans le graphique. Donc c'est pour Jane
et c'est pour John. Par conséquent, ce que nous devons
faire, c'est être là. Ce serait donc le
nom d'un cours. Supposons que le premier cours
soit composé de 100 exercices de Python, et ainsi de suite, du titre complet. Ensuite, les données contiendraient une liste des notes moyennes
pour ce cours en particulier. Donc celui-ci, celui-là,
celui-là, et ainsi de suite. Ensuite, nous devrons
répéter ce processus pour chacun
des six ou sept cours que nous avons ici.
Comment s'y prend-on ? Eh bien, vous pouvez
le faire manuellement. Par exemple, vous pourriez l'
injecter à partir d'une série, vous diriez de la première intrigue, pour obtenir
le premier dictionnaire. Cette expression est
le premier dictionnaire. Ensuite, nous pourrions accéder au
nom et le remplacer par peut-être la moyenne mensuelle des colonnes de points
CRS Ce serait donc la
première colonne et ainsi de suite. Ce serait bien, mais ce n'est pas un processus
automatique. Ainsi, lorsque vous effectuez un travail manuel, c'est le signe que vous ne
programmez pas correctement. Ce que nous devons faire à la place, c'est créer cette liste
complète de manière dynamique. Et c'est un
point très, très crucial maintenant pour utiliser des graphiques élevés, mais aussi pour savoir comment manipuler les
structures de données en Python. Il s'agit donc d'une
excellente pratique. Je suis très content que cela soit sorti. C'est une très bonne pratique pour toi. Permettez-moi donc de vous montrer comment vous pouvez construire cette liste à partir
de ce cadre de données. Donc, avant de faire cela, avant d'attribuer la liste, nous voulons construire la liste. Appelons donc ce soulignement
HC Delta. Et cela équivaut à. Nous devons donc créer une liste. C'est donc une liste. Par conséquent, nous écrivons des
crochets. La liste est composée
de dictionnaires. Par conséquent, nous
écrivons des crochets. Et puis dans chaque dictionnaire, nous avons une clé de nom. Nous avons toujours cette clé de nom et une variable pour
cette clé de nom. Pourquoi je dis variable ? Eh bien, comme le nom est toujours un
nom, c'est donc une constante. C'est pourquoi je suis en train de coder en dur que nous y
ayons toujours un nom. Mais la valeur du
nom est une variable, elle change
donc à chaque fois. Et puis quoi d'autre ? Nous avons cette paire, d'accord. Dans le dictionnaire,
ce dictionnaire. Ce dictionnaire en
a donc une autre paire. Donc les données et la liste. Alors écrivons ça. Como Data, la chaîne, une colonne, et nous avons une liste. Cette liste est essentiellement représentative de
chacune des parcelles, de
chacune des sept parcelles que nous allons avoir
pour chaque cours. Ce qui signifie donc que cette liste
sera composée de ces évaluations. Par exemple, la première liste sera la
première colonne, par exemple, pour les exercices Python, une pour ce cours, cette colonne sous forme de liste,
puis l'autre colonne. Après ce cours, le suivant
, le suivant et le suivant. Donc, une colonne pour chaque cours, et V une va être remplacée par le
titre de la colonne. Donc, avant d'écrire l'
expression dans cette liste, je voudrais d'abord terminer compréhension de
la liste supérieure car nous avons ici deux
compréhensions de liste Nous avons le premier niveau, alors
appelons-le le niveau supérieur. Nous construisons ici des
dictionnaires. Il s'agit donc d'une liste
de dictionnaires , ce qui signifie que nous devrions dire ici pour V une colonne
moyenne mensuelle de CRS tat. Il s'agit donc d'une liste
contenant sept chaînes, une chaîne pour
chaque titre de cours. Il s'agira donc d'une liste contenant 100 exercices
Python, l'un, évaluez et améliorez
vos compétences, puis l'autre titre
de l'autre cours, et ainsi de suite, c'est une
liste de ces titres. Ce que nous faisons, c'est
injecter ici un titre,
le premier titre de cette liste
lors de la première itération,
puis le titre suivant de la liste
moyenne des colonnes CRS
de ce mois
lors de la prochaine liste
moyenne des colonnes CRS
de ce mois
lors de la d'abord, nous allons
avoir sept ou six itérations, quel que soit le nombre de
cours que nous avons choisi. Mais ensuite, à l'intérieur,
nous avons une itération imbriquée,
une compréhension de liste imbriquée,
désolé, qui est celle-ci ici nous avons une itération imbriquée, une compréhension de liste imbriquée,
désolé, qui est Et ce sera, encore une fois, écrivons
une autre variable, telle que V deux pour V deux
en moyenne mensuelle du CRS. Hum. Alors, qu'est-ce que ça va être ? Eh bien, ça doit être
cette chronique, non ? Alors, quelle est cette colonne ? Quel est le nom de cette colonne ? Eh bien, pour ce cours, c'
est le nom de la colonne. Nous devons donc
écrire ici le nom de la colonne. Vous voyez, c'est
une syntaxe de Pandas. Vous écrivez donc le
nom de la colonne, mais nous avons des noms de
colonne différents. Donc, ce que nous entrons
ici est V un. Parce que V one sera le titre actuel dans
la compréhension de la liste de
niveau supérieur Donc, en gros,
pendant qu'il itère
le premier titre,
Python va pendant qu'il itère
le premier titre, s'arrêter à cette première itération de niveau
supérieur,
et il va
itérer dans cette colonne en particulier à travers cette colonne en particulier à travers ces évaluations pour 100 exercices
Python Et il construira cette
liste une fois qu'il aura fini avec tous ces chiffres, il construira cette liste, puis il passera à la deuxième itération de
l'itération de
premier niveau Dans la deuxième itération
des autres colonnes, ce
sera le cours suivant Et ainsi de suite, j'espère que c'est clair. Bien, il
ne nous reste plus qu'à attribuer cette nouvelle liste, afin de l'injecter dans nos données
parce que nous l'avons créée,
mais que nous ne l'avons pas
connectée à HC. Il s'agit donc simplement d'une variable
flottante dans notre script, sans aucun lien avec
les autres parties. Donc, ce que nous devons faire, c'est
dire que cette liste, c'est cette liste. Nous devons donc l'
attribuer à Series, non ? Série de points Ct, égale aux données HC. C'est vrai. Maintenant, je vais
arrêter le script exécuter
et visiter l'application. Et voici le résultat. Voici l'axe X avec le mois, et voici notre note
de 2,5 à 5,5. Le maximum se trouve
quelque part ici. Vous pouvez donc passer votre
souris dessus et voir les évaluations de
chaque cours, n'est-ce pas ? La légende flotte ici. Donc, si vous souhaitez changer cela, vous pouvez revenir à votre code
et localiser les légendes ici. Vous avez donc ici quelques
paramètres que vous pouvez expérimenter. Mais si je mets la valeur flottante à la valeur des chutes, cela devrait changer la
vue du graphique. Je pense donc que c'est plus clair. Maintenant, je ne suis pas d'accord pour dire que
ce type de graphique est la meilleure représentation
pour ce type de données, car nous avons
plusieurs lignes ici, mais elles sont si
proches les unes des autres. y a donc pas beaucoup de variations entre un cours
et l'autre. Je pense que ces splines
seraient plus représentatives si,
au lieu de moyennes,
nous avions le décompte des évaluations des notes
restantes pour chaque cours, ce qui signifie que nous devons passer à la
section de traitement et dire ici « compter » plutôt Et laisse-moi essayer. Hmm. Donc oui, ça a l'air
mieux, je pense. Il y a plus de variation,
plus de différence entre ce graphique
et les autres. Bien que les autres ne
soient toujours pas aussi visibles
, ce graphique
occupe une grande partie de la plage de l'axe Y. Par conséquent,
dans la vidéo
suivante , je vais utiliser un autre type de
graphique pour représenter exactement
les mêmes données. Notes moyennes par cours, par mois, mais à l'aide
d'un graphique de flux. Je vous parlerai
dans la prochaine vidéo.
149. 148. Créer plusieurs streamgraphes de séries temporelles: Bonjour, bon retour. Dans cette vidéo, nous allons créer
ce graphe de flux. Vous pouvez donc le trouver
sur le
site Web hichart.com sous les types de graphiques
et de séries Descendez donc au Stream Graph. Dans l'axe X de ce
graphique, dans cet exemple, nous avons les années, il s'agit
donc d'une donnée
catégorique de l'axe X du temps Sur l'axe Y, nous avons le nombre de médailles
remportées par les athlètes, et chaque couleur
représente un pays. Chaque pays a donc remporté un
certain nombre de médailles par ses athlètes au cours
d'une année donnée. Maintenant, nous allons avoir le
même graphique, vous voyez l'idée. Nous avons les mois
le long de l'axe X et chaque couleur représente
un cours, puis nous pouvons avoir soit les notes
moyennes soit le nombre de
notes sur l'axe Y. Avant de copier le
code JavaScript de ce graphique, préparons
notre environnement. Je vais le dupliquer en
le copiant et
en appuyant simplement sur
Ctrl V pour le coller. Je le duplique et
je vais le renommer en cinq autres. Appelons-le stream. C'est vrai. Accédez ensuite au fichier
que nous venons de créer. À partir de là,
il suffit de
changer cette définition du graphique, supprimer et d'aller ici, sélectionner tout cela, de
contrôler A, de contrôler C, copier, d'aller ici, de contrôler
V pour la coller, sans oublier de supprimer
le caractère inutile, de
sorte que le point-virgule soit
la parenthèse, et ici nous avons besoin de graphiques et avant les
graphiques Donc, tout ce
qui se trouve avant ce crochet est supprimé, comme ça Jetons donc
maintenant un coup d'œil à ces données. Oui, comment les données
sont construites. La série est donc une liste. Il s'agit d'une longue liste contenant
plusieurs dictionnaires. Par exemple, il s'agit
du premier dictionnaire. Tout commence ici. Ça s'arrête là. Et il est composé de cette paire de clés et de valeurs, d'un nom
et du nom du pays, qui seront remplacés
par le nom d'un cours. Et nous avons des données
, c'est cette liste. Ces
dictionnaires sont donc répétés encore et
encore avec des données différentes Cela signifie que nous n'avons pas à
modifier notre code ici. Nous avions donc ce code. Nous l'avons déjà construit dans
la vidéo précédente. Donc ça devrait aller. Essayons de l'exécuter. Nous allons avoir une erreur,
et nous allons la corriger. Arrêtez donc le processus en cours s'il y en a un en cours d'exécution. Assurez-vous d'exécuter
le nouveau fichier que nous avons créé. Appuyez donc sur Exécuter. Voici donc l'erreur. Et lorsque vous obtenez cette erreur de décodage
Jason, cela signifie
qu'il s'agit du code
JavaScript que nous avons Nous voulons donc passer aux codes, et vous voyez qu'il s'
agit de couleurs et identifiant
inconnu, car ce que nous avons ici, ce sont ces couleurs, et nous devons les supprimer. Et vous pouvez supprimer
toutes les couleurs. Donc, de là à ici,
y compris la virgule, car Python n'est pas
capable d'utiliser ces couleurs Supprimez-le donc, et cela ne
changera aucune sortie. Et laisse-moi te montrer. Nous en avons un autre, Peto. Oui, donc c'est ici. Nous avons donc ce type de syntaxe
JavaScript que Python n'
est pas capable de reconnaître. Donc,
comme nous allons le remplacer
de toute façon,
vous pouvez, désolé, supprimer toutes les valeurs de
la liste des catégories et laisser les
catégories une liste vide. Donc, juste comme ça, les catégories. Les catégories sont donc remplacées, comme vous le savez, ici
par cette expression. Laisse-moi m'arrêter encore une fois et courir. Cette fois-ci semble fonctionner. s'agit donc en fait du nombre de notes
restantes pour chaque cours, Il s'agit donc en fait
du nombre de notes
restantes pour chaque cours,
ce qui vous montre la différence
entre ce cours, le méga-cours de Python
et les autres cours. Et c'est quelque chose d'
intéressant ici. Vous voyez donc que ce nouveau
cours vient d'être lancé il n'y a pas longtemps
, du 20 au 21 janvier. Le cours complet de Python a donc créé dix applications opérationnelles professionnelles, et High Charts est très intelligent pour l'ajuster
dans ce graphique de flux. Maintenant, vous souhaiterez peut-être modifier ces étiquettes afin de les retrouver
facilement. Vous pouvez les localiser
là où ils se trouvent ici afin que je puisse effectuer une recherche en Allemagne, dont le texte est ici. Cela fait donc partie des annotations. Vous voyez, vous pourriez dire, par
exemple, cours a été lancé ou que Python
est devenu populaire. C'est vrai. Si je l'arrête et que je m'enfuis. Nous devrions voir ces
étiquettes mises à jour. Vous pouvez également mettre à jour
leur localisation. Ainsi, par exemple, vous voyez,
avec la première annotation, c'est à X 5,5, y 30. Donc X 5.5. Donc zéro ici, un, deux, trois, quatre, cinq, six, donc c'est 5-6. 5,5 30 le long de l'axe Y. Donc 30 devrait être
quelque part ici. Vous avez donc compris l'idée. Cela
conclut cette vidéo, et je vous parlerai
dans les prochaines.
150. 149. Ajouter un graphique à secteurs à l'application Web +: Bonjour. Dans cette vidéo, nous
allons créer un diagramme circulaire, exactement comme celui que
vous regardez. Vous pouvez donc le trouver sur pchart.com, aller dans
Types de graphiques et de séries et aller dans Celui-ci indique
le pourcentage d'utilisateurs des principaux navigateurs
Internet. Par exemple, Chrome
est majoritaire. Vous voyez ces grandes tranches ici et chaque tranche est
associée au pourcentage. Dans notre cas,
nous allons avoir effectué cette analyse plus tôt, afin d'avoir ces données. Pour chaque cours, il
nous reste un certain nombre de notes pour ce cours. Par conséquent, nous allons nous
retrouver avec quelque chose comme ça, mais interactif, comme
vous pouvez le voir ici. Allons préparer
notre environnement. Je vais donc créer un
nouveau classement des fichiers par cours. C'est un pi. Et comme d'habitude, j'
utiliserai ce modèle, ce modèle Pi, puis j'ajouterai un composant graphique élevé
qui appartenait à WP et
qui affichera ce code
JavaScript, que nous devons coller ici. Donc, à l'intérieur, se trouve le
code de ce graphique. Donc celui-ci est là. Contrôlez A, copiez-le
et collez-le là, et n'oubliez pas de supprimer la demi-colonne, les
parenthèses et, en haut, supprimer tout ce qui se trouve
avant ce crochet. J'aimerais essayer le code
avant d'apporter des modifications. Mais j'ai cette erreur ici.
Il existe quatre codes. Je dois en supprimer un, puis exécuter. Ainsi, le graphique circulaire est correctement
visualisé. Ensuite, je veux que ce
code soit collé en haut ici. Nous voulons également avoir cette agrégation du cadre de
données où nous comptons essentiellement le
nombre de notes
attribuées à chaque cours. Donc, évaluation du nom du cours. Comptez ça. C'est vrai. Ensuite, nous devons examiner la
structure des données. Comme vous pouvez le constater, il s'agit d'une
longue liste de dictionnaires. Voici donc le premier dictionnaire,
mais attention. D'après ce que je vois,
nous avons ici ce dictionnaire qui
contient cette clé et cette valeur, cette clé et cette valeur, puis cette clé
et cette valeur, qui est une liste. Donc ça s'arrête là. Par conséquent, cette fois,
nous devons accéder aux données hc point options
point point serious point. Donc, contrairement aux autres fois où nous avons créé des séries de points hc
options, car les données se trouvaient
directement après les séries. La série était la liste. Mais cette fois, Series
possède une clé de données, et cette clé de données
contient les données réelles, qui sont constituées de dictionnaires Donc, le premier dictionnaire
avec le nom et Y, le second
avec le nom et encore une fois pourquoi. Le premier dictionnaire possède également ces autres propriétés,
telles que tranché et
sélectionné, ce qui indique que ce chrome est tranché. Tu vois, c'est séparé par
les autres tranches de tarte. C'est donc pour Chrome. Les autres n'ont pas ces propriétés, ce qui est bien. Donc je vais juste
laisser les choses comme ça. Mais chacun d'entre eux
a un nom et un Y. Par conséquent, cela
équivaudra à quelque chose, et ce quelque chose est quelque chose que
nous devons construire maintenant Donc, les données du HC seront
que c'est une liste. C'est une liste de
dictionnaires, non ? Une liste de dictionnaires
dont nom est égal à trouvons le nom d'une
variable V, n'est-ce pas ? Et puis le nom et Y, l'étiquette de l'
autre valeur est Y. Prenons une variable V deux Donc, comme elles
changent toujours opera ici, QQ ici, donc allez explorer là-bas, cela signifie
que nous avons besoin d'une
variable après le nom et aussi d'une variable après Y puisque ces valeurs changent également Et ce que nous faisons, c'est construire une liste de
compréhension. Donc, pour V un et V deux entrées. Alors, où trouvons-nous cela ? En gros, nous avons besoin pour V one, des noms
de chaque cours, des titres des cours. Et pour V deux, nous avons besoin du nombre
de notes attribuées au cours. Examinons donc le bloc de données,
à quoi il ressemble, partagez-le. Je pense donc que l'index
contient le nom du cours. Laisse-moi vraiment te montrer que c'est toi. Je vais exécuter cette cellule
et l'exécuter également. Nous avons donc compris cela, mais partager cet index est essentiellement
un objet semblable à une liste, qui contient tous les
noms des cours. Et partager en fait, le
partage de liste contient le
nombre d'évaluations. Ce que nous allons faire, c'est
faire pour V un, V deux dans Zip share point index, share print V un, V deux. Et ce qui se passe ici, c'est
que lors de la première itération, V one sera
imprimé, le titre du
premier cours et le nombre de notes
laissées pour ce cours Donc v1v2 puis v1v2 encore
et encore. C'est ce dont nous avons besoin ici. Donc, pour la v1v2 dans Zip, partagez désolé, partagez l'index et Ces valeurs vont donc
être injectées ici et ici dans
ce dictionnaire. Ensuite, nous l'attribuons à cela, puis nous arrêtons
le script et nous l'
exécutons à nouveau pour
voir où nous en sommes. Nous avons donc une erreur. L'objet de la liste d'attributs ne
contient aucune donnée d'attribut. Allons donc voir
où l'erreur s'est produite, une ligne 84, qui se trouve ici. Et il indique que l'objet List n'
a aucune donnée d'attribut, ce
qui signifie qu'
il s'agit du dernier objet et que c'est l'attribut de données. Comme il s'agit d'une liste, bien sûr, elle ne possède pas
cet attribut de données car nous pensions qu'il
s'agissait d'un dictionnaire. D'une manière ou d'une autre, j'ai pensé
que ce n'était peut-être pas C'est tellement sérieux. Hmm.
La série est vraiment une liste. C'était donc une
erreur de logique de ma part, mais c'est le
but des erreurs. Ils
vous expliquent donc ce qui se passe. Vous l'avez lu, et
vous réglez le problème. Donc, puisque la série est une liste, cela signifie qu'elle contient des éléments, et dans ce cas, elle n'en
a qu'un. C'est donc le grand dictionnaire
qui contient cette clé et cette valeur, cette clé et cette valeur,
et cette valeur clé. La liste des séries ne
comporte donc qu'un seul élément. Par conséquent, nous devons
accéder à cet élément. De la série, donc l'
élément d'indice zéro, qui
nous donnera alors ce dictionnaire. Et de ce dictionnaire, nous extrayons la clé
de données de ce dictionnaire. Ainsi, en extrayant les données en
accédant à la clé de données, nous obtenons la liste des clés de données Alors maintenant, tout devrait bien se passer. Hé, ça a l'air bien. Et cela met également fin à cette
vidéo, et c'est une série de graphiques que nous avons développés
tout au long de ces sections. Je
vous remercie de m'avoir suivi, et je vous parlerai dans
les prochaines vidéos. À bientôt.
151. 150. Démo de l'application 5 : développement Web avec Flask : créer un site Web personnel: Bonjour, et bienvenue dans cette
nouvelle section du cours. Et c'est la toute première
conférence où je vais vous faire une démonstration de ce que vous allez
construire dans cette section. C'est donc l'une de
ces sections du cours où vous allez
créer une application. Cette application particulière
est un site Web avec Python. Python peut créer des sites Web, tout comme les autres langages
de programmation. Bien entendu, vous avez besoin du langage HTML et vous aurez peut-être
également besoin de CSS
et de JavaScript pour que le site
client affiche la
page Web dans le navigateur Mais sur le back-end,
vous utilisez Python, tout comme vous le faites avec PHP et d'autres langages de programmation. Oui, le site Web
que vous allez créer est celui-ci que vous voyez
ici. Je veux dire, il est assez
vide pour le moment, il n'y a aucun contenu, mais vous pouvez le remplir contenu et l'utiliser comme
vitrine pour votre travail, comme portfolio ou quoi que ce soit d'autre. Ainsi, une fois que vous aurez atteint ce point, vous pourrez l'améliorer avec Easy. Sachez également que ce
site Web est désormais en ligne Je vais
donc vous apprendre
à déployer un site Web sur
un serveur en direct afin que tout le monde puisse naviguer et
visiter votre site Web. Il s'agit donc d'un
tutoriel complet pour créer le site Web à partir de zéro
et le faire fonctionner en ligne. Et maintenant, il s'agit d'un site Web
statique. Mais plus tard dans le cours, nous aurons d'autres applications dans lesquelles
vous créerez des sites Web
plus dynamiques avec une base de données en arrière-plan et
également des fonctionnalités dynamiques. Mais c'est un excellent
point de départ. J'espère donc que
cette section vous plaira, et si vous avez des questions,
n'hésitez pas à les poser. Et oui, je vous parlerai
lors de la prochaine conférence.
152. 151. Votre première flasque sur site avec avertissement de serveur ajouté: Bonjour Et dans cette conférence, vous allez créer
votre premier site Web avec FLASK si vous ne l'
avez pas déjà fait FLASK est un framework Python
qui possède tous les outils les modèles et les fonctions pour créer des
sites Web avec Python Et avant d'approfondir
FAS et de vous expliquer comment utiliser FLASK, probablement pour créer des applications Web
Python, j'aimerais que vous
passiez 3 minutes à créer un
site Web très basique avec Et cela se fait avec seulement
quelques lignes de code Python. C'est donc ce que
nous allons faire maintenant. Pour créer une application Web avec FLASK, vous devez avoir installé
Flask PIP install Flask
devrait donc installer Flask dans votre environnement
Python C'est bon. Cela a été installé
avec succès. Et créons
notre site Web dès maintenant. Ce dont vous avez besoin, c'est d'un fichier Python. Je suis donc en train d'en créer un ici. Disons que c'est un script, pas un gâteau. Et puis c'est ici que vous écrivez le code qui
créera votre application Web, et tout commence par l'importation
de Flask Et en fait, vous n'
importez pas le framework flask, mais vous importez la
classe flask à partir d'un framework flask Donc, à partir d'un flacon d'importation. FLASK est une classe
de cette bibliothèque, contient
tous les prototypes qui contient
tous les prototypes dont vous avez besoin pour créer des applications
Web avec Python Cela traitera donc les
demandes pour vous. Vous n'êtes pas obligé de
configurer vous-même les demandes. Mais concentrons-nous sur
cet exemple pour le moment. Une fois cela fait, vous devez créer une variable dans
laquelle vous
stockerez votre instance d'objet FLASK,
votre application FLASK Ce serait égal
à la classe FLASK. Et vous y transmettez la
variable name, ne vous inquiétez pas pour
le moment. Ensuite, vous avez besoin d'un décorateur, root, et voici une URL où
vous allez consulter votre site Web Donc, cette barre oblique
signifie la page d'accueil. Et juste après cela,
vous devez écrire la fonction, la fonction
Python. Et c'est cette fonction qui définit ce que fera votre page
Web. Dans ce cas, nous
retournerons une chaîne. Disons une chaîne ici. Le contenu du site Web se trouve ici. Juste après cela, vous avez besoin de
deux lignes de code supplémentaires, et c'est une déclaration
conditionnelle. Si le nom est égal à la chaîne
principale, point d'exécution de l'application. Debug est égal à True. C'est ça. Ne t'en
fais pas pour le moment. Cliquez simplement sur Enregistrer,
ouvrez le terminal et exécutez le script avec le script
Python 1, Python Et il semble que votre application
Web soit actuellement en cours d'exécution, alors ouvrez le navigateur. Et votre site Web doit être
en ligne sur votre hébergeur local. C'est ça. Rien d'impressionnant, mais vous voyez quel point il est facile de créer
un site Web avec Python. Et dans ce cas, nous
renvoyons simplement un équipement à cordes sur le site Web. Il n'y a donc rien
d'extraordinaire là-dedans. Mais plus tard, je vous expliquerai
comment vous pouvez renvoyer pages
HTML au lieu de
jouer des chaînes
Python sur votre site Web. Cela vous permettra d'
avoir différents formats,
différentes polices sur votre texte, puis vous pourrez également appliquer un style
CSS à votre code HTML, et vous aurez ainsi
un site Web complet doté de fonctionnalités modernes. Pour l'instant,
assurons-nous que vous avez bien compris ces sept lignes de code. Oui, ça fait sept lignes. Comme je l'ai dit, sur la première ligne, vous importez
l'objet de classe FAS depuis la bibliothèque FAS Ensuite, dans la ligne suivante, une fois que vous avez importé
la classe flask ici, l'objet flask,
en d'autres termes, vous instanciez
cette classe, cet Il s'agit d'une
variable spéciale qui aura comme valeur le nom
du script Python. Désormais, lorsque vous exécutez un fichier
Python, un script Python, Python assigne le nom main
this string au fichier Lorsque vous importez un script
dans un autre script, par exemple si nous importons ce
script à partir d'un autre script, le nom
du script est attribué à un point py. Mais lorsque vous exécutez
ce script,
Python lui attribue le nom
underscore underscore,
main score underscore main Alors, qu'est-ce
qui se passe ? Dans cette ligne, nous disons que le nom est égal à main, puis autour de l'application. Cela est vrai lorsque nous exécutons
le script comme nous l'avons fait ici. Mais si nous importions ce
script depuis un autre script, cette ligne
ne serait pas exécutée. Cela nous permet donc
de
contrôler ce script
en utilisant cette ligne ici. Ensuite, nous avons ces deux lignes. C'est un décorateur. À présent, la sortie
produite par
cette fonction sera
mappée à cette URL Donc, si vous le souhaitez, vous pouvez
remplacer cette URL par celle-ci, par
exemple, enregistrer le script. Bien sûr, vous avez besoin d'une URL ici. Enregistrez le script, exécutez-le et accédez
à l'hôte local, rechargez-le. Et cette fois, vous allez
avoir un message d'erreur. Python n'a pas pu trouver cette page, mais il peut trouver la page À propos. Oui, c'est ça. Si vous voulez toujours la page d'accueil, vous ajoutez un autre décorateur et une autre fonction juste
après le décorateur Il suffit donc de partir avec cette
page d'accueil et de dire page d'accueil. Ici. Enregistrer. Encore une fois, nous avons une
erreur car nous ne pouvons pas avoir de fonctions
portant le même nom. Nous pouvons donc le transformer en bot. Le nom n'a pas d'importance. Il n'est donc pas nécessaire que ce soit
pareil pour celui-ci. Cliquez à nouveau sur Enregistrer dans le script. Et allez sur le site Web.
Cela fonctionne. Essayez le Web sur la page d'accueil.
Cela fonctionne aussi. Si vous souhaitez modifier quelque chose, disons que le contenu se trouve
ici, vous enregistrez le script. Et l'application Web redémarrera
d'elle-même afin que vous n'ayez pas à la fermer et à
réexécuter le script comme je l'ai fait précédemment. Si vous obtenez une erreur comme celle que j'
ai reçue précédemment, le
script s'arrêtera. Mais si tout va bien, vous n'aurez pas d'erreur, alors réessayez. La page d'accueil est bonne.
La page À propos va bien aussi, et avec le nouveau contenu. Donc c'est à peu près tout.
Dans la prochaine conférence, vous apprendrez comment
renvoyer un modèle HTML,
un fichier HTML à l'aide de
vos fonctions Python. Cela vous donnera le plein pouvoir publier tout ce
que vous voulez votre site Web, et pas simplement jouer des cordes comme nous l'avons
fait dans cette conférence. Nous vous verrons donc lors de
la prochaine conférence.
153. 152. Préparer des modèles HTML +: Bienvenue à nouveau. Dans cette conférence, vous allez apprendre à générer des pages
HTML à l'aide de
votre application Web Python. Dans la conférence précédente, nous renvoyons simplement des chaînes
simples, comme vous le voyez ici, donc
renvoyez une chaîne. Nous allons maintenant renvoyer un modèle
HTML ici. Pour ce faire, nous devons utiliser la méthode du modèle de rendu
de la bibliothèque Flask Et ce que fait le modèle de rendu,
c'est accéder à un fichier HTML, stocké quelque part dans notre application
Python, dans nos fichiers Python, puis affiche ce code HTML à l'URL de
toutes les requêtes Nous devons donc le remplacer par le nom d'une page HDML, disons home point HTML Et ce nom ici,
ce nom de fichier doit refléter un vrai fichier HTML, qui doit être
stocké dans un dossier, qui doit lui-même
être nommé templates. Veillez donc à utiliser ces noms
lorsque vous créez un dossier. Dans le dossier,
vous devez créer un fichier HTML, home point HTML. Et le nom doit
refléter le nom que vous
renvoyez ici dans la méthode du modèle
Eder. C'est ça. Et c'est ici
que vous écrivez le code HTML maintenant Si vous connaissez déjà le HTML, cela devrait être aussi
simple que de respirer. Si vous ne le savez pas, cela
devrait être facile à apprendre. Si vous connaissez un peu Python maintenant
, apprendre le
HTML est un jeu d'enfant. Alors allez-y
et apprenez un peu de HTML. C'est aussi simple que cela. Quoi qu'il en soit, je vais créer un fichier HTML ici. Tout
commence par une déclaration
du type de document, HTML. Ensuite, vous avez les balises HTML. Il y avait une étiquette d'ouverture, et vous avez également une étiquette de fermeture. C'est ça. Tu as des marques corporelles. Juste comme ça, et à l'intérieur se trouve le contenu
de votre page Web. Disons que je veux un
titre comme celui-ci. Et à l'intérieur, tu
peux mettre du texte. Ma page d'accueil, par exemple. Et voici un autre type de balise
différent,
qui est une balise de paragraphe, et disons qu'il s'agit d'un site Web de test. Clicksaf et, oui, tu
devrais être prêt à partir. Accédez à votre script,
assurez-vous de l'avoir enregistré. Et le Web redémarre, et je vais maintenant
visiter ma page d'accueil Voici la page du bot. Cela
devrait être la page d'accueil, comment. J'ai l'impression d'avoir une petite
faute de frappe, je suppose. Oui, cela devrait être la
première page comme balise d'ouverture. Cliquez sur Enregistrer pour ne pas avoir
à lire le script Python. Il suffit d'aller ici, de recharger la page. Et c'est un texte normal maintenant. Il s'agit donc d'un paragraphe, et celui-ci s'intitule Super. Nous pouvons donc également avoir une autre
page pour la page À propos. Si vous voulez simplement le dupliquer
rapidement, parlez de ma page À propos. Ici, il s'agit d'un site de test. Encore une fois, juste comme ça, vous allez dans votre script et le modifiez en modèle de rendu, puis vous passez du HTML
à points. Cliquez sur Enregistrer, accédez à
l'hôte local. Cela devrait être la page d'accueil. Vous avez la page À propos. Oui, ma page À propos. Il s'agit à
nouveau de ce site Web. Donc, c'est ça. C'est ainsi que vous transmettez des
modèles HE Mel à votre application Web
Python et que vous
les mappez à vos URL Passons ensuite
à la prochaine conférence.
154. 153. Ajouter un menu de navigation sur le site Web: Bien, dans cette conférence, je vais continuer à travailler sur le site Web. Plus précisément, je vais ajouter un menu de navigation afin que l'utilisateur puisse facilement
naviguer dans les pages. Permettez-moi d'abord
d'illustrer l'idée. Dans un premier temps, j'aimerais
exécuter ce que nous avons fait jusqu'à présent. Donc, un script Python. L'application est donc en cours d'exécution. Et si vous accédez à votre
navigateur, hôte local, le port par défaut est 5 000,
et c'est le site Web. Et nous avons également deux pages ici. À propos de la page. Bien. Donc à propos de la page et de la page d'accueil. Maintenant, ce que je vais développer dans cette conférence, c'est ce qui se trouve
ici. J'ai une capture d'écran. Donc, la page d'accueil, la page À propos, d'accueil, la page à propos. Nous avons donc ici un menu de
navigation
qui, si vous cliquez sur l'un
de ces textes, vous accédez à la page correspondante. Et nous avons également un titre et quelque chose que vous
devriez remarquer maintenant, ce qui est important
de noter, c'est que cette partie est la
même dans les deux pages. Cela signifie que nous allons
ajouter cette partie ici, le code de cette
partie dans la page HTML Comment est-ce que ça sonne ? Eh bien, cela ne me semble pas très intelligent. Une façon plus intelligente de le faire
serait de créer une page HTML distincte
pour cette partie ici, puis de lier la page A et
la page d'accueil à cette page C'est donc ce que nous allons
faire dans cette conférence. Nous avons donc besoin du code HTML de cet en-tête et
du menu de navigation. Et j'ai déjà ce code, donc je n'irai pas
taper tout le code HTML. Ici. C'est bon. Mais je vais vous
expliquer ce que fait
le HTML. Donc, tout d'abord, j'aimerais
double-cliquer dessus et simplement l'afficher localement. Nous ne l'exécutons donc pas sur
un serveur, double-cliquez dessus. Nous avons donc ici l'en-tête et le menu de navigation, sur
lesquels, si vous cliquez, vous n'allez nulle part car
nous n'avons pas encore lié la mise en page de cette page HTML
à A et à la page d'accueil. Et comme vous pouvez le voir, je l'ai mis dans le dossier
des modèles. Ainsi, chaque page HTML est envoyée dans
le dossier des modèles. Donc, ce que nous avons ici, c'est la
déclaration du document et nous avons les balises HTML qui se terminent ici. Ensuite, nous avons un élément d'en-tête, qui contient ici DF. Et nous utiliserons
ce nom de classe ultérieurement pour faire référence à notre code CSS. Ensuite, nous avons
ici une fonction qui dit URL quatre. Et ce que cela fait, c'est que cela déclenchera la fonction home, la fonction Python.
Que nous avons ici. Donc, ici, cette fonction
sera déclenchée lorsque l'utilisateur
cliquera sur le lien d'accueil Donc celui-ci ici.
Et il en va de même pour le labo. Ainsi, lorsque l'utilisateur clique sur, la fonction Python est
exécutée et le fichier HTML à propos de ce fichier
HTML est rendu via la méthode du
modèle de rendu. J'espère donc que c'est clair. Si vous êtes paresseux comme moi, vous ne voulez pas taper chaque
ligne de ce fichier, vous pouvez le trouver
dans la section des ressources, qui se trouve à
droite de l'écran. Nous devons maintenant
trouver un moyen de lier
ce fichier HTML de mise en page à ce fichier HTML de mise en page à la page d'accueil et aux pages HTML
ci-dessus. Je vais rapidement revenir à l'
apparence de la page. Ainsi, comme vous le voyez ici,
nous avons l'en-tête, et juste en bas de l'en-tête,
nous avons la page HTML A. Donc, juste ici. Cela signifie que
juste en dessous de l'en-tête, nous allons entrer un
code qui renverra à
la page HTML à points d'accueil ou à
la page HTML à points A en fonction de l'objet sur
lequel l'utilisateur cliquera. Nous avons donc une division
ici, qui la ferme. Et je vais lui donner un nom de classe afin de pouvoir me référer
plus tard au code CSS. Ensuite, vous avez des crochets bouclés. C'est donc une syntaxe, et vous
devez également y utiliser le
signe du pourcentage. Ensuite, vous écrivez la balise de bloc, puis vous donnez un
nom au bloc. Et ce que nous faisons ici, c'est en fait un héritage de modèles. La page HTML à points de mise en page, que nous sommes
en
train de modifier en ce moment,
est donc que nous sommes
en
train de modifier en ce moment, un modèle de base Le modèle enfant sera la page HTML à points d'accueil ou
la page HTML à propos des points Et ce modèle pour enfant
remplira ce bloc ici. Il y a également une autre
ligne entre crochets et des signes de
pourcentage Il s'agit du mot clé end block, qui indique la
fin du bloc. Et nous en avons terminé avec
la mise en page HTML. Ce que je vais faire ici, c'est aller dans Panes et diviser
la fenêtre à droite J'ai donc la page HTML à points de mise en
page ici, fermez-la ici. Et je vais maintenant passer au point d'
accueil HTML. Et comme il s'
agira d'un modèle enfant, je n'ai pas besoin de la déclaration
ici ni de la balise HTML, et je n'ai même pas
besoin de la balise body. Je vais le remplacer par un DIV. Et disons que class est égal à Home, fermez-la ici
et supprimez les deux. Et ce que vous devez faire maintenant, c'est réutiliser la
syntaxe des modèles,
comme ça, et utiliser
le mot clé extends Ensuite, vous déclarez
ce que vous souhaitez prolonger. Disposez ce fichier HTML. Ensuite, vous avez également besoin d'une autre ligne. Et ici, vous devez spécifier
le nom du bloc. Cela doit donc correspondre
à celui-ci ici. Alors, que se passe-t-il ici ? Eh bien, passons
au script du script Python. Ce qui se passe, c'est que lorsque
l'utilisateur visite cette
URL, c'est-à-dire la page d'accueil ou celle-ci, disons celle-ci, Python exécute
la fonction home car la fonction home
est mappée à cette URL, et la fonction home
affiche le modèle HTML home
point Python va donc accéder à
la page HTML du point d'accueil, et il verra que la page HTML du point d'accueil
étend le code HTML du point de mise en page. Donc celui-ci ici. Donc, ce qu'
il fera, c'est qu'il enverra
ce code dans ce bloc ici, puis cette page sera
rendue dans l'URL d'accueil. Aussi simple que cela, l'
utilisateur verra la mise en page cette page HTML avec
son contenu secondaire Il s'agit donc du modèle de base,
du modèle enfant. Et nous avons également un autre
enfant dans ce cas, qui concerne ce HTML Alors laisse-moi apporter ça ici. Et je vais juste copier ceci je l'ai mis ici,
et cela aussi. Contrôlez C, et vous. Assurez-vous d'avoir enregistré
tous les fichiers et celui-ci. Ouaip. Et voyons
si l'application est en cours d'exécution. Oui, ça a l'air en direct. Et je vais aller à la page d'accueil.
Oui, ça a l'air bien. Nous avons chez nous et à. Passons à la question de l'encre. Ouaip. Il semble que nous ayons
perdu le cap. Le format de cette ligne, jetons un coup d'œil
à la page ab. Oui, j'ai oublié de
fermer le Div ici, sauvegarder à nouveau, d'aller dans le navigateur, recharger, et c'est bon Donc c'est à peu près tout. J'espère que les
choses fonctionnent de votre côté. Si ce n'est pas le cas, n'
hésitez pas à poser une question, ou vous pouvez même consulter mes fichiers, que je place dans la section
des ressources à
droite de votre écran. Et oui, je pense que notre
application est prête à en recevoir davantage. Passons donc à autre
chose et à la prochaine conférence.
155. 154. Améliorer le front-end du site avec CSS ++: Génial. Nous avons beaucoup
progressé. Nous avons un
script Python qui génère Flashcap et nous
avons deux fonctions Et chacun d'eux fait correspondre deux pages HTML à
deux URL différentes Et voici notre site Web
avec deux pages Web. Dans cette conférence, nous
ajouterons un style CSS à ce site Web afin qu' ressemble à n'importe quel
autre site Web moderne, qu'il soit visuellement attrayant et qu'il ne
ressemble pas aux années 80. D'accord. Pour ce faire, nous devons essentiellement
faire deux choses. La première chose à
faire est de créer un fichier CSS et d'y écrire
le code CSS. Et la deuxième chose est qu'
une fois que nous avons écrit ce code CSS, une fois que nous avons le fichier CSS, nous devons créer un lien vers celui-ci à partir de
notre fichier HTML à points de mise en page. Le CSS est un CCS HTML. Donc, si vous ne le
connaissez pas, je
vous suggère de consulter quelques tutoriels, et je suis sûr que vous vous
habituerez très rapidement au CSS. J'ai déjà un fichier CSS
qui va styliser mon site Web. Je vais le couper et le
mettre dans un dossier que
j'appellerai static. Ici, je vais créer
un autre dossier et l'appeler CSS, et je vais coller le
fichier CSS juste à l'intérieur. Alors laisse-moi clore ça. Comme vous le voyez, le dossier que
j'ai créé et le fichier ont
été reflétés dans la vue d'
arbre ici à l'intérieur d'Atom. L'idée est donc que
Python recherche les fichiers
statiques dans
le dossier statique. Donc, ici, dans le dossier statique, vous pouvez mettre différents fichiers. Par exemple, si vous souhaitez
ajouter une image à votre site Web, vous devez créer
ici un dossier appelé Images, puis y placer des images
. Vous pouvez ensuite lier ces fichiers
statiques à partir de votre page HTML de mise en page ou
de toute autre page. Maintenant, avant d'ouvrir le fichier CSS et de le parcourir rapidement, j'aimerais vous montrer comment vous
pouvez créer un lien vers le fichier CSS. Maintenant, n'oubliez pas que la partie
visible d' un code HTML se
trouve à l'intérieur du corps du texte, tandis que les liens, tels liens vers des fichiers
JavaScript ou des liens vers des fichiers CSS, en sortent. Et ils devraient être
placés dans des étiquettes. Alors vas-y ici et là-bas. Et puis nous avons une balise de lien. Et le L signifie
la relation. La relation avec
le fichier vers lequel nous établissons le lien
est donc une feuille de style Nous
déclarons donc en quelque sorte le type de
fichier vers lequel nous créons un lien. Il s'agit donc d'une feuille de style CSS, puis nous avons la
référence ici qui sera égale à la fonction URL four, qui prend comme argument nom
du dossier
où se
trouve le fichier et le paramètre du nom de fichier, qui est égal au point principal
CSS CSS CSS Donc, ce que nous
avons ici, c'est que nous déclarons le type de
fichier vers lequel nous sommes liés, puis nous mettons le
lien du fichier. Et cela devrait être
entre guillemets. Donc tout ça. Et j'aimerais également ajouter
un titre pour le site Web,
disons, l'application Flask C'est ça. Je vais enregistrer ça. Et je vais
essayer le site Web. Waouh. Tu vois
la différence ? Ouais Nous avons le menu
ici très bien. À propos de la page, de la page d'accueil, et nous
avons le titre juste ici. Ensuite, le contenu de
la page Web est affiché ici. Maintenant, toutes ces barres,
la couleur de fond, les garnitures, tout cela
a été défini en utilisant du CSS Alors allons-y et jetons un
coup d'œil au code CSS. C'est le cas. Je pense que cela va de
soi. Quoi qu'il en soit, ce que nous
avons,
c'est essentiellement un élément HTML, donc le corps est là. Une fois que nous avons écrit l'
élément HTML dans le script CSS, nous utilisons des crochets, puis à l'intérieur des
crochets, nous définissons ces attributs Donc, la marge, la peinture, la famille de police du texte et la
couleur du texte. Si vous voulez changer
cela, disons 999, enregistrez et rechargez la
page Web, vous verrez que le texte
a pris une couleur différente C'est donc assez bon. Cela signifie donc que cet
attribut affecte le
corps du site Web. Je vais le remettre
à quatre pour quatre. Ensuite, vous avez l'élément
d'en-tête, qui est
responsable de cet en-tête ici. Donc, au sommet. Ensuite, si vous souhaitez styliser une partie spécifique
de votre page Web, disons, uniquement le logo, qui est celui-ci
ici, vous devez référer
à l'en-tête abord vous référer
à l'en-tête, puis à
l'élément agon, puis
à la classe de logo Il s'agit donc d'un
nom de classe juste ici. Et ainsi de suite, vous pouvez consulter ce code à
votre propre rythme, je crois. La logique est donc la même. Génial. Nous sommes maintenant prêts à déployer ce site Web en ligne
sur le Cloud. C'est ce que nous ferons
lors des prochaines conférences. On se voit.
156. 155. Créer un environnement virtuel Python: Nous avons donc un site Web fonctionnel,
qui a l'air plutôt bon. Le problème est que c'
est chez notre hébergeur local. Donc, la seule personne qui
voit cela est, oui, vous ou quelqu'un qui a
accès à votre ordinateur. Nous voulons donc
plutôt déployer
ce site Web sur un
serveur Web ou sur le cloud, comme nous le ferons dans ce cours. Et nous utiliserons
le cloud Hogu. Heroku est un service
qui permet de déployer des applications
Python
dans leur cloud bonne nouvelle est que vous pouvez
déployer une application gratuitement et que vous pouvez également avoir votre
domaine public gratuitement. Cependant, vous aurez besoin d'un sous-domaine
d'Heroko, par exemple
ardit.heroko.com ardit.heroko.com Toutefois, si votre site doit générer beaucoup de
trafic par la suite, vous devriez mettre à
niveau votre forfait et
acheter plus de bande passante. Le déploiement sur Heroko
est relativement simple. Vous n'avez pas à réfléchir ni
à effectuer de tâches administratives. Un Heroko permet
donc d'économiser beaucoup de
temps et d'efforts, ce qui vous
permet de vous concentrer sur la programmation
plutôt que sur les parties serveur Avant de déployer sur Heroku, nous devons
cependant faire quelque chose Il y a quelque chose que
nous aurions dû faire depuis le début
de cette section. Donc, avant même
d'écrire un fichier ici, vous devez créer un
environnement virtuel isolé de vos autres fichiers et de votre installation principale de
Python. Donc, pour exécuter notre application, nous utilisons Python, qui
provient de notre installation
principale. Donc celui-ci ici,
ceux que j'ai ici. Ce n'est pas une bonne pratique. Une bonne pratique consiste à
disposer d'une
installation propre de Python, qui n'est utilisée que
pour votre application. Ainsi, dans cette installation, vous ne voulez pas que les
bibliothèques installent des bibliothèques dont vous n'avez pas besoin pour créer des applications FLASK Nous devons donc créer
un environnement virtuel. Et ici, je vais vous montrer
comment vous pouvez le faire. Pour créer un environnement virtuel, vous devez utiliser une bibliothèque Python Virtual
F. Et pour utiliser la bibliothèque Virtual
Python, vous devez installer
Virtual F. Donc, PIP installe Virtual NV.
Nous utilisons donc l'installation principale de
Python ici pour installer Virtual Génial. Cela a été installé
avec succès, et nous allons maintenant créer
un environnement virtuel. L'environnement virtuel
doit être créé au même niveau le dossier principal qui contient
les fichiers de l'application. Donc, si nous allons dans notre répertoire, juste ici, voici
où se trouvent les fichiers. Et ce que je vais faire, c'est créer un dossier principal ici
et l'appeler mon site. Et je vais fermer Atom pendant un moment. Et ça rentrerait
dedans. Donc, juste ici. Et maintenant, vous pouvez ouvrir atom dans ce répertoire car
c'est ici que nous allons créer
l'environnement virtuel. Ouvrons donc la ligne de
commande maintenant, et nous sommes prêts à créer
un environnement virtuel. Et pour cela, vous devez utiliser une bibliothèque Visual M
en disant Python. L'argument, alors vous avez Vn, qui est le nom de la
bibliothèque du module Et voici un argument
qui permet
à Python de localiser les modules à
exécuter sous forme de scripts. Ensuite, vous devez spécifier un
nom pour le dossier dans lequel les fichiers de
l'environnement virtuel
seront stockés, afin
que cela fonctionne. Voyons voir que le
dossier virtuel a été créé. Et l'environnement a été
créé avec succès. Ce que nous avons ici est une
installation isolée de Python, et dans les scripts, vous verrez que Python
s'y trouve. C'est ici. OK, ne
t'inquiète pas pour ça. Et voici aussi PIP. Donc, pip dot. Et cela signifie que vous pouvez utiliser ce
Python si vous le souhaitez. Laisse-moi essayer. Nous sommes donc
maintenant dans le répertoire Mside. Cela signifie que nous devons nous référer
aux cryptes virtuelles et à Python. Et cela déclenchera notre
nouveau Python dans la console. Cependant, nous
ne sommes pas intéressés à exécuter Python à
partir de l'étagère. Donc je vais juste quitter ça. Et ce qui nous intéresse,
c'est d'exécuter l'application FLASK en utilisant la nouvelle installation
de Python Mais avant cela,
nous devons réellement
installer Flask dans notre Visual
Python, si vous le souhaitez Et pour cela, vous devez utiliser la bibliothèque PIP de
votre Python isolé Vous devez donc pointer vers
le dossier virtuel vers
le dossier de script,
puis vers PIP install Flask ainsi que FASC est en train d'installer et il a également installé ses dépendances Et nous devrions être prêts à partir maintenant. Lancez donc notre application Web à l' aide de notre nouvelle
installation de Python Pour ce faire, vous devez
pointer vers le nouveau Python
et celui vers la démo, car nous sommes sur mon site en ce
moment, comme vous le voyez ici, donc Demo backslash
script one point pi Cela devrait fonctionner. Génial. Et si vous allez sur le site Web maintenant, vous verrez qu'
il fonctionne bien. C'est ça. Vous êtes maintenant
plus que prêt à déployer votre
application FASC sur le cloud, et c'est exactement ce que nous ferons
lors de la prochaine conférence Et je tiens à le répéter oubliez pas
que vous devez toujours créer
un environnement virtuel avant de créer votre application
FLASK Donc, avant d'écrire du code, vous devez utiliser une nouvelle
installation de Python.
157. 156. Comment utiliser le service PythonAnywhere: Bonjour, bienvenue à une nouvelle
conférence sur la façon de
déployer votre
application Web Flask sur un serveur en direct, ce qui signifie que
vous aurez votre propre nom de domaine que
vous pourrez donner à n'importe qui et
qu'il pourra utiliser votre application Web Et nous allons
utiliser Python Anywhere. Allez donc sur python ware.com. Python Anywhere
propose un service gratuit où vous pouvez héberger vos applications
FLASK C'est donc ce que
nous allons faire, et c'est relativement facile à
déployer sur Python n'importe où. Il s'agit donc d'une
vidéo mise à jour, bien sûr. Avant cela, nous utilisions Heroku. Désormais, Heroku et Python
Nware vous permettent tous deux héberger et
de déployer des applications FLASK gratuitement La différence est
que Python Aware a tendance à être plus convivial. Et Heroku, en
revanche, complique les choses. Je suggère donc généralement
qu'en tant que programmeur, vous souhaitiez vous concentrer sur
vos codes au lieu de vous occuper des problèmes d'
administration du serveur. Mais je
voudrais également dire que les logiciels Hiroko et Python
sont relativement simples par rapport à ce que vous auriez à faire si vous aviez votre propre serveur sur lequel vous devriez
tout gérer Hoco et Python
Aware facilitent tout de même les choses. Pour pouvoir déployer
votre application Web FAS sur Python n'importe où, vous
devez créer un compte Alors, allez sur Tarification et inscrivez-vous, et vous voulez trouver
la section où vous pouvez créer un compte débutant,
car c'est gratuit. Et ils ont également
d'autres forfaits payants. Donc, si vous avez plus de visiteurs, vous devrez passer
à un compte payant. Je vais donc
créer un nouveau compte. Très bien, je me suis inscrit et
mon nom d'utilisateur est Ardit 12345. C'est mon nom d'utilisateur, et
c'est un tableau de bord. Désormais, sur Python Anywhere, outre le déploiement d'applications Web, vous pouvez également effectuer d'
autres tâches. Avant de déployer l'application Web, permettez-moi de vous
présenter brièvement Python Anywhere. En gros, vous devriez pouvoir
voir le menu du tableau de bord ici, puis nous avons les consoles. Dans les consoles, si vous
allez sur les consoles, vous pouvez
essentiellement
créer une console Bash Cela vous donne accès à votre propre serveur sur lequel
vous déploierez votre application Web, et vous pouvez également
faire d'autres choses ,
comme
démarrer Python 3. Et il lance cette
version de Python. C'est donc un Python interactif vous pouvez même importer
des bibliothèques ici, donc Pandas est déjà
installé, vous pouvez l'utiliser L'inconvénient est
que vous n'avez pas d'interface utilisateur
graphique Donc, si vous voulez montrer pour générer des graphiques et
que
vous voulez les voir, ce n'est possible
nulle part sur Python car
vous n'avez que ce shell. Donc, le shell Python, et vous
revenez au terminal. Et par exemple, avec PWD, vous pouvez voir où
vous vous trouvez actuellement C'est donc votre position
sur le serveur. Vous êtes donc dans la maison, puis dans le 20 2345, donc dans ce dossier
du dossier d'accueil Ici, vous pouvez également
créer des fichiers Python, par
exemple Nano
example point PY. Nano est un éditeur de texte que vous pouvez utiliser dans ce type d'interfaces de ligne de commande. Cela créera donc un nouveau fichier, lequel vous pourrez écrire du code
Python tel que print. Bonjour. Parenthèse.
Maintenant, pour enregistrer ce fichier, vous devez suivre ces commandes.
Alors, sors. Vous voulez quitter avec Control X. Appuyez
donc sur Ctrl X. Vous verrez ce message. Il dit, enregistrer le tampon modifié, ce qui signifie que vous
voulez enregistrer ce fichier ? Y pour oui ou N pour non. Je vais donc appuyer sur Y, puis il vous demande à nouveau quel nom souhaitez-vous
attribuer à votre fichier ? Exemple de point PY S c'est le cas, oui. Il suffit donc d'appuyer sur Entrée. Entrez et le fichier
est enregistré. Pour le faire fonctionner. Vous utilisez Python 3.9. Exemple point PY, exécutez et
vous obtenez le résultat. Voilà ce que vous pouvez
faire avec la console. Si vous revenez en arrière,
vous aurez ces fichiers. Et maintenant, vous pouvez
voir cet exemple de PY,
que nous avons créé
précédemment, se trouve ici. Et vous voyez le répertoire
actuel, donc un répertoire d'accueil Rit un, deux, trois, quatre, cinq, c'est un répertoire. Nous étions dans l'interface de
ligne de commande. C'est donc une autre
façon de créer des fichiers. Donc, si vous voulez
créer un fichier ici, vous devez donner un nom ici. Prenons l'exemple 2 de
PY et passons à Nouveau fichier. Et disons que je suis ici imprimé. Bonjour encore une fois. Et maintenant, vous pouvez
également exécuter ce fichier, enregistrer et l'exécuter à partir d'ici. Alors enregistrez-le d'abord et
cliquez sur le bouton Exécuter. Et vous devriez voir
le résultat ici. C'est un peu
plus lent que la méthode précédente pour exécuter une application
pour exécuter des fichiers Python. Mais de toute façon, c'est le résultat. C'est donc une autre façon
d'exécuter des fichiers Python. Si tu veux y retourner maintenant,
tu peux appuyer ici. Il s'agit donc d'une page de fichiers, puis nous avons le Web. C'est ici que nous allons
créer une nouvelle application Web, mais dans la prochaine conférence. Ensuite, nous avons des tâches avec des tâches. Ce que vous pouvez faire, c'est
saisir ici le chemin d'un de vos fichiers
Python Anywhere. Par exemple, si je voulais
donner le chemin de l'exemple PY, je dirais home.r1,
deux, trois, quatre,
cinq, le répertoire
et l' Puis définissez une heure. Je vais définir une heure ici
dans le système horaire UTC. Ce script
serait alors exécuté tous les jours à cette
heure-là. Cela peut être utile
pour des choses comme le
scraping Web . Si vous voulez écrire quelque chose à une certaine
heure de la journée, vous pouvez également le faire n'importe où sur
Python Enfin, nous disposons d'une base de données. Le menu ici vous
permet de créer une base de données. Ainsi, si votre application Web possède une base de données dans laquelle
elle enregistre les données, vous souhaitez créer
une nouvelle base de données ici, puis créer une
table pour cette base de données. Encore une fois, vous pouvez le faire
dans cette interface,
ici dans les bases de données, puis votre application Web
pourra interagir
avec cette base de données. Il s'agissait donc d'une introduction
à Python Anywhere. Dans la vidéo suivante, nous allons
déployer notre application Python,
donc notre flashap sur Python n'importe où.
À bientôt.
158. 157. Déployer l'application Flask sur PythonAnywhere +: Bon retour. Je suis ravi
de vous montrer comment déployer votre application Web
sur Python Anywhere. Voici donc mon compte Python
Anywhere, et je suis actuellement dans la
section du tableau de bord. Vous voulez accéder au
Web et créer une nouvelle application Web et vous recevez ce message ici. Python Anywhere vous
indique
que vous ne pouvez pas avoir
de nom de domaine personnalisé, disons ardit.com, car il
s'agit d'un compte gratuit Si vous souhaitez un nom de domaine
personnalisé, vous
devez payer pour obtenir
l'un des comptes payants. Cependant, vous devez d'abord trouver un fournisseur de domaine pour
acheter un nom de domaine. Donc, si vous voulez acheter le nom de
domaine exemple.com, par
exemple, vous devriez vous adresser
à peut-être Name Chip La puce de nom est, je pense, la
meilleure solution pour obtenir des noms de domaine. Alors nommez chip.com, et une fois
que vous y aurez acheté un nom de domaine, alors name chip
vous donnera des noms DNS,
et ces noms vous
devrez les mettre n'importe où dans un Python pour
les connecter à votre site Web, mais ce n'est pas ce que
nous faisons pour le moment Pour notre objectif, il
suffit d'avoir ce type de nom de domaine, qui est, dans mon cas,
celui-ci ici. Donc Rs un, deux, trois, quatre, cinq, point Python
Anywhere, point com. Il s'agit donc d'un sous-domaine de Python
aware.com . Appuyez sur Suivant. Et plusieurs options s'offrent à vous. Celui que nous voulons est FLASK, afin que vous puissiez déployer différents types d'
applications Web sur Python n'importe où Nous appuyons sur FLASK, et Python 3.9 est prêt.
Alors, appuyez dessus. Et c'est désormais le
point d'entrée de l'application Flask. Par point d'entrée, je veux dire le fichier que vous exécutez
pour démarrer l'application FLASK Donc dans notre cas, il s'agit du
script one point PY. Il s'agit d'un fichier que nous exécutons
avec le script Python PY. Alors ne changez pas cela,
laissez-le tel quel. Appuyez donc sur Suivant pour le moment. Et l'application est créée, mais nous devons ajouter
nos fichiers à notre application. Donc, pour cela, vous devez
accéder au menu des fichiers. Et maintenant, sur la gauche, vous pouvez voir mon site. Si vous cliquez ici, vous
verrez le fichier créé par Python Anywhere. C'est donc le point d'entrée
dont je parlais, application
Flask Underscore qui est Vous voulez cliquer ici et
supprimer ce code et le coller, copier votre propre code et y
coller votre code
et appuyer sur Enregistrer. Vous pouvez donc voir maintenant que
nous sommes dans ce répertoire. Donc, coupez O R
un, deux, trois, 45. Donc, votre nom d'utilisateur MySite, fA FAS Underscore app
that PY est Donc, si vous cliquez sur mon site, vous revenez dans le
répertoire racine de votre projet. Il s'agit donc du répertoire racine
de Python Anywhere, et il s'agit du répertoire racine
de notre projet local. Donc, un script indiquant que PY est là, puis il contient un dossier statique et un dossier de modèle dans le
même répertoire racine. Par conséquent, dans ce répertoire racine de
Mist, nous voulons créer
un dossier de modèles. Écrivez-y donc des modèles
et appuyez sur le nouveau répertoire. Cela créera un
nouveau dossier de modèles. Vous voyez maintenant qu'il a été remplacé
par ce dossier. Donc, si vous revenez à mon côté, vous voyez que des modèles sont ajoutés dans le répertoire. L'application Flask
Underscore se trouve également dans le même dossier, mon site Et nous voulons également créer
un dossier statique vide. Nouveau répertoire, appuyez
sur ce bouton et il devrait créer
un dossier statique. Alors, retournez à mes côtés. Vous voyez que les
modèles sont statiques et qu'ils sont maintenant présents. Nous devons donc ajouter
nos fichiers statiques. Appuyez donc sur statique. Vous êtes maintenant sur static dans
static et vous
souhaitez télécharger un fichier principal en CSS, mais attendez, c'est
dans un autre dossier. CSS est le dossier, vous devez
donc le créer
dans static. Vous souhaitez créer
un répertoire CSS. Appuyez sur le nouveau répertoire. Assurez-vous que vous êtes
dans ce répertoire, donc mon site slash
statique CSS Et maintenant, nous
voulons télécharger le fichier. Et ce fichier est ce CSS principal. Je suis donc là. C'est le répertoire du projet
avec nos fichiers locaux. Sous Static sous CSS, nous avons le Dot Css principal. Double-cliquez, et le fichier
sera téléchargé dans le CSS. Retournez ensuite sur mon site, accédez aux modèles et téléchargez-les. Les fichiers contenus
dans les modèles,
qui concernent le code HTML par points d'accueil, et le troisième, le code HTML par points de
mise en page. Ces trois sont des
modèles intégrés. Assurez-vous donc qu'ils se trouvent
dans les modèles. Ensuite, retournez
sur mon site et jetez un œil si tout va
bien. Cela me semble bon. L'une des modifications que vous souhaitez également apporter est que vous
souhaitez accéder à votre application, et lorsque votre application
est en production, vous souhaitez la
remplacer par false. Vous ne voulez donc pas afficher les erreurs Python aux
visiteurs car cela pourrait rendre
votre application sujette au piratage. Parce que les utilisateurs ou les pirates informatiques verront les erreurs de votre application. Ils peuvent comprendre
comment votre application Web est structurée et vous pouvez
également exposer des données que vous ne souhaitez pas exposer dans les messages
d'erreur de débogage affichés par Flask Donc faux et présent en toute sécurité et maintenant nous sommes
prêts à voir notre application, mais après
l'avoir rechargée avec ce bouton Donc, dans la section Web, appuyez sur
ce bouton et rechargez-le pour obtenir la dernière version
des fichiers servis par
Python n'importe où Ensuite, vous devez
cliquer sur cette URL. C'est donc l'URL de mon application, appuyez dessus, et
mon site est en ligne. Cela fonctionne donc très bien. J'espère que le vôtre fonctionne aussi. Si ce n'est pas le cas,
vous devez retourner à la section Web, faire défiler la page vers le bas localiser ces journaux d'erreurs. Si vous appuyez dessus,
vous verrez
les dernières erreurs que vous
avez reçues de votre application Web. Ce sont donc des erreurs de Python et essayez de les lire pour
comprendre ce qui se passe. Si vous ne les comprenez pas, hésitez pas à poser une
question dans les questions-réponses, mais assurez-vous de
copier-coller ces erreurs n'
hésitez pas à poser une
question dans les questions-réponses,
mais assurez-vous de
copier-coller ces erreurs ainsi que le
code de votre application Web, et nous serons heureux de vous aider Merci beaucoup Je vous parlerai
dans les prochaines vidéos.
159. 158. Introduction à la bibliothèque Tkinter: Bonjour, et bienvenue dans cette
nouvelle section du cours. Dans cette section, vous
allez apprendre à
créer des interfaces utilisateur graphiques avec Python. Et plus précisément,
nous allons utiliser la bibliothèque Tkinter pour Donc, dans cette section,
vous n'allez pas créer de programme réel. Je vais vous présenter la bibliothèque
Tkinter et, bien sûr, créer une interface
utilisateur graphique,
un petit programme qui
vous permettra de démarrer avec Ensuite, dans la
section suivante, une fois que nous en aurons terminé avec cette section
dans la section suivante, vous allez apprendre à interagir avec les
bases de données avec Python. Nous allons donc utiliser
Python comme enveloppe de code
SQL afin de pouvoir stocker des données dans une
base de données, demander des données, les
supprimer, etc. C'était donc une section
après celle-ci. Ensuite, dans la première section,
après ces deux sections, nous allons créer
un programme concret. Et ce programme,
c'est celui-ci. Je l'ai donc appelée librairie, et cela
vous permet stocker des informations sur
les livres
dans une base de données Il s'agit d'une interface
utilisateur graphique. Ce programme est donc
composé de deux parties. Vous disposez d'une interface
utilisateur graphique, de boutons appelée Widgets,
qui est un visualiseur Et cela a été construit avec Tkinter. Et puis vous avez le back-end, qui consiste en un code qui communique
avec la base de données. Ainsi, par exemple, si nous
appuyons sur le bouton Afficher, nous acquérons la base de données pour charger tous les livres pour nous. Oh, nous avons le titre. Donc, si vous appuyez sur l'un d'entre eux, vous obtenez
le titre ici, l'auteur et
l'année du livre. Et aussi le numéro
d'identification du livre
, appelé ISBN Vous pouvez également
rechercher une entrée. Donc, si vous souhaitez
rechercher un auteur, vous devez écrire le nom de l'auteur, Ni et appuyer sur Rechercher. Et si vous souhaitez ajouter une entrée, il vous suffit de la saisir. Et oui, quelque chose comme ça. Ajoutez une entrée. Et si
vous les chargez à nouveau, votre entrée devrait se trouver ici. Il s'agit donc d'un programme.
Nous allons construire deux sections
après celle-ci. Permettez-moi donc de clore celui-ci ici, et lors de la prochaine conférence, je vous présenterai
la bibliothèque Tinder. Nous allons donc créer des interfaces simples
avec des widgets. Je vous verrai lors
de la prochaine conférence.
160. 159. Créer une fenêtre GUI et ajouter des widgets: Alors, on y va. J'ai
ouvert Atom ici, donc je vais utiliser Atom pour créer le
programme de librairie, pour ainsi dire, qui utilise Kinder et Aquia
Light Three Je vais donc créer
un nouveau fichier Python ici. Quel script. Tarte gagnée. Maintenant, pour créer des
interfaces utilisateur graphiques avec Kiner, vous avez besoin de la bibliothèque inter, et vous n'avez pas besoin de l'installer
car Tkinter est une bibliothèque Python
intégrée Il ne vous reste plus qu'à importer Tkinter. Si vous utilisez Python 2, ce serait avec at
T. En Python 3, c'est simplement Tkinter comme ça La bonne pratique, cependant, consiste à tout importer depuis Tkinter Donc, depuis Skiner,
tout importer Alors pourquoi faisons-nous cela ? Nous le faisons parce que
nous allons utiliser de nombreux
objets Tkinter dans nos scripts Il est donc logique de simplement les
charger tous au lieu de les
référencer avec le bouton à
point Tkinter, Au lieu de cela,
nous pouvons simplement dire bouton, puis entrer les
paramètres et ainsi de suite. Permettez-moi donc de créer une interface utilisateur
graphique. Maintenant, le programme Kinter est
composé de deux éléments principaux. Vous avez la fenêtre et
les widgets. Ainsi, par exemple, la fenêtre est tout ce programme que vous voyez
ici, puis vous avez des boutons
et des choses comme ça, que on appelle des widgets. Donc, tout d'abord, vous
devez créer la fenêtre. Et j'aime appeler
ma variable window, ce qui
équivaudrait à decay. C'est ça. Cela créerait
une fenêtre vide pour nous, mais nous devons faire
quelque chose de plus dans ce domaine. Nous disons fenêtre cette boucle principale. Cela est toujours nécessaire. Nous ouvrons donc une fenêtre,
nous créons une fenêtre, puis tout se passe
entre ces deux lignes. Vous créez donc des widgets
entre les deux. Et c'est nécessaire car
si vous ne l'avez pas, votre programme s'ouvrira et se fermera en une
fraction de seconde. Donc, en gros, cela
vous permet d'appuyer sur
ce bouton dans le coin de votre fenêtre et de
fermer le programme. Cela devrait donc toujours être
à la fin de votre code. Je vais enregistrer ce script
et je vais l'exécuter. Et nous avons reçu une erreur, elle
indique que TK n'est pas défini, donc Python ne reconnaît pas cette fonction ici
car elle devrait être T. Et exécutez-la à nouveau. Et voici la fenêtre, et il n'y a rien à l'intérieur, alors allons-y
et ajoutons un bouton. Nous stockons donc la
fenêtre principale dans une variable, et nous allons créer
les quatre mêmes widgets. Nous allons donc
créer des variables. Disons que B un
est égal à un bouton. Le bouton est donc une fonction qui génère un widget de bouton. La fonction du bas
prend quelques arguments. Si vous souhaitez obtenir une liste
complète des arguments, vous devez effectuer une introspection
du code Disons IPython ici. Et de la peau à l'import. Tirez, puis disons
bouton et point d'interrogation. Et ici, vous pouvez
voir quels paramètres vous pouvez passer à la fonction
inférieure. Maintenant, le tout premier paramètre que
vous souhaitez ajouter au widget est la variable de la
fenêtre de la fenêtre principale. Vous devez donc indiquer à votre widget, la fenêtre que le widget
doit également être emballé. Donc, fenêtre et ensuite vous pouvez passer des paramètres comme
celui que vous voyez ici. Disons que l'un des principaux
paramètres serait le texte. Le texte est donc égal, disons, à la chaîne d'exécution. C'est donc le texte de l'étiquette qui sera
affiché en bas. Maintenant, si nous essayons d'
exécuter ce script maintenant, vous verrez que nous n'
avons pas encore de bouton, et c'est parce que nous n'avons pas précisé où le
placer en bas. Pour ce faire, vous devez
utiliser la méthode pack, qui est une méthode de widget,
puis l'exécuter à nouveau. Et maintenant tu vois le fond. Cependant, il existe un autre moyen
de placer votre
widget dans votre fenêtre. Il s'agit d'une méthode de grille. Grille. Et souvent, c'est une question de préférence d'
utiliser le pack ou le grid. Mais l'idée de la grille est
qu'avec la méthode de la grille, vous avez plus de contrôle
sur la position de vos boutons ou de vos
widgets en général car vous spécifiez
ici la ligne et la colonne où vous
souhaitez placer votre bas de page. Tout part donc de zéro. Ainsi, la première ligne
a un indice de zéro, et la première colonne a un
indice de zéro et ainsi de suite. J'ai en fait trouvé
une illustration pour cela. C'est donc un programme plus gentil, et nous avons deux lignes ici Nous avons donc cette première ligne, qui devrait avoir
un indice de zéro, et vous avez la deuxième
ligne, qui devrait avoir un indice de un. Et vous avez des colonnes, donc zéro, un, deux,
trois, etc. Supposons que le bouton OK, qui est celui-ci,
ait une ligne de zéro, un,
deux, donc deux pour la ligne, puis zéro, un, deux, trois, trois
pour la colonne. , vous pouvez également avoir des widgets Dans ce cas, vous pouvez également avoir des widgets
qui s'étendent sur
plusieurs lignes ou colonnes. Dans ce cas, vous devez
ajouter ici un autre paramètre appelé rowspan Et cela
équivaudrait à un chiffre. Disons que si vous placez le
bouton, il s'étendra sur deux rangées. Dans notre cas, ce n'est pas
nécessaire, en fait, car nous n'avons pas beaucoup de widgets. Nous n'
avons qu'un seul bouton. Laissez-moi exécuter ce script maintenant et
voir ce que nous obtiendrons. Nous obtenons donc un bouton, qui ne fait en fait
rien car nous n'avons pas précisé l'action à effectuer lorsque vous
appuyez sur le bouton. Et j'expliquerai cela
dans la prochaine conférence. Mais pour l'instant, ajoutons
quelques widgets supplémentaires ici, juste pour que vous vous
familiarisiez avec les widgets. Ajoutons donc un widget de saisie. Et disons E E un pour ça. Donc, l'entrée 1 est égale à l'entrée, puis devinez quel est
le premier paramètre. Et c'est le paramètre de fenêtre. Et on peut laisser les choses
comme ça pour le moment. Et disons un E grade. Et gardons-le dans la
même ligne et dans la première colonne. Enregistrez et exécutez. Et nous avons ici une entrée. Alors, qu'est-ce qu'une entrée ? Une entrée est comme une zone dans
laquelle vous pouvez saisir une valeur, puis interagir avec
cette valeur dans votre script. Supposons donc que vous
saisissiez des kilomètres ici et que vous
souhaitiez avoir un bouton qui convertit
ces kilomètres en miles. Ainsi, le bouton obtiendrait la
valeur de cette zone ici, et il l'
afficherait dans un autre widget, qui pourrait être un widget de texte. Ajoutons donc un widget de texte. Disons que T un est égal à une fenêtre de
texte, bien sûr. Et disons T un, ligne zéro de la
grille, colonne deux. C'est ça. Exécuter. Nous avons obtenu un très gros widget de texte
car la taille par défaut, la hauteur et la largeur par sont en fait un nombre assez important. Nous devons donc spécifier deux
paramètres pour le widget de texte. Il faudrait indiquer la hauteur. Disons une cellule
et la largeur. Disons 20.
Voici donc la zone des widgets. Voici l'entrée,
et voici le bas. Et c'est tout pour cette conférence. Dans la prochaine conférence,
je vais vous montrer comment donner vie à
ces widgets afin qu'ils puissent réellement faire quelque chose.
Rendez-vous lors de la prochaine conférence.
161. 160. Relier des widgets GUI avec des fonctions ++: Bonjour, encore une fois, dans la conférence
précédente, nous avons construit cette
interface utilisateur graphique avec Kiner. Et le problème, c'est
que cela ne fait rien pour le moment, alors nous appuyons
dessus, mais cela ne fait rien. Donc, ce que j'aimerais faire ici, le résultat final que
j'aimerais avoir est lorsque j'exécute ce bas de page, nous avons
donc une entrée ici. Nous pouvons saisir une valeur,
et je veux exécuter ce bouton et obtenir des miles
ici dans la zone de texte. Ainsi, les miles sont comme unité de kilomètre égale
à 1 mile multiplié par 1,6. Donc, si je l'exécute, je veux que quelque chose comme 16 soit généré
ici. C'est donc un programme très simple. Notez que ce n'est pas l'un des vrais programmes que j'ai promis de développer
dans ce cours. Donc c'est juste pour vous aider
à démarrer avec Kinder. Alors, fermons ça maintenant. Et pour qu'un bouton
fasse quelque chose, nous devons ajouter un paramètre de
commande ici. Le paramètre de commande prend donc une fonction ici comme
argument, comme valeur. Et puis lorsque vous
appuyez sur ce bouton, sur le bouton d'
exécution, dans ce cas, la fonction que vous avez
ici sera exécutée. Supposons donc que nous ayons ici
une fonction
qui consiste à convertir des kilomètres en miles. Disons que cette fonction pour
le moment imprime simplement du texte. Imaginons le succès,
par exemple, parce que vous savez qu'avant d'écrire
votre propre programme, il est bon d'utiliser
des instructions imprimées pour essayer des choses. Cela vous permet donc d'
isoler vos problèmes. Si quelque chose se produit ici, vous savez que vous ne pouvez pas avoir problème avec une instruction
d'impression, mais s'il s'agit d'une expression plus
complexe, il devient plus difficile de savoir
si le problème se produit ici, si vous ne
pointez pas sur la
bonne fonction ou si vous avez un problème
avec votre instruction. Il est donc conseillé d'utiliser d' abord des instructions
simples,
comme la déclaration d'impression. Donc, vous devriez aller ici
et parcourir 2 miles,
c'est la fonction. Et une chose que vous devez garder à l'esprit, c'est que vous ne devez pas
passer entre crochets ici. Il ne s'agit donc pas d'un appel
de fonction habituel. Vous faites simplement référence
à la fonction ici et laissez Python s'
occuper du reste Le nom de la fonction se
trouve donc ici et essayons-le. Exécutez, et vous verrez que le succès est
imprimé ici. Appuyez à nouveau, succès, succès, succès. Donc ça marche. Cependant, il n'est pas nécessaire d' afficher le succès dans
la ligne de commande. Nous voulons imprimer une
valeur dans la zone de texte. Maintenant, nous devons
regarder le widget de saisie. C'est ici que nous allons
obtenir la valeur, donc l'utilisateur saisit une valeur
dans le widget de saisie, puis nous saisissons cette valeur,
puis nous utilisons cette valeur
dans notre fonction. Et pour cela, il existe un
paramètre appelé variable de texte. Et cela équivaudrait
à un objet string var, que nous devons déclarer
plus haut ici. Supposons donc que vous vouliez une valeur, donc c'est variable, et
ce serait égal à la fonction string var. Ensuite, nous pointons sur
E une variable de valeur, que nous venons de créer. Cette variable
obtiendra donc la valeur en
fonction de ce que l'utilisateur saisira
dans le widget de saisie. Ensuite, nous pouvons utiliser cette
valeur comme bon nous semble. Supposons que nous voulions l'
imprimer en valeur,
et que nous devions également ajouter
quelque chose de plus ici, qui est une méthode get
de l'objet chaîne. Il s'agit donc d'un objet spécial. Ce n'est pas une chaîne, c'est une chaîne de jeu en
Python. Pour obtenir une chaîne réelle
à partir de cet objet, nous devons appliquer la méthode G. Alors sauvegardez ceci et essayez le script. Disons dix ici, exécutons, et nous en imprimons
dix sur le terminal. Nous n'avons donc pas encore connecté cette chaîne ici
à un widget de texte. C'est donc exactement ce que nous allons faire ici. L'idée ici est que nous devons
insérer une valeur
dans le widget de texte. Et pour ce faire, le widget de texte dispose d'une méthode appelée insert. Vous devez donc vous référer au widget de
texte que vous souhaitez. Donc, T one est notre objet texte, puis appliquez la méthode d'
insertion. Et la méthode obtient
d'abord un argument, qui est un endroit où vous
souhaitez insérer le texte. Supposons que nous voulions l'insérer à la fin du widget de texte. Supposons, par exemple, que
vous insérez de nombreuses
lignes de texte dans votre widget et que vous
deviez appliquer cette
méthode plusieurs fois Et à chaque fois si vous le mettez, vous entrez le nouveau texte
en bas du texte existant. Vous dites donc de mettre ce texte
à la fin. Vous voulez le point de valeur G. Donc, la chaîne de valeur que l'utilisateur
saisira dans le widget de saisie. Voyons donc comment cela se passe. Exécutez la fonction
et insérez du texte ici. Vous pouvez également y mettre n'importe quoi, exécuter et vous obtiendrez la chaîne imprimée
dans le widget de texte. accord, mais nous ne voulons pas simplement saisir cette valeur et l'
insérer dans le texte. Nous voulons d'abord faire
quelque chose avec cette valeur, puis nous insérons le produit, la sortie dans le widget de texte. Supposons que nous saisissions
le point obtenu par la valeur et
que nous le multiplions par 1,6. Et ce serait des kilomètres. miles est donc égal à la valeur saisie par l'
utilisateur multipliée par 1,6. Vous demandez donc à l'
utilisateur de saisir des kilomètres, et 1 mile est égal
à 1 kilomètre multiplié par 1,6, ce
qui correspond en fait à 1,6 ou six. Je ne me souviens pas
de la valeur exacte, mais vous voyez l'idée. Enfin, vous voudriez
parcourir des kilomètres ici. Vous souhaitez donc insérer la valeur de sortie dans
le widget, en toute sécurité. Et exécutez. Et je m'attends
à une erreur ici. Disons dix. Oui,
nous avons reçu une erreur. Ainsi, lorsque vous recevez des erreurs, n'essayez pas simplement de copier
cette erreur, de la coller sur Google et d'essayer de voir ce que disent les
autres. Vous risquez de perdre beaucoup de temps. Investissez plutôt du temps et essayez de comprendre
cette erreur. Donc, ce que cela signifie,
c'est une erreur de type. Impossible de multiplier la séquence par un nombre
non entier de type float. Ainsi, une séquence peut être une
liste peut être une chaîne, un tuple, etc. Python essaie de
multiplier les séquences avec un
nombre non entier qui est un nombre flottant. Donc, float est le nombre 1.6, et Python essaie de multiplier 1,6 par une séquence
avec celui-ci ici. s'agit donc pas d'un nombre
car la méthode G extrait
en fait une chaîne
d'un objet chaîne Et une chaîne ne peut pas être
multipliée par un nombre de flux. S'il s'agissait de deux, il était
possible de les multiplier. Par exemple, si vous multipliez M, la chaîne M par
deux, vous obtiendrez Mimi Donc, mais vous ne pouvez pas
me multiplier par 1,6 car
cela n'a aucun sens. Quoi qu'il en soit, la solution
est de
convertir la valeur saisie par l'
utilisateur en valeur flottante, et vous le faites en ajoutant
la fonction flottante. Alors attention aux crochets. Vous voyez qu'il y a un soulignement sous le crochet et vous
avez un soulignement ici. Cela signifie donc que ce
support se ferme ici. Donc, tout semble correct, sûr et exécutez-le à nouveau,
puis exécutez. Et nous obtenons le résultat attendu. Vous pouvez supprimer la fonction
d'impression. Nous n'en avons plus besoin. Je pense que c'était un bon
début avec la bibliothèque Kiner, et vous devriez maintenant être en mesure créer des interfaces plus
avancées Cependant, nous allons créer une véritable interface
utilisateur graphique avancée avec Kiner, qui interagira
avec la base Ce sera
donc un programme du monde
réel Et pour l'instant, je vais juste
vous donner un exercice lors la prochaine conférence afin que vous puissiez
pratiquer un peu Kiner Et vous apprenez également à connaître
certains aspects plus cosmétiques. Vous allez donc rendre le programme
que nous avons conçu dans cette conférence, vous le rendrez plus attrayant
visuellement et vous vous assurerez de vous salir les
mains avec un
peu de gentillesse Je te parlerai plus tard.
162. 161. Comment Python interagit avec les bases de données: Bonjour, et je suis heureuse de vous
présenter cette nouvelle
section du cours. Dans cette section, vous
allez apprendre à interagir avec des
bases de données via Python. Cela signifie que vous utiliserez des bibliothèques
Python spécifiques et que vous allez exploiter
une base de données à partir de
Python en utilisant Python. Vous allez effectuer des
opérations
telles que l'insertion de données
dans des tables de base de données Vous pourrez mettre à jour les données, supprimer et interroger les données
de la base de données. Vous pouvez ensuite utiliser ces données dans votre programme
Python. Python est capable d'interagir avec de nombreuses bases de données telles que MySQL, Post Graculocle ou
SQLite Dans cette section, vous allez
apprendre à interagir avec une base de données SQL Light et une base de données
post-SQL. SQL Lite et PostGrasul
sont différents en cela. SQLite n'est pas une base de données
client-serveur. Il est plutôt
intégré au programme final. Alors, qu'est-ce que cela signifie ? Eh bien,
regardons ce programme. Si vous suivez la section
précédente, vous savez que nous allons
développer ce programme
dans la section suivante. Lorsque vous cliquez sur un bouton
ici, certaines données s'affichent, et ces données sont stockées
dans la base de données SQL Lite. Contrairement à d'autres bases de données
telles que Postgrad SQL, SQLite est basé sur des fichiers Toutes ces données
sont donc stockées dans le fichier de base de données point DBFle Cela signifie donc que vous pouvez simplement donner ce programme à quelqu'un d'autre qui n'a pas installé SQLite, et il peut utiliser ce programme, afin qu'il puisse ajouter plus de données ici, mettre à jour les données et les
supprimer, etc. Mais si vous avez ce programme
dans une base de données SQL de troisième cycle, l'utilisateur à qui vous le confiez devra
avoir installé
PostgreSQL sur son ordinateur
pour pouvoir exploiter Pensez donc à SQLite,
une petite base de données, que vous pouvez qualifier de portable, mais elle est très populaire
et post GrascUL serait plus approprié à
utiliser dans une application Web Supposons donc que vous
ayez des formulaires, vous obteniez des données de l'utilisateur sur votre site Web et que vous stockiez vos données dans
une base de données post-GrascUL
sur votre serveur Python est un programme qui obtient
les données de vos formulaires sur le client du navigateur et les envoie
dans votre base de données. Pour pouvoir interagir
avec ces bases de données, vous devez disposer de deux bibliothèques,
et ces bibliothèques servent d'interfaces pour envoyer du
code SQL à la base de données,
et la bibliothèque pour interagir avec une base de données SQLite
s'appelle SQLite Three, et la bibliothèque pour fonctionner avec une base de données SQL post-grade
est Psycho Donc, dans cette section,
dans la prochaine conférence, je vais vous montrer comment travailler
avec SQLite Three
, puis nous passerons à
psychopg two. Passons donc à autre chose.
163. 162. Se raccorder à une base de données SQLite avec Python: C'est bon. Dans cette conférence, vous allez
apprendre à utiliser SQLite Three Acul Three est donc une bibliothèque Python permettant d'interagir avec les bases de données
SQL Lite Considérez-le donc comme un
wrapper Python de code SQL. Vous pouvez donc réellement
écrire du code SQL dans Python en utilisant
Ascoli Three Vous n'avez pas besoin d'installer
Scull Three car SQLite Three est une bibliothèque
Python intégrée Il vous suffit donc d'importer Cult Three. Laisse-moi le tester. Scénario
1. Oui, ça marche. Désormais, le processus standard
d'interaction avec une base de données
comporterait cinq étapes. Vous devez d'abord vous connecter
à la base de données. Ensuite, vous créez
un objet curseur, ressemble à un pointeur permettant d'accéder aux lignes d'
une table d'une base de données. Ensuite, la première étape consiste
à appliquer une requête SQL Vous souhaiterez peut-être insérer
des données dans la base de données
ou sélectionner
des données dans la table, etc. Ensuite, la quatrième étape consiste
à
valider vos modifications dans la base de données, puis à fermer
la connexion. Alors allons-y et écrivons un exemple avec les cinq étapes
que je viens de mentionner. Donc, tout d'abord, vous
devez créer une connexion, et vous souhaitez stocker cet
objet de connexion dans une variable. Supposons donc C. Cela équivaudrait connexion à trois points culte. Et ce que vous transmettez ici
est le fichier de base de données. Disons que c'est point DB. Et si vous n'avez pas encore
de fichier de base de données, votre base de données sera créée
par cette ligne de code et la connexion
sera établie. Si vous avez une base de données, une connexion
sera établie avec votre base de données existante
aussi simplement que cela. Ensuite, vous devez créer
un objet curseur, donc modifier la variable, et vous devez vous référer à votre connexion, puis
à la méthode du curseur, qui est une méthode de
l'objet de connexion. Jusqu'ici tout va bien, alors
voici le code SQL proprement dit. Vous souhaitez pointer sur
votre objet curseur, puis utiliser la méthode d'exécution. Et puis entre crochets trouve l'endroit où vous entrez
votre code SQL. N'oubliez pas que votre code SQL se trouve
toujours dans le code. Vous transmettez donc
du code SQL sous forme de chaîne à la méthode d'exécution de l'objet curseur de la bibliothèque
SQL Lite Three. Donc, si vous connaissez le SQL, cela devrait être facile pour vous. Si vous n'êtes pas familier avec le
SQL, le SQL est assez simple, vous pourrez
donc l'
apprendre assez rapidement. À ce stade, nous
avons une base de données, mais nous n'avons aucune table
dans la base de données car
une base de données est composée de tables et les tables ont des
lignes et des colonnes. Vous devez donc d'abord
créer une table. Et une bonne pratique consiste à utiliser des majuscules pour
les mots clés SQL. Create est donc un mot clé ASCl. Table est également un
mot clé ASCuL. Ensuite, vous souhaitez
spécifier le nom que vous souhaitez donner à la
table. Disons magasin. C'est ainsi que vous ordonnez à Python
VASqul de créer une table, mais vous devez ensuite spécifier
les colonnes champs
que vous
souhaitez inclure dans votre Supposons donc que
nous créions une table. Nous avons un magasin, nous avons un magasin et nous voulons stocker nos
produits dans une table de base de données SQL. Nous voudrions donc
avoir l'article. Ce serait donc le nom de l'article. Et l'élément
serait de type de données texte. Le texte est donc comme
des chaînes en Python, et vous voudriez
avoir une quantité. Et ce serait un entier. Alors, combien de cet
article avez-vous dans votre magasin et le
prix également. Et disons réel
pour le prix, qui devrait être un
flottant en Python. Donc, un
nombre décimal. C'est ça. Ici ferme le code
du code SL, et voici le dernier crochet
de la méthode d'exécution. Vous devez ensuite valider ces
modifications dans la base de données. Vous vous référez donc à la
connexion,
puis vous validez, puis vous souhaitez
fermer la connexion. Alors c'est tout. Vous l'enregistrez et
vous vous lancez dans l'exécution. Qlite n'est pas défini, bien sûr, car j'ai commis une
erreur ici chez Typo Et encore une fois, comme vous le voyez, une base de données a été créée. Maintenant, si vous réutilisez
le programme, vous obtenez un message d'erreur
car la table existe
déjà dans la base de données. Donc, ce que vous pourriez faire
ici est une astuce simple. Vous devez ajouter
du code dans votre ligne SQL. Vous dites de créer une table
si elle n'en existe pas. Tellement sûr. Et si vous
reprenez votre code maintenant, rien ne se
passera car Python va se connecter
à la base de données, puis créer un curseur. Et puis s'il y a
une table appelée store, elle ne fait rien, et
elle passe à la ligne suivante. S'il n'y avait pas de table,
cela créerait une table. Il est donc bon d'avoir
ce simple conditionnel ici dans le code SQL. Pourquoi ne pas ajouter des
données à notre table vide ? Essayons ça. C exécute. Nous
exécutons donc à nouveau du code SQL, et le mot-clé qui insère les données dans la
base de données est insert. Ensuite, vous devez spécifier endroit où vous souhaitez
insérer les données. Insérez donc dans le magasin. Et quelles valeurs souhaitez-vous
insérer dans le tableau de votre boutique. Donc, vous
ouvrez les crochets
et à l'intérieur des crochets, vous entrez les valeurs
dans le bon ordre. Donc, dans l'ordre dans lequel vous
avez défini vos colonnes, vous aurez la
quantité et le prix des articles, et disons un verre à vin. Maintenant, il s'agit d'une chaîne, elle doit
donc être placée entre guillemets. Et vous devez utiliser des
guillemets simples ici, car vous
utilisez des guillemets doubles pour
l'expression extérieure. Donc, si vous utilisez des guillemets
doubles ici, vous allez confondre
Python et vous allez donc utiliser
des guillemets simples. C'est pourquoi nous avons
différents types de guillemets pour entourer les chaînes. Nous avons donc le verre à vin à cordes, et disons que nous en
avons une quantité de huit pour un prix de 10,5 Enregistrez cela et
allez-y et exécutez. Nous n'avons pas reçu d'erreur, c'est
donc un succès. Et si nous voulions
insérer une autre ligne ? Eh bien, nous pourrions ajouter cette
ligne ici en dessous. Mais ensuite, lorsque nous
exécutons le code, cette ligne est également
exécutée. Nous aurions donc une
copie de cette ligne. Par conséquent, ce que nous pourrions faire
dans ce cas, c'est utiliser une fonction pour encapsuler
nos instructions SQL distinctes. Vous pouvez donc indenter ce
bloc de code si vous le souhaitez, vous pouvez accéder à l'indentation des lignes, ou vous pouvez utiliser un raccourci, qui peut être spécifique
à votre Il suffit donc de regarder ici
votre raccourci clavier, puis vous pourrez simplement l'utiliser. Donc, la raison pour laquelle j' utilise le bloc de code est que je veux créer
une fonction ici Disons que la fonction crée une table. N'oubliez pas la colonne qui s'y trouve. Et puis je veux une
fonction séparée. Pour les données insérées. Ce serait donc l'
instruction SQL pour la fonction d'
insertion, mais vous pouvez voir la différence entre cette
fonction et cette fonction. Ici, nous ne créons pas de connexion à la
base de données, ce qui est faux. Vous devriez donc insérer
ces lignes ici. Pour établir une
connexion avec la base de données. Ensuite, vous
fermez correctement cette connexion. Vous savez donc comment utiliser les fonctions
Python maintenant. Et naturellement, il est nécessaire de passer des paramètres à
votre fonction ici. Vous voulez donc dire article, donc juste quelques variables
et quantité. Prix. Ensuite, vous
voudriez remplacer ces paramètres ici afin que chaque fois que vous
appelez la fonction, vous insériez des arguments et ces valeurs soient
insérées dans votre table. Vous pouvez désormais utiliser des espaces réservés aux
chaînes, espaces réservés aux chaînes
Python
pour remplacer ces valeurs par les valeurs que l'utilisateur transmettra lorsqu'il
appellera la fonction Mais ce n'est pas une bonne pratique
car votre code
serait sujet aux
injections de SQL provenant de prostituées, et cela s'applique
lorsque, bien entendu, votre application Web
est sur le Web Quoi qu'il en soit, une bonne pratique consiste à mettre des points d'interrogation ici. Ensuite, après l'
instruction SQL, après le double code, vous devez transmettre les variables par lesquelles
ces points d'interrogation peuvent être remplacés. Vous voudriez donc un article, donc dans la bonne
quantité et au bon prix de commande. Essayons donc tout cela maintenant. J'aimerais exécuter la fonction d'
insertion que je viens de créer avec
de nouveaux éléments. Disons donc de l'eau, du
verre, nous en avons dix, et ce serait
moins cher. Enregistrez cela et lancez l'exécution. J'ai commis une terrible erreur ici. J'ai encapsulé avec du code
tous les arguments. Le verre à eau doit donc être placé à
proximité, et ce sont des chiffres. Enregistrez donc à nouveau et réessayez. Et vos données doivent être répertoriées
dans la base de données. Alors encore une fois,
disons tasse à café. Exécutez à nouveau en toute sécurité. Maintenant, je suis sûr que vous
voudriez voir les données que vous avez
insérées dans votre base de données
dans votre table Créons donc une fonction
qui fasse exactement cela. Disons une vue en profondeur. Et vous souhaiteriez établir une connexion avec la
base de données. Donc, copions-le. Collez-le ici, puis voici le code SQL,
donc cur execute. Nous utilisons donc toujours
la méthode execute pour envoyer du code SQL
à la base de données. Et puis nous avons des citations. Supposons que nous
voulions sélectionner les données de toutes les colonnes
de la table des magasins. Sélectionnez donc un astérisque, ce qui signifie « tout depuis le magasin C'est bon. Nous les avons donc sélectionnés, mais comment pouvons-nous réellement récupérer ces données afin de
pouvoir les utiliser en Python Eh bien, la façon de les récupérer est d'utiliser les méthodes
fetch all Et nous voulons choisir de
stocker ces lignes dans une variable. Supposons donc que les lignes récupèrent tout. Ensuite, nous devons
fermer la connexion. Ainsi, contrairement
aux autres méthodes où
nous écrivions
des données dans aux autres méthodes où la table, nous ne faisons
ici que sélectionner des données, nous n'avons
donc pas à
utiliser la méthode de validation. Et nous voulons renvoyer
la variable rose. Et j'aime juste imprimer
le résultat de la fonction. La sortie de la
fonction est donc variable en rose. Je vais donc faire
imprimer la valeur de la rose sur la ligne de commande. Enregistrez le script, exécutez-le. Bien sûr, j'ai une faute de frappe
et je dois être renvoyé. Essaie à nouveau. Et
voici nos données. Nous avons donc un
verre à eau en verre et deux gammes
de tasses à café. C'est parce que nous avons exécuté la fonction plus tôt,
la fonction d'insertion, et maintenant que j'ai réexécuté
le script but
d'exécuter la fonction de
vue, la fonction d'insertion a également été exécutée pour la deuxième fois. Une tasse à café a donc été insérée
deux fois dans la table. Très bien, c'est
pour cette conférence. Dans la prochaine conférence, je vais vous montrer d'
autres opérations vous pouvez effectuer avec la base de données. Je te parlerai donc plus tard.
164. 163. SQLite : sélection, insertion, suppression et mise à jour d'enregistrements SQL: Dans la conférence précédente,
je vous ai donc présenté la bibliothèque
SQLite Three, et je vous ai montré comment
créer une table dans votre base de données
SQL comment insérer
des données dans votre base de données et comment sélectionner des données
et les afficher en Python Nous avons donc ces quatre lignes, quatre lignes dans notre table de base de données. Dans cette conférence, je vais
rapidement vous montrer comment
supprimer et mettre à jour
les données de votre tableau. Encore une fois, je vais créer une
fonction, alors laissez-moi la copier. Nous devons encore nous connecter à la base de données et créer
un objet curseur. Ensuite, nous devons utiliser la méthode
d'exécution. Et dans ce cas,
je voudrais
supprimer la ligne contenant
le verre à vin. Donc, dans Execute,
nous écririons, supprimerions du magasin
où l'élément est égal, j'aimerais utiliser un espace réservé au point d'
interrogation ici Donc, marquez et entre crochets, nous voudrions le paramètre que nous voudrions transmettre
à travers notre fonction. Donc, cet élément est
celui que nous avons mis ici, élément, et laissez-moi changer
le nom de notre fonction. C'est donc celui-ci. Ne le confondez pas avec ça. Il s'agit de la colonne de notre tableau, et c'était la ligne de la fonction précédente.
Supprimez-le également. Et vous souhaitez également valider
les modifications apportées à votre base de données. Alors engagez-vous. Alors c'est tout. Et j'aimerais commenter cela afin de ne pas réexécuter
la fonction d'insertion. Et je veux que la fonction
d'affichage soit exécutée après avoir supprimé la ligne. Supprimez donc. Alors, quel article
voudriez-vous supprimer ? Donc, l'article : verre à vin. Et voyons ce qui va se passer. Nous avons reçu une erreur et nous vous
demandons trois erreurs, le numéro de
reliure fourni est
incorrect. Ligne 28, je vois bien que oui, il y a quelque chose
que j'oublie souvent. Vous devez ajouter un coma ici. Vous le verrez lorsque je vous
apprendrai comment vous connecter à une base de données postgrascule
et comment interroger les données de la base de
données
postgrascule Le code est assez similaire, mais il comporte quelques
modifications critiques, comme celle-ci ici. Cela peut donc être source de confusion
lorsque vous travaillez avec différents
types de bases de données. Essayons encore une fois. Et cela semble fonctionner maintenant. Wineglass n'est pas là. C'est ainsi que vous supprimez une ligne. Ajoutons maintenant une autre fonction. Pour mettre à jour les données. Dans celui-ci, j'
aimerais mettre à jour la quantité de lunettes photo. Je veux donc changer cela 10-11. Encore une fois, vous établissez votre
connexion à la base de données, créez un objet curseur,
puis vous l'exécutez, et vous entrez ici la commande SQL de
mise à jour. Donc, mettez à jour ce que vous voulez mettre à
jour, c'est la table du magasin. Et quelle colonne
souhaitez-vous mettre à jour à partir de
la table des magasins ? Vous souhaitez donc définir
le nom de la colonne, qui dans ce cas
serait la quantité. Et ça équivaudrait
à quoi ? Devinez quoi ? interrogation. Et
puis vous dites : où ? Ou laissez-moi vous montrer comment mettre
à jour plusieurs colonnes. Donc, si vous vouliez
plus d'une colonne, vous utiliseriez une virgule, puis vous diriez que prix est égal à un autre point d'
interrogation Bien, donc nous disons mettre à jour, stocker et définir la quantité et
le prix, mais quelle ligne ? Vous devez donc spécifier le
conditionnel ici. Donc, notre article est égal à un verre à vin. Vous pouvez également définir ce paramètre
sur un point d'interrogation. Vous avez donc trois
espaces réservés ici, puis vous avez le devis
pour clore votre relevé cL, puis entre crochets, vous voulez transmettre les
paramètres quantité, et vous en avez
un second qui porte sur le prix et l'article. Lorsque vous avez
plusieurs paramètres ici, vous ne mettez pas de
virgule à la fin, donc cela se termine ainsi Vous souhaitez également transmettre ces paramètres ici afin qu'ils reflètent l'entrée de votre
fonction. Nous sommes donc en train mettre à jour le tableau des
magasins et définir la valeur de la colonne des quantités et de la colonne des
prix sur ces valeurs, mais uniquement pour les lignes où l'article sera égal
à une valeur donnée. Nous donnons donc cette
valeur à celui-ci ici et les deux premières à
ceux-ci. Tu as compris l'idée. Enregistrez le script et vous
devez l'appeler ici. Permettez-moi donc de le commenter
et de le mettre à jour. Alors, quelle quantité
souhaitez-vous transférer ? 11, disons. Et
le prix était de cinq. Disons que cela
passerait à six, et quel élément souhaitez-vous mettre
à jour ? Un verre à eau ? C'est ça. Enregistrez votre
script et essayez-le. Et nous avons
mis à jour ces valeurs comme prévu. C'est ce que je voulais vous
apprendre dans cette conférence. Il pourrait être plus pratique
d'avoir une pièce d'identité ici. Nous parlons donc de quantité et prix lorsque l'identifiant est
égal à un chiffre. Nous n'avons
donc pas à
transmettre le nom complet, Nous n'avons
donc pas à
transmettre le nom complet ce qui peut prêter à confusion
ou inciter les porteurs à le porter Dans ce cas, nous voudrions
modifier le tableau ici et ajouter une clé primaire qui s'incrémente
toutes Mais vous apprendrez à le faire dans la section suivante
du cours. Je vais donc vous montrer comment créer le programme du monde réel, et nous l'implémenterons dans
ce programme. Il s'agissait donc de quelques exemples
triviaux, et vous en aurez une bien meilleure
idée dans la section suivante Ensuite, nous passerons
au SQL de troisième cycle et nous travaillerons avec la bibliothèque cycle PG two. À plus tard.
165. 164. Base de données PostgreSQL avec Python: Bienvenue à cette conférence. Nous en avons terminé avec SQLite 3, donc j'espère que vous avez pu créer ce script que je
vous ai montré lors des conférences précédentes Parce que dans cette conférence, nous
allons utiliser ce script, mais je vais le modifier pour qu'il soit compatible avec l'interaction avec
des bases de données SQL de niveau supérieur. Heureusement, la majeure partie du code est la même avec
quelques légères modifications. Bien sûr, nous aurions besoin d' une autre bibliothèque
appelée Psycho PG two Ensuite, nous allons récupérer
les méthodes de cette bibliothèque. Et contrairement à SQLite Three, Psycopg Two doit
être installé, il s'agit
donc d'une bibliothèque tierce Il ne s'agit pas d'une bibliothèque Python
intégrée. Vous devez donc installer psychopg
two, et vous avez également besoin de Postgrad QL
installé sur votre ordinateur Donc, dans cette conférence, j'aimerais
également vous montrer comment installer PostGraql et
psychopg C'est bon. Ceci est la page
Web officielle de PostgreSQL et vous pouvez simplement accéder aux
téléchargements ici. Ensuite, vous devez trouver
votre système d'exploitation. PostGraqul fonctionne donc sur Mac,
Linux et Windows, ainsi que sur
Solaris Je suis donc sous Windows. Je vais
simplement cliquer sur Windows, et lorsque vous installez PostGrasul, vous installez
également PG Admin Three, un outil graphique dans
lequel vous pouvez voir
vos Vous connaissez MySQL, PG admin est l'équivalent
de PHB Madmin Post grad QL est également fourni
avec un Stack Builder, un package que
vous pouvez utiliser pour télécharger et installer d'autres extensions SQL
post-grade. Supposons donc que vous souhaitiez une
extension pour les données spatiales, afin de les stocker dans PostQL afin de pouvoir les
utiliser pour des applications JS Il existe donc une extension
pour cela appelée Post GS. Bref, je vais vous montrer
comment installer les extensions. abord, vous devez télécharger PostgreSQL et je suis
sous Windows, je vais donc cliquer dessus Et je vais attendre un moment jusqu'à ce que
mon téléchargement soit terminé. Je vais donc passer rapidement en revue
le processus d'installation. me
demande donc simplement où je
veux installer Post grass QL et où mes données
seront stockées. Et ici, vous devez faire attention
à ces informations d'identification. Donc, votre superutilisateur, ceux
qui ont le plus de
privilèges sur vos bases de données, et votre
nom de superutilisateur est Postgres, et j'aimerais en fait
créer un Un fichier texte juste pour
enregistrer mes informations d'identification. J'aimerais aussi dire le mot
de passe. Un, deux, trois. Très bien, je
saisis Postgress 1,
2, 3 comme mot de Ensuite, il s'agit d'un port de votre serveur ou de votre serveur de
base de données. Je voudrais donc également
en prendre note. Il s'agit de votre paramètre
local, je vais
donc laisser ce paramètre par défaut. Et vous n'aurez qu'à attendre un moment jusqu'à ce que l'
installation soit terminée. Très bien, c'est réussi. Maintenant, si vous souhaitez
lancer Stock Builder pour installer des extensions pour la base de données
d'échelle supérieure, vous voudrez peut-être la
faire vérifier pour
qu'il s' agisse de mon serveur de base de données. Et ici, vous avez un
tas d'extensions que vous voudrez peut-être
installer, par exemple des extensions
spatiales, et vous avez Post gs pour 32 bits et
Post Gs pour 60 pour bits. Si je clique sur Suivant, cela me dit qu'ils ont besoin d'
au moins un package pour être installés.
Permettez-moi d'installer Post gs. Très bien, acceptez
la licence Poss,
puis passez à la suivante Cela m'interroge sur DEL, qui est une autre
interface pour les données SIG. D'accord, il était difficile d'
installer des extensions externes. Si vous souhaitez revenir
à Stack Builder plus tard, votre Stack Builder
devrait se trouver ici ou vous pouvez simplement accéder à Postgres SQL Nous avons également
PG admin, et voici le générateur de balises d'
applications accord, mais si vous
voulez travailler avec Python, vous devez accéder aux bases de
données PostGraqul via Python, afin de ne pas avoir à interagir avec ces La façon d'interagir
avec PostgrasQUL avec Python est d'
installer Psycho PG two,
et vous pouvez installer
psychopg two et vous pouvez installer
psychopg Cependant, vous pouvez rencontrer des problèmes car Cyclopedia
Two est écrit en C, vous avez
donc besoin d'un compilateur C installé sur votre
système sous Windows, au moins, vous n'
avez pas ce problème sur Mac et Linux, j'en suis sûr La solution à cela,
il existe en fait quelques solutions. L'une des solutions est
que vous voudrez peut-être
installer un studio visuel
sur votre machine Windows, mais c'est un programme assez volumineux et je ne voudrais pas l'
installer. La deuxième solution,
que je préfère le plus, est donc que je préfère le plus, est d'utiliser des bibliothèques
Python pré-compilées. Et vous pouvez trouver presque
toutes les bibliothèques Python qui nécessitent un compilateur C. Vous pouvez trouver ces bibliothèques sur
cette page gérée par
Christoph Goldke Nous recherchons donc un appel SIP. PG 2. Vous avez ici les dossiers des roues. Un fichier de roue est donc un fichier qui
peut être installé avec PIP. Alors, que faites-vous
lorsque vous installez quelque chose avec PIP PIP
install Psycho BG two. PIP télécharge le
fichier We depuis un serveur distant, puis il l'installe
dans votre système Vous pouvez donc
rechercher votre version ici. Ce serait le
fichier pour mon système. Il suffit donc de le récupérer d'
ici et de
le coller ici pour que je puisse y accéder depuis la ligne de commande atom. Voici donc le fichier
que je viens de télécharger. Alors allez-y
et installez pip, puis vous devez
pointer vers le fichier Well Ce sera donc Oliged. Et cela a été installé
avec succès. Je peux vérifier rapidement
si c'est disponible. Et ça a l'air de fonctionner. Vous pouvez également vérifier la version de votre bibliothèque si vous le souhaitez. C'est donc 2,6 0,1. Bien, dans
la prochaine conférence, nous nous connecterons à la base de données à la base de données
post gradsqll, puis nous créerons des
tables
et insérerons des données, les
visualiserons, les supprimerons
et les mettrons à jour Passons donc à autre chose.
166. 165. PostGreSQL : sélection, insertion, suppression et mise à jour d'enregistrements SQL: Très bien Dans cette conférence, vous apprendrez à vous connecter à une base de données Post GradeSCL et
à créer des tables dans une base de données
post-gradescule, à
stocker des données, à afficher des données, ainsi qu'à supprimer
et
mettre à jour des supprimer
et Le script que vous
regardez maintenant
est un script que vous avez créé dans leçons précédentes à l'
aide de
la base de données SQLi Donc, si vous n'avez pas
regardé ces conférences, je vous recommande vivement de les lire d'abord,
puis de venir ici. Parce que dans cette conférence, je vais
simplement parcourir ce code et n'en remplacer que
quelques lignes, ce qui
suggère que le
code que vous utilisez pour bibliothèque
Q 3 est très similaire au code que nous
utiliserons pour psycopg two, une bibliothèque que vous utilisez pour vous connecter
aux bases de données
Postgrascue La principale différence est que
votre base de données ne
sera pas un fichier de base de données stocké
dans votre système de fichiers. Il s'agira d'une base de données intégrée à votre
installation post-grascule La première exigence
est donc que vous ayez
une base de données existante sur
votre serveur de base de données. Post grass SquL est fourni
avec une base de données par défaut. Ainsi, une fois que vous aurez installé PostgreSQL, vous aurez une base de données
appelée PostGres Vous pouvez
donc simplement transmettre
la base de données ici, ou si vous le souhaitez,
créer votre propre Il vous suffit donc d'accéder à
votre installation de PostgreSQL et de créer une
base de données via PG Voici donc vos serveurs
de base de données, et celui-ci est un serveur par défaut. Vous devez d'abord vous connecter à votre serveur
de base de données. Que ce soit le mot de passe que vous avez créé lors
de l'installation de Postgress PostGress 123 m'appartenait. C'est bon. J'ai donc été connecté
avec succès et j'ai trois bases de données. C'est donc la base de données par défaut
dont je parlais, et ce sont deux autres
bases de données que j'ai créées. Donc, pour créer une nouvelle base de données, il suffit de cliquer avec le bouton droit de la souris sur les
bases de données et sur la nouvelle base de données. Supposons la première base de données, et vous devez
spécifier le propriétaire, c'est-à-dire l'utilisateur de votre base de données. PostgreST est ce que
j'ai spécifié lorsque j'ai installé Postgres UL,
cela devrait suffire Très bien, vous
avez maintenant une base de données ici. Si vous cliquez dessus,
vous vous y connecterez. Maintenant, vous pouvez simplement le fermer
et revenir à Python. OK, permettez-moi d'abord de commenter ces lignes afin que
lorsque j'exécute le script, ces
instances de fonction ne soient pas appelées. Nous avons donc une base de données vide. La première chose que
nous aimerions
faire est donc de créer une table. Mais tout d'abord, j'
aimerais également changer cela. Psycopie 2. Et bien sûr, j'aimerais
remplacer par lots le SQ L trois, le remplacer par le PG deux. Je veux donc que tous ces noms de
bibliothèques soient
remplacés par Pycopg two Remplacez donc tout et appuyez simplement sur
Escape. Cela disparaît. Heureusement, ce code est le
même que celui de la bibliothèque SQLite Three. Nous avons donc connect, puis
nous avons l'objet curseur, puis nous avons la
méthode d'exécution commit et close. Il suffit de modifier
les paramètres ici. Ici, nous voudrions transmettre le nom de la base de données,
le nom d'utilisateur, l'hôte, le mot de passe et le numéro de port de
votre serveur de base de données. Et tout cela entre
guillemets. Il est donc transmis sous forme de chaîne
à la méthode connect. Tout d'abord, nous avons un nom de base de données. Donc, le paramètre dbname sera
égal à une valeur Vous devez donc insérer la
valeur entre guillemets simples. C'est donc une base de données. Eh bien, le nom de la base de données. Ensuite, vous avez un utilisateur, et sachez que vous n'avez pas
besoin d'utiliser des virgules ici Tout cela se présente donc sous
forme de chaîne et il est lu sous forme de chaîne par
la méthode connect. Donc, l'utilisateur
entre guillemets, publie grass, puis nous avons le mot de passe, post grass, un, deux, trois, puis vous avez le nom d'hôte, donc le paramètre d'hôte. Cela devrait être un hôte local. C'est bon. L'hôte local doit donc être votre nom d'hôte
et c'est toujours comme ça. Enfin, nous avons
le numéro de port, qui figure également entre
guillemets. Donc 532 Ce sont donc les
paramètres que vous transmettez à votre méthode de connexion ou à
la bibliothèque cycle PG two. Essayons alors d'
appeler cette fonction. Créer une table est donc une fonction, et je vais enregistrer le script. Alors laissez-moi m'assurer que vous êtes au courant de
ce qui se passe ici. Nous nous connectons donc à la base de données, puis nous avons
les mêmes méthodes pour la bibliothèque cycle PG two. Nous créons donc
un magasin de noms de table, puis nous avons trois
colonnes pour cette table. Nous validons ces
modifications et nous fermons la connexion.
Enregistrez donc le script. Contrôlez S. Alan,
appelez le script. Et ça a l'air d'être une réussite. Si vous le souhaitez, vous pouvez
simplement aller chez PG at Mean. Et ici, vous pouvez voir le tableau que vous venez de créer. Il suffit donc d'entrer le mot de passe et vous devez accéder
à votre base de données. Donc, base de données 1, développez-la. Ensuite, vous devez accéder aux
schémas, aux tables publiques. Et voici le nom de notre table. Nous avons donc le tableau du magasin, et vous avez trois colonnes, quantité des
articles et le prix. C'est bon. Nous avons
une table vide, alors allons-y et insérons
des données dans cette table. Je vais simplement copier cette
chaîne de connexion et la coller. Ici.
N'oubliez pas que nous utilisons des points d' interrogation lorsque nous insérons des
valeurs correspondant à trois valeurs.
Si vous le souhaitez, vous pouvez utiliser des
espaces réservés pour le formatage des chaînes Donc un pour l'article, un pour la quantité et un autre pour le prix. Ensuite, après la virgule,
laissez-moi retarder cela. Après le guillemet, désolé, vous transmettez le pourcentage, vous connaissez
donc déjà le formatage des
chaînes, puis vous spécifiez le tuple des variables dans lesquelles
vous souhaitez insérer Donc, quantité et prix de l'article. Vous pouvez donc l'utiliser,
mais cela serait sujet aux injections de SQL de la
part de tuckers Ce n'est donc pas une bonne idée. Je peux aller de l'avant et exécuter cela juste pour
voir ce qui se passe. Disons donc avril,
10 et 15 avril pour le prix. Et laisse-moi exécuter ça. Cela semble donc avoir fonctionné, et nous pouvons le vérifier
dans le tableau ici. Vous pouvez donc simplement accéder
à votre base de données, qui est la base de données 1. Et ici, vous pouvez exécuter
une simple requête SQL, tout
sélectionner depuis le magasin passer à Exécuter et vous verrez qu'
Apple a été ajouté à la table. Cela fonctionne donc, mais il est
risqué d' utiliser le formatage de
chaînes Python. Donc, ce que vous voulez faire, c'est que je vais juste le laisser là
pendant un moment pour que vous puissiez comparer les choses et pour
éviter les injections de crâne, vous devriez en fait
transmettre vos variables en
tant que deuxième paramètre à
la méthode d'exécution Donc, qu'est-ce que cela signifie, c'est que
vous n'avez pas à utiliser d'odes, vous devez
donc simplement passer le pourcentage
S, juste comme ça. Ensuite, vous mettez une virgule
ici pour que cette chaîne
entre guillemets soit un argument, puis celui-ci
soit l'autre argument Ensuite, vous transmettez vos variables, donc cela devrait fonctionner maintenant. Donc je suis sûr que vous pouvez voir la différence entre
ceci et cela. Et je vais juste le commenter
pour qu'il ne soit pas exécuté. Et disons orange. Même prix et même quantité exécutés. Et passons à l'
enregistrement de PG Mad Man. Permettez-moi donc d'exécuter
à nouveau la requête. Et vous voyez que les oranges sont ajoutées
en tant que neuro à la table. C'est donc la voie à suivre
et je vais le supprimer. C'est bon. Examinons maintenant
la fonction d'affichage. Ainsi, la fonction d'affichage se connecte
à la base de données et sélectionne toutes les
lignes de la table de stockage. Ensuite, nous stockons ces lignes dans la variable de ligne en utilisant
la méthode fatale. Ensuite, nous renvoyons ces lignes
sous forme de sortie de fonction. Tout ce que vous
devez changer ici est l'
argument de la méthode de connexion. Il suffit donc de les mettre ici. Et
ça devrait être bon d'y aller. Permettez-moi donc de voir, d'appeler la
fonction et de l'exécuter. Et oui, il faut l'imprimer. ai oublié. Ouais. Nous avons donc April et trois oranges maintenant parce que, juste au moment où j'ai
exécuté le script ici, j'ai réexécuté la
fonction d'insertion, donc nous avons obtenu deux oranges et une
autre lorsque vous utilisez des espaces réservés pour le
formatage de chaînes Donc, vous avez compris l'idée.
Regardons la suppression. Fonction. Encore une fois, nous devons transmettre les arguments de
psychopg two connection Ensuite, nous avons supprimé du
magasin où se trouve l'article. Encore une fois, nous ne pouvons pas utiliser de point d'interrogation, nous devons
donc utiliser des pourcentages Et puis comme deuxième argument, nous passons la variable item. C'est donc la même chose que dans le troisième chapitre, mais nous utilisons des pourcentages ici Et laissez-moi appeler Delete. Je vais le commenter et le supprimer ici. Donc, ce que vous voulez supprimer,
c'est l'article, quel article ? Supposons que nous voulions supprimer les lignes où l'élément
est égal à orange. Voyons donc comment cela se passe. Oui, l'article a été supprimé. Les lignes contenant l'élément
orange ont été supprimées et la
fonction d'affichage a été exécutée Nous avons
donc une ligne maintenant. Notre tableau ne comporte qu'une seule ligne. Voici un bref aperçu de la
méthode de mise à jour. Juste comme ça. Et ici, nous mettons à jour
le tableau des magasins, et voilà que nous définissons . Nous mettons
donc
à jour la quantité à cette valeur et le prix également à cette valeur où l'
article est égal à cette valeur. Très bien, nous avons donc une, deux, trois valeurs et nous passons trois variables ici
après la virgule Ainsi, en tant que deuxième argument
de la méthode execute, la méthode de mise à jour
obtient trois arguments. Permettez-moi donc de commenter
et de mettre à jour, nous n'avons qu'une seule ligne. J'aimerais donc régler la quantité de pommes à 20, disons. Et le prix,
maintenons le même prix. Et pour ce qui est de l'article, Apple
aime ça et exécute. Et nous avons fait passer la
quantité à 20. C'était donc ça. Je crois
que c'était très simple. Donc, si vous avez appris S
comme trois auparavant, c'était assez simple pour vous. Et si vous avez des questions, n'hésitez pas à les déposer
dans la section de discussion. Je me ferai un plaisir de répondre.
Rendez-vous lors de la prochaine conférence.
167. 166. App 6 : application d'inventaire de livres: Bienvenue dans cette nouvelle section. Et dans cette section, vous
allez apprendre à créer un véritable programme qui permet l'utilisateur de stocker des
informations sur les livres. J'ai donc déjà
créé ce programme, et je vais vous montrer étape par
étape comment vous pouvez faire de même. J'ai le programme ici, et
c'est un fichier exécutable. Ainsi, en plus d'apprendre
à créer le programme point pi, vous apprendrez également à
créer des fichiers exécutables qui
s'exécutent sous Windows et des
fichiers d'application point qui s'exécutent sur un Mac. Vous pouvez donc
donner votre programme à n'
importe qui sans qu'il ait besoin d'installer Python sur
son ordinateur. J'appelle donc le programme Bookstore. Et cela a été construit
principalement avec Kinte, qui est une bibliothèque d'interface
utilisateur graphique,
et la bibliothèque ASQ Light Three,
qui est une bibliothèque permettant d'interagir
avec la base de données ASQE Nous avons donc quatre entrées lesquelles vous pouvez saisir
un nouveau record comptable. Supposons que vous
ayez un nouveau livre dans votre boutique et que vous souhaitiez l'
ajouter à votre base de données. Et ici vous pouvez
voir tous les livres qui ont été ajoutés
au programme. Vous pouvez ajouter un nouveau
livre, disons Pythons pour le titre
rdt quickly and 1918 Vous avez le numéro ISBN, qui est le numéro
d'identification unique des livres. C'est assez long. Supposons que vous ajoutiez une entrée,
puis que vous consultiez tout
à nouveau et vous verrez que la nouvelle entrée a été
ajoutée à la base de données. Ainsi, chaque enregistrement que vous
voyez ici est en fait stocké dans une table à l'intérieur de
cette base de données Light one. Ensuite, vous avez
d'autres boutons ici. Donc, si vous le souhaitez, vous pouvez réellement rechercher une entrée pour un enregistrement, rechercher une entrée, puis l'entrée
que vous recherchez s'
affichera . Lorsque vous cliquez sur l'entrée, vous obtenez tous les champs affichés dans chacun
des manuels ici Résolvez tout à nouveau, et vous pouvez également mettre à jour et supprimer des enregistrements. Enfin, vous pouvez
fermer la fenêtre. Ce n'est donc pas une excellente interface
utilisateur. Je ne suis pas un grand concepteur d'
interface utilisateur, mais on apprend beaucoup en
développant ce programme. C'est donc une question assez longue
, mais elle portera ses fruits. Alors allons-y.
168. 167. Conception de l'interface utilisateur: Bonjour. Et dans cette conférence, vous allez commencer
à développer notre programme de librairie Plus précisément, nous allons
travailler sur l'interface
utilisateur graphique parce que, vous savez, ce programme
comporte deux parties, pour ainsi dire. Il a donc un backend
et un front-end. Le backend est le code de base de données Sculi
Three. Donc le code qui interagit
avec la base de données. Et le front-end est le
code de la bibliothèque Tkinter. Donc, le code qui
crée tous ces boutons, ces entrées, ce texte, cette zone de liste
et cette barre de défilement. Donc, normalement, vous devez choisir si vous
voulez d'abord travailler sur le code principal
ou commencer à créer
le code frontal. Mais tout d'abord, la toute première chose que
vous voulez faire est de commencer à définir
certaines exigences. Vous voulez donc dire ce que fera
votre programme. Supposons donc que vous
souhaitiez que votre programme affiche une liste
des enregistrements actuels. Ainsi, lorsque vous appuyez sur VO, vous voyez la liste
des enregistrements ici. Ensuite, vous voulez que votre programme
recherche une entrée en cours, puis vous voulez
ajouter Andrea,
mettre à jour et sélectionner les données. Ensuite, vous voulez que le
programme ferme la fenêtre. Donc, en gros, ce
sont nos exigences, et maintenant vous pouvez choisir de
commencer à écrire la fin Beck, afin
d'écrire une fonction qui sélectionne toutes les données
de la base de données. Vous pouvez ensuite renvoyer
ces données sous forme de texte. Vous pouvez donc simplement
les imprimer pour le moment Si vous voulez d'
abord
écrire le back-end parce que vous n'
avez pas le front-end, vous n'avez pas encore intégré
l'interface utilisateur graphique. Vous pouvez donc simplement
écrire les fonctions
du back-end, puis
imprimer la sortie. Ou vous pouvez commencer à écrire
le front-end en premier. Vous créez donc cette interface utilisateur
graphique. Mais lorsque vous cliquez sur ces
boutons, rien ne se passe. Donc, en gros, il suffit de dessiner
ce truc avec Python. Une fois cela fait, vous commencez à créer le back-end, puis vous connectez
tous les widgets et toutes les commandes de ces boutons
à vos fonctions principales. C'est donc une question de
préférence que vous choisissiez de travailler d'abord avec le
back-end ou le front-end. Dans ce cours, dans cette section, nous allons d'abord créer
le front-end. Nous allons donc créer une
interface utilisateur graphique qui
ne fera rien pendant un certain temps tant que nous pas
connectée au
backend. Très bien alors. Je voudrais d'abord
supprimer cette barre verticale ici car je vais
dessiner l'interface
utilisateur graphique ici. Je vais donc faire
un croquis pour que vous voir et l'avoir ici tout le temps. Donc, pour supprimer cette barre,
si vous êtes curieux, vous pouvez simplement accéder aux paramètres. Ensuite, il existe un package
qui affiche réellement cette barre
appelée rap guide, et vous souhaitez déplacer tous les affichages d'une ligne
du huitième caractère
dans Et cela peut vous aider si vous souhaitez, cela peut vous aider à conserver
un schéma particulier. Vous ne voulez donc pas avoir plus de 80 caractères
dans votre code. Cette barre
vous aide donc à respecter cette règle. Quoi qu'il en soit, nous ne le voulons pas,
alors je l'ai simplement retiré. Et je vais juste écrire quelques notes dans
la chaîne doc. Vous savez donc qu'une chaîne de documents
est comme une ligne de commentaire. Donc, si vous mettez quelque chose
dans ces codes triples, cela n'est pas lu
comme du code par Pathon mais comme une chaîne de
documentation Donc, juste pour que les humains puissent lire. Disons que je veux un programme. Cela stocke les informations de ce
livre. Donc titre, auteur et ISBN. Donc le
numéro d'identification des livres. Et l'utilisateur peut
consulter tous les enregistrements. Ils peuvent rechercher une
entrée et en ajouter une, mettre à jour une entrée, la supprimer, et ils peuvent fermer le
programme s'ils le souhaitent. Fermer. Huit. Donc, si vous
commencez à y penser, vous voudriez
maintenant avoir une interface utilisateur
graphique contenant tous ces boutons afin que l'utilisateur puisse effectuer ces actions
via certains boutons. Ensuite, vous réfléchissez à la
façon dont ils peuvent consulter les enregistrements. Et vous savez que Tkinter
possède la list box, widget qui
permet d'afficher un
widget qui
permet d'afficher
du texte sous forme de liste. Donc ligne par ligne. Ensuite, vous voulez que
l'utilisateur recherche une entrée dans une
entrée de mise à jour d'entrée. Vous avez donc besoin de quelques widgets de saisie. Et puis, bien sûr, vous voudriez des étiquettes qui puissent
indiquer le sujet de chaque entrée. Ce serait donc un widget d'étiquette. Vous pouvez également avoir besoin
d'une barre de défilement pour que votre liste défile. Ainsi, s'
il y a de nombreux enregistrements, l'utilisateur peut les
parcourir et voir les
enregistrements situés sous la liste. Nous avons donc un croquis. Ceci, bien sûr,
nécessite un peu de fantaisie et peut-être une certaine expérience dans la conception
d'interfaces utilisateur. Mais il est très important
que vous ayez un croquis. Je vais donc
garder ce croquis à
l'écran pendant que je
code le programme. Normalement, dans la vraie vie, vous voudriez dessiner, peut-être sur un vrai papier ou
simplement sur un écran numérique. Mais c'est important de l'avoir, et maintenant que nous l'avons,
commençons à le construire lors de
la prochaine conférence.
169. 168. Codage de l'interface frontale: Génial. Nous avons maintenant un croquis de notre interface utilisateur graphique, ce qui devrait
faciliter les choses. Vous pouvez donc maintenant simplement
coder
votre interface utilisateur graphique en
Python à l'aide des fonctionnalités de Kiner Salt Kiner est une
bibliothèque que nous
utiliserons pour créer cette interface Et je suppose que vous
connaissez déjà Kinder parce que je l'ai expliqué dans l'une des
sections précédentes Donc, si vous ne connaissez pas Kinder, veuillez consulter
les deux sections précédentes, et vous serez alors en mesure de comprendre de quoi je
parle ici Je vais donc garder le
croquis sur la droite. Vous savez maintenant que pour créer une
interface utilisateur graphique avec Kiner, vous pouvez soit utiliser les méthodes pack pour emballer votre
widget, soit la méthode grille Nous utiliserons la méthode de la grille, il peut
donc être judicieux de créer une grille
sur votre croquis. Ainsi, lorsque vous
créez vos widgets, disons que vous créez un fond, vous devez transmettre le numéro de la ligne et le
numéro de la colonne. Donc, avoir une
telle grille facilitera les choses. C'est bon. Et j'aimerais juste
supprimer cette chaîne de documentation. Nous n'en avons pas besoin, et
cela me permet d'économiser de l'espace afin que vous puissiez voir un espace de travail plus
propre ici. C'est bon. De
Skinerimport. Je n'explique donc pas le code maintenant parce que vous
savez déjà ces choses. S'il y a quelque chose
de nouveau, je vais le passer en revue. Window est égal à TK, la méthode TK qui
crée un objet window, puis vous souhaitez appliquer
la méthode de la boucle principale, qui est essentiellement
un moyen de regrouper tous les widgets que vous allez
entrer dans cet espace maintenant. Très bien, nous avons donc
quatre étiquettes ici. Nous avons donc le titre du label
et l'auteur ici, ainsi que l'ISBN. Je vais donc simplement créer les quatre objets d'étiquette de
Fobels. Je vais donc nommer mes objets, mes variables de
L un à L quatre et nous utilisons la méthode des
étiquettes d'objets pour cela. fenêtre est la fenêtre parent
et le texte doit être le titre. Donc, contrôlez la saisie, vous
pouvez passer à la ligne suivante, peu
importe où vous vous
trouvez sur la ligne précédente. Vous n'avez donc pas besoin de
simplement changer, d'aller ici, puis d'appuyer sur Entrée, il
vous suffit d'appuyer sur
Ctrl Entrée et de passer à la ligne suivante. Tout d'abord, vous appliquez
la méthode de la grille. La première étiquette est donc la ligne zéro, la colonne zéro également. Ensuite, vous pouvez simplement
le copier et le coller
trois fois de plus. Ce serait donc L deux,
L trois et L quatre. Et vous souhaiteriez également modifier
le texte de votre étiquette. Ici et ISBN. L'auteur serait la deuxième colonne, comme vous le voyez sur le croquis. Donc 02, alors nous avons
ici un, zéro, puis 12
pour la dernière étiquette. Voyons donc ce que nous avons. J'aimerais juste appeler mon script. D'accord, ça semble prometteur. Ajoutons maintenant les entrées. Il s'agissait donc de widgets statiques. Nous devons maintenant ajouter quelques entrées. Donc, A un serait une entrée. Et l'entrée obtient la fenêtre
comme premier paramètre, comme n'importe quel autre widget. Et également un paramètre de
variable de texte. Ce paramètre de variable de texte attend comme
argument la valeur que l'utilisateur saisira
dans le widget de saisie. Il s'agit d'un type de données spatiales. Vous devez donc d'abord
créer un type de données ici, un objet de ce
type de données. Alors appelons-le. Nous créons l'
entrée pour le titre, disons le texte du titre, égale
à string vary. C'est donc cette fonction qui
crée cet objet spatial. Cela équivaudrait
à ce titre « sexe ». Alors c'est tout. Et
vous devez également quadriller ce widget de saisie de manière à ce qu'il soit quadrillé. Et les premiers widgets du widget de
titre correspondent
à la ligne zéro et à la première colonne. Alors c'est tout. Je peux
rapidement le multiplier ici et le texte de l'auteur ici, le texte et le texte ISBN Vous devez également
modifier les nombres ou
réduire le nombre de variables de cette manière. Et, bien sûr, vous devez transmettre ce que l'utilisateur saisit ici. Cela devrait donc être le cas et
ces deux-là. C'est bon. Enfin, vous devez également spécifier les lignes et les colonnes
pour les entrées. Ce serait donc zéro, trois, puis nous avons
le widget de texte, un, un. C'est bon. Et la dernière entrée.
Un. Trois. C'est bon. Allons y jeter un œil.
Ouais. Ça a l'air bien. Génial. Et maintenant c'est au tour
de la boîte de location. Appelons-le donc
List One. Pourquoi pas ? Cela équivaudrait
à une fenêtre de liste. Ensuite, vous devez
spécifier la hauteur de votre dernière boîte ainsi que
la largeur. J'ai donc pensé à
en mettre six et 35. Ce serait une bonne
hauteur et une bonne largeur. Vous pouvez goûter à
différentes hauteurs et largeurs et voir ce qui vous convient le mieux. Ensuite, j'aimerais noter ceci. Grille. Cela commencerait donc à la ligne numéro deux et à la colonne zéro. Cependant, si on
laisse les choses comme ça, les choses ne se passeront pas comme prévu. En fait,
on peut essayer ça. Comme vous pouvez le constater, la zone de liste n'
occupait que la première cellule. Donc, la première cellule de la
première colonne de la ligne zéro,
un, deux, donc de la ligne
deux, de la colonne zéro. Nous voulons plutôt
étendre cette zone de liste sur les autres colonnes et sur les autres lignes, car nous
aurons des boutons ici plus tard Nous voulons
donc étendre cette zone. Et vous pouvez voir le croquis ici. Nous pouvons donc ajouter un paramètre d'
envergure
de ligne, ce qui serait également égal à
six colonnes d'envergure. y en aurait donc deux. C'est bon. Ce serait donc une zone de liste. Cependant, nous devons également y ajouter une
barre de défilement afin que la liste puisse être parcourue lorsqu'il y a beaucoup
de données dans la liste, de nombreux enregistrements pour joindre
une barre de défilement à La logique ici fonctionne comme suit. Vous créez votre barre de défilement, puis vous indiquez à votre barre de
défilement
la liste que la
barre de défilement doit faire défiler Ensuite, vous indiquez également à votre liste qui est sa barre de défilement. Créons donc d'abord le scroll, une barre de défilement
indépendante Disons donc SB One. Méthode de la barre de défilement. Cela se touche
par la fenêtre. Ensuite, vous appliquez
la méthode verte. La barre de défilement se
trouverait donc sur une troisième colonne. Et une fois que vous avez créé
ces deux objets, vous souhaitez appliquer
une méthode de configuration à la boîte de location et
une méthode de configuration. Vers l'objet de la barre de défilement. Et ces
méthodes de configuration obtiennent des arguments. Ce serait donc une commande de défilement, égale à un
ensemble de points. C'est ça. Cela signifie donc que la barre de défilement
verticale le
long de l'axe Y sera
définie sur cette barre de défilement, puis vous passerez à la méthode de la barre de
défilement. Désolé, cela doit être configuré, puis vous passez une commande
égale à répertorier une vue Y. Cela devrait donc fonctionner. transmettez ici un
paramètre de commande, ce qui signifie que lorsque
vous faites défiler la barre, la vue verticale de
la dernière barre change. Voyons donc comment cela se passe. Et il semblerait que j'ai
foiré quelque chose ici. J'ai placé la position de
la barre de défilement sur la première ligne, je suppose, et sur la troisième colonne. La barre de défilement doit donc être
en fait la ligne deux et la deuxième colonne. Vérifions-le encore une fois.
Oui, ça a l'air de fonctionner. Cependant, il ne
semble pas très centré car nous devons le répartir les mêmes lignes que celles que
nous avons tracées dans la boîte ici. Nous devons donc ajouter ici
un paramètre rowspan et définir sur six autres looks centrés sur la
barre de défilement Très bien, il ne nous reste plus
qu' à ajouter ces
widgets de boutons juste ici Génial. Nous avons donc six boutons. Commençons par le premier. Nous avons la méthode des boutons. Fenêtre et texte,
les boutons contiennent donc du texte. A est le premier. Et puis j'ai pensé à
mettre une largeur de 12. Alors, sois parti, encorné. Il s'agirait de la
deuxième colonne, de la troisième ligne. Et nous avons encore cinq boutons. Je vais donc coller ces six, je crois. Donc b2b3,
quatre, quatre, Bien entendu, ces boutons n'
ont pas de paramètre de commande pour le
moment, car plus tard, nous
ajouterons ici un paramètre de commande, qui décidera de ce que feront
les boutons. Mais pour le moment, c'est très bien. Ces boutons seront donc
tous
alignés dans la troisième colonne , et chacun
aura une valeur de ligne différente. Et six. Génial.
Voyons donc ce que nous avons. Et boum. J'ai oublié de mettre un numéro de ligne pour le bas
fermé. Sept. Et maintenant, ça a l'air mieux. Voici
donc comment créer une interface utilisateur
graphique. Bien entendu, ces boutons
ne servent à rien pour le moment. de la prochaine conférence,
je vais donc vous montrer comment associer des actions à cette interface utilisateur
graphique. Nous travaillerons donc sur le back-end et nous utiliserons SQLite Three pour interagir avec
la base de données et récupérer ces données dans cette
interface utilisateur graphique J'espère donc que mes routines et mes
pratiques vous aideront à créer des
interfaces utilisateur graphiques avec EZ et je vous verrai
lors de la prochaine conférence.
170. 169. Codage du backend de l'application: Bonjour, bienvenue à
cette nouvelle conférence. Et ici, nous continuons à
développer notre programme de librairie qui stocke et extrait des notices
comptables à partir d'une Pour autant que, vous le savez, nous
avons créé l'interface
utilisateur graphique avec Kinder Voici donc notre script. Donc, en gros, nous avons le
front-end de notre programme. Et maintenant, voici notre interface utilisateur
graphique. Et en gros, ce que
nous devons faire maintenant, c'est associer certaines fonctions
à tous ces boutons. Supposons, par exemple, que lorsque nous appuyons sur le bouton
Afficher tout, une fonction se déclenche pour sélectionner
les données
d'une base
de données SQL Lite, puis les récupérer et les
placer dans cette zone de liste ici. Cela signifie donc que nous devons
créer une base de données, une base de données
SQLite
avec SQLite trois Nous devons également d'abord
créer une table. Nous pourrions donc le faire
dans le script, mais je préfère créer un autre script, puis l'
importer ici. Alors, importez, appelons
le nouveau backend de script. Nous devons donc créer un backend avec ce
script Pi. C'est bon. Et maintenant, je veux en
changer le nom mon script frontal afin que nous gardions
le même schéma. Disons donc le front end. C'est bon. Nous sommes donc dans
le script frontal maintenant, et nous voici dans
le script principal. Cela signifie donc que vous créez une fonction d'affichage, qui sélectionne les données de
la base de données et que vous
créez cette fonction ici, puis que vous cliquez sur
le bouton Afficher tout,
puis que vous entrez le paramètre de
commande ici, et ce serait égal. Disons donc commande juste
pour vous donner une idée, commande égale au backend
et au nom de la fonction. Donc quelque chose comme ça. C'est bon. J'espère que
cela a du sens. Cependant, pour le moment, ce serait formidable d'
oublier ce script. Nous devons donc garder à l'esprit
l'interface utilisateur graphique, mais il est bon de ne pas interagir
avec ces widgets pour le moment. Donc, ce que nous faisons à la place, c'est imprimer les sorties
des fonctions, les fonctions que nous avons créées sous forme de chaînes dans la ligne de
commande ici. Nous ne jetterons donc pas ces
données dans la moindre case, mais dans le terminal ici. C'est bon. Commençons à coder. Importez SQLite trois. C'est la première
chose que tu veux faire. Et je vais conserver une image de l'
interface utilisateur graphique ici afin que vous puissiez
vous y référer facilement. Nous devons donc créer
une fonction d'affichage. Mais avant cela, j'
aimerais créer une base de données, donc une connexion à la base de données. Et j'aimerais mettre cela
dans la fonction. Disons donc Function Connect. Et nous avons un objet de connexion. Ce serait donc un
Scul Three Connect. Et appelons la base de données
books point dB. C'est bon. Nous établissons donc une
connexion à la base de données. Ensuite, nous définissons un
objet curseur comme celui-ci. Ensuite, nous devons
exécuter une instruction SQL. Donc, objet curseur, exécution
et mise entre guillemets, nous saisissons l'instruction SQL. Nous avons donc une base de données, et nous avons également besoin d'une table dans la base de données où stocker les informations de
nos livres. Maintenant, pensez-y. Utilisateur Lorsque vous donnez ce programme à un utilisateur, celui-ci exécutera le programme. Et chaque fois qu'ils
exécutent le programme, votre script doit
vérifier s'il existe une table dans
la base de données du livre. Donc, s'il y a une table, dites-vous de ne pas la créer. S'il n'y a pas de table,
vous devez créer la table. Créez donc une table si elle n'existe pas. Et appelons un livre de table, juste pour le différencier du nom
de la base de données. Ensuite, vous voudriez
transmettre certains paramètres. Le premier paramètre que j'
aimerais transmettre est l'ID. Ne le confondez donc pas
avec le numéro ISBN. L'identification du livre, c'est juste un numéro qui
partira de zéro, et il sera automatiquement
incrémenté d'un afin
que nous puissions contrôler le
nombre d' enregistrements que nous
avons dans la base C'est donc une bonne idée
d'avoir cet identifiant ici, qui serait un entier, et vous devez le
définir comme clé primaire. Il s'agit donc d'une
colonne obligatoire dans votre tableau. Ensuite, vous avez le
titre sous forme de texte, l'auteur, ici sous forme de texte entier, et l'ISBN, qui est également un
entier bon, c'est ça.
Vous souhaitez valider les modifications, puis
fermer la connexion. Très bien, nous avons donc créé
une fonction de connexion. Plus tard, nous
exécuterons ce script, donc le script frontal, puis vous importerez le backend, ce script, le script
du back-end. Le code du backend
sera donc lu par Python. Mais si vous n'avez pas
appelé cette fonction, ce code ne sera pas exécuté. Donc, ce que vous voulez faire à la place,
c'est avoir cette fonction. Exécuté chaque fois que vous
exécutez cette fonction. Vous exécutez donc le front-end
et cela importe le backend, sorte qu'il exécute tout le code Et cette ligne est exécutée ici. Ainsi, la fonction s'exécutera
chaque fois que vous exécuterez le front-end. C'est bon. J'espère
que cela a du sens. Ou permettez-moi de mieux
expliquer cela rapidement. Nous avons donc un script A point pi, et nous avons un script point pi B. Et dans le script A point pi, nous importons le script B. Et ce que nous avons
dans le script B, c'est une fonction PU qui imprime
quelque chose à l'écran. Hé, et sauvegardez ceci et
sauvegardez-le également. Ainsi, lorsque vous exécutez un point pi, rien ne se passe pour le moment car vous venez de
définir votre script. Mais si vous appelez le
script ici, right, food,
safe, et que vous exécutez à nouveau A, vous obtenez
cette fois le
résultat de la fonction. C'est donc l'idée.
Merci. Et revenons à notre
scénario du monde réel. C'est bon. Nous avons maintenant la fonction de
connexion. Commençons par créer une fonction d'insertion qui insérera des données
dans la base de données. Je commence donc la fonction d'insertion car c'est une fonction
plus simple que l'autre. J'aimerais donc commencer par les choses
les plus simples. Insertion de développement. C'est
ainsi que j'appelle ma fonction. Et pensez-y, vous y
avez quatre entrées. Vous attendez donc de
l'utilisateur qu'il saisisse titre, l'auteur, l'année
et le numéro ISBN Vous voulez donc transmettre quatre
paramètres ici, ainsi que l'ISBN. C'est bon. Et puis, bien
sûr, vous devez vous
connecter à la base de données. Grâce à cette fonction, elle se connectera simplement temporairement à
la base
de données, vérifiera s'il existe une table et
fermera la connexion. Vous avez donc une
connexion fermée ici, lorsque vous appuyez sur le bouton d'insertion lorsque vous appuyez sur le bouton d'entrée, vous devez créer une nouvelle
connexion à la base de données. Et permettez-moi d'aller de l'avant et
de lire ces deux lignes également, parce que nous en avons également
besoin, n'est-ce pas ? Et c'est ici que nous exécutons notre
instruction SQL spécifique entre guillemets. Donc, le
bouton Adentry va faire l'insertion. Dans le livre, donc les valeurs comptables de table. Et voici un truc maintenant. Nous avons un identifiant ici, il s'
agit donc d'une valeur d'incrémentation automatique, nous n'avons
donc pas à la
transmettre manuellement Et ce que nous pouvons faire à la place,
c'est transmettre une nouvelle valeur ici. Et Python le comprend, et il créera
l'identifiant automatiquement. Ensuite, nous avons
quatre points d'interrogation, un pour chacune de nos valeurs. Ensuite, vous devez
passer vos paramètres en tant que second paramètre de
la fonction d'exécution. Donc, sous forme de tuple ici, titre ici et ISBN Bien, laissez-moi écrire
une autre fonction, puis nous exécuterons le script pour l'essayer et voir
comment cela se passe. Donc, disons
la fonction d'affichage. Cela récupérera donc toutes les
lignes de données de la table. Nous le copions donc
et les mettons ici. Nous nous connectons donc à la base de données, créons un objet curseur, puis nous exécutons
une instruction SQL. Et puis, comme il s'
agira d'une instruction select, nous n'apporterons aucune
modification à la base de données, nous n'avons
donc pas besoin d'une méthode de
validation ici. Et c'est en fait
assez simple. Tout sélectionner dans le livre. Vous devez donc
renvoyer votre sélection
sous forme de renversement. Ensuite, vous saisissez cette sélection et vous la mettez
dans la zone de liste. Vous voulez donc que la
fonction d'affichage renvoie un basculement. Supposons que rose
soit égal à cur fetch
all, soit égal à cur fetch puis vous pouvez
fermer la connexion, mais vos données resteront
stockées dans la variable rose Vous pouvez
donc simplement renvoyer des
lignes ici. C'est bon. Essayons donc le script maintenant. Et la façon de l'essayer serait d'utiliser une déclaration
imprimée. Nous voudrions donc appeler insert, puis saisir
certaines données manuellement. Ainsi, dans le programme réel, cette fonction d'insertion sera exécutée quelque part
dans l'entrée publicitaire. Bouton Mais pour l'instant, nous devons rester simples et atteindre notre objectif
étape par étape. Insérez, passons quelques
valeurs ici le titre. Disons la tablette C puis celle de
l'auteur John. C'est bon. Et voici un entier, il vous suffit donc de passer un nombre et ISBL est
donc un entier Il n'est donc pas nécessaire de
les mettre entre guillemets. Ensuite, vous souhaitez également
imprimer le résultat de
la fonction d'affichage. Génial.
Voyons donc comment cela se passe. Ce serait le
script principal. Génial. L'enregistrement a donc été inséré dans la base de données et imprimé à partir de
la fonction d'affichage. Si vous réexécutez le script, vous obtiendrez deux enregistrements car la fonction d'insertion a été
exécutée deux fois. C'est bon. Ça
a l'air de bien se passer. Alors, qu'avons-nous d'autre ? Nous avons une fonction de recherche. Et nous implémenterions
une recherche or. Cela signifie donc que l'
utilisateur saisira un titre ou
un nom d'auteur, l'
année ou le numéro ISBN, ou qu'il pourra choisir
de les saisir tous en même temps Mais supposons qu'il
entre uniquement dans l'année, il obtiendra toutes les lignes
correspondant à cette année. Ici, nous devons donc également transmettre
quatre paramètres. Ben, d'accord. Ensuite, nous avons besoin de ces lignes de code, alors connectez-vous à la base de données, l'objet
curseur, puis exécutez. Restons donc ici un moment. Nous voulons tout sélectionner parmi les
livres dont le titre est égal à quelque chose, l'auteur
est égal à quelque chose ou l'année est égale à
quelque chose ou l'ISBN Et puis le deuxième
paramètre serait le tuple des arguments, PhtalesBN Ensuite, nous devons récupérer toutes les
lignes qui seront
renvoyées par cette requête et
les stocker dans cette variable de lignes, fermer la connexion et, à nouveau, renvoyer les lignes. Cependant, un problème que nous pouvons rencontrer est que
l'utilisateur peut vouloir transmettre, disons, le
nom de l'auteur uniquement aux entrées. Cette fonction
obtiendra donc uniquement
les arguments du paramètre author. Ces autres paramètres
resteront sans valeur. Ensuite, vous recevrez
une erreur car votre fonction est conçue
pour avoir quatre paramètres. Dans ce cas, vous souhaiterez transmettre des chaînes vides
comme valeurs par défaut. C'est bon. Et ces deux-là. présent, si l'utilisateur
transmet un nom d'auteur, disons John Smith, cette instruction SQL
recherchera un titre vide ou nom de l'auteur John Smith ou un Ear
et un ISBN vides, etc. Et il renverra toutes les lignes avec John Smith comme nom d'auteur. D'accord. Disons-le
donc et essayons-le. Nous avons donc connect, insert to print view. Disons la Terre. J'
insère un autre enregistrement ici. John Smith. C'est bon. Et puis, disons, imprimez la recherche, et vous
souhaitez transmettre quelques arguments. Par exemple, auteur est égal
à John Smith. C'est bon. Sans citation ici. Et
voyons comment cela se passe. Nous avons donc obtenu ici cette liste de lignes de la fonction de vue car nous avons également
la fonction de vue ici. Ensuite, la fonction de recherche
renverra cette ligne pour nous. Donc, la ligne avec l'ID trois et
avec John Smith comme auteur. Cela fonctionne donc bien. Allons-y et créons
une fonction de dilution. Réfléchissons donc à
la manière dont l'utilisateur souhaite
supprimer un enregistrement. Ils voudraient donc probablement voir des disques
dans leur boîte. Ils voudront ensuite
sélectionner l'un des enregistrements. Disons le record
pour ID 3, la Terre, John
Smith, etc. Ils le sélectionneraient donc
, puis appuieraient sur le bouton de suppression. Cela signifie donc que nous voulons d'abord
récupérer la sélection de la liste, donc la sélection dans la zone
de liste, nous la saisirons sous forme de tuple, mais nous y
réfléchirons plus tard Nous allons donc le prendre sous forme de tuple. Ce tuple possède des numéros
d'identification uniques ou l'ID. Nous voudrions donc faire référence
à cet identifiant, puis accéder à notre table de base de données et
supprimer la ligne portant cet identifiant. J'espère donc que cela ne prête pas beaucoup à
confusion dans la fonction de
suppression, nous nous attendons
donc à l'ID du tuple que l'
utilisateur sélectionnera Ensuite, nous voudrions avoir ce code et partir de là. Connectez-vous donc à la base de données, l'objet
curseur,
exécutez une instruction. C'est bon.
Voyons comment cela se passe. Nous voulons donc supprimer du livre où l'identifiant est
égal à quelque chose. Génial. Et puis ce quelque chose
est le paramètre ID. Donc, l'argument de
ce paramètre est ici, et c'est le nom de la colonne. Ne le confondez donc pas avec
ce paramètre de
fonction de nom de colonne. N'oubliez pas la virgule ici. Et oui, en gros, c'est ça. Sauvegardons ce script maintenant, et exécutons-le. Nous y insérons des données. Disons le soleil cette fois. Nous aurions donc
le C, le C à nouveau, la Terre et le soleil, donc j'aimerais supprimer la Terre. Et je voudrais
les mettre ici, les supprimer. La Terre en a donc une idée. Nous voudrions donc en passer trois ici. Ensuite, nous consulterons tous
les enregistrements actuels une fois que nous les aurons supprimés. C'est bon. Voici donc nos archives, et la Terre a disparu.
Cela fonctionne donc très bien. Encore une fois, comme je l'ai dit, cet identifiant
sera extrait du tableau. Le tuple aura donc
l'ID comme premier élément. Donc, en gros, à partir de Tuple,
nous allons obtenir l'élément avec l'index zéro, et nous passerons ce premier
élément à cette fonction de suppression Génial. La fonction serait mise à jour. Mettre à jour. Et encore une fois, comment
souhaitez-vous mettre à jour les enregistrements ? Alors, comment l'utilisateur
souhaiterait-il mettre à jour un enregistrement ? Eh bien, encore une fois, ils
peuvent s'attendre à sélectionner une ligne dans la zone
de liste de la zone Tinder is, et les valeurs de cette barre s'
affichent dans les widgets de saisie. À partir de là, l'utilisateur
peut vouloir modifier l'une de
ces cellules de ces entrées
et appuyer sur le bouton de mise à jour en bas. Encore une fois, nous allons obtenir la
sélection dans la zone de liste, puis nous nous référerons à l'idée. identifiant est donc ici comme premier paramètre, mais nous voudrions également obtenir les nouvelles valeurs que
l' utilisateur souhaiterait obtenir
à partir de ces entrées. Supposons donc que l'utilisateur
veuille changer
le titre du soleil en celui de la lune, et vous
obtiendrez ce titre. Le titre sera donc dans le champ de
saisie et transmis ici. Pareil pour l'auteur ici
et l'ISBN, d'accord. Ensuite, vous souhaiterez mettre
à jour votre tableau. Mettez donc à jour
la table où l'ID est égal à celui-ci. Mettez à jour le tableau avec
ces nouvelles valeurs, où ID est égal à ceci. Mais tout d'abord, nous
devons obtenir toutes ces lignes. C'est bon. Alors mettez à jour, réservez, et vous dites « set ». Le titre du jeu de mots clés est donc
égal au point d'interrogation. Idem ici, point d'interrogation, et ISBN est égal à point d'interrogation Mettez donc à jour le livre et
définissez ces valeurs où ID est égal à
un autre point d'interrogation. Alors on passe le triple ici. Donc, identifiant, titre, auteur et ISBN. Donc ça a l'air bien. Nous validons les modifications et nous
fermons la connexion. Et voyons comment cela se passe. Donc actuellement, nous avons
les lignes dans le tableau, le C, encore une fois le C, le soleil. Oui, ces trois rangées. Et mettons à jour le soleil. Je veux donc d'abord
le commenter et également le supprimer. Concentrons-nous donc sur la fonction de mise
à jour et la mise à jour. Vous voudriez donc transmettre l'idée de la ligne
afin de la mettre à jour. Ensuite, vous voulez transmettre les valeurs dans le bon ordre. Alors, ce que vous voulez pour le nouveau
titre, disons, la lune. Ensuite, dans l'interface
réelle l'interface utilisateur graphique, si l'utilisateur souhaite
modifier uniquement le titre, il laissera les autres
valeurs telles quelles. Ces valeurs seront donc remplacées par
les valeurs existantes. Donc John Smith et l'année
1919 le numéro ISBN. Mais dans ce cas, nous sommes juste
en mode dégustation afin de pouvoir
transmettre ces valeurs. Lisse. C'est bon. Et un chiffre.
Voyons donc comment cela se passe maintenant. Et il semblerait que cela n'ait pas fonctionné. Le soleil est toujours là.
Voyons donc ce que nous avons ici. Mettez à jour le titre, l'auteur
ici, l'ISBN, où les identifiants. L'identifiant devrait donc se trouver au
bout du rouleau. Hmm. B, tu sais, nous
les avons mis dans le bon ordre
que nous avons défini ici. Essayons donc à nouveau. Hum. Maintenant, ça marche. L'ID quatre a donc été
remplacé par la lune, John Smooth, et
les autres valeurs. Génial. Je pense donc que
le script de Ben est prêt. Et ce dont nous avons besoin maintenant, c'est d'associer toutes ces fonctions
à nos boutons. Nous avons donc encore du travail à faire, et nous le ferons lors de
la prochaine conférence.
171. 170. Raccordement de l'interface frontale avec le backend, partie 1: Hey, bienvenue encore une fois. Et c'est le dernier coup de pouce que nous allons donner à
notre application. À la fin de cette conférence, vous aurez un
programme entièrement fonctionnel capable de stocker et de récupérer des enregistrements comptables
dans une base de données ASQE Lit Donc, comme vous le savez, nous
avons deux scripts. Nous avons le script front
et point py, et le
script point pi principal. Nous en avons complètement terminé avec
le script Bend point pi. Nous avons donc créé toutes nos fonctions qui
se connectent à la base
de données et qui se connectent à la base
de données et troisièmement, consultent,
suppriment et mettent à jour les données. Et maintenant, nous devons passer
au script frontal, car nous devons le modifier
légèrement pour
que le script frontal puisse récupérer des données à partir du script principal ou, plus précisément, il puisse obtenir les sorties de
fonction
qui sont essentiellement des tuples Ensuite, insérez ces tables
de données dans la zone de liste. Donc, en gros, l'utilisateur
appuie sur un bouton, puis ces fonctions sont déclenchées et les données sont
insérées dans la zone de liste. Commençons donc par les choses
les plus simples. La première chose que j'
aimerais implémenter est d'obtenir les enregistrements dans
la zone de liste lorsque l'utilisateur
appuie sur la vue ou sur le bouton. Tout d'abord, comme je l'ai
déjà mentionné, vous devez importer
le script Ben ici
afin de
pouvoir ultérieurement faire référence à
vos fonctions comme une vue par points
du backend, par exemple
pour la fonction d'affichage de
base de données Non, j'ai mentionné que pour attacher une
fonction à un bas, vous devez aller là où vous
avez défini ce bas. Donc, jusqu'à la fonction inférieure, puis vous ajoutez une commande ici. Donc, commandez, puis
voici la fonction. Maintenant, si nous appelons simplement la fonction view
du script Bend. Donc, si nous utilisons la vue Bent, nous ne faisons qu'
exécuter la fonction de vue, donc nous n'insérons
aucune donnée dans la zone de liste Donc, ce que nous voulons faire, c'est avoir une autre fonction et
avoir cette fonction, récupérer les données de
la fonction d'affichage et les
insérer dans la zone de liste. Par exemple, appelons
cette commande function view. Juste comme ça. N'oubliez pas que vous ne
passez pas de crochets
ici, car si
vous le faites lorsque vous exécutez le script, cette fonction ici,
si vous faites comme ça,
cette fonction sera
exécutée lorsque Python lira votre script, mais ce n'est pas ce que
vous voulez. C'est ce que vous voulez lorsque vous appuyez sur le bouton lorsque l'utilisateur
appuie sur le bouton. Cette fonction est exécutée. Tkinter le sait donc et si vous le transmettez comme ça,
Python Tkinter l'exécutera lorsque vous appuierez sur le bouton Donc, commande d'affichage, et maintenant vous avez besoin d'une fonction de
commande d'affichage. Écrivons donc nos
fonctions ici. La commande d'affichage. Pensez donc à la sortie maintenant. La sortie que nous
obtenons est un tuple. Je vais donc exécuter
la fonction d'affichage ici, donc imprimer la vue juste
pour voir ce que nous avons, si vous l'avez oublié. Donc Python Band point pi. Et donc en fait, nous
avons une liste de tuples. Donc, il renverse dans la liste. Et ce que nous voulons faire maintenant, c'est insérer chacun de ces tuples Ainsi, chacune de ces lignes de
base est une nouvelle ligne dans la liste à
l'intérieur de la zone de liste. Donc, ce que nous pouvons faire, c'est
itérer à travers ce tuple. Ce serait donc pour, disons, une ligne dans la vue par points du backend. Il s'agit donc en fait de
cette liste ici. Il s'agit donc en fait d'un
objet et d'un objet de liste. Et puis, liste 1, je crois, c'est ainsi que
notre zone de liste est codée. Oui, donc c'est la première liste. Il s'agit d'une variable contenant le point « Insert » de
notre boîte de location. Ensuite, la méthode d'insertion
obtient deux arguments. Le premier argument
est l'index dans lequel vous souhaitez insérer vos valeurs. Vous avez donc une zone de liste, et cette zone de liste comporte
plusieurs emplacements. Il a donc la première place, puis la deuxième, la
troisième, et ainsi de suite. Donc, si vous voulez
le mettre en premier lieu, vous entrez zéro. Si vous voulez le
mettre dans le second, vous devez entrer un index
d'un ici et ainsi de suite. Mais pensez-y. Nous sommes en train de
parcourir ces tubes. Nous allons donc au premier tuple, puis nous
voudrions le mettre, et nous voudrions placer ce tuple comme premier
élément de la liste Ensuite, nous
voudrions que le second soit mis comme deuxième
élément, et ainsi de suite. Ainsi, dans de tels cas, la méthode d'insertion possède également un index spécial appelé end, puis vous passez la ligne. Cela signifie donc
que les nouvelles lignes seront placées à la
fin de la zone is. Vous avez donc cette ligne et
celle-ci est placée la première, puis elle sera placée à la fin des
lignes existantes. Cela garantit donc
que chaque nouvelle ligne est insérée à la
fin de la zone de liste. J'espère donc que c'est clair. Et j'aimerais vraiment
exécuter le script. Nous avons donc maintenant le
front end. Ce n'est pas une tarte. J'ai fait une erreur ici. Donc, en fait, je veux importer le backend ici comme
ça. Exécutez à nouveau. Et nous avons l'interface. Voyons donc ce que propose VO. Le nom du revers n'est pas
défini à la cinquième ligne. Donc oui, bien sûr, ce n'est pas défini car
j'ai une faute de frappe ici Pliez. C'est bon. Essayons encore une fois. Ferme-le. Voyons voir. Génial. Nous avons donc
affiché les lignes dans la case is. Mais lorsque vous appuyez
dessus encore et encore, ces lignes seront ajoutées
aux lignes existantes. Nous devons donc
réfléchir à la manière dont nous pouvons réellement avoir une
zone de liste vide lorsque nous appuyons sur le bas. C'est en fait très facile à faire. Nous devons nous assurer ici que lorsque ces
lignes sont exécutées, la zone de liste est déjà vide. Donc, ce que nous pouvons faire, c'est lister un, supprimer et zéro pour
garantir que vous supprimez tout depuis
l'indice zéro de la ligne avec un indice de zéro jusqu'
à la fin de la dernière ligne. Voyons donc comment cela se passe. Oui, et si vous appuyez à nouveau sur le mode
Vegain, vous obtenez toujours toutes
les lignes de la
base de données dans la table Génial. Passons maintenant à la définition d' une fonction similaire pour
le bas de l'entrée de recherche. Le bouton est donc
celui-ci ici, entrée de recherche. Encore une fois, nous voulons que
l'utilisateur
saisisse au moins une valeur dans les
entrées des zones de saisie, puis qu'il appuie sur le bouton de
recherche, puis il s'attend à ce que le
programme renvoie les lignes contenant l'entrée que l'
utilisateur a saisie dans la zone de saisie. Encore une fois, vous devez
insérer des données dans la boîte. Encore une fois, vous pouvez simplement appeler
la fonction de recherche ou le script Ben dans la commande ici. Vous avez donc besoin d'une fonction wrapper. Disons donc commande de recherche. Une autre bonne raison pour
laquelle vous souhaitez utiliser ces
fonctions wrapper, c'
est que dans certains cas, comme celui-ci ici, vous transmettez certains
paramètres à la fonction Donc, si vous regardez le backend et la fonction d'affichage
n'avait aucun paramètre, mais que la fonction de recherche
possède certains paramètres. Cela signifie donc que vous n'êtes pas
autorisé à mettre des crochets ici Vous devez
donc utiliser une autre
fonction dans laquelle vous appelez votre fonction de
recherche principale avec des paramètres, en fait Et c'est ce que nous
allons faire maintenant. Donc, définition, recherche, commande. Et encore une fois, pour la commande de recherche, ce
que nous obtenons en fait comme argument est un titre dans lequel l'utilisateur
saisira un nom d'auteur et
ici un numéro ISBN Maintenant, nous allons obtenir ces paramètres
à partir des widgets de saisie. Alors, où est l'entrée ? Voici les widgets d'entrée, et vous devez vous
rappeler que nous avons cet objet string var ici. Cette variable
dont le type de
données est une chaîne sera
donnée sous forme de valeur, de texte ou de nombre que l'utilisateur saisira dans
le widget de saisie. Gardez donc cela à l'esprit.
Allons-y et la première chose à faire est de supprimer un point. Vous souhaitez donc vider la liste. C'est bon. Ensuite,
vous devez parcourir la sortie de la
liste principale car, vous savez, dans ce cas, exécutons-la rapidement,
donc le script principal. Nous
recherchons donc le nom de l'auteur John Smith, backend point pi Très bien, nous n'avons pas de
John Smith pour le moment, alors cherchons John Smooth. Nous avons donc une liste vide. Enregistrez à nouveau, et vous verrez
que nous avons une liste de renversements. Donc dans ce cas, nous n'avons qu'un seul tuple,
mais vous voyez l'idée Cela signifie que nous devons effectuer une
itération par quatre, une nouvelle
ligne dans le
backend, un point, une recherche Et ici, vous devez faire attention. La fonction de recherche
comporte donc des paramètres, et le premier paramètre
sera le texte du titre. Donc, le texte que l'
utilisateur saisit dans le widget de saisie, widget de saisie de
texte Cependant, nous n'avons pas terminé car le texte du titre est en fait
une chaîne ou un objet, il ne s'agit
donc pas d'une chaîne ordinaire. Et ce que nous devons faire,
c'est ajouter une méthode
get ici, et cela produira
un objet chaîne Ainsi, si l'utilisateur saisit le tarif John
Smooth dans le widget, cela produira une simple chaîne
John Smooth. J'espère donc que cela a du sens. Auteur à nouveau du texte, méthode get. Ensuite, nous avons le point de texte de l'année
Get et enfin le point de texte ISBN Get Donc, pour un élément de la liste la fonction de recherche
affichera pour nous lorsqu'elle effectuera une recherche dans
la base de données, nous voulons simplement insérer nouvelles valeurs à
la fin de la liste, comme ça. Je peux voir que la mise en évidence
de la syntaxe ne fonctionne pas ici, donc j'ai probablement une
sorte de faute de frappe Il me manque une colonne ici. Alors maintenant, quatre et un étaient
colorés en violet. OK, alors essayons
le script frontal. Et cherchons l'
auteur John Smooth. Eh bien, évidemment, j'appuie sur
le bouton du trou de visualisation, donc j'ai tout là. Vous voulez donc appuyer sur le bouton
de recherche. C'est bon. Rechercher une recherche. Et on y voit
toujours John Smooth. Si vous dites « trou de vue »,
cela montre tout. Cela semble donc fonctionner. Et le suivant se trouve en bas de la page d'entrée. L'utilisateur appuie
donc sur le bas de la saisie. Ils s'attendent à ce que les
données qu'ils ont saisies dans les quatre widgets de
saisie soient
stockées quelque part. Ils ne savent pas où,
mais ils seront entreposés quelque part et ils
pourront les récupérer. Cela signifie donc que vous devez appeler la fonction d'insertion
ici dans le script Bend. Cette fonction obtiendra donc
ces quatre arguments. Donc, la valeur autour des widgets de
saisie, et elle les posera
dans le tableau du livre. est aussi simple que ça. Donc, la première
chose que nous pourrions vouloir faire est d'aller en bas de la page d'
ajout. Donc ici, puis ajoutez une fonction
wrapper ici. Au commandement. Ensuite, nous créons une fonction de commande
Ajouter. Et c'est assez
simple, en fait. Il suffit de dire « backend point insert et vous transmettez ces valeurs ici. Je vais donc simplement le copier
et en payer une partie ici. Essayons donc ça. Essayons d'ajouter quelques entrées. Disons des arbres et de l'herbe. Supposons Been Sand, année 1917, et il suffit de
mettre un O pour l'
ISBN et d'ajouter une entrée L'entrée a donc probablement
été ajoutée dans la base de données, mais nous n'avons rien vu, et vous pouvez probablement la voir avec
une fonction VL Donc, si j'appuie sur VL, verrai des arbres et de l'herbe Mais il serait bon que lorsque
nous ajoutons une entrée, cette entrée, la nouvelle entrée soit affichée
ici afin que l'utilisateur sache
que l' entrée a été
ajoutée avec succès à la base de données. Voici donc des arbres et de l'herbe. Allons-y et
faisons quelque chose pour que l'entrée
apparaisse dans la zone de liste lorsque
l'utilisateur appuie sur une entrée. Et ce que nous pouvons faire, c'est
d'abord nous assurer que
la liste est vide. Supprimez donc zéro pour terminer la liste. Cela nous donne une liste vide. Ensuite, nous insérons de nouvelles valeurs
à la fin de la liste. Quelles valeurs alors ? Eh bien, c'en est un. Donc, les valeurs que l'utilisateur
va entrer, c'est comme ça. Voyons donc comment cela se passe. Disons qu'il s'agit de prairies. Disons que Kirk a rencontré l'année
1910 et un certain nombre là-bas. Et ce n'est pas tout à fait ce à quoi
nous nous attendions, en fait. Et nous l'avons obtenu
parce que nous insérons
ici de nombreuses valeurs en effet Nous disons donc à
Python d'insérer tout cela dans une nouvelle valeur, ceci dans une nouvelle valeur, ceci aussi, et
ainsi de suite. La solution ici est donc simple. Il suffit de le définir sous la forme d'une valeur unique. Donc, en triple et relancez
le programme. d'une erreur, nous avons donc
besoin d'un autre support car ce support se ferme
ici. Alors, juste comme ça,
réessayez. Disons Warm et Elena Gomez, 1944, et un chiffre
ici. Ajoutez une entrée. Et maintenant, nous avons la ligne
sur une seule ligne. L'objectif Fuel, and Wonder est là. La lentille Grass est également présente. Passons donc à autre chose.
172. 171. Raccordement de l'interface avec le backend, partie 2 ++: OK, nous avons
encore du code à ajouter. Nous avons défini la vue, la recherche et les boutons publicitaires. Nous avons donc maintenant la mise à jour
et le fond fermé. Et j'aimerais continuer avec
le bouton de suppression, car
le bouton de suppression est plus facile à
implémenter que le bouton de
mise à jour. Permettez-moi donc d'appeler à nouveau l'
interface. Et encore une fois, pensez à l'utilisateur. quoi l'utilisateur peut
s'attendre, c'est qu' il
souhaitera peut-être supprimer l'une des
lignes, disons cette ligne. Ils s'attendent donc à sélectionner cette ligne, puis à appuyer sur
le bouton Supprimer la sélection, et cette ligne disparaîtra
de la base de données. Et ils voudront peut-être aussi,
lorsqu'ils
sélectionnent une ligne, voir
les données contenues dans ces entrées, et nous nous en
occuperons également. Nous allons donc remplir
ces entrées avec les valeurs correspondantes lorsque l'utilisateur clique sur l'une
des lignes ici. C'est bon. C'est
logique, je crois. Examinons maintenant la fonction
de suppression dans
le script principal Delete
attend donc un identifiant,
l'idée de la ligne, puis cette instruction
SQL recherche cet identifiant et supprime la
ligne entière de la table du livre où le D est égal
au D donné ici Donc lorsque l'utilisateur sélectionne l'une des lignes de
la zone de liste, nous devons saisir l'ID de
cette ligne, puis envoyer cet identifiant à la fonction
de suppression du script principal. Et puis la fonction de suppression
s'occupe de la ligne. Oh, c'est bien. Et encore une fois, dans ce cas, vous souhaiteriez également
ajouter une sorte de fonction de commande de suppression ici, en bas de Mais dans ce cas,
j'aimerais en fait adopter une approche ascendante. Réfléchissons donc
d'abord à la manière dont nous allons
faire en sorte que le rôle soit sélectionné
par l'utilisateur. Alors réfléchissons-y d'abord. Et vous ne connaissez pas le problème, mais il existe une méthode appelée
bind de la bibliothèque Kinder, et bind est utilisée pour lier une
fonction à un événement de widget Permettez-moi donc d'écrire cette méthode de liaison afin que vous compreniez mieux
les choses. Nous associons donc une méthode
ici au widget de zone de liste. Il est donc logique d'
écrire cette méthode après avoir défini
la liste. Widget. Nous définissons donc le widget de
liste ici, nous le configurons,
puis nous listons une liaison. Et la méthode bond
prend deux arguments. Il prend donc le type d'événement, ainsi qu'une
fonction que vous souhaitez lier au type d'événement. Le type d'événement indiqué ici
se trouve en fait dans ces caractères, et il s'appelle List Box select. Ensuite, vous voulez
spécifier ici une fonction qui renvoie un
objet de liste avec une sélection. Donc quelque chose comme ça. En fait, nous nous attendrons à un
tuple dans ce cas, un tuple avec l'ID, le titre, l'auteur, l' année
et
le numéro ISBN Appelons donc cette
fonction, sélectionnons Row. Ensuite, nous allons de l'avant et
définissons cette fonction. Définissons-le au
tout début ici. Donc, je vais obtenir la ligne sélectionnée. Et cette fonction maintenant, parce que nous l'avons liée
à un événement de widget,
elle obtient un
paramètre spécial appelé event. Et le paramètre d'événement contient des informations sur le
type de l'événement. Python sait donc que lorsque vous le transmettez à
la méthode bind, il s'attend à ce que la fonction
ait ce paramètre d'événement. Et ensuite. Encore une fois, cette fonction retournera
au tuple sélectionné Mais tout d'abord, pour que
cela fonctionne,
nous devons d'abord
obtenir l'index de la
liste à partir de la zone de liste. La liste peut comporter, disons, dix lignes, et la première ligne
aura un indice de zéro, la seconde un indice,
et ainsi de suite, jusqu'à neuf
si nous avons dix lignes. Ainsi, pour obtenir l'index de la ligne
sélectionnée de la zone de liste, nous nous référons à la
zone de liste puis à la
méthode de sélection cur de la zone de liste. C'est bon. Et j'aimerais simplement
faire un retour temporaire de l'index ici afin
que vous puissiez voir ce qu' est
cet objet et à
quoi il ressemble. Espérons donc que cela fonctionnera. Cela devrait fonctionner. Python.
Front end, oui. Donc, en fait, nous aurions
dû
imprimer l'index ici. Nous ne faisons que le
renvoyer, donc Imprimez l'index. Essayons encore une fois. Je pense donc imprimer
l'index ici, oui. Il s'agit donc de l'index
d'une ligne sélectionnée. Donc c'est zéro, un, désolé zéro entre zéro, un, deux, et ainsi de suite. Cependant, comme vous le voyez, il ne s'
agit pas d'un simple chiffre. Il s'agit en fait d'un tuple, d'un tuple avec un seul élément Nous devons donc faire une astuce très simple,
et nous saisissons simplement l'élément
dont l'indice
est zéro du tuple, qui est le numéro
deux dans ce cas, zéro dans ce cas, et ainsi de suite Ensuite, nous pourrions
réessayer, tout
afficher, et maintenant nous obtiendrons des numéros
uniques. Génial. Nous en sommes donc très proches, mais pas encore car
nous devons obtenir le tuple réel avec toutes
les valeurs de la ligne Et pour y parvenir, vous devez
appliquer une autre méthode appelée get, disons
le tuple sélectionné Ainsi, le tuple réel
que nous voulons, la ligne réelle que
nous voulons est égal à au moins un qui obtient un index Vous pouvez donc le lire comme
ceci à partir de la case la
plus petite, obtenir le tuple avec l'index X. Et ensuite nous pourrons l'essayer Alors, qu'est-ce que nous allons obtenir ici ? Ne vous y trompez pas
avec cette ligne. Ceci est imprimé
parce que dans le script Ben, nous avons en fait une
fonction de recherche imprimée. Il s'agit donc d'imprimer le résultat
de la fonction de recherche. Cette fonction dit
donc de me donner la ligne avec John
Smith comme nom d'auteur, et la prochaine fois, cela ne
sera pas exécuté. Donc, ce que nous voulons faire c'est sélectionner une ligne et la faire
imprimer sous forme de tuple Donc c'est génial. Alors, quelle est la prochaine étape ? Eh bien, nous devons ensuite
transmettre l'ID
du tuple sélectionné à la fonction de suppression
du script principal Nous allons au bouton sélectionné. La commande est égale à la commande de suppression. C'est ainsi que je vais
appeler le script, et cela devrait figurer ici. Commande D delete. Et ce que nous avons ici,
c'est la suppression des points du backend. Encore une fois, la méthode delete
obtient comme argument l'ID. Nous avons donc un tuple
appelé get selected row, nous devons
donc
renvoyer le tuple sélectionné Donc, si nous appelons la fonction maintenant, get selected row selected row. Et nous avons besoin de l'élément avec l'index zéro de la ligne
get selected. Enregistrez le script et nous
avons une erreur à la ligne 24. Je n'ai pas la chronique
ici. Essaie à nouveau. Regardez, et essayons de
supprimer la lune. Supprimer. Et Python dit qu'il ligne
get selected manque un argument
positionnel obligatoire C'est l'argument de l'événement. Python a donc raison car nous avons ici
un paramètre d'événement, nous devons
donc le passer en
argument. Mais ici, nous appelons la fonction sans
aucun argument. Nous recevons donc une erreur. En revanche, nous ne pouvons pas
supprimer cet événement car cette fonction est également
exécutée par la méthode bind. Dans ce cas, le héros
du jour serait
une variable globale. Vous savez peut-être déjà
que les variables locales, comme le tuple sélectionné, sont des variables locales car elles
sont définies dans une fonction Donc, si vous imprimez ce tuple, en dehors de la fonction,
sélectionnez le tuple Vous recevrez un message d'erreur
car Python dira :
« Oh, désolé, je ne le
reconnais pas ». Il s'agit d'un objet non défini car les variables locales n'ont de
sens qu'à l'intérieur de la fonction Dans ce cas, nous pouvons utiliser des variables globales. Et pour créer
une variable globale, utilisez
le mot clé global
, puis déclarez le nom de la variable que
vous souhaitez créer. Donc, dans ce cas, si vous
imprimez le tuple sélectionné
en dehors de la fonction, vous obtenez la valeur
du tuple sélectionné, et la valeur du tuple
sélectionné dans ce cas serait le tuple avec les valeurs de
la ligne Dans ce cas,
nous n'avons donc pas besoin de renvoyer le tuple
sélectionné car nous
pouvons simplement pointer vers la
variable de tuple sélectionnée dans ce cas, et nous devons corriger notre fonction
différée ici Nous voulons donc le tuple sélectionné et nous voulons l'élément dont l' indice est zéro à partir du tuple
sélectionné Exécutons donc à nouveau. Et visualisons tout et
supprimons la lune. Supprimer la sélection. Regardez tout
et la lune disparaîtra. Cela semble donc fonctionner. Maintenant, je voudrais remplir
les entrées avec un
tuple ou une ligne sélectionné, si vous le souhaitez Nous devons donc utiliser la fonction
d'insertion du widget enter, et nous pourrions réellement écrire ces méthodes dans la fonction
get selected row. Comme vous savez lorsque l'
utilisateur clique sur l'une des lignes, lorsqu'il sélectionne
l'une des lignes, nous voulons immédiatement remplir
ces entrées avec des valeurs. Et le premier serait
la fin du titre et nous
voulons nous assurer que
l'entrée est vide. Supprimez donc zéro pour terminer. Supprimez tout de l'
entrée s'il y a quelque chose. Et puis E un, insérez. Donc, ce que nous voulons insérer
dans l'entrée de l'auteur. Eh bien, ce serait le
tuple sélectionné avec un indice de un. L'ID a donc un indice de zéro. Le troisième titre a
un index d'un, et il en serait de même pour
les autres entrées. Nous avons donc E un, deux, E trois et E quatre. Et puis ici, nous voulons
récupérer le nom de l'auteur. Ici, nous voulons le E et
le numéro ISBN. Génial. J'espère donc que cela
fonctionnera. Cela devrait fonctionner. Donc, tout afficher, sélectionner quelque chose, et il manque
un argument obligatoire à la méthode d'insertion. Je pense que j'ai oublié de mettre l'endroit où je veux insérer les nouvelles valeurs. Nous avons donc besoin d'ici, ici, d'ici et d'ici. Voyons donc encore une fois, visualisons tout et maintenant cela
semble fonctionner. Donc des arbres, de l'herbe,
des virages et ainsi de suite. Et laissez-moi essayer de le supprimer, le supprimer, et l'entrée disparaîtra. Génial. Alors maintenant allons-y. Sans perdre de
temps, allons-y
et implémentons la fonction de
mise à jour. Pour en revenir à notre script principal,
la fonction de mise à jour obtient un
identifiant et un titre, l'auteur et l'ICBM Donc, contrairement à la fonction de suppression
qui n'a obtenu qu'un seul élément, elle
obtient quatre éléments,
cinq éléments, en fait. Ainsi, dans la fonction de
commande de suppression, nous passons le tuple sélectionné
avec un indice de zéro Maintenant, la fonction de mise à jour aura une structure
similaire, mais nous aurons alors
plusieurs arguments ici. Nous avons donc l'
auteur du fichier d'identification et l'ISBN. Ainsi, le tuple sélectionné
avec un indice de un est
sélectionné, le tuple avec
un indice de deux est
sélectionné, le tuple avec
un indice de trois et le tuple sélectionné
avec un Ensuite, nous devons
ajouter cette fonction en bas de
la mise à jour. Donc, mettez à jour la commande. D'accord. Et j'ai oublié
de le changer. Commande de mise à jour.
Cela devrait fonctionner. Alors voyons voir. J'ai oublié de passer le
nom du paramètre ici. Ainsi, la commande équivaut à la commande de
mise à jour, sauvegarde et à la réexécution. Essayons de mettre à jour cette ligne. Disons donc neuf. Une mise à jour de presse sélectionnée. Et encore une erreur, n'
ayez pas peur des erreurs. Plus vous voyez d'erreurs, plus vous vous
familiarisez avec Python. Il est important de vous
concentrer sur l'erreur, de
voir sur quelle ligne elle
s'affiche et d'
essayer de comprendre le type d'erreur et le
message que vous recevez. Dans ce cas, delete prend un argument positionnel,
mais cinq ont été donnés Nous n'avons pas exécuté de fonction de
suppression ici. Nous avons exécuté le bouton de mise à jour qui obtient une fonction de
commande de mise à jour, et vous passez à la commande de
mise à jour. Donc, la commande de mise à jour
B et delete. C'est pourquoi nous
recevons cette erreur. La commande de mise à jour
exécute en fait la méthode de suppression
du script Bend. Nous voulons donc
mettre à jour au lieu de supprimer. Enregistrez le script et
exécutez-le à nouveau. Tout afficher. Je veux vraiment mettre à jour
ce numéro ici. Neuf mises à jour ont donc été sélectionnées, tout
afficher, et cela ne fonctionne pas. Et dans ce cas, nous n'avons
même pas reçu d'erreur, vous pouvez
donc vous sentir
perdu pour le moment. Dans ce cas, vous pouvez donc vérifier
ce que vous renvoyez dans
votre fonction de commande de mise à jour. Vous savez donc que vous pouvez isoler les problèmes en
utilisant des instructions d'impression. Supposons donc que vous souhaitiez vérifier ce que vous envoyez à
la fonction de mise à jour. Je connais le problème
ici, mais juste pour
vous montrer comment vous pouvez
résoudre les problèmes. Alors imprimez-le et
exécutez-le à nouveau. Nous sélectionnons tous les
mises à jour sur les prairies. Et vous voyez que le tople
est imprimé tel quel. Ce chiffre ne change donc pas. En fait, je ne l'ai pas changé. Permettez-moi donc de le modifier à nouveau. Disons 24 et
mise à jour sélectionnée. Vous voyez donc que le numéro 24 n'est pas
imprimé ici. Cela signifie donc que nous
envoyons à la base de données. Cet enregistrement, encore une fois, nous n'envoyons
donc pas l'enregistrement mis à jour.
Alors pourquoi ça ? Si vous l'avez déjà
trouvée plus tôt lorsque j'ai écrit cette fonction,
c'est très bien. Si ce n'est pas le cas, eh bien, la raison en est que
nous envoyons à la méthode de mise à jour
le tuple sélectionné Et la table de sélection est celle que l'
utilisateur a sélectionnée Ce ne sont donc pas les
entrées réelles que l'utilisateur envoie
à la commande de
mise à jour. Donc, dans ce cas, nous voulons
réellement envoyer ces valeurs, donc les valeurs actuelles
des entrées. Je vais donc le copier
et le coller ici. D'accord. Et le premier tople
sélectionné est l'ID Nous voulons
donc conserver le D de ligne
sélectionnée car l'utilisateur modifie les autres
valeurs, pas l'ID Et ça a l'air bien. Le support se ferme ici. Sûr Supprimez donc celui-ci,
en toute sécurité, exécutez-le à nouveau. Nous y allons et
disons trois, mise à jour est sélectionnée, V
et trois sont là. Supprimez, visualisez tout, tout disparaît. Vous pouvez l'ajouter à nouveau parce que
vous l'avez dans vos entrées, à l'entrée, et qu'il a été ajouté à nouveau, et
vous pouvez le voir ici. Tout fonctionne donc très bien. Et nous voulons
fermer ce programme, mais nous avons fermé le bouton, il ne fonctionne pas pour le moment, alors allons-y et
implémentons-le également. Et c'est très simple. Il vous suffit de vous rendre ici et de
commander Eagle Two. Donc tu veux détruire
la fenêtre, non ? Donc, les points de fenêtre sont
détruits. C'est ça. Enregistrez le script. Et essayez-le. Ils fonctionnent donc comme d'habitude, se ferment et la fenêtre se ferme. Et vous pouvez également
attribuer un titre
à votre fenêtre et utiliser la méthode WM title
de l'objet window. Titre. Disons livre, magasin. Et vous devriez voir ce
nom dans la barre de titre. Enfin, nous en avons terminé
avec ce programme, et je sais qu'il y a
peut-être des choses à améliorer, et je serais heureuse de recevoir toute
suggestion de
votre part afin que nous puissions
améliorer le programme. Les programmes ont des
versions dont c'est la version zéro, pourrait-on dire. J'espère que vous l'avez trouvé très utile et que vous en avez
beaucoup appris. Je te parlerai donc plus tard.
173. 172. Créer des exécutables .exe et .app à partir du script Python: Salut encore une fois. Nous avons donc cet excellent programme
qui fonctionne très bien. Et il se compose de trois fichiers. Donc deux fichiers Python
et un fichier de base de données à points, où les données sont stockées. C'est une bonne chose. Nous pouvons exécuter
les scripts comme ceci. Donc, en utilisant Python, nous
obtenons le programme affiché. Mais je pense que si vous voulez donner votre programme à quelqu'un d'autre, vous pouvez simplement lui dire
: Oh, installez Python et vous
pouvez exécuter le programme en allant sur le terminal et en
invoquant Python et un script Cela peut donc devenir
très difficile
pour les utilisateurs qui n'ont pas d'
expérience en programmation Dans ce cas,
vous voulez créer un programme exécutable autonome que vous pouvez simplement
envoyer à n'importe qui, et il peut simplement
double-cliquer dessus, insérer des données et
récupérer des données, etc. Dans cette conférence,
je vais donc vous montrer comment créer un fichier exécutable, et comment créer ce fichier, que vous
soyez sur Mac, Windows
ou Linux. Le code est donc le même. Il existe une excellente bibliothèque pour créer des exécutables autonomes. C'est le programme d'installation du Pi. Vous pouvez donc installer
Pi Installer à l'aide PIP. Maintenant, il
est très facile de créer un fichier exécutable autonome à
partir de votre script Python Tout ce que vous avez à faire est d'appeler programme d'installation de
Pi, puis de
pointer sur votre script. Dans ce cas, notre
script principal est front and point py. Il s'
agit donc d'un script qui contient tout le code et qui importe également
le script principal. Nous voulons donc pointer
vers ce fichier. Et si vous le laissez comme ça, vous obtiendrez un fichier point X
si vous êtes sous Windows, un fichier si vous êtes sur un Mac Et avec ces fichiers, vous obtiendrez également un tas d' autres fichiers
associés à votre programme. L'avantage de cela
est qu'il devient plus facile de résoudre les
erreurs que vous pourriez rencontrer Vous avez donc beaucoup de fichiers,
puis vous pouvez accéder à ces fichiers et trouver
l'erreur, etc. Mais si vous voulez être pratique, vous devez passer
un paramètre ici. Appelé un fichier. Cela créera donc un seul fichier
exécutable pour vous. Et dans ce formulaire, vous verrez également la ligne de commande du
terminal affichée en arrière-plan de votre interface utilisateur graphique. Donc, si vous ne le souhaitez pas, vous pouvez spécifier
un autre paramètre appelé fenêtré comme
celui-ci et exécuter Et tu devras attendre un moment. Et mon exécutable a été créé. Donc, si vous étiez sur un Mac, il
s'agirait d'un fichier. Le mien est donc ici dans
le dossier du disque. Donc, dans ce dossier, je peux regarder ici. Donc point frontal x. Si vous exécutez cela,
vous obtenez la fenêtre. Et comme vous le voyez, vous avez également obtenu les livres générés par
le fichier DB. Par défaut, cela
crée uniquement un fichier exécutable. Ensuite, lorsque vous exécutez le
programme pour la première fois, souvenez-vous que nous avions
une fonction de connexion dans le script principal Cette fonction crée donc une base de données. C'est donc
ce que cela a fait. Et si vous les visualisez maintenant, vous n'avez aucune ligne. Vous n'avez
donc aucune
donnée, car cela a été créé de toutes pièces. Ainsi, si vous souhaitez disposer de
la base de données existante, vous devez fournir à votre utilisateur à la
fois le fichier exécutable et la
base de données existante que vous possédez. Donc, par exemple,
supposons que cela n'existe pas, et que je puisse accéder à ma base de données
existante, et si je la mets ici, Python sache où
rechercher la base de données. Maintenant, si vous les visualisez toutes, vous obtiendrez les données de la base de données
existante. Et nous pouvons faire un test rapide. Ajoutons un livre, le grand court métrage D Taylor, année 1913, et
ajoutons-y un chiffre. À l'entrée, et l'entrée
est ajoutée à la base de données. Et vous pouvez fermer le
programme, et c'est tout. J'espère que cela vous plaira. Je vous
verrai lors de la prochaine conférence.
174. 173. Qu'est-ce que la programmation orientée objet (OOP): Bonjour, et bienvenue dans cette nouvelle section où vous découvrirez la programmation
orientée objet, souvent
appelée OOP en abrégé Maintenant, si vous avez de l'expérience
en programmation, c'est probablement un concept
familier pour vous car le POO est utilisé dans la
plupart des langages Mais je suppose que vous ne savez rien de la programmation
orientée objet Je vais
donc expliquer le concept
dès le début. Maintenant, il existe différentes
définitions de l'OP, et certaines deviennent très délicates. Mais je pense que la meilleure
chose à savoir est que programmation orientée
objet
n'est qu'un moyen d'
organiser votre code. Cela signifie que l'OOP n'est pas indispensable. Vous pouvez donc simplement utiliser des
fonctions pour créer une application, comme nous l'avons fait ici avec notre application de
librairie, et de nombreux programmeurs
choisissent de ne pas utiliser programmation orientée
objet
pour organiser leur code, donc ils n'utilisent pas la méthode OOP pour écrire leur
code, en Cependant, il est généralement admis que si vous avez
plus de deux fonctions, elles appliquent des opérations
au même objet. Par exemple, un
programme qui applique des opérations à une interface Kiner. Vous avez donc ces fonctions de
rappel. Vous devez donc organiser ces fonctions dans
ce qu'on appelle une classe. programmation
orientée objet étant La programmation
orientée objet étant un concept complexe, je ne l'ai pas inclus au
début de ce cours. Je voulais donc que vous créiez d'abord des applications
en utilisant des fonctions, ce qui est plus intuitif, puis que vous passiez à la programmation
orientée objet. Revenons donc à notre application
d'interface utilisateur graphique. Donc, l'objet ici, je parle d'objets, et l'objet ici
est également la fenêtre entière avec les boutons et autres
widgets. Nous pouvons maintenant placer tous
les attributs qui définissent cet
objet, donc cette fenêtre, tels que le titre des
boutons, les étiquettes, ainsi que les fonctions de rappel attachées à cet
objet dans une classe Dans notre application, nous
n'avons donc pas utilisé de classes,
nous avons utilisé des fonctions. Ce script ne
s'applique donc pas à la programmation
orientée objet, et placer cet
objet dans une classe signifie que nous organisons
le code dans une classe, ce qui crée un objet C'est pourquoi nous l'appelons programmation orientée
objet. Et l'utilisation de classes pour
organiser votre code est appelée programmation
orientée objet. Et ce que je vais faire ensuite, c'est dans mon script principal où se trouvent les opérations de base de données. Je vais transformer ce script en le plaçant dans une classe. Ensuite, vous
pouvez faire de même pour l'
interface frontale afin de
pratiquer la programmation
orientée objet. Maintenant, mon but ici n'est pas de vous apprendre
à écrire des cours. Je veux d'abord que vous
compreniez les cours, et de nombreuses ressources d'apprentissage expliquent la programmation
orientée objet en disant quelque chose comme nous créons une classe qui
crée un objet en forme de chien, et un chien peut chauffer
et aboyer, etc. » C'est un bon exemple à suivre pour apprendre la
syntaxe d'une classe. Mais bon, qu'est-ce qu'un
chien dans la programmation ? Je veux dire, vous pouvez
vous gratter la tête toute la journée en
essayant de trouver un scénario dans lequel vous
auriez un chien comme objet
dans votre application. C'est toujours un bon exemple, mais uniquement si vous avez quelques années d'expérience en programmation et que vous pouvez rapidement déterminer
où
et quand utiliser des classes sur la
base de tels exemples. Je suppose que vous n'avez pas
ces années d'expérience Je vais
donc utiliser de vrais objets de
programmation dans cette section pour expliquer un concept aussi délicat que la programmation orientée
objet. La meilleure façon de comprendre
OP est donc de créer
d'abord un programme avec une approche connue de
programmation orientée objet ,
donc en utilisant des fonctions, et une fois
que vous connaissez bien ce programme, vous le reconstruisez à nouveau, en utilisant OP, puis vous
comprenez automatiquement ce qu' est
OP en regardant en quoi
les choses sont différentes. Permettez-moi donc d'organiser ce
code à l'aide de classes maintenant. Plus tard, nous créerons un programme
plus simple à partir de zéro, lequel nous créerons un objet de
compte bancaire avec Python, et nous appliquerons des fonctions à cet objet, telles
que le retrait de
dépôt, etc. Oh, c'est génial. Et oui, c'est à propos de cette introduction. Passons à
la prochaine conférence et
écrivons quelques cours.
175. 174. Utiliser la POO dans un programme, partie 1: Bien. Je vais
maintenant transformer ce script en un style de programmation
orienté objet. En d'autres termes, je vais organiser ces fonctions de manière
plus efficace. Et juste pour vous rafraîchir la mémoire, ce que fait ce script , nous avons un script principal
et un script frontal, et le
front-end construit
l' interface utilisateur graphique, donc vous le savez Et nous avons le fichier de base
de données de ces livres, et il y a des données là-bas. Et vous pouvez rechercher des entrées pour des lignes dans la
base de données sur Nouveau, etc. Et ce front end point pi construit l'interface
utilisateur graphique, et ce back-end est responsable de l'interaction avec la
base de données La
programmation orientée objet
consiste donc à encapsuler des
fonctions dans une classe so class et
appelons cette base de Et oui, c'est ça, en gros. Nous avons encore beaucoup
de choses à faire, mais réfléchissons à ce qu'
est cette classe de base de données. Eh bien, chaque fois que vous
décidez d'utiliser la programmation
orientée objet, vous devez d'abord réfléchir à
l'objet que vous souhaitez utiliser, c'est-à-dire à l'objet
auquel vous souhaitez appliquer ces méthodes. Et dans notre cas, ce serait la base de données. Ensuite, nous insérons
des données dans les tables de cette base de données et nous les
visualisons, etc. De cet objet, cet objet, vous devez d'abord créer un objet minimal lorsque
vous appelez la classe. Et je vais vous montrer comment
organiser un cours en une minute. Mais pour le moment,
concentrons-nous sur
la création du plan de l'objet Vous créez donc le plan de l'objet, qui
est celui-ci ici, puis vous créez des
instances d'objet à l'aide de ce plan, et vous le faites en
appelant la classe Maintenant, lorsque vous appelez la classe, vous voulez avoir
cet objet minimal. Dans ce cas, il
s'agirait donc d'établir une
connexion à cette base de données. Ensuite, créez un objet
curseur et
vérifiez peut-être la table afin de vous assurer
que votre base de données possède une
table afin de vous
permettre d' appliquer ultérieurement des méthodes à
cette table de base de données. Dans le cas contraire, la base de données
serait inutile. Il doit donc avoir une table et une connexion établie. Cela signifie que vous
devez trouver un moyen d'exécuter
ces lignes ici lorsque vous
appelez la classe . Et Python a réservé une syntaxe
spéciale pour cela. La première fonction
de votre script doit donc appelée avec un double soulignement au
recto et au verso Il s'agit donc d'une fonction d'initialisation, qui signifie
initialiser un objet Dans d'autres langages de programmation, cela s'appelle un constructeur, pourquoi il construit l'objet. Ainsi, lorsque vous appelez une classe, cette fonction est exécutée,
mais pas les autres. Elles sont exécutées si vous vous y
référez, dans ce cas, ce serait quelque chose
comme l'insertion de points dans une base de données, puis vous y transmettez les
paramètres, les arguments. Nous avons maintenant pas mal
de choses à ajouter dans le script
pour que cela fonctionne. Mais je préférerais
le faire par essais et erreurs. Nous l'exécutons et
verrons quelle erreur nous obtenons afin que vous compreniez comment
les choses fonctionnent là-bas. Ce que je vais faire, c'est appeler
ce cours tel qu'il est actuellement. Nous n'avons donc pas besoin de cette fonction. Cette fonction a disparu maintenant
parce que je la remplace par elle. Vous n'appelez donc
plus les fonctions comme nous le faisions ici. Ainsi, par exemple, nous
appelons ici des fonctions depuis
le module principal, qui est comme un module, vous l'importez en tant
que module Et dans ce cas,
ce que nous faisons, c'est à partir du
backend, importer la base de données Nous importons donc la
classe de base de données depuis le script Becan. Cela rend donc disponible
la classe de base de données pour nous. Donc, le plan de base de données. Ce n'est donc qu'un plan. Nous devons maintenant créer un
objet à partir de ce plan. Appelons donc cette base de données
d'objets. Cela équivaut à une base de données. Donc, la classe et pour l'instant, ne
passons aucun
argument ici. Ensuite, nous devons remplacer ces références afin de
ne plus faire de backend. Nous faisons une base de données de cette vue. Nous faisons donc référence
à la fonction
d'affichage de l'objet de base de données, qui est une instance
de cette classe. Génial. Je vais donc remplacer ces autres par une base de données. Alors revenez en arrière et remplacez
cela, remplacez, remplacez. Oui, c'est ça. C'est le nom du script, et il
devrait être comme ça. Échappez-vous ici. Génial. Maintenant, je vais
aller de l'avant et exécuter cela. Ne vous attendez donc pas à ce que cela fonctionne, mais nous devons examiner de
près l'erreur, essayant de comprendre
ce qu'elle dit. Donc, retracez le fichier avant le
point pi, ligne 4. Ici. Il ne prend aucun
argument positionnel, mais un seul a été donné. Et ce qui se passe ici maintenant, c'est que lorsque vous appelez la classe, celle-ci crée une instance d'objet et la
stocke dans cette variable. Ensuite, il envoie cette
instance d'objet à cette fonction. Permettez-moi donc de le diviser sur la droite afin que nous ayons
les deux scripts ici. Donc, le front end
et le back end. Donc, en gros, cette instance
d'objet de base de données est
envoyée à cet objet d'initialisation Même s'il s'agit
d'un support vide. C'est donc comme une syntaxe
cachée. Et pour résoudre ce problème, vous devez effectuer
une astuce ici. Il dit donc qu'il ne prend aucun argument
positionnel car il y a en fait
un crochet vide ici C'est donc comme une fonction et des
fonctions
normales si vous n'y
mettez pas de paramètre, mais que vous transmettez ensuite un
paramètre lorsque vous l'appelez. La fonction
dira : « Je ne prends aucun argument positionnel ni
aucun argument obligatoire Mais un argument m'
a été donné, je vais
donc signaler une erreur. Maintenant, pour résoudre ce problème, vous
devez y passer un paramètre. Et tout le monde s'y transmet. Vous pouvez donc transmettre n'importe quel mot
qui fonctionnera toujours. Mais en tant que convention pour que votre code soit
lisible par d'autres personnes, vous devez vous transmettre vous-même. Maintenant, votre fonction d'
initialisation prend un paramètre, et lorsque vous appelez cette classe, cette classe envoie
l'instance d'objet, et cette instance d'objet entre
dans ce paramètre Ce paramètre
sera donc remplacé par l'
argument d'instance d'objet. Génial. Si vous ne
comprenez toujours pas cela,
je suis sûr que vous le ferez plus tard au
fur et à mesure que vous écrirez d'autres cours. Bien. Maintenant, je vais enregistrer
ceci et cela et réessayer le script
. Et super. Cela signifie donc que la classe a été initialisée
avec succès et qu'elle a créé une instance d'
objet pour nous Maintenant, permettez-moi de fermer ceci et
peut-être d'y ajouter quelque chose. Ce n'est pas nécessaire,
mais juste pour vous montrer que si vous souhaitez ajouter plus de
paramètres à votre fonction d'initialisation, vous devez faire quelque chose comme DB,
puis le remplacer par Dib, puis vous
passez ici l'argument qui sera transmis à ce paramètre de base Ce serait donc books point dB le chemin du fichier
vers notre base de données. Génial. Et si vous l'
exécutez à nouveau, vous obtenez le même résultat. Ce qui se passe ici, c'est
que Python sert à envoyer l'instance de l'objet de base de données
au paramètre self, puis il envoie le chemin du fichier au paramètre de base de données,
et que les paramètres de base de données envoient ce chemin au paramètre
de base de données de la méthode de connexion. Génial. Voyons maintenant comment
ces méthodes fonctionneront. Nous avons donc le bouton d'affichage Si nous appuyons dessus, fonction d'affichage de
la classe de base
de données se produira .
En fait, la méthode d'affichage de la classe de base de données
sera exécutée. Alors celui-ci, voyons voir si nous
pouvons l'obtenir. Eh bien, erreur,
permettez-moi de fermer ceci. Il indique donc une vue sans aucun argument
positionnel,
mais aucun argument n'a été donné Cela suggère donc à nouveau que lorsque vous appelez une méthode de classe, la classe envoie également l'
instance d'objet à cette méthode,
comme elle l'a fait avec la fonction
init Cela signifie que nous devons
refaire l'affaire. Passez-y el et réessayez, voyez quelle erreur nous obtenons cette fois. Eh bien, pas d'erreur.
Les choses fonctionnent, évidemment. Donc c'est génial. Cependant, si vous essayez maintenant les autres
méthodes, comme l'insertion, vous obtiendrez probablement une
erreur. Alors laisse-moi essayer. Donc, si vous êtes tous,
cela fonctionne bien, mais si nous insérons quelque chose, disons bonjour
et oui, à l'entrée. insertion prend donc quatre arguments
positionnels, mais cinq ont été donnés. Alors insérez. Et ces valeurs sont
transmises à ces paramètres, mais nous transmettons également l'instance
de l'objet. Allons-y donc par nous-mêmes, et je ferai de même
pour la recherche. Supprimer et mettre à jour. Oui, c'est ce que nous
avons. Ça a l'air bien. Essayons encore une fois. Alors, visualisez tout et ajoutez une entrée. Oui, ça a
l'air de fonctionner. Tout afficher et nous
avons ici l'un ou l'autre Fermer. Nous avons donc pu créer une classe et y placer toutes les
fonctions. Nous avons donc maintenant un programme
organisé. C'est donc de la programmation
orientée objet, mais la
programmation orientée objet ne consiste pas simplement à placer certaines
fonctions dans la classe. La programmation orientée objet
est une question de bon design. Ce script n'est donc probablement pas le meilleur design que nous
puissions trouver. C'est parce
que nous
n'utilisons pas les avantages réels que
nous avons en utilisant des classes. Donc, ce que je veux dire, c'est qu' ici nous créons
ces méthodes, et dans chaque méthode, nous exécutons des fonctions
proches et créons également une connexion
dans chacune des méthodes. Nous pouvons donc réduire davantage ce
code en supprimant
les actions répétées. Donc, dans une classe, vous
devez d'
abord penser à un moyen de un moyen de
construire quelque chose, dans la fonction d'initialisation Et puis vous faites référence
à ce quelque chose dans les autres fonctions
des autres méthodes. Nous
parlons donc de méthodes ici. Donc, même si notre
script fonctionne bien, lors de la prochaine conférence, nous allons continuer à en améliorer la conception. Alors
je t'y verrai.
176. 175. Utiliser la POO dans un programme, partie 2: Bien. Nous avons pu
transformer notre script, qui a été construit à l'aide de fonctions, et nous avons créé une classe et placé ces fonctions
dans cette classe. Elles sont donc maintenant appelées méthodes. Et bien qu'il s'
agisse d'une utilisation d'une classe, ce n'est toujours pas la meilleure utilisation du paradigme de
programmation orientée objet. Parce que nous avons ici une base de données, un objet de base de données en cours de création,
mais que nous ne le traitons
pas comme un objet solide, nous l'ouvrons et le
fermons dans chaque méthode. Donc, ce que je pense, c'est que nous créons une connexion
lorsque nous appelons la classe. Ainsi, lorsque cette fonction
est exécutée, nous y créons une connexion et nous la maintenons ouverte. Je n'inclus donc pas cette méthode de
fermeture ici, mais je laisse la méthode de validation
au cas où il n'y aurait pas de table, et une table sera créée, et les modifications seront
validées dans la connexion ouverte. Maintenant qu'une
connexion y est ouverte,
il n'est pas nécessaire d'en établir
une nouvelle dans chaque méthode. Et nous n'avons même pas besoin de créer un objet curseur, car l'objet curseur est
créé ici. Nous nous débarrassons donc de ces deux
lignes dans chaque méthode. Donc, dans la vue, nous avons un
objet curseur lorsque nous allons ici, puis nous exécutons cette
instruction sur cet objet curseur. C'est donc une bonne chose. Ensuite, nous descendons ici,
ces deux-là aussi. Et pour la méthode de suppression. Une mise à jour également. Génial.
Maintenant, voyons comment cela se passe. Laisse-moi m'en rapprocher. Nous appelons donc le script
frontal dans lequel nous créons une
instance de notre objet. Jusqu'ici, tout va bien. Tout afficher. Et il est indiqué qu'aucune courbe de nom n'
est définie à la ligne 17. Nous avons donc exécuté la méthode view. Et ce que
fait la méthode view, c'est qu'elle essaie de trouver une variable déclarée variable
dans la fonction. La variable de courbe ne la trouve pas, puis elle recherche s'il
existe une variable en dehors de la fonction
et elle ne la trouve pas. En fait,
une variable a été déclarée dans
cette fonction d'initialisation,
mais il s' agit d'une variable locale Cela n'a de valeur que
dans cette fonction. Vous ne pouvez pas y accéder en
dehors de la fonction d'initialisation. Mais si nous nous référons à
l'argument self, qui est l'objet de base de données et voyons ce que nous obtenons.
Laisse-moi clore ça. Enregistrez cela fonctionne et visualisez tout, et maintenant nous avons un autre
type d'erreur. Et cela indique une erreur d'attribut.
Alors laisse-moi clore ça. Regardez donc attentivement
ici et cela indique que objet
de base de données
n'a pas de courbe attributaire. C'est dans la ligne 17,
donc celle-ci ici. L'objet de base de données,
celui-ci est celui-ci ici. self a donc été
remplacé par database, qui est l'objet
créé par cette classe. Il s'agit d'un attribut
de cet objet. Et pour résoudre ce problème, nous devons y
créer un attribut. Nous disons donc « self point
cursor point cur », Eagles connection point cursor ». Donc, la méthode du curseur de
l'objet
de connexion de la bibliothèque QSt Three Maintenant, si nous réessayons le code, il indique que la courbe du nom n'est pas
définie à la huitième ligne. Maintenant que nous avons créé
un attribut. Cela essaie de trouver
la courbe variable,
la courbe variable locale, qui n'est pas dans cette
fonction car il s'agit
maintenant d'un
attribut de la classe. Cela signifie que nous devons également nous référer
à soi ici, à l'objet, puis à l'exécution de la
courbe, etc. Donc, si nous essayons cela maintenant, nous obtenons une autre courbe linéaire qui n'
est pas définie dans la ligne 18. Donc ici, cela signifie que vous
devez faire de même et que nous n'avons plus de variable de
courbe. Nous avons l'attribut cur. Donc maintenant, si je l'exécute à nouveau, je vais probablement avoir une erreur
concernant la connexion cette fois, la variable Con. Nous ne sommes pas tous
définis à la ligne 19. Encore une fois, cette
fonction de vue
essaie de trouver la
variable conconnection, donc auto-commit ici
et là aussi. Vous déclarez donc l'
attribut ici et vous
validez les modifications ici. Et la connexion automatique se ferme. Donc ça a l'air bien maintenant. Une rose est égale à ça. Donc, rose est juste une
variable locale créée ici, puis nous renvoyons la
rose récupérée à partir de cette expression Cette méthode renvoie donc
ceci lorsqu'elle est appelée dans ce
script, juste ici. Bien. Et oui, laissez-moi essayer
ce que nous avons à ce stade. Le nom
C de la ligne 7 mm n'est pas défini. Oh, oui, nous devons faire
de même pour ces deux-là, et tout semble bien maintenant. Essayons donc à nouveau. Oui, visualisez tout, et maintenant
nous avons les données. Mais lorsque j'appuie dessus
pour la deuxième fois, nous obtenons une autre erreur. Il indique donc qu'il ne peut pas fonctionner sur une base de données fermée.
Alors pourquoi ça ? Eh bien, j'ai appuyé une fois sur le bouton d'
affichage, et cette méthode a été exécutée. L'objet curseur a donc
pu récupérer ces données, puis nous avons fermé
la connexion J'ai renvoyé les rangées.
Nous avons donc pu y placer ces trois rangées. Mais lorsque j'appuie une deuxième fois sur
le bouton d'affichage, la méthode de visualisation fait face à une connexion
fermée. C'est pourquoi vous
obtenez que cela ne peut pas
fonctionner en cas d'erreur
de base de données fermée. Alors, voyons ce que nous obtiendrons. Alors regardez tout, cela
fonctionne bien. Ouaip. Cela signifie que nous pouvons aller de l'avant
et modifier les autres méthodes. Donc, curseur automatique et
connexion automatique et supprimez la fermeture. Pensons à fermer
la connexion plus tard. Alors ne vous concentrez pas là-dessus maintenant. Essayez simplement de faire en sorte que
ces méthodes fonctionnent, soi ici,
là et là. Encore une fois, pour la méthode Dalit, supprimez
la fermeture de la connexion Et tout devrait bien
fonctionner à ce stade. Voyons donc si
tout cela fonctionne. Cherchons quelque chose. Voyons voir et rechercher une entrée. Oh, nous avons un curseur là-bas. Curr n'est donc pas défini
dans la recherche. Oh, oui. Désolée. OK, encore une fois, nous allons
tous voir l'entrée de recherche. Et encore une erreur de nom. Le nom rose n'est pas défini. Donc, par erreur, j'ai converti cette
variable locale en attribut. Donc rose ici, rose là. OK, encore une fois. Nous tous et maintenant cela
semble fonctionner. Ajoutons donc quelques données. Ajoutez-y une entrée et ne pouvez pas
opérer sur une base de données fermée. Oh, pourquoi ? Mm. Parce que dans la méthode de recherche, nous avons une base de données fermée, nous la fermons
donc. Et je néglige cela, donc nous n'avons plus de méthodes
fermées là-bas, non. Alors essayons encore une fois .
Désolée pour ça. Ajoutez une entrée, et maintenant cela
semble fonctionner correctement. Génial. Donc, tout semble bon, sauf que nous n'avons plus
la méthode fermée
parce que nous ne pouvons pas conserver cette méthode dans les méthodes
de notre classe, car vous vu lorsque nous
avons cette méthode là et nous nous retrouvons
avec cette erreur. Ou vous pouvez laisser le code
sans méthode fermée. Mais vous rencontrerez des problèmes plus tard car si certaines méthodes n'
ont pas été validées, lorsqu'un autre programme
se connecte à votre base seront validées lorsqu'un autre programme
se connecte à votre base de données. Lors de la prochaine opération. Donc ça gâche parfois certaines choses. Donc, en règle générale, vous devez
fermer la connexion. Et pour cela, il existe une autre
méthode spéciale que vous pouvez ajouter à votre classe,
comme celle-ci ici, mais celle-ci sert à
détruire votre objet C'est ce qu'on appelle un deal. Donc, pour la suppression, cela
permet également d'obtenir l'instance de l'objet
en tant que paramètre. Cette méthode est donc appliquée, exécutée lorsque vous
appelez une instance de la classe comme nous
le faisons dans le script frontal ici, tandis que celle-ci est exécutée
lorsque cette instance est supprimée du script, c'est-à-dire lorsque
le script est quitté Donc, avant que le script ne se termine, cette méthode sera exécutée. Et ce que nous voulons faire ici, c'est fermer le point de connexion
automatique. Cela devrait donc faire l'affaire. Maintenant, si nous essayons cela, nous devrions obtenir les mêmes résultats. Je l'ai donc ajouté par
erreur, mais de toute façon, nous verrons
si vous pouvez le
rechercher et obtenir la rose avec cette valeur
particulière. C'est donc ma solution, et il n'y a pas de
méthode standard pour écrire un script. Il peut donc y avoir d'autres
alternatives pour résoudre ce problème pour
créer cette application. Vous pouvez donc également choisir
d'ajouter une méthode ici ou
là dans l'interface utilisateur
graphique. Vous pouvez donc faire quelque chose
comme ajouter un bouton, comme le bouton Commit,
puis ajouter ici une autre
méthode appelée Commit. Ensuite, vous supprimez probablement toutes ces méthodes de validation de ces méthodes des méthodes
de vos opérations escult Et puis tu as mis cette méthode. Donc, une méthode commit dans cette méthode
de validation de votre classe. Ainsi, lorsque la
pression de l'utilisateur est validée, vous validez les
modifications apportées à la base de données. Ce serait donc
une autre solution, mais c'est ce que nous avons trouvé
dans ce cas particulier. J'espère donc que vous comprenez
certaines choses maintenant, et cela est rarement utilisé. Donc normalement, vous n'avez qu'à utiliser dedans et ensuite
les autres méthodes. Mais cela est approprié
lorsque vous souhaitez appliquer quelque chose juste avant de quitter le programme. Donc c'est génial. Et lors de la prochaine conférence, j'écrirai un autre cours. Nous allons donc réfléchir à la
manière de modéliser un problème, qui consiste à
créer une sorte d'objet de compte
bancaire dans lequel nous
rétablissons un solde monétaire. Ensuite, nous retirons et déposons de
l'argent sur ce solde. Maintenant, à titre d'exercice, vous pouvez convertir ce script
, qui fait partie intégrante du programme, le front-end en un formulaire orienté
objet Vous mettez donc cela dans un cours et vous essayez de
trouver une bonne solution. Je vais également vous fournir
une solution à ce problème. Mais avant cela, j'aimerais que
vous essayiez vous-même afin de vous entraîner un peu à
la programmation orientée objet. Oui, c'est bon pour ça. Je vous verrai lors
de la prochaine conférence.
177. 180. Créer une page d'ouverture d'utilisateur: Bonjour. Dans cette conférence, je vais
vous montrer comment créer une application mobile minimaliste en utilisant Python et
sa bibliothèque Kivi Ce que nous allons créer, c'est cette application d'une page
que vous voyez ici. Comme je vous l'ai montré dans
la vidéo précédente, cette application est en fait
une application multi-écrans. Ainsi, lorsque vous cliquez sur Connexion, vous passez à un autre
écran, puis inscrivez à un autre
écran et ainsi de suite. Mais dans cette conférence,
je vais simplement vous
montrer l'application minimale, qui ressemble à un
modèle que vous pouvez utiliser pour écrire
n'importe quelle autre application, qu'elle ait un seul écran ou
plusieurs écrans. Je vais donc garder cette
capture d'écran ici à l'écran. Parce que cela est nécessaire lorsque
vous créez l'interface, l'
interface graphique, pour que vous puissiez coder en regardant votre design. Cela peut également être dans une
feuille de papier où vous avez dessiné un croquis de
l'apparence de l'interface. Il vous faut
donc un fichier Python. C'est ainsi que tout commence. Et je vais appeler
mon fichier main point pi. Vous n'êtes pas obligé de le
nommer point principal pi, mais c'est une bonne pratique, car plus tard, lorsque nous déploierons notre application, lorsque vous convertirez votre application en une application mobile
exécutable qui s'exécute sur un
vrai téléphone mobile, vous devrez
nommer votre fichier point principal pi. C'est donc une bonne idée
de le nommer dès maintenant, afin de ne pas avoir
à le renommer plus tard, ou peut-être que vous oublierez
plus tard et que vous
aurez des erreurs. Donc point principal pi. Ce point principal pi est l'
endroit où
la logique du programme sera écrite
en langage Python. Et il y a aussi un autre
fichier que vous devez créer. Vous pouvez le nommer
comme bon vous semble, mais je vais l'
appeler design KV Il faut donc utiliser
l'extension KV et séparer l'écran Je vais le mettre ici. J'ai cette tarte ici, et je vais aussi vous montrer cette photo ici
pour qu'elle reste là. Et je veux dire que cette tarte
doit rester ici. C'est bon. Alors, c'est quoi ce KV ? Eh bien, pas de quoi s'inquiéter. C'est en fait une bonne chose. Il existe deux manières de créer une application mobile avec Python
et la bibliothèque Kivi La première consiste à
tout écrire en Python, c'
est-à-dire la logique
du programme. Ainsi, le traitement et
tout ce qui se passe arrière-plan avec les données vous traitez concernent les connexions des utilisateurs, récupération des données d'
observation météorologique ou l'emplacement de votre application Et l'autre partie
du programme
est l' interface utilisateur graphique, c'est
ce qu'il y a ici. Donc, une sorte de langage, vous avez besoin d'une sorte de
langage pour dire, Oh, une étiquette avec cette taille de police, cette famille de polices,
ce manuel, etc. Et vous pouvez le faire en Python, mais ce n'est pas une bonne pratique. C'est une bonne idée d'écrire
cette interface graphique dans un fichier KV à points en
langue kiwi Mais la langue kiwi est
très, très simple. Tu vas l'
apprendre en un jour. Je ne vais donc pas
vous montrer comment faire dans les deux sens. Je ne vais donc pas vous
montrer comment créer une application en utilisant les deux méthodes, c'est-à-dire la méthode
qui consiste à avoir tout dans le fichier point
py et la méthode avoir la logique dans
le fichier point py et l'interface graphique
dans le fichier KV, je vais juste
vous montrer la bonne méthode,
qui consiste à utiliser Python pour la
logique et KV pour les C'est ce que tous les
professionnels utilisent. Alors, s'il te plaît, apprends de cette façon. Et nous partons
du fichier Python. La première étape consiste à importer tous les
objets nécessaires depuis KV Depuis l'application qv point App Import. C'est l'objet principal. Il symbolise l'application
de KV Lang Import. Si vous vous demandez comment connecter le
fichier Python au fichier KV,
la réponse est cet objet
Builder, que je vais vous montrer dans une
minute après avoir importé
un autre objet depuis le gestionnaire d'écran qv
point UIX,
Import, le gestionnaire d'écran et l'écran Et c'est tout. Ensuite, vous utilisez la méthode du générateur qui
charge le fichier, et là vous chargez le
design de ce fichier KV C'est ainsi que ce script
connaîtra le fichier KV. Assurez-vous que ces deux fichiers
se trouvent dans le même répertoire, main point pi design point KV Ensuite, vous accédez à votre fichier KV. Le langage KV
fonctionne au niveau hiérarchique. Il s'agit donc d'une hiérarchie d'objets. Il s'agit donc d'un écran et cet
écran contient des widgets. Donc, si vous n'avez qu'un seul
écran, vous allez écrire. Donnez simplement un nom à
l'écran et utilisez ces symboles,
puis une colonne. J'appelle donc cet
écran l'écran de connexion. Et puis si vous avez
un autre écran, disons que lorsque vous
cliquez sur ce bouton, l'écran d'inscription apparaît. Ensuite, vous souhaitez
écrire un autre écran comme un écran d'inscription. De la même manière. Mais pour l'instant, nous n'
aurons qu'un seul écran. Et si vous vous demandez, comment
ai-je obtenu cette belle couleur violette ? Eh bien, il s'agit d'une
mise en évidence syntaxique pour le langage Kiwi, et vous pouvez utiliser une extension,
l'extension Kiwi. Il suffit donc de rechercher Kiwi
et d'utiliser cette extension. Alors installez-le
puis activez-le. Et vous allez obtenir une mise en évidence de
la syntaxe dans code de
Visual Studio,
ce qui est une bonne chose. Alors, l'écran de connexion
contient des widgets, j'ai dit. Et une fois que vous avez appuyé sur Entrée, vous souhaitez effectuer une mise en retrait avec
un onglet ou quatre espaces, comme en Python Le premier widget est donc
une étiquette. Mais au lieu de cela, vous souhaitez ajouter un autre
widget au-dessus de l'étiquette. C'est un widget invisible, mais c'est toujours un widget. C'est une mise en page en grille. Vous n'utilisez plus ces
symboles. Vous ne l'utilisez que pour l'écran. Une mise en page en grille, c'est
essentiellement le type de zone, qui comportera tous
les autres widgets. Donc, ici, nous allons
ajouter les autres widgets, et c'est un moyen de séparer
la zone. Donc l'écran. Et je pense que
je pense séparer mon écran ou organiser
mon écran en ayant
une disposition en grille principale qui
contiendra tout, puis cette disposition en grille
contiendra deux autres mises en page en grille Disposition en grille pour cette zone ici. Et cette
disposition de grille particulière comportera une colonne et un nombre
indéfini de lignes Vous pouvez donc ajouter autant de lignes que possible dans cette disposition en grille. Donc, ce que je veux dire, c'est une disposition en grille, puis une autre grille. Disposition. La première
disposition de la grille est donc cette grille entière, qui ne comportera qu'une seule colonne. Et cette disposition en grille est
composée de deux mises en page en grille. Celui-ci ici, et
celui-ci ici. Donc celui-ci est et c'est ça. Si je le lis de cette
façon, c'est parce que cette zone contient des widgets
organisés de la même manière, ce qui signifie que nous
n'avons qu'une seule colonne ici. Et nous avons ici deux colonnes. Donc, dans cette deuxième mise en page en grille, je vais déclarer
culte 2, l'attribut. Et ici, par défaut, ces mises en page en grille n'
ont qu'une seule colonne Je vais donc le laisser sous forme
d'une seule colonne. Ensuite, ce que vous
ajoutez ici est étiqueté. C'est le premier
widget que nous avons ici. Entrez puis tapez sur Tabulation pour que tout soit indenté Le texte de l'étiquette est entre
guillemets, identifiant de l'utilisateur. Ensuite, ce que nous avons sous
l'étiquette est une saisie de texte. Le texte du texte saisi. Ce n'est pas ce que nous voulons ici. Ce que nous voulons ici, c'est un texte d'indication. Donc, le nom d'utilisateur
que vous voyez dans le manuel est comme
un indice pour l'utilisateur Nom d'utilisateur. Nous ajoutons donc ici des widgets sous forme de lignes
pour cette disposition en grille. Ensuite, nous avons une autre
saisie de texte avec un texte d'indice. Mot de passe. Et puis nous avons
un bouton avec connexion par SMS. Ensuite, nous passons à l'
autre disposition de la grille. Nous avons deux boutons ici. Le premier a
un mot de passe oublié par SMS, et l'autre un texto, inscrivez-vous, et c'est tout. Et c'est tout ce que vous
avez à faire pour le
moment pour accéder à l'écran de connexion. Maintenant, il y a aussi
autre chose que vous devez faire ici. Passez donc au premier
niveau d'indentation, identique à
l'
écran de connexion. Tu vois ici. Juste là, et vous voulez
ajouter une autre règle. Donc, dans la langue kiwi, ces éléments, dans les symboles contenus dans ces
symboles, sont des règles. Cette autre règle est
le widget root. Il s'agit donc essentiellement d'un widget
invisible qui enregistre tous
les écrans de l'application. Et dans ce cas, nous
n'avons qu'un écran de connexion. Et cet écran de connexion
doit avoir un nom. Disons donc l'
écran de connexion entre guillemets. Vous verrez plus tard
que nous aurons besoin de ce nom
lorsque nous ferons référence
à l'écran de connexion depuis le fichier Python, car
la logique sera
écrite en Python, où vous dites que si l'
utilisateur appuie sur ce bouton, nous allons dire
quelque chose comme un écran dont le courant est égal
à l'écran de connexion. Nous allons donc donner le
nom de l'écran que Python va
afficher lorsque l'utilisateur
appuie sur ce bouton. Et c'est tout ce que nous devons
faire dans le fichier KV. Assurez-vous de ne pas utiliser d'opérateurs d' affectation à
la place de colonnes. Utilisez donc des colonnes. J'avais l'habitude de faire cette erreur
lorsque j'apprenais langage
QV parce que
vous êtes habitué à Python où vous utilisez beaucoup d'opérateurs d'
assignation, jetez un œil à votre fichier
puis vous passez à Python Et ce que nous devons
faire en Python maintenant, créer des classes vides qui ont le même nom que
ces règles ici. Ce qui signifie classe. L'écran de connexion utilise le même étui. J'utilise donc L et S
ici, comme ici. Il faut donc que ce soit exactement la
même chaîne. Et cette chaîne doit hériter
de l'objet d'écran. Ce sera donc
un objet d'écran. Pour l'instant, disons qu'il suffit de passer. Ensuite, vous devez
créer une autre classe, qui est, vous l'avez
deviné, le widget racine Chaque règle ici doit être représentée par une
classe dans Python. Le widget racine doit
hériter du gestionnaire d'écran. Donc, ne vous inquiétez pas si ce code
est un peu rigide pour le moment. Vous avez donc des règles qui
ressemblent à une boîte noire. Mais considérez-le comme un
simple modèle. Vous allez utiliser ce
modèle pour toutes les applications, c'est donc une bonne chose de le faire
également. Enfin, c'est la
dernière chose, je te le promets. Vous avez également besoin de l'application principale de la
classe. Il s'agit donc de l'objet d'application
que nous n'avons pas encore utilisé. Cela doit donc hériter de l'application. C'en est une et cela nécessite
une méthode appelée build. Soi. Chaque méthode
a donc besoin d'un paramètre propre. Cette méthode de construction est donc
en fait une méthode d'application. Vous pouvez le voir
si vous l'utilisez ici. J'ai donc exécuté cette
ligne et ma chère application. Vous verrez que built fait
partie de ces objets, ces méthodes s'y trouvent,
build. D'accord. Et donc cette méthode construite va renvoyer
le widget racine. Mais assurez-vous qu'il s'agit de l'
objet et non de la classe. Nous sommes donc en train d'initialiser
le widget root ici. Vous pouvez voir que j'utilise
les crochets. Et la toute dernière chose, c'est si et une fois
que nous l'avons fait, c'est l'application maintenant. Nous sommes prêts à exécuter. Mais comme vous le voyez ici
dans le fichier Python, nous n'appelons aucune classe. La toute dernière chose
à faire est donc, bien sûr, d'appeler la classe d'application
principale. Une bonne pratique à faire est d'
utiliser si le nom est égal à deux. Principal. Ensuite, vous créez une instance de l'application principale, puis vous utilisez la méthode d'
exécution de l'application principale, qui est d'ailleurs une méthode d'application. Vous pouvez donc également
voir une course ici, juste là. Enregistrez ce script,
je vais
maintenant exécuter le fichier et
voir ce que nous obtenons. Bien entendu, je m'attends
à des erreurs,
car je ne pense
pas avoir tout fait à 100 %. Oui, je n'ai pas reçu d'erreur. Tout va bien
dans le terminal, mais l'interface ne
ressemble pas à ce à quoi je m'attendais. J'ai donc commis quelques
erreurs à cet égard. Ainsi, parfois, vous ne recevez pas
d'erreur dans le terminal, ce qui rend plus difficile la
résolution du problème Et si aucune erreur ne s'affiche, elle devrait apparaître dans
le code de votre fichier Q. Donc, dans ce cas particulier, il semble que la disposition en
grille ne fonctionne pas comme
elle est censée l'être. Et la raison en
est que je n'ai pas précisé nombre de colonnes que la mise en page de
grille doit avoir, la disposition de grille principale, mais aussi l'
autre, l'enfant de cette disposition de grille parent. Donc, avant d'apporter une modification, vous devez fermer cette
fenêtre. Je vais aller ici. Je vais donc transmettre un attribut culte, comme je l'ai
fait avec cette disposition en grille. Permettez-moi donc de le tester d'abord avec cette disposition de grille parent. Voici donc ce que nous obtenons. Comme vous pouvez le constater,
par rapport à cela, nous ne voyons pas les premiers éléments de mise en page de la
grille, savoir une étiquette, le nom d'utilisateur, mot de passe et le bas. Parce que ces
widgets sont en fait cachés dans le bas de ce mot de passe
oublié. Ils sont donc quelque
part ici. Dans le coin. Ainsi, lorsque vous ne spécifiez pas ces colonnes, le
nombre de colonnes dont vous disposez, Kiwi place simplement tous les widgets dans le coin
inférieur gauche. Donc, si nous le fermons
maintenant et que nous
ajoutons également un attribut d'appels
égal à un, et si je ne l'enregistre pas
et que je le réexécute, je verrai le même résultat. Je dois donc enregistrer le script, Control S,
puis le réexécuter. Et cette fois, nous voyons plus ou moins ce à quoi nous nous
attendions. Eh bien, nous devons encore
ajouter du rembourrage et espacement entre les widgets pour que cela ressemble à Mais c'est ce que nous avons obtenu
jusqu'ici, et je pense que c'est une bonne chose. Je vais donc fermer ceci maintenant et considérer ce code comme terminé. Mais avant de terminer la vidéo, je vais m'assurer que vous comprenez
ce qui se passe ici. Donc, ce fichier Kiv, tous ces éléments que vous
voyez ici, la disposition en grille, l'écran de
connexion, le bouton de saisie de texte, ce sont en fait des objets
Python Certains d'entre eux, tels que
l'écran de connexion et les widgets root sont des objets représentés par des classes que nous avons créées
dans le fichier Python, l'écran de
connexion et
le widget racine. Les autres sont des classes
que vous importez depuis Kiv. Donc, si nous devions
coder en Python uniquement, et
non en langage Kiv, nous devrions faire
quelque chose comme, à partir du point
Kv UixGridayout C'est donc la même classe
que celle-ci ici. Mais le fichier KV importera implicitement
ces objets. Il les importera donc soit
depuis votre fichier Python, tel que l'écran de connexion et widget
root, soit depuis
la bibliothèque Kivi Dans ce cas, nous
n'importons donc aucune disposition en
grille ici. Ou il en
serait de même avec le bouton. Donc, à partir de KV, cliquez sur le
bouton Importer. Idem pour le widget de texte. Nous n'importons donc pas
ces objets ici. Il s'agit donc des objets. Ce sont tous des objets, puis vous avez
les attributs de ces objets. Donc, si vous ouvrez un
shell Python et
que vous importez cet objet de mise en page de grille
comme je l'ai montré ici, puis que vous faites la
mise en page de grille entre crochets, vous verrez que CLS est l'un des attributs de l'objet de mise en page de
grille Et il s'agit donc des objets. Maintenant, à propos de la hiérarchie d'une application
KV, cela fonctionne comme suit. L'application est la plus haute dans la
hiérarchie. Donc, cet objet d'application est ici. Vient ensuite le gestionnaire d'écran, qui est en fait représenté
par le widget racine. Le widget root
vient donc après l'application, puis nous avons l'écran qui est représenté
par l'écran de connexion. Cet écran de connexion
n'est donc qu'un enfant de l'écran. Il se comporte de la même
manière qu'un écran. Et d'ailleurs, nous aurions
également pu faire autre
chose ici, que je vais vous
montrer tout à l'heure. Vous pouvez simplement passer l'écran de
connexion comme ça. Et puis ici,
vous
pouvez ajouter la racine Tidget
qui est dans la hiérarchie, au-dessus de
l'écran de connexion Et puis dans l'écran de connexion, vous pouvez passer le nom de connexion. Un écran juste comme ça. Et
tu pourrais le supprimer. Ce serait donc le même code, et vous obtiendrez le même résultat, comme vous pouvez le voir ici. Cela indique donc
ce que je viens de dire : widget
root est un parent
, puis vient un écran de connexion
et à l'intérieur de l'écran de connexion, vous avez une disposition en grille, vous
avez une autre disposition en grille, une autre disposition en grille , une saisie de
texte, etc. Cependant, pour que le
code reste mieux organisé, car ici, dans le widget
racine, plus tard, nous devrons ajouter
un autre écran, comme écran d'
inscription, pour que celui-ci
ait ses propres enfants aurait alors
un autre écran, comme écran d'erreur de
connexion, où l'utilisateur serait
envoyé s'il y avait une erreur dans les informations de
connexion. Le code
deviendrait donc trop complexe. Par conséquent, nous
avons à la place l'écran de connexion en règle générale et également le widget
root en règle générale. Ensuite, nous précisons que l'écran de
connexion est en fait un enfant du
widget root utilisé ici. Et donc, de même, nous ajoutons d'autres
écrans de la même manière. C'est donc quelque chose
à garder à l'esprit car cela vous aide à mieux
comprendre le fonctionnement de Kiwi. C'est ce que j'ai
pensé de cette vidéo, et j'espère vous voir
dans la prochaine vidéo.
178. 176 . Créer un cours de compte bancaire: Eh bien, dans les conférences précédentes, j'ai mentionné que je
créerai un programme et une
application dans lesquels nous
gérerons une sorte de compte
bancaire afin d'avoir un solde, puis nous appliquerons certaines opérations telles que retirer l'argent de l'objet du
compte bancaire et déposer de l'argent également. Je vais stocker la valeur , donc le solde, dans un
simple fichier texte. Ce n'est donc pas l'un
des dix programmes que
nous élaborons dans le cadre du cours. C'est juste pour
vous familiariser avec cours et pour
les expliquer un peu plus. Je vais donc faire un peu de
ménage ici. Permettez-moi donc de créer un dossier ici. Et placez tous ces
fichiers existants dans ce dossier. Nous avons donc les
fichiers précédents ici, et je vais créer un
nouveau dossier maintenant. Appelons ce compte. Et dans ce dossier, j'
aurai mon script Python. Alors appelons-le comme ça. Donc, en compte, nous
avons ce fichier Python, et nous avons également besoin de ce fichier texte. Nous allons économiser le
solde actuel de notre compte bancaire. Ce sera donc une application
banale car dans la vraie vie, vous ne voulez pas enregistrer les informations du compte
bancaire, le solde dans un fichier texte Dans la vraie vie, vous voulez
enregistrer cela dans une vraie base de données, comme Post Gras
Well, par exemple. Mais pour pratiquer la programmation
objet ou autre, nous allons simplement enregistrer la valeur du
solde dans ce fichier. Voici donc notre entrepôt. Et
par souci de simplicité, nous ne travaillerons que
sur un seul compte. Notre programme
sera donc en mesure de traiter un seul objet de compte, car si
vous avez plusieurs comptes, la solution peut
être différente de celle-ci. Vous devrez donc probablement penser à
avoir une table et peut-être qu' une base de données
serait nécessaire ici. Pensons donc à
notre compte personnel. Vous pouvez utiliser ce programme
pour vos notes personnelles Vous pouvez
donc suivre votre solde et
utiliser ce programme Python. Et maintenant, l'objet ici
est le compte bancaire. Et cet objet, nous devrions commencer à réfléchir aux attributs que cet objet de compte bancaire devrait
avoir comme état initial. Nous avons donc parlé de
cet objet minimal, et un compte bancaire aurait, bien
entendu, un solde initial. Commençons donc par créer cet objet de compte
et appelons-le compte. Tu peux l'appeler comme
tu veux, mais je vais l'appeler « compte ». C'est donc la première
fonction que nous voulons définir et nous y transmettons
self. Et restons comme
ça pendant un moment. Et nous avons dit que l'objet de notre compte
bancaire comporterait un attribut de solde. Et dans notre cas, nous avons ce point d'équilibre TXT, et créons-y une valeur
initiale. Maintenant, pour créer une instance d'
objet, nous devons récupérer cette
valeur et la transmettre à notre fonction d'initialisation afin construire cet objet minimal Comme nous avons un fichier, nous devons lire ce numéro
dans ce fichier. Et naturellement, ce que vous
voudriez transmettre ici, c'est un paramètre tel que le chemin du fichier. C'est ainsi
que je vais l'appeler et maintenant, si vous vous souvenez, dans l'application
librairie du script principal, nous passons également un paramètre
à la fonction d'initialisation Ensuite, nous avons créé
un objet de connexion à partir de ce fichier de base de données. Dans ce cas particulier, ce que nous voulons
créer est un entier, donc un nombre issu de ce
fichier à partir de ce chemin de fichier. Vous pourriez donc faire quelque chose
comme avec Open. Nous gérons donc les fichiers avec des méthodes avec un chemin de fichier
ouvert, et il s'agit d'un fichier texte, nous devons
donc utiliser notre
mode, qui signifie lire. Nous ouvrons donc le chemin du fichier, ce fichier en mode lecture. En tant que fichier. Il s'agit donc simplement d'une variable temporaire qui existe dedans
avec une instruction. Ensuite, nous devons
lire ce fichier. Donc quelque chose comme file point RED. Oui, c'est ça. Cela
permettra de lire le fichier, mais vous ne le
stockerez nulle part. Donc, ce que vous voulez faire, c'est dire que self and balance est égal
à file point Read. Cela permettra donc d' enregistrer la valeur dans
le fichier texte dans cette variable d'
instance. Il s'agit donc d'une variable d'instance. C'est ainsi que ça s'appelle. En fait, il s'agit de la variable d'
instance et de l'objet, donc de l'objet du compte. Bien. C'est presque bon. Et nous devons également y ajouter la fonction integer car elle sera lue
sous forme de chaîne par défaut. Nous devons donc convertir
cette valeur en un entier. Oui, cela devrait fonctionner, et cela devrait construire
l'objet pour nous, l'objet de l'acte avec un
équilibre. Et avant de créer la méthode de retrait similaire ici,
puis la méthode de dépôt. Je préférerai d'abord appeler une
instance de cette classe. C'est ce que je vais faire ici. Disons que vous triez cela dans
la variable de compte. Ce sera donc l'objet, l'objet qui
sera créé à partir de ce plan, le plan du
compte, là vous devrez
passer cet argument,
l'argument de ce paramètre, l'argument de ce paramètre, qui est balance Génial. Et pour lui-même, Python transmettra
automatiquement l'instance de l'objet du
compte. Bien. Maintenant, cela va
créer une instance d'objet. Et laissez-moi imprimer
cet objet ici. Nous voyons donc certains résultats en action. Python, et c'est dans le dossier du
compte et dans Act Pi. Nous avons reçu une erreur, aucun fichier ou
répertoire de ce type pour balance point TXT. Et la raison en
est que nous devons également
y transmettre le répertoire des comptes. Donc, et cette fois, ça marche. Nous avons dû transmettre le
répertoire là parce que nous nous trouvons dans ce
dossier dans le dossier de démonstration, et vous devez d'
abord transmettre
le dossier du compte , puis
pointer sur le solde de TXT. Et voici le résultat. Il est donc indiqué « objet du
compte point principal ». Donc, l'objet
du compte du module principal. Et ce qu'est Min lorsque vous exécutez un
script, comme nous l'avons fait ici, si vous pointez sur le
script avec
Python, Python attribue ce
nom au module. Ce module aura donc
ce nom et le script, en fait, mais il est
traité comme un module. Mais si vous importez ce module. Donc, si je courais, j'ouvre un shell
interactif maintenant. Donc, depuis le
dossier du compte, importez. AC, ce
qui se passe, c'est que vous exécutez également la
fonction d'impression. Mais cette fois, lorsque
vous importez un fichier, donc lorsque vous ne l'
exécutez pas comme nous faisions précédemment avec le compte
Python, AC that Pi, lorsque vous
importez
le module, le module obtient le nom du
script dans lequel il est écrit. Donc dans ce cas, c'est AC
sans l'extension. Et ici, vous obtenez également le nom du package du module. Les packages sont donc constitués de modules, et un package est comme un dossier, et là vous avez plusieurs
modules ou un module, comme nous l'avons dans ce cas. Notre package ici est
account, donc account, puis il contient ce module, puis ce module a cette
classe, la classe de compte. est donc quelque chose que
je voulais
vous montrer des packages,
des modules et des classes. Génial. Maintenant, je vais quitter ce shell Python et jouer un peu avec ce
script. Et ce que nous avons fait ici, nous avons imprimé l'espace du nom de l'
objet, mais nous n'avons pas obtenu le solde
réel en sortie parce que nous ne le
renvoyons pas ici. Mais si vous voulez
obtenir le solde, vous devez
pointer sur le solde, en utilisant une
notation par points pour indiquer l'objet contenant
l'attribut solde. Voyons donc ce que
nous obtiendrons cette fois. Et oui, 1 000. C'est donc
le solde actuel. Comme vous pouvez le constater,
vous pouvez accéder aux attributs de votre instance d'
objet en utilisant la notation par points. Bien. Ajoutons-y maintenant ces
autres méthodes. Et que peut-on
faire avec un compte bancaire ? Eh bien, nous pouvons retirer de l'argent. Et vous devez toujours transmettre
self dans toutes vos méthodes, puis le paramètre qui s'applique à cette méthode
en particulier. Dans ce cas, lorsque vous
retirez de l'argent, vous avez en tête le montant
que vous souhaitez retirer. Vous
y transmettez donc le montant en paramètre. Non, juste pour qu'il soit clair que tu
comprends ce que je fais. Ce que je fais ici, c'est que j'ai un solde initial qui
est lu à partir de ce fichier, donc de ce fichier texte, puis je veux autoriser l'
utilisateur à effectuer des opérations, donc retirer
de l'argent de ce solde. Et une fois que l'utilisateur a exécuté
la méthode de retrait, je souhaite mettre à jour
le numéro de solde dans l'instance de l'objet Et je ne veux pas encore écrire ce solde dans mon fichier de solde. Je veux donc juste calculer
quelque chose ici, comme si l'
équilibre personnel était égal
à l'équilibre personnel. Eh bien, c'est un retrait, donc moins le montant que
je souhaite retirer. Cela signifie que l'auto-équilibre sera égal à 100 à 100, disons, et je vais me retrouver avec
un solde actualisé de 900 dans ce cas Si je le souhaite, je
peux ouvrir à nouveau
ce fichier ici
, puis y écrire ce
solde mis à jour. Ce serait donc une solution. Mais une solution plus constructive serait probablement d'avoir une méthode spécifique qui valide
les modifications apportées au fichier. Vous pouvez donc retirer de l'
argent, puis déposer de
l'argent au cours de la même session, puis appliquer la
méthode de validation pour enregistrer les modifications. C'est donc la solution que
je souhaite rechercher. Oui, nous en avons fini
avec la méthode de retrait. Maintenant, déposez vous-même
et effectuez à nouveau le montant. Il s'agit donc d'une variable locale.
Il s'agit d'une variable locale. Il se trouve qu'ils portent
le même nom, mais ils n'ont pas grand-chose à
faire l'un avec l'autre. Et l'auto-équilibre est égal à l'
auto-équilibre majoré du
montant dans ce cas. Voyons à quoi cela sert. Et je garderai ici cet
objet d'instance qui est
en cours de génération. , nous insations
une instance d'objet En d'autres termes, nous insations
une instance d'objet et
imprimons le solde actuel Ensuite, je veux
retirer de l'argent. Depuis l'objet de mon compte. Cela signifie que j'applique le retrait
à l'objet du compte, et le retrait nécessite
deux arguments. Donc, l'instance de l'objet, qui est transmise automatiquement, puis le montant, qui peut être de 100. Et une fois cela fait,
je veux
imprimer le solde mis à jour. Voyons ce que ça va faire. Oui, 1 000. Ainsi, une
instance d'objet est créée et vous en imprimez 1 000
parce qu'ici vous en avez
100, puis retirez 100
et vous obtenez 900. Génial. Donc, si vous l'exécutez à nouveau, vous remarquerez qu'
une nouvelle instance d'objet est à nouveau créée. Vous n'avez donc
plus 900
comme solde actuel. Tu en as 1 000. Cela signifie donc que vous
devez écrire
les modifications dans le fichier si vous
souhaitez conserver cet équilibre. Et nous pouvons le faire en
utilisant des méthodes. Appelons cela un commit. Et passez-moi là-bas. Et je ne pense aucun paramètre dont j'ai
besoin pour passer par cette méthode de validation
car nous ne travaillerons qu'
avec les
variables existantes. Ce serait
donc un peu comme avec open, eh bien, nous devons
ouvrir le chemin du fichier, mais nous avons un petit
problème ici car une variable de chemin de fichier
n'est plus qu'une variable locale
dans cette méthode d'initialisation Donc, si nous le transmettons ici, cette fonction, cette méthode, ne la
reconnaîtra pas. C'est donc un peu différent de l'autre
script de backend que nous avons écrit, car ici nous avions ce
paramètre comme ici Mais dans ce cas,
ce paramètre n'a été utilisé que dans
la méthode d'initialisation Nous ne l'avons
donc utilisé nulle part ailleurs. Il existe donc une solution à cela. Une solution serait d'aller de l' avant et d'en emprunter une autre
, appelons cette voie ici. Donc un autre paramètre
pour la méthode de validation. Ensuite, lorsque nous appelons
la méthode de validation comme nous le faisions
avec le retrait, nous devions passer
le point de solde TXT. En fait, ce chemin
vers la méthode de validation. Bien que cela puisse fonctionner, ce n'est toujours pas la meilleure pratique du paradigme orienté objet. Nous devons donc
chercher une autre solution. Et cela reviendrait à rendre cette variable locale
et cette variable d'instance. Et pour ce faire, vous devez
faire quelque chose comme self et le chemin du fichier
est égal au chemin du fichier. Et ce que cela fait,
c'est le chemin du fichier, ne le confondez pas avec celui-ci. Il se trouve que c'est pareil, mais vous pouvez également écrire autre
chose ici, comme n'importe quoi. C'est donc le paramètre
de la fonction unitaire. Donc, le solde que TXC
ira à ce paramètre. Le chemin de ce fichier
ira donc à ce paramètre. Ensuite, vous créez
cette variable d'instance, et cette variable d'instance
sera égale à ce chemin. Mais tu peux utiliser ce truc ici. Vous pouvez l'utiliser où bon vous
semble dans votre classe. Et dans notre cas, nous aimerions l'utiliser ici. Nous ouvrons donc le chemin du fichier self la bonne
manière cette
fois, car cette fois nous devons écrire ou remplacer avec plus de précision pour remplacer le solde
actuel, qui devrait être
celui-ci, par exemple Nous voulons remplacer
cela par ce fichier. Donc, en tant que fichier, il s'agit simplement d'un
fichier variable temporaire et d'un fichier à écriture par points et d'un équilibre automatique des points. Bien, essayons ça. Et nous n'avons reçu aucune mise à jour dans le fichier ici parce que j'ai oublié d'appeler
la méthode de validation. Donc, une fois que nous aurons retiré de l'argent, imprimons-le dans la console. Et puis account
point Commit sans passer d'argument explicitement car implicitement, nous
transmettons l'instance de l'objet Bien. Et nous avons reçu une erreur indiquant littéral
n'est pas valide pour
un entier en base dix Ce serait donc le
nombre entier de la ligne six. Ici, la valeur lue
par cette méthode n'
est pas convertie en entier. Et la raison en est
que cette valeur a disparu de
balance that txty, et il s'agit de la lecture
d'une chaîne vide Il s'agit donc d'une
chaîne vide qui est lue à partir de ce fichier, puis vous essayez de la convertir et
cela ne fonctionne pas. Maintenant, la raison pour laquelle nous avons obtenu
ce fichier vide de chaîne vide ici est lorsque nous avons reçu
l'erreur précédente, donc ici, l'argument doit
être une chaîne, pas un entier. Python a donc ouvert le fichier avec la méthode, mais il n'a pas pu
réellement écrire de valeur
dans ce fichier. Le fichier s'est donc retrouvé vide. Permettez-moi donc d'y écrire la valeur
initiale, et maintenant nous devrions
pouvoir l'exécuter à nouveau. Et oui, nous avons maintenant
la valeur mise à jour. Encore une fois, nous avons
créé l'instance d'objet, puis nous avons imprimé
le solde actuel,
qui a été lu dans ce fichier, qui était de 1 000
au début, puis nous en avons retiré 1 000, afin que le solde soit mis à jour, puis nous avons validé ces
modifications dans ce fichier, donc nous en avons obtenu 900. Maintenant, même chose si
vous voulez en ajouter, disons, 200 et effectuer un dépôt. Voyons si cela fonctionnera. Euh, oui, ça a été
imprimé. Vérifie le dossier. Ouais. C'est donc
notre nouvel équilibre. Et oui, j'espère que cela clarifie certains concepts de la programmation
orientée objet Si vous êtes créatif, vous pouvez continuer et
développer ce script, afin d'y ajouter d'autres
méthodes et peut-être d'en
faire une application plus
réaliste. C'est tellement génial. Il s'
agit de cette conférence, et dans la prochaine conférence, je parlerai de l'héritage, et nous
développerons ce script en y
appliquant
l'héritage. Alors, je vous parlerai lors
de la prochaine conférence.
179. 177. Créer des classes grâce à l'héritage: Génial Nous en avons presque
fini avec les cours. Mais il y a un dernier concept
que j'ai besoin que tu saches, c'est l'héritage. L'héritage est le
processus de création d'une nouvelle classe à partir d'une classe de base. Donc, une nouvelle classe qui possède toutes les propriétés et les
méthodes d'une classe de base, mais qui possède également d'
autres méthodes. Alors pourquoi faisons-nous cela ? Eh bien, je vais
vous expliquer cela à travers notre exemple. Nous avons donc ce
plan, donc ce cours. Et permettez-moi de supprimer ceci pour
ne pas vous embrouiller. Nous n'avons donc fait qu'
appeler les instances de classe. Nous avons donc cette classe qui crée un
objet de compte bancaire pour nous. Ensuite, nous pouvons retirer et déposer de l'argent
sur le compte bancaire. Et si nous voulions
transférer de l'argent depuis
ce compte bancaire ? Donc, depuis notre compte bancaire, transférez de l'argent sur
un autre compte bancaire. Eh bien, il faudrait ajouter
une méthode de transfert ici. Et puis faites quelque chose
comme un équilibre
personnel égal à l'
équilibre personnel moins le montant. Nous y transférons donc un
montant de transfert, qui est soustrait
de notre solde ici Mais pour autant que je sache, vous ne pouvez pas transférer d'argent
depuis votre compte d'épargne. Vous pouvez transférer de l'argent depuis
votre compte courant, mais pas depuis un compte d'épargne. Cette méthode n'aurait donc
aucun sens pour un compte courant. Et ce compte est un compte bancaire
général. Donc, ce que nous pourrions faire, c'est peut-être créer une autre classe, comme si nous pouvions la copier créer une autre classe et l'
appeler autrement. Nous avons donc toutes
ces méthodes. C'est donc une solution. L'autre solution consiste
à utiliser l'héritage. C'est donc là que
l'héritage est utile. Vous dérivez une classe à
partir d'une classe de base, qui est une classe plus générale comme cette classe de comptes ici. Créons donc une nouvelle classe. Cette nouvelle classe est appelée
sous-classe, et ce sera la classe de base Encore une fois, vous devez utiliser la même syntaxe que vous utilisez pour une classe Q ou là
pour créer une Appelons cela
un compte courant. La première chose que nous voulons faire est de créer une méthode innit Avec cette méthode d'initialisation,
nous allons créer comme cet objet minimal dont je
viens de parler Comme dans notre classe de base, nous avons également besoin ici d'un équilibre dans notre fichier, nous avons
donc besoin de ce chemin de fichier. Mais au lieu de réécrire
ce code, comme je l'ai dit, vous
pouvez abord créer
une méthode de fonction d'initialisation
et, bien sûr, y
transmettre self Vous transmettez toujours le paramètre
self, qu'
il s'agisse d'une
classe de base ou d'une sous-classe Ensuite, dans cette méthode d'initialisation, vous souhaitez appeler la
méthode d'initialisation de votre classe de compte, ce qui signifie que lorsque vous créez une instance d'objet de
votre classe de vérification, cette méthode sera exécutée lorsque cette méthode sera exécutée, cette méthode exécute
la fonction d'initialisation de
votre méthode de compte afin que vous
créiez cet objet minimal,
qui est le même
que celui-ci votre méthode de compte afin que vous
créiez cet objet minimal, qui est le même
que mais nous aurons ensuite quelques méthodes
supplémentaires ici. Donc, un compte courant, c'est
cela et d'autres choses. Et ici, vous
devez passer self et l'autre paramètre nécessaire à
cette fonction d'initialisation Nous passons donc ici
deux paramètres, et nous devrions faire
de même ici. Et si je l'exécute
maintenant, je vais avoir une erreur. Donc, par intention, je veux que vous
voyiez quelle erreur nous obtenons. Permettez-moi donc de créer une
instance de cette fonction. Donc, je vérifie Oh, oui,
essayons ça. Hum, ici. Ouaip. C'est
dans le dossier du compte, donc ici, puis point pi. Voyons voir. Donc, la première chose que cela signifie
est que le chemin du fichier
n'est pas défini à la ligne 21,
qui est celle-ci ici. Et la raison en
est que nous n'avons défini aucun chemin de fichier
dans cette fonction. Vous pouvez donc le passer entre crochets d'initialisation en tant que paramètre Ensuite, vous devez également le
transmettre ici. Supposons donc que l'on compte le point de
balance TXT. Bien. Et nous n' y voyons
aucune sortie parce que
nous n'imprimons rien. Mais ce qui s'
est passé en gros, c'est qu'une instance d'objet a été créée et qu'elle a été
appelée, cette méthode a été appelée. Et cette classe a également été
initialisée. Maintenant, si nous essayons de
le faire , le but de l'héritage
est de vérifier les méthodes d'
accès de
la classe de base sans écrire ces méthodes
dans votre sous-classe Supposons que nous
vérifiions ce dépôt et que nous y mettions un
montant. Alors dix. Maintenant, si nous l'exécutons, nous obtenons cette
erreur d'attribut qui indique que objet de
vérification
n'a pas de dépôt d'attribut, donc cela ne
reconnaît pas cette méthode. Et la raison en
est que nous n'avons pas encore satisfait à la
syntaxe de l'héritage. La clé ici est donc de passer un argument à notre sous-classe de
vérification Et cet argument
est une classe de base, donc le nom de la classe de base. Supposons que si vous faites de même
maintenant et que vous imprimez le résultat pour voir ce
qui se passe, vous pouvez équilibrer automatiquement les points. Désolée, je voulais dire
vérifier ce solde. Je suis désolée pour ça. Et oui,
maintenant ça a l'air de fonctionner. Cette méthode a donc été reconnue, et
elle est passée de 1 100
, soit le solde initial, à 1 110 Cela a donc imprimé la variable d'accès au solde
de la classe de base C'est ainsi que nous déposons l'
argent sur notre compte
courant. Maintenant, nous voulons transférer de l'argent, nous devons
donc définir
une nouvelle méthode ici, appelons ce transfert. Transférez vous-même là-bas ainsi
qu'un montant variable local, donc en tant que paramètre. Il ne s'agit donc que d'une variable
locale. Ça n'a rien à voir
avec ça une fois ici. Ensuite, nous voulons
mettre à jour le solde. Nous voulons donc transférer de
l'argent sur un compte. Ce montant sera
soustrait de notre solde. Cela signifie donc que
l'auto-équilibre est égal au solde
personnel moins le montant. Maintenant, si nous essayons une nouvelle méthode là-bas. Nous en sommes donc à ce stade. Transférons 110. Ouais Je m'attendais à en avoir 1 100 ici, mais j'ai obtenu ce chiffre Et cela s'explique par le
fait que nous n'avons pas les modifications plus tôt
lorsque nous avons déposé de l'argent. Ainsi, lorsque nous avons exécuté
le script maintenant, une instance d'objet
a été créée dès le début et elle
a obtenu ce numéro ici, qui n'a pas été mis à
jour car nous n'avions
pas validé les modifications plus tôt,
mais vous voyez l'idée. Donc, de cet équilibre, en soustrayant celui-ci
ici, nous obtenons Cela signifie que la
méthode de transfert fonctionne, mais il suffit d'y appliquer
la méthode de validation. Encore une fois, nous pouvons valider
ces modifications. Oui, voyons ce que nous allons obtenir maintenant. Donc, à partir de 1 100, je veux
en transférer 100, et maintenant je pense que
ce chiffre sera mis à jour à 1 000 Voyons voir. Oui, 1 000 imprimés ici et
1 000 ici aussi. Cela fonctionne donc très bien. De plus, une autre chose que je veux que vous sachiez à propos de l'héritage est que vous pouvez ajouter vos propres variables d'instance
pour votre sous-classe Par exemple, dans ce cas, notre seule
variable d'instance est le solde, qui a été héritée
de la classe de base du compte. Mais nous pouvons ajouter nos propres variables d'
instance. Supposons donc que ce transfert soit
également payant. Ainsi, lorsque vous effectuez un virement, votre banque
vous débite de l'argent. Et vous voulez donner
ces frais comme paramètre. Restons donc
simples et disons que
lorsque vous transférez de l'argent,
il faut lorsque vous transférez de l'argent, déduire le solde moins le
montant moins les frais. N'appliquons donc pas de
pourcentages ici. Supposons que nous ayons des frais
de 1$ par transfert. Maintenant, si nous appliquons à nouveau la méthode de
transfert, nous allons probablement recevoir
une erreur car ces frais ne sont ici qu'une variable
locale. Donc, ce que vous devez
faire dès maintenant, c'est
transformer ces frais en
une variable d'instance, c'
est-à-dire que les
frais self-point sont égaux aux frais. Cela signifie que si vous répercutez maintenant
des frais ici, disons, 1$ ou toute autre devise ,
et
que vous les répercutez ici, cela ira ici, et cela sera égal aux frais que
vous transférez ici. Ensuite, nous pouvons utiliser
cette variable d' instance et l'
utiliser dans cette méthode de transfert. Génial. Maintenant, nous
en sommes à 1 000, et laissez-moi exécuter ceci. Ouais Donc 899, et ce
sont les mêmes ici, ce qui signifie 100 à
100 moins les frais, vous obtenez ce numéro Et oui, j'espère que
vous pouvez voir en quoi héritage est pratique pour
créer des sous-classes à partir de la classe de base C'est tout pour cette conférence, et il nous reste
encore une conférence à suivre. Dans la prochaine conférence,
je vais clarifier certains termes de la programmation
orientée objet. Ce sera donc une courte conférence, qui vous sera utile
plus tard lorsque vous vous référerez à la documentation, car
il existe de nombreux concepts
dans OOP,
et je ne veux pas que vous vous y confondiez Je pense donc que c'est une conférence
importante. Oui, je te parlerai plus tard.
180. 178. Glossaire OOP +++: Bonjour encore une fois. Et
dans cette conférence, j'aimerais m'
assurer que vous connaissez la terminologie de la programmation
orientée objet en Python. Nous avons maintenant la classe, qui est ce modèle ici, ou vous pouvez l'appeler
un prototype qui définit les caractéristiques d' un objet
sur le point d'être créé C'est donc la classe,
puis nous avons l'instance d'objet
ou simplement l'objet. Cette année est donc un objet. donc d'un objet de
compte courant qui stocke des données dans ce chemin de fichier
spécifique et qui possède cet attribut. Il a donc ces frais. Ensuite, nous avons des variables d'instance, et
ce sont des variables définies dans les méthodes de la classe,
comme le chemin de défaillance ici. Et ceux-ci sont accessibles
par l'instance par l'instance d'
objet créée par cette classe. Ensuite, nous avons également quelque chose
appelé variable de classe. Donc, variable d'instance
et variable de classe. Nous n'avons créé de variable
de classe dans aucune des conférences précédentes. Je vais donc aller de l'avant
et en créer un maintenant. Créons-en un pour
notre compte courant. Donc, ce serait quelque chose comme disons que le type est égal à deux. Secouant. Ainsi, une variable de classe
est déclarée en dehors des méthodes de cette classe, et les variables de classe sont partagées par toutes les instances de classe. Les variables d'instance sont donc partagées uniquement
par l'instance d'objet. Par exemple,
laissez-moi vous expliquer cela. Ici, il s'agit d'une de
nos instances d'objet, nous n'avons
donc qu'une seule instance d'
objet ici, mais nous pourrions en avoir plus. Je vais donc le copier et créer une autre instance
d'objet ici. Et j'appellerai ça, disons que
c' est le compte courant de Jack. Je vais donc remplacer
ceci et cela. Et voici le compte
courant de John. Et ils y ont également leur espace de stockage
personnel. Disons Jack point
TXT et Joan point TXT. Jack a donc 100 dollars
et Joan 200 dollars. Bien. Nous devons donc changer
cela, Jack Jack et Joan. Et si nous exécutons
ce script maintenant, nous obtiendrons deux
valeurs imprimées. Donc, moins un pour
cette déclaration, parce que Jack en avait donc
100$,
mais il a ensuite transféré 100$,
puis moins les frais de 1$. Et puis il s'est retrouvé
avec moins de 1 dollar là-bas. Il possède de l'argent à la banque. Et puis John en avait 200, il en a 99 maintenant. Donc, ce que j'
essaie de dire, c'est que ces variables
n'appartiennent qu'à leur objet. Mais si tu essaies maintenant, Jack est en train de cocher la case. Vous souhaitez donc imprimer ce type de point à
cocher Print Jones . Vous verrez que cette variable
de classe est partagée par toutes les
instances de cette classe. Quelle est donc la différence entre les variables
de classe et d'instance ? Les variables de classe sont rarement utilisées , vous devrez
donc vraiment les transmettre ici. Un autre concept est désormais celui des chaînes de documents. Et une chaîne doc est généralement transmise dès que vous
écrivez le mot clé clas, il suffit donc de descendre le mot-clé class Cela fournit l'
explication de votre cours. Supposons que cette classe génère des objets de compte
courant. Ensuite, vous le fermez
par trois guillemets. Donc,
vous savez, si nous l'imprimons, pour récupérer l'une de nos instances d'
objet, disons que Jo coche le point. Double soulignement, Doc, et encore fois double soulignement
. Alors imprimez ça. Comme vous le voyez, une chaîne
doc est utilisée pour fournir des informations
sur cette classe. Il est donc bon de
définir la chaîne lorsque vous écrivez
des classes afin que les autres, s'ils utilisent votre classe, puissent appliquer cette
opération ici, ils puissent voir de quoi parle
la classe. Cela est particulièrement utile lorsque vous importez
des classes à partir de modules. Ainsi, lorsque vous ne
voyez pas réellement le code de votre classe, vous pouvez le faire et vous avez accès à la chaîne
de documentation de la classe. Et puis nous avons un
concept de membres de dota, qui fait référence en fait de classe ou à des variables d'
instance Il s'agit donc d'un membre de données et c'est également un
membre de données. Ensuite, nous avons le constructeur, qui était cette fonction d'initialisation Et comme vous le savez,
la fonction init, c'est le
constructeur qui construit votre classe. Ensuite, vous avez
des méthodes de classe que vous appliquez à votre instance d'objet. Le transfert est donc une méthode de classe. C'est donc aussi une méthode, mais c'est une méthode spéciale, c'est
donc un constructeur Et l'instanciation, si vous
entendez parler d'instanciation, est un processus de création d'instances d' Donc des instances d'une classe. Comme s'il s'agissait d'une instanciation
de la classe. Et celui-ci ici aussi. Et, vous savez, l'héritage se
produit maintenant lorsque vous créez une sous-classe à
partir d'une classe de base Et cette sous-classe partage les
méthodes de la classe de base, en
plus d'avoir ses propres méthodes spécifiques
à cette sous-classe Parfois, vous
entendez également parler d'attributs, et les attributs sont
ceux-ci ici. Ainsi, lorsque vous accédez à ces variables d'instance ou même à des variables de classe ou
même à des variables d'instance, vous pouvez dire que vous
accédez aux attributs de votre instance de classe,
de votre objet. Et oui, il s'
agit du vocabulaire de la
programmation orientée objet en Python. Et je crois vraiment que
je vous ai donné une solide compréhension de la programmation orientée
objet et de la création classes et d'objets, etc. Si vous trouvez toujours
quelque chose de confus, vous pouvez soit
revoir les vidéos car je sais que la
programmation orientée objet est un peu délicate, mais vous pouvez même poser des questions, et je ferai de mon mieux pour vous expliquer les choses qui ne sont pas
encore claires pour vous. Oui, j'espère que cela
vous sera utile. Et je vous parlerai lors de la prochaine conférence, nous
en avons
donc terminé avec cette section,
et je vous verrai plus tard.
181. 179. App 7 : démo d'application mobile +: Bonjour, et bienvenue dans une
nouvelle section, bien sûr. Cette section est assez
spéciale car
nous allons
créer ici une application mobile. Jusqu'à présent, nous avons travaillé avec des applications
de bureau ou des applications Web. Mais dans cette section, l'
application que nous allons
créer peut fonctionner sur les appareils Android
et IOS, et elle peut également fonctionner
sur les appareils de bureau. Nous allons donc
créer une seule application avec une interface utilisateur graphique, les utilisateurs pourront utiliser sur ordinateur, Android et IOS. Cette application aura une interface de connexion
où l'utilisateur pourra connecter et également
s'inscrire pour s'inscrire en tant qu'utilisateur de l'application. Ensuite, ils peuvent appuyer sur
des boutons pour obtenir des devis. Depuis l'application. Ils diront donc ce
qu'ils ressentent s'ils se sentent heureux, tristes ou aimés, afin de donner un sentiment. Et l'application essaiera de faire en
sorte que si
l'utilisateur est triste, elle essaiera de le
rendre heureux en lui donnant une citation adaptée à
son état émotionnel. Hein ? Voici donc l'application. Je suis sûr que ça va
être intéressant. Nous allons utiliser
la bibliothèque KeV. Il s'agit d'une
bibliothèque tierce pour Python, qui vous permet de créer des applications, ainsi que des applications de bureau et mobiles. Euh, alors allons-y et je vous parlerai lors de la
prochaine conférence. À bientôt.
182. 181. Créer une page d'inscription d'utilisateur: Nous avons précédemment créé ce code
Python et ce code Kiv. Il s'agit donc d'une application Kiv, que vous exécutez en exécutant le code Python,
pas le code Kiv Alors voilà, appuyez sur le bouton rond, et voici ce que nous avons. Admettons-le, l'interface est
belle, mais elle est plutôt froide pour le moment car lorsque nous appuyons sur ces
boutons, rien ne se passe. Allons-y donc et
implémentons le bouton d'inscription. Ce que nous voulons faire, c'est que lorsque l'utilisateur appuie sur
un bouton d'inscription, nous voulons changer la page, l'écran vers un autre écran
avec un autre ensemble de widgets. Pour cela, nous devons attribuer un appel de fonction
au bouton d'inscription. Allons-y,
passons au code QV, localisons le bouton d'inscription, qui se trouve ici Ainsi, le bouton obtient cet attribut,
l'attribut text, mais il peut également obtenir un autre attribut appelé en
appuyant sur un trait de soulignement Ce que fait cet attribut, c'est lorsque l'utilisateur
appuie sur le bouton, vous allez appeler la fonction d'inscription par point
racine. N'oubliez pas les parenthèses
du code. Alors, qu'est-ce que root et
qu'est-ce que sign up ? Root est un nom spécial que vous
pouvez utiliser dans un fichier QV, et root fait référence à la
classe du widget de règles Le widget de règles
ici où nous sommes est l'écran de connexion. Donc, la classe d'écran de connexion, qui est l'écran de connexion. Donc, en fait, root fait référence
à la classe d'écran de connexion. Et maintenant, nous utilisons
cette notation par points. Ensuite, nous utilisons la
méthode de l'écran de connexion. Inscrivez-vous donc à l'écran de connexion où il n'y a pas de méthode d'
inscription, mais nous pouvons en créer
une. Définissez le signe. En haut, utilisez le paramètre self
pour les méthodes de classe. Ensuite, faisons
quelque chose de simple pour le moment. Imprimons simplement. La pression sur le bouton d'inscription n'est qu'une chaîne, ce qui signifie qu'elle sera
imprimée sur le terminal.
Essayons ça. Enregistrez le fichier Kiwi et
exécutez le fichier Python. Ensuite, appuyez sur Inscription et comme
vous pouvez le voir dans le terminal, la chaîne de pression sur le bouton d'
inscription est imprimée chaque fois
que j'utilise
le bouton d'inscription C'est donc aussi simple que cela. Utilisez l'attribut lorsque vous appuyez sur le
bouton, et chaque fois que vous appuyez sur le bouton, inscription sera
appelée. Cette fonction. Alors maintenant, ce que nous voulons faire pour vrai, c'est changer d'écran. Mais il faut d'abord
créer un écran. La façon dont vous créez des écrans
se trouve dans le fichier Kiwi. Nous avons donc l'écran
de connexion ici. Maintenant, nous voulons créer, appelons cet écran d'inscription. Après la règle, vous
utilisez la colonne, une touche pour mettre en retrait. Et voici à quoi ressemblera
ce nouvel écran. Nous avons donc une étiquette. Nous avons deux
zones de saisie de texte et un bouton. Et tout se trouve
dans un quadrillage. Avec une colonne. Et
cette colonne aura
simplement un niveau avec du texte. Inscrivez-vous pour un
voyage dans l'espace. Pourquoi pas ? N'hésitez pas à utiliser
votre imagination, mais assurez-vous que c'
est entre guillemets. C'est donc une ficelle. Vient ensuite une saisie de texte. Utilisez-le comme texte d'indication. La chaîne du nom d'utilisateur. Alors, qu'est-ce qui va être affiché
dans la zone de texte à titre d'indice ? Une autre saisie de texte avec un indice. Texte. Tu l'as deviné Mot de passe. Et enfin, un bouton. Avec le texte, soumettez. Ou vous pouvez écrire «
inscrivez-vous » comme bon vous semble. Ce ne sont donc que des chaînes. Tu peux utiliser ce que tu veux. L'idée est donc que
lorsque l'utilisateur appuie sur le bouton d'envoi,
les données,
c'est-à-dire le nom d'utilisateur et le
mot de passe, soient envoyées à la base de données où nous
enregistrons les noms d'utilisateur et les mots de passe. Cette base de données sera donc
lisible, afin que nous puissions l'écrire. Nous pouvons ajouter d'autres
noms d'utilisateur à cette base de données, et elle sera également lisible, ce qui signifie que lorsqu'un
utilisateur essaie de se connecter, nous allons
lire cette base de données pour voir si le
nom d'utilisateur et le mot de passe qu'il essaie d'envoyer avec un bouton de connexion se trouvent ou
non dans cette base de données. Et cette base de données sera un fichier JSON, un moyen simple de
gérer les données de nom d'utilisateur
et de mot de passe. C'est vrai. Maintenant, si vous enregistrez ce fichier Kiwi et que vous
exécutez le script Python, rien ne
se passera car le bouton d'inscription
imprime toujours cette chaîne de symboles et l'écran
que nous venons de créer n'est pas envoyé partout
pour être affiché Nous ne donnons donc aucun ordre pour afficher l'écran d'inscription La prochaine chose à
faire est donc de répertorier l'écran d'
inscription parmi les widgets
racines du widget, pour
ainsi dire, nommez l'inscription. écran. Les écrans
doivent donc avoir un nom. Et la raison en est
que maintenant,
dans le bouton d'inscription, nous pouvons faire la magie de faire en sorte
que
le courant des points du gestionnaire de points égal à l'écran d'inscription L'écran d'inscription est donc cette chaîne que
nous venons de créer Enregistrez le fichier Kiwi et exécutez le fichier Python pour
voir ce qui se passe. Vous pouvez donc avoir cette
erreur de
temps à autre , exception d'
usine au facteur KV, écran d'inscription à une classe
inconnu, ce qui signifie qu'il s'agit d'une erreur
survenue dans votre fichier KV L'écran d'inscription aux cours,
qui est celui-ci ici, inconnu car
il
n'y a pas de classe KV dans la bibliothèque Kiv,
comme c'est le cas pour les étiquettes de mise en page en
grille Ce sont tous des cours de
la bibliothèque Kiwi. L'écran d'inscription n'est donc pas une
classe de la bibliothèque KV, ni une classe
déclarée dans le fichier Python Il vous suffit donc de créer une classe d'écran d'inscription. En héritant de l'écran et
pour l'instant, il suffit de passer, d'exécuter à nouveau et de s'inscrire. Et voici notre nouvel écran. Nous avons donc obtenu l'étiquette,
deux zones de saisie de texte et un bouton d'envoi, qui ne sert à
rien pour le moment car cet écran d'inscription est connecté à la classe que
nous venons de créer Ainsi, quelles que soient les actions entreprises sur cette page, dans cet écran par l'utilisateur, elles correspondront à certaines fonctions que nous
allons ajouter à
l'écran d'inscription Et laissez-moi vous expliquer
cette ligne ici, self point manager dot current. self fait donc référence à l'instance de
cette classe actuelle, de la classe où se trouve self. Donc, objet d'écran de connexion. écran de connexion est la classe, et self est l'
objet qui a été instancié à partir de cette classe qui a été créé
à partir de cette Et puis le manager
est une propriété de l'écran. Donc, comme cette classe
hérite de l'écran,
l' écran est un parent et l'écran de
connexion est un enfant Et le parent donne à
l'enfant toutes ses méthodes, toutes ses propriétés,
tous ses attributs, y compris le manager, bien sûr. Ainsi, self peut
accéder au gestionnaire, puis le gestionnaire a son propre
attribut qui est actuel. Donc actuel du manager et du
manager de l'écran de connexion. Et cet attribut actuel
obtiendra le nom de l'écran vers lequel
vous souhaitez passer, qui est l'écran d'inscription, cet écran d'inscription ici, qui est un widget
que nous avons créé ici. Et c'est l'idée. Voici comment passer d'un
écran à l'autre à l'aide de QV. Merci.
183. 182. Capturer les entrées d'utilisateur: Bonjour, encore une fois. Ce que
nous avons jusqu'à présent dans notre application KV est la
première page de l'application, que j'ai choisi de nommer
comme écran de connexion Voici donc où les
utilisateurs se connectent et s'inscrivent. Et le bouton de connexion
n'a pas été implémenté, donc le mot de passe oublié et le bouton d'
inscription fonctionnent. Maintenant, il y a
certaines
choses que vous
voudrez peut-être faire ensuite, par exemple,
vous pouvez faire un travail de conception pour
qu' vous pouvez faire il y ait espaces entre
ces boutons,
ces entrées de texte
et ce bouton, ou peut-être
réduire ces
deux boutons et les afficher simplement sous forme liens au lieu de
boutons avec des carrés. Mais vous pouvez le faire,
mais ce que je préfère
faire moi-même,
c'est d'abord créer un design minimal, ce qui signifie que je veux
que le design fonctionne. Je veux juste qu'il
me suffise de voir les boutons pour le moment. Je m'en fous s'ils sont
trop grands ou trop petits. Je veux qu'ils travaillent.
J'appuie donc sur un bouton d'inscription, puis je veux
pouvoir y aller, non ? J'utilise un nom et un mot de passe. Et lorsque je clique sur Soumettre, je souhaite stocker ces
données dans la base de données. Je souhaite donc créer un nouvel
utilisateur avec ces données. Et puis, à la fin, une fois
que j'ai terminé toutes les
fonctionnalités du programme, je veux jouer avec un design pour le
rendre plus esthétique. Dans cette conférence, nous
allons donc implémenter le bouton d'envoi
afin que ces données soient stockées dans un fichier JSON. Bien, localisons le bouton d'
envoi qui se trouve ici et ajoutons l'attribut
press, qui
exécutera le point racine. La racine est donc une classe d'
écran d'inscription. Celui-ci, ici. Nous allons exécuter
la méthode de cette classe. Appelons cette méthode add user. OK, alors allons-y et ajoutons cette fonction à cette méthode. Ajoutez l'utilisateur Self Let's
Pass pour le moment. Cette méthode va donc
obtenir les valeurs,
donc les valeurs du nom d'utilisateur et
du mot de passe, les envoyer
et
les stocker dans le fichier adjacent. Où sont donc les valeurs ? Eh bien, nous pouvons accéder au
nom d'utilisateur en utilisant les identifiants root, point, et nous entrons ici l'ID du widget où le
nom d'utilisateur sera saisi. Donc, le widget de saisie de texte. Il n'a pas d'identifiant,
mais nous pouvons lui en donner un. pièce d'identité. Nom d'utilisateur. Je
ne devrais pas être entre guillemets, c'est
donc juste une variable. Ensuite, vous allez
écrire ici le nom d'utilisateur. Maintenant, si vous le laissez comme ça
et que vous obtenez également un root qui identifie
ce mot de passe. Donnons donc également un identifiant
au mot de passe. Colonne ID, mot de passe,
juste comme ça. Ensuite, dans la fonction d'utilisateur publicitaire,
créez des paramètres. Il peut utiliser un mot de passe. Donc, tout comme ces D, mais ce n'est pas lié. Vous pouvez avoir les
noms de paramètres que vous voulez ici. Et pour cette raison,
j'aimerais écrire le mot Name P, afin de ne pas le confondre
avec ces identifiants. Et pour l'instant, permettez-moi
d'imprimer le nom U et le mot P, juste pour voir ce que nous avons jusqu'à présent. Très bien, inscrivez-vous. Disons u1p1, nom d'utilisateur et
un mot de passe.
Pourquoi pas ? Soumettez et si vous
n'obtenez rien, nous n'avons
peut-être pas
enregistré le fichier QB Le fichier Python est
enregistré automatiquement, et inscrivez-vous à nouveau, U one, P one, soumettez. Oui, soumettez, soumettez. Donc, ce que nous obtenons
en retour, c'est ceci, qui correspond au nom, et ce sont des mots P. Ce sont donc les objets de saisie de
texte. Maintenant, si vous voulez que
le texte saisi par l'utilisateur soit
dans ces zones de saisie de texte, vous
devez accéder à
la propriété du texte. Idem pour le mot de passe,
enregistrez, exécutez et fermez cette
fenêtre précédente pour obtenir la nouvelle. Un P, un, envoyer, et maintenant nous obtenons le
texte réel que l'utilisateur a saisi. C'est ainsi que nous
obtenons les valeurs des zones
de saisie de texte et
les envoyons à Python pour un traitement
ultérieur. Donc, root fait référence à
un écran d'inscription. Ajouter un utilisateur est une méthode
dans l'écran d'inscription. Un root est à nouveau un écran d'inscription. Les identifiants de classe sont une propriété de
l'objet de l'écran d'inscription, qui
provient en fait de l'écran L'écran hérite donc de l'écran d' inscription et l'écran d'inscription possède ces identifiants,
ce qui donne en fait une
sorte de dictionnaire contenant
tous les identifiants contenus dans la règle de
l'
écran ce qui donne en fait une
sorte de dictionnaire contenant d'inscription Dans ce cas, il vous donne accès au nom d'utilisateur au mot de passe. root identifie ce mot de passe, vous
envoie du texte vers l'objet de saisie de
texte qui possède un mot de passe ID, puis avec le texte, vous
accédez à la valeur réelle de ce mot de passe lors de la prochaine conférence Passons à travailler avec le fichier
JSON pour stocker ces
données dans le fichier JSON.
184. 183. Traitement des inscriptions d'utilisateurs +: Bonjour, encore une fois, dans cette conférence, nous allons implémenter
l'écran d'inscription de telle sorte que lorsque l'utilisateur
saisit le nom d'utilisateur et le mot de passe,
puis clique sur Soumettre, ces données seront
stockées dans le fichier JSON de l'utilisateur, que j'ai ici. Vous pouvez donc soit créer un fichier vide et l'appeler
comme les utilisateurs pointent JSON, soit obtenir mon fichier, que vous pouvez trouver
en pièce jointe dans les ressources du cours. Et dans ce fichier, j'ai
déjà deux utilisateurs. Il s'agit de données JSON. Pour améliorer son apparence, vous pouvez le formater en utilisant,
si vous êtes sous Windows, Shift Alt F.
Si vous êtes sur Mac, utilisez l'option Shift F.
Si vous êtes sous Linux ,
utilisez Control Shift I. Lorsque vous utilisez cette combinaison, vous pouvez le formater en utilisant,
si vous êtes sous Windows,
Shift Alt F.
Si vous êtes sur Mac,
utilisez l'option Shift F.
Si vous êtes sous Linux,
utilisez Control Shift I.
Lorsque vous utilisez cette combinaison,
le code JSON sera formaté comme suit L'idée ici est que l'application
ajoutera plus d'utilisateurs ici lorsque l'utilisateur appuiera sur le bouton
d'envoi sur
la page d'inscription Il s'agit essentiellement d'un
gros dictionnaire Python. Cela commence ici et se termine ici. Ce dictionnaire contient des valeurs
comme cette clé ici. Et la valeur de cette première clé, c'est
donc la clé
du grand dictionnaire. La valeur de cette clé
est ce dictionnaire. C'est donc un autre
dictionnaire dans le grand dictionnaire, mais
c'est un autre problème. Cela peut se passer comme dans ce cas. Ce dictionnaire
contient donc les données. Donc, le nom d'utilisateur, c'est encore une fois, un
utilisateur comme celui-ci. Le mot de passe est Pessah One. Il s'agit donc d'un utilisateur existant. J'ai créé ce fichier manuellement, mais le programme pourra
également créer ce fichier
et ajouter d'autres utilisateurs. C'est donc ici que la valeur de cette clé se termine, puis
commence l'autre clé, l'autre utilisateur deux. C'est le nom d'utilisateur. Vous pouvez
également voir ici, étape 2, s'agit
de la date à
laquelle ce nom d'utilisateur a été inséré dans le fichier JSON Gardons ce dossier
ouvert ici. Réduisez l'espace du terminal. L'utilisateur
appuie donc sur le bouton d'envoi,
le bouton d'envoi, appelle la fonction d'utilisateur publicitaire, et ces deux arguments sont
transmis à l'appel de fonction. Donc, ajouter un utilisateur, c'est celui-ci ici. Vous nommez donc P word. Qu'allons-nous faire
avec ces deux valeurs que l'utilisateur a saisies
dans les zones de texte ? Eh bien, ce que je vais faire,
c'est tout d'abord ouvrir le fichier
json aux utilisateurs en tant que fichier, et je demande aux utilisateurs de le charger
dans un dictionnaire, afin que les utilisateurs soient égaux à une charge de point json. Nous devons saisir Jason ici. JSON est donc une bibliothèque. Et maintenant, juste comme étape
intermédiaire, imprimons les utilisateurs pour
voir ce que nous avons obtenu jusqu'à présent. Inscrivez-vous U one, P one, soumettez, et voici ce que nous obtenons. C'est donc ce que nous
avons actuellement dans le fichier JSON. Et c'est en fait un dictionnaire Python pour les utilisateurs
. Maintenant, ce que nous pouvons faire
à ce dictionnaire c'est ajouter une autre valeur. Donc, une autre paire
de clé et de valeur, ce qui est assez facile à faire. Nous parlons donc d'utilisateurs. Quelle clé devons-nous ajouter ? Eh bien, c'est ce que nous apprend Name. Nous allons donc ajouter le nom d'utilisateur U one que
j'ai saisi en tant qu'utilisateur. Nous allons donc avoir
un troisième nom d'utilisateur, et sa valeur
sera un dictionnaire. Donc, tout comme nous avons pour
l'utilisateur 1, ce dictionnaire, nous allons
également avoir pour U ce dictionnaire, et donc le nom d'utilisateur. Pour Key, le nom d'utilisateur
sera, encore une fois, U Name. Et puis le mot de
passe sera P word. Un mot P. Nous sommes donc là. P word, qui va
obtenir la valeur P un. Et puis, comme nous n'
avons pas beaucoup d'espace ici, je vais mettre une virgule pour continuer l'expression
sur une autre ligne Si vous pensez qu'
une ligne est trop longue, vous pouvez la diviser en plusieurs lignes uniquement si elle est entre
parenthèses, comme dans le cas d'une définition de
fonction, ou entre crochets, comme dans le cas
d'une liste, ou entre accolades, comme dans le cas
d'un dictionnaire Dans les trois cas, le code fonctionnera parfaitement. Vous ne pouvez pas diviser une ligne dépourvue parenthèses, de
crochets ou d'accolades Si vous essayez de le faire,
vous allez obtenir une erreur de syntaxe, sauf si
vous utilisez une barre oblique BC Une barre oblique inverse vous permet de
diviser une expression
en plusieurs lignes, même si cette expression n'est pas entre parenthèses,
crochets division d'une expression en plusieurs lignes améliore la
lisibilité du code Il est recommandé de fractionner une expression lorsqu'elle
atteint 79 caractères. Il ne s'agit toutefois que
d'une recommandation. Cela n'a aucun
effet sur le code. Alors, quelle est la prochaine étape ? Eh bien, j'ai créé la clé créée. La valeur de cette valeur
sera la date et l'heure. Maintenant, importons d'abord la date et l'heure Date, heure,
importation, date, heure. Donc, la classe diurne
du module datetime. C'est donc la classe datetime
que j'ai saisie ici. En plein jour, je peux vous montrer ce que j'
essaie de faire pour arriver ici. Donc, à partir de la date, de l'heure, de l'importation, de la date , de l'
heure et du point diurne, nous vous donnerons cet objet
datetime Et ce que nous voulons en tirer, c'est extraire une chaîne de caractères. Nous voulons connaître l'
ici, le mois, le jour, les heures, les
minutes et les secondes. Cela va donc nous donner la date et l'heure dans
ce format de chaîne. Donc ça va entrer ici. C'est vrai. Et c'est tout. Maintenant, permettez-moi d'imprimer
à nouveau les utilisateurs ici. Fermez cette fenêtre précédente, inscrivez-vous U one, P one, soumettez. Et vous pouvez voir maintenant que nous avons une autre paire de clé et de valeur. Donc, le nom d'utilisateur UO avec le
nom d'utilisateur UO le mot de passe P un et créez-le en ce moment
même. Alors, que pouvons-nous faire avec ce nouveau dictionnaire maintenant ?
Eh bien, rien d'extraordinaire. Nous avons juste besoin d'ouvrir
les utilisateurs en JSON, mais cette fois en mode
écriture sous forme de fichier, et nous accédons à JSON,
le module JSON, déchargeons le dictionnaire
de l'utilisateur dans le fichier. Et c'est tout. Donc, ce que je fais à ce stade, je remplace les utilisateurs,
les utilisateurs existants dans
ce fichier JSON Un tout nouveau
fichier va donc être créé à ce
stade, un fichier vide. Et dans ce fichier vide, je vais écrire le
nouveau dictionnaire des utilisateurs, qui sera celui-ci ici. Le nouveau dictionnaire
inclura donc les utilisateurs existants, comme vous l'avez vu ici,
l'utilisateur 1 et l'utilisateur 2, et il ajoutera également
l'utilisateur actuel. J'espère donc que c'est clair. Vous savez, si nous le testons maintenant, interrompez la
session en cours avec Control C, exécutez le code, inscrivez-vous, U un, P un, soumettez. J'appuie donc sur le bouton d'envoi, rien ne se passe maintenant car tout se
passe en arrière-plan, donc l'utilisateur a mis à jour le
fichier. Maintenant, si vous regardez les
utilisateurs de ce fichier JSON, vous verrez qu'
il existe actuellement un bogue dans le code de Visual Studio qui empêche d'
actualiser les fichiers lors de
leur mise à jour. J'espère que cela sera
bientôt résolu par les développeurs de code de Visual
Studio. Ce problème a été signalé. Quoi qu'il en soit, nous
pouvons vous
rendre dans l'explorateur de fichiers de
votre système d'exploitation où vous avez ces fichiers et
utiliser un autre éditeur de texte, tel que Not Pat. J'ai un atome ici, édition de texte. Choisissez donc l'un d'entre eux, et vous verrez que
dans l'autre éditeur, les modifications ont été enregistrées
dans le fichier JSON de l'utilisateur. Vous pouvez donc voir que
U One est là. Donc, en utilisant un U, pass ou un P et la
date de création. C'est ainsi que vous ajoutez un nouvel
utilisateur au fichier JSON. Enfin, ce que nous devons
ajouter ici, car vous voyez que lorsque vous appuyez sur
Soumettre et que rien ne se passe, vous ne vous rendez pas compte si vous vous êtes enregistré avec succès en tant qu'utilisateur ou non. Dans l'autre conférence,
créons donc un autre écran qui s'affichera lorsque l'utilisateur appuiera sur un
bouton d'envoi. À bientôt.
185. 184. Créer une page de réussite d'inscription: À ce stade, nous pouvons ajouter des
utilisateurs à la base de données en les
écrivant dans ces zones de texte et en appuyant sur le bouton d'envoi. Maintenant, affichons une autre page lorsque l'utilisateur appuie sur Soumettre. Eh bien, nous pouvons le faire de
la même manière que lorsque nous sommes passés de l'écran de
connexion à l'écran d'inscription Nous l'avons donc
fait
en écrivant dans la fonction d'inscription de la classe d'écran de
connexion, nous avons écrit ce
courant d'autogestion égal à l'écran d'inscription Nous pouvons faire la même
chose ici. La fonction d'utilisateur publicitaire
est donc appelée lorsque l'utilisateur
appuie sur un bouton d'envoi. Nous pouvons donc faire en sorte que le courant des
points du gestionnaire de points soit égal à. Appelons cela le succès de l'écran d'
inscription. Ce sera donc
un autre écran que nous allons répertorier ici, inscrivez-vous. Succès de l'écran. Le nom doit être le
même que celui que vous avez utilisé ici. Et bien sûr, nous devons
créer cet écran. Succès de l'écran d'inscription, une colonne. Et ce
à quoi j'aimerais que cette page ressemble, c'est que j'aimerais
qu' porte une étiquette où il est écrit «
Inscription réussie ». Et puis il devrait y avoir un
bouton sous cette étiquette, qui indiquerait page de connexion. L'utilisateur peut donc appuyer sur
ce bouton et
revenir à la page de connexion
où il peut se connecter. Passons donc à l'écran de connexion. Par conséquent,
nous avons tout d'abord besoin d'une disposition en grille. Nous avons juste besoin d'une colonne, puis nous avons besoin d'une étiquette. Le texte de ce serait. Inscrivez-vous avec succès dans les codes, puis vous avez besoin d'un bouton. Le texte du bouton
serait la page de connexion. Et laissons les choses
comme ça pour le moment. Je vais juste tout
exécuter pour voir à quoi cela sert. Nous avons donc eu une erreur (exception d'
usine). Bien entendu, nous n'avons pas
le succès de l'écran d'inscription. Nous devons donc ajouter une classe d'
inscription à l'écran de réussite, qui hérite de l'écran, et passons là Exécutez à nouveau.
L'écran de nom n'est pas défini. Oui, j'ai tapé ici, écran Inscrivez-vous trois P trois, soumettez, inscription réussie, le libellé et la page de connexion, qui ne font rien pour le
moment car nous n'avons pas d'attribut de pression
pour ce bouton. Donc, oui, pour terminer, voici
ce que nous avons fait pour implémenter cet écran afin de passer
à l'écran suivant. Nous avons donc d'abord ajouté un écran d'autogestion dans
la fonction d'utilisateur publicitaire. Cela changera
l'écran actuel en cet écran ici. Et cet écran a
été défini ici, et il est représenté par
cette classe en Python. Et c'est tout. ,
trois et quatre points Nous avons donc dû ajouter 12,
trois et quatre points. Maintenant, essayez comme exercice d'
implémenter le bouton de connexion. Ainsi, lorsque l'utilisateur appuie sur le bouton de
connexion dans la page, vous souhaitez vous
inscrire, quatre ou quatre. Lorsque l'utilisateur appuie sur Login, retournez à la page principale, donc à la page de connexion, qui est celle-ci
ici. Essaie de le faire.
186. 185. Commutation d'une page à l'autre: Permettez-moi donc d'implémenter rapidement
le bouton de la page de connexion. C'est vrai. Le
bouton de la page de connexion se trouve juste ici. Donc, en appuyant sur le
point root, accédez à Login. C'est ainsi que j'appelle la fonction. Nous en sommes donc à la règle de réussite de
l'écran d'inscription, ce qui signifie que nous devons passer à la
classe de réussite de l'écran d'inscription et définir la fonction go to login
self et, bien sûr ,
self, c'est manager,
c'est actuel, égal à l'écran de connexion, qui est celui-ci ici Nous avons donc déjà cet écran. Nous n'avons pas besoin de créer
un nouvel écran pour le moment. Enregistrez le fichier QV et
exécutez-le, inscrivez-vous. Ux, P six,
peu importe le nom d'utilisateur
et le mot de passe que vous soumettez. Inscription réussie,
étiquetée page de connexion,
qui vous ramène
à l'écran de connexion. Maintenant, il faut
garder à l'esprit le sens de la
transition des écrans. Donc actuellement, par défaut, la transition s'appelle gauche. Alors tu vas t'inscrire. Le mouvement est donc que l'écran suivant
se dirige vers la gauche. Donc, vous réglez le pH. Maintenant, l'écran suivant ira
vers la gauche comme ça. Et lorsque vous vous connectez, vous voudrez
peut-être
aller vers la droite. Donc, pour changer la
transition vers la droite, ce qui est plus logique. Donc, si vous voulez le faire, allez à l'endroit où vous réglez
l'écran actuel. Nous voulons donc modifier la transition de
l'écran de connexion. Ainsi, lorsque nous définissons l'écran
actuel comme connexion, nous voulons que le manager fasse la transition
dans la bonne direction. Exécutez ça, inscrivez-vous. Je vais juste y soumettre quelques chaînes
vides juste pour essayer rapidement l'interface. Soumettez donc qu'il s'agit d'un nouvel utilisateur avec des chaînes vides.
Peu importe. Vous pouvez mettre quelques restrictions
plus tard si vous le souhaitez. Allez donc sur la page de connexion. Et donc cette fois,
l'écran suivant part de la gauche
vers la droite. Donc, si c'est ce que vous voulez, qui me semble logique, vous
devez utiliser cette propriété de transition de la propriété
du gestionnaire, qui possède une
propriété de direction, et la définir sur right. C'est l'idée.
187. 186. Traitement des informations d'identification d'utilisateur: Ce que nous avons fait jusqu'à présent avec
notre programme, c'est de créer la première page où l'
utilisateur peut se connecter et nous avons également créé la
page d'inscription où les nouveaux utilisateurs peuvent s'inscrire et devenir membres
de notre base de données JSON Dans cette conférence, nous allons
implémenter la
fonctionnalité de connexion. Laissez-moi vous montrer comment fonctionne
la version finale
du programme. Je ne te montre pas le code. Pas encore, mais comment fonctionnera
le login. Ignorez la
belle interface, ou nous le ferons plus tard. Nous devons maintenant
réfléchir à la fonctionnalité. Ainsi, lorsque l'utilisateur se
connecte, il saisit les données. Ils appuient sur Login, et ils accèdent à cette
page interne du programme. Nous avons donc un bouton
qui, si nous survolons la
souris, deviendra rouge, et si nous cliquons, il
nous déconnectera et nous
ramènera à la page de connexion Si le Delta se trompe, il indiquera un
nom d'utilisateur ou un mot de passe erroné. Encore une fois, lorsque les
données seront correctes, nous serons redirigés vers cette page. Donc, dans cette conférence,
allons-y et créons cet écran. J'en ai fait une capture d'écran, nous l'avons
donc ici
pour référence. Nous devons donc ajouter
un écran supplémentaire dans la liste des écrans ici. Nommons l'écran « Succès de l'écran de
connexion ». Et nommez, disons
sur les mêmes lignes, écran de
connexion Success, puis créez une règle pour cet écran. Je vais juste le
copier-coller. Alors, qu'est-ce que nous avons ici ? Eh bien, nous commençons par
la disposition en grille, qui comporte une colonne. Pour l'instant, je vais juste
fournir un simple bouton. Plus tard, nous implémenterons les fonctionnalités que vous
venez de montrer avec cette animation. Lorsque vous placez votre
souris sur le bouton, celui-ci devient rouge. Donc, pour l'instant,
utilisons simplement un simple bouton. Avec texte. Attention à la presse. Nous allons donc devoir créer une classe de réussite d'écran de connexion dans le code Python et
y
créer une fonction pour déconnecter l'utilisateur. Alors attention. Oui, c'est ainsi que j'
aimerais appeler la fonction dans la classe de réussite de l'écran de connexion que nous allons créer. Laissons le
bouton comme ça, puis nous avons une étiquette. Comment pensez-vous
que c'est le label ? Texte Nous
demandons donc à l'utilisateur ce qu'
il ressent pour qu'il puisse saisir un sentiment, puis nous lui
donnons des citations, en fonction de ce qu'il
ressent pour le faire se sentir mieux ou pour
améliorer son sentiment. Les citations sont une bonne chose. Les gens très intelligents
y ont bien pensé, alors utilisons-les.
Utilisons-les. Saisie de texte. Avec un indice ? Texte. Ici, vous pouvez écrire
ce que vous voulez, mais j'aimerais leur donner un indice pour qu'ils sachent
ce qu'ils peuvent saisir ici. Donc, sans avoir à inclure description détaillée ici dans le corps de l'
interface de la page, gardons l'interface propre et utilisons cette
zone ici dans le manuel Donc des choses à essayer. Heureux, triste, mal aimé. Oui, ça devrait aller. Et puis nous avons un autre
bouton avec du texte Enlighten me. N'hésitez pas à utiliser n'importe quel nom. C'est jusqu'où va mon
imagination. Et maintenant, à la pression, qu'allons-nous faire lorsque l'utilisateur appuie sur ce bouton ? Eh bien, lorsque l'utilisateur
appuie sur ce bouton, nous allons afficher
du texte sous le bouton. Nous aurons donc
besoin d'une étiquette. Et son texte pour le moment
n'est qu'une chaîne vide. Incluons donc
un attribut de presse pour le bouton plus tard. Pour l'instant, permettez-moi de
rédiger un article sur le succès de
l'écran de connexion au cours, qui hérite, bien sûr, de l'écran et qui contient une méthode Déconnectez-vous. Déconnectez-vous pour
déconnecter l'utilisateur. Et ici, je voudrais d'abord définir une direction pour la
transition de cet écran. Disons-le correctement. La déconnexion revient à
la page précédente, il est donc logique d'avoir une bonne direction
pour la transition Alors, bien sûr, directeur, c'est actuellement égal à. Où voulons-nous emmener
l'utilisateur après sa déconnexion ? Nous voulons amener l'utilisateur
à l'écran de connexion. Encore une fois, cela
a du sens, non ? Donc, écran de connexion. Très bien, nous avons donc la page. Nous avons créé la page de réussite de l'écran de
connexion, qui était celle-ci ici. Permettez-moi donc de clore ceci pour avoir
plus de place pour le code. Cependant, nous n'avons pas encore implémenté la fonctionnalité
du bouton de connexion. La connexion u1p1 ne fonctionne donc pas. Trouvons donc
le bouton de connexion. Ce qui se trouve sur l'écran de connexion. Oui. L'écran de connexion. Oui. Il s'agit donc d'un
bouton de connexion. Alors, que voulons-nous faire
lors d'un événement de presse ? Eh bien, nous voulons exécuter une
route qui enregistre la fonction de connexion, nous devons avoir dans la
classe d'écran de connexion juste ici. C'est donc essentiellement la
même idée que celle d'un utilisateur d'annonces. Une fonction dans laquelle nous avons attribué
la fonction d'utilisateur publicitaire, nous lui avons fourni le
nom d'utilisateur et le mot de passe. Encore une fois, nous faisons la même
chose avec define login. Soi et donc ici nous
devons donner deux arguments. Le premier
serait les racines, les identifiants, nom
d'utilisateur, le texte. Et le second serait un
identifiant root, un point, un mot de passe, un point, un texte. Nous parlons donc ici,
désolée pour le type d'ici. Nous parlons du
nom d'utilisateur que l'utilisateur saisit dans
la zone de saisie de texte
et du mot de passe qu'il saisit dans
la zone
de saisie de texte l'écran de connexion. Donc, root fait référence à
l'écran de connexion à la règle actuelle dans laquelle
vous écrivez le code ici. Et nous n'avons pas d'
identifiant pour la saisie de texte, alors allons-y et faisons un identifiant, utilisons le nom, pareil pour le mot de passe. Ensuite, nous prenons ce
nom d'utilisateur et ce mot de passe
dans la fonction de connexion. Utilisons le nom et le
mot P comme paramètres. Tu peux utiliser le
nom que tu veux. Vous pouvez également utiliser un
nom d'utilisateur et un mot de passe. Alors, comment connecter un utilisateur ? Eh bien, l'idée est que nous devons ouvrir pour lire le fichier
JSON contenant données de
l'utilisateur et vérifier si ce nom d'utilisateur et ce mot de
passe se trouvent dans ce fichier. Ou plus précisément, si ce nom d'utilisateur figure dans le fichier
et qu'il contient un mot de passe, le mot de passe que l'utilisateur fournit dans l'interface utilisateur
graphique. Si tel est le cas, nous changeons d'écran en utilisant une propriété manager point
current. Nous passons à l'
écran que je viens de vous montrer que nous venons de construire et nous n'avons pas
encore vu à quoi il ressemble. Permettez-moi donc de l'
implémenter rapidement avec open users dot JSON has file. Donc, en mode lecture, lorsque nous ne définissons pas
le R comme ça, cela signifie implicitement que
nous lisons le fichier Utilisateurs égaux au JSON
qui se chargent. Le dossier. Cela
nous donnera un dictionnaire. Les utilisateurs seront le dictionnaire contenant toutes les données contenues dans
le fichier JSON des utilisateurs. Et puis si vous nommez des utilisateurs. Donc, ce que nous faisons ici,
c'est, laissez-moi vous le montrer. Nous avons donc besoin de cette bibliothèque JSON et Users sera le
dictionnaire, n'est-ce pas ? beaucoup de données là-bas. Et
si nous disons, par exemple, il y a 77 utilisateurs, nous allons
réussir parce que U sept figure
en fait parmi les clés du
dictionnaire. Donc ici, ou sept, vous pouvez ignorer l'utilisateur. s'agit simplement d'un préfixe pour indiquer qu'il s'agit
de données Unicode, mais ce sont les chaînes contenues
dans les codes U seven fait donc partie
des clés du dictionnaire. Vous pouvez également obtenir une liste
claire des clés. Avec ça. Donc, les utilisateurs qui s'embrassent, vous voyez que nous sept
faisons partie de ces données. C'est pourquoi nous devenons vrais, et nous pouvons nous en servir
et dire,
je suis le nom d'utilisateur dans les utilisateurs, je suis le nom d'utilisateur dans les utilisateurs, donc nous vérifions d'abord si le
nom d'utilisateur se trouve dans la base de données. Mais nous devons également
vérifier et, utilisateurs, vous nommez le mot de passe égal à PWord, donc c'est notre
condition, en fait La première est donc que le nom
d'utilisateur doit exister. Et la seconde est que vous savez, les utilisateurs, vous nommez, disons, sept, donc l'utilisateur U
sept est équivalent à cela. Cela nous donnera donc le dictionnaire que possède
la clé u seven. C'est comme la valeur
du ku sept. C'est donc un dictionnaire.
Et si nous continuons notre chaîne d'accès,
nous utilisons un mot de passe. Nous accédons donc à la
valeur du mot de passe clé. Chacun de ces dictionnaires
possède ce mot de passe comme clé, et la valeur de ce mot de passe
est le mot de passe réel Donc P sept dans ce cas. Nous vérifions donc
si le mot de passe de cet utilisateur est un mot de passe que
l'utilisateur fournit ici. Donc, mot de passe, ce
texte se trouve ici. Il doit s'agir d'un opérateur d'égalité, et non d'un opérateur d'assignation. Donc, si c'est le cas, alors South Manager est le même que la page de réussite de la
connexion, le succès l'écran de
connexion
que nous avons créé. C'est vrai. Et nous devons également y ajouter
un conditionnel s, mais laissez-moi essayer de voir ce que nous avons jusqu'à présent et déboguer le code si nous avons
des problèmes Donc sept P sept se connectent, et voici un écran. Il s'agit donc d'un bouton de déconnexion. Comment te sens-tu ? La zone de texte
que nous avons créée Enlighten me, et c'est dans cette zone que
le texte serait affiché Pour l'instant, cela ne fonctionne pas
car nous n'avons pas associé de fonction au bouton
Enlighten me Je vais maintenant essayer le bouton de
déconnexion. Donc, out n'est pas défini, comme vous pouvez le voir ici l'erreur. Donc, notre bouton de déconnexion
qui se trouve ici lorsque vous appuyez
dessus indique que
nous devons écrire
root, c'est Logout Cela indique donc la fonction de déconnexion réussie de
l'écran de connexion C'était donc un problème. Nous n'avons pas précisé la classe
qui avait ce bouton de sortie. Alors laisse-moi réessayer. P seven login, Lou et nous revenons à la
page de connexion lorsque nous nous déconnectons Et si nous saisissons des
données erronées, rien ne se passera. Voici donc ce que
nous allons faire. Nous allons ajouter
une étiquette juste en dessous du bouton de connexion entre ces deux boutons et
le bouton de connexion. Alors allons-y et faisons-le. Nous parlons de
l'écran de connexion. Il s'agit du bouton de connexion. Ajoutons donc l'
étiquette avec du texte, elle est vide pour le moment. Alors enregistrez-le, fermez cette
fenêtre, réexécutez. Maintenant, nous avons un espace
ici. C'est donc une étiquette. Et maintenant, dans cette étiquette, lorsque les données sont correctes, nous passons à la page
de réussite de
l'écran de connexion . Nous devons maintenant avoir
accès à l'identifiant de l'étiquette. Mettons donc d'abord un identifiant
sur l'étiquette, connectez-vous mal. Donc voilà, maintenant nous devons accéder
à cette étiquette. La façon dont vous le faites
est d'utiliser vous-même. Self pointe vers l'objet de l'écran de
connexion. Ensuite, nous cherchons
les identifiants de soi. Login, faux identifiant. C'est donc l'objet de l'étiquette. Nous devons maintenant accéder au texte
de l' objet d'étiquette et attribuer
au texte un
nom d'utilisateur ou un mot de passe erroné. Assurez-vous donc d'enregistrer le fichier
QV et d'exécuter le code. Juste quelques données aléatoires qui ne
figurent pas dans la base de données, connectez-vous et nous
y obtenons le label comme prévu. Seven P seven, connectez-vous, et nous allons à la page de connexion. C'est ainsi que vous accédez aux
éléments du fichier Ki. Ainsi, lorsque vous êtes dans le KivFle, root pointe vers la classe
associée à cette règle Donc, écran de
connexion, classe d'écran de connexion, ces noms doivent être les mêmes. Et lorsque vous êtes dans
le fichier Python, self pointe vers cette
classe d'écran de connexion. Et comme l'écran de
connexion ici et l'écran de connexion là-bas
communiquent entre eux, ils obtiennent et reçoivent des données. Cela signifie que l'
objet personnel connaît les identifiants et tous les widgets que contient l'écran de connexion. Par conséquent, vous
recherchez le
mauvais identifiant de connexion pour
étiqueter cet objet
de l'écran de connexion, puis vous accédez au texte. Donc, les racines du selfie sont
là, et c'est tout. Passons maintenant à la prochaine
conférence et abordons d'autres points intéressants
à propos de l'interface.
188. 187. Affichage de la sortie à l'utilisateur +: Pour cette conférence, j'aimerais que
vous consultiez les ressources de cette conférence et que vous téléchargiez
les trois fichiers texte. Ensuite, dans l'
explorateur de votre IDE, créez un nouveau dossier. Donnez-lui un nom tel que des guillemets, puis placez ces trois
fichiers dans ce dossier des. Vous pouvez utiliser le
glisser-déposer si vous le souhaitez. Par exemple, j'ai
ces fichiers quelque part, et je vais simplement les
glisser-déposer dans ce dossier. Vous voyez donc que les fichiers se
trouvent maintenant dans le dossier des citations. Donc, dans le cadre
de cette conférence
, dans le cadre du programme que nous
avons, nous allons écrire l'un de ces trois remplissages
supportés pour le moment Vous pourrez ajouter d'autres fichiers ultérieurement
si vous disposez de certaines données. Mais c'est ce que nous avons obtenu jusqu'à présent. Ainsi, lorsque l'utilisateur appuie sur
le bouton Enlighten me, nous voulons afficher
l'un des guillemets contenus dans le fichier TXT
heureux Donc, une de ces lignes. Certaines sont longues, d'autres plus courtes. Ainsi, si l'utilisateur saisit le SAD, vous voulez afficher ici dans cette zone l'une des lignes
du SAD, ce fichier TxD Ce sont également nos citations. Vous avez donc compris l'idée. Et si l'utilisateur saisit
un remplissage inconnu , par exemple excité. Et lorsqu'ils appuient sur un bouton, vous voulez leur montrer d'essayer
un autre remplissage, car vous
ne pouvez pas y couvrir tous les
remplissages possibles C'est donc ce que nous allons
faire dans cette conférence. Point principal pi.
Commençons donc par le bouton. Essayez de localiser le bouton
Enlighten me. Ou du moins c'est ainsi que s'appelle
mon bouton. Donc, ce bouton fait partie de la page de réussite de
l'écran de connexion. Et nous n'avons pas encore d'attribut de
presse. Donc, sur presse, vous
voulez exécuter une méthode de la classe de réussite de
l'écran de connexion
, que j'ai ici. Pour que l'écran de connexion réussisse, il dispose déjà d'une méthode, Logout, qui est exécutée lorsque ce bouton est
enfoncé sur le bouton Logout Nous voulons maintenant implémenter
la méthode Gute. Codez vous-même comme d'habitude. Cette méthode doit donc maintenant
communiquer la valeur que
l'utilisateur a communiquer la valeur que
l' saisie
dans la saisie de texte. Quelle est donc la racine sur laquelle les identifiants pointent. Nous n'avons pas d'
identifiant pour la saisie de texte, alors mettons-en un. Il s'agit donc d'une saisie de texte où l'utilisateur
a saisi le remplissage. Mettons-y donc de la garniture. Si ce remplissage est rempli, nous
voulons obtenir le texte de
cette saisie de texte. Donc, cette garniture ira ici. Appelons-le simplement remplir, à
ne pas confondre
avec le mot remplissage. Et la première chose que nous
pourrions vouloir faire est de voir si nous
accédons correctement
au texte de remplissage. Alors, imprimez le remplissage. Et assurez-vous d'enregistrer le design selon lequel le
fichier KV exécute Login J'ai pu me connecter
car j'ai ce nom d'utilisateur que j'ai créé plus tôt. Lorsque je me suis inscrit, j'ai
créé un nom d'utilisateur qui est une chaîne vide et une chaîne vide
pour le mot de passe. Donc, en gros, il s'agit
d'un utilisateur avec une chaîne vide, chaîne
vide comme
nom d'utilisateur et mot de passe, ce qui fonctionne parce que
je n'ai mis aucune restriction sur le
nom d'utilisateur et le mot de passe. C'est donc juste pour des
raisons de simplicité lorsque vous essayez lorsque vous testez
l'application. Joyeux, éclaire-moi, et
ainsi nous serons heureux. String, là. Et si
c'est avec un grand âge, tu vas être heureuse. La première chose que nous
pourrions vouloir
faire est de changer le champ
en minuscules Même si l'utilisateur est
satisfait d'avoir atteint l'âge du capital, nous allons le convertir en
minuscules
afin de pouvoir le comparer aux noms
figurant
dans les fichiers texte
avec les noms de fichiers Voyons maintenant quels
sont nos sentiments disponibles. J'assigne donc une variable
available feelings, et je vais utiliser
le module globe pour obtenir une liste des noms de fichiers C'est ce que cela
va me donner. Une erreur, bien sûr, car
je n'ai pas importé Glob. Il vous donne donc une liste
de tous les fichiers. Toutes les
garnitures disponibles sont disponibles. Nous sommes ici dans la méthode
get quote. Désormais, la liste des remplissages disponibles ressemble
désormais à une
liste de chemins de fichiers Ce que je veux faire, c'est
extraire tous les noms de ces
fichiers, uniquement la partie définie. Une façon de le faire est d' utiliser l'objet path de
la bibliothèque Path Leap, vous n'avez pas besoin d'
installer cette bibliothèque. Il est livré avec Python.
C'est une bibliothèque standard. En utilisant Path, si vous
attribuez un chemin, tel que des codes, définissez TXT puis extrayez
le STEM à partir de celui-ci. Je vais vous donner le nom
du fichier sans l'extension sans l'
autre partie du chemin. En fait, il existe
de nombreuses méthodes de cheminement, et STEM est l'une d'entre elles. Vous pouvez donc obtenir le suffixe,
le nom du fichier, y compris l'extension
telle que celle-ci et ainsi de suite Ce que nous pouvons faire ici maintenant c'est utiliser
cette propriété STEM, et nous devons l'appliquer
à tous les noms de fichiers Pour ce faire, vous pouvez utiliser
un minimum de compréhension. Donc, les sentiments disponibles sont à la
hauteur du chemin. Disons nom de fichier pour nom de fichier
dans les sentiments disponibles. Et ici, j'aimerais diviser
la ligne en plusieurs lignes. Comme c'est entre
crochets, je suis autorisé à diviser la ligne. Nous voulons donc en
tirer le meilleur parti. Alors nous voudrons peut-être essayer d'imprimer ici les garnitures
disponibles Assurez-vous également d'importer depuis path lip Import Path,
puis d'exécuter l'application. Et j'ai eu une erreur
lorsque j'ai appuyé sur le bouton. L'objet String
n'a pas d'attribut STEM. Oui, bien sûr,
parce que je l'ai fait ici. Au lieu de mettre STEM
après l'objet path, je le place juste
à côté du nom du fichier. Le nom du fichier est une chaîne. C'est pourquoi vous
obtenez que STR n'a pas de STEM. Mettons-le ici et
réessayons. Éclaire-moi. Joyeux set and Loaf.
C'est ce que nous voulons. Nous avons maintenant les
sentiments disponibles dans une liste. Que puis-je faire maintenant ? Je peux dire que je me sens
disponible. Donc, si ce sentiment se trouve dans
les sentiments disponibles, alors ce que nous voulons faire
ensuite, c'est ouvrir le fichier
qui contient ce sentiment qui contient une citation
pour ce sentiment. Utilisons donc un open. Je vais utiliser le
formatage des chaînes ici. F. Donc, entre guillemets, je vais
ouvrir ce chemin de fichier, qui contient ce
point de remplissage TXT pour un fichier. Alors, qu'est-ce que je fais ici ? Eh bien, ce que cela
va me donner,
c'est l'impression que l'utilisateur est content, n'est-ce pas ? Nous obtenons donc cette variable.
Elle a une valeur. Et si nous obtenons maintenant cette chaîne, allons nous donner le chemin du
fichier pour ce remplissage. Cette expression entre accolades va donc être remplacée par la valeur de cette variable de
la variable de champ J'espère donc que c'est clair. Ensuite, nous voulons
obtenir tous les fichiers,
en utilisant
la méthode des lignes de lecture. Cela nous donnera donc une
liste de tous les codes. Alors permettez-moi de déconnecter et d'imprimer les codes pour voir à quoi
cela sert Contente, les citations étaient heureuses, et voici une liste. Donc, comme je vous l'ai dit, le bonheur, c'est ce que vous pensez, ce que vous dites, etc. Et puis le Mahatma Gandhi l'a dit
, puis vous avez une virgule, et c'est là que commence l' Et ainsi, nous avons une
liste de plusieurs chaînes, chaque chaîne
représentant un guillemet. Alors, que pouvons-nous faire
avec cette citation maintenant ? Hmm. Ce que nous pouvons faire, c'est nous en sorte
que le moi ait cette idée. L'idée de cette étiquette est d'
afficher la citation,
qui se trouve juste en dessous du bouton « Je m'
éclaire Donc, l'idée, la citation, la citation. Cite, ce texto. Le texte de
cette étiquette sera donc un choix aléatoire de
la liste des citations. Donc, que fait cette méthode, c'
est qu'elle obtient une liste en entrée. Donc un, deux, trois, et il renvoie un élément
aléatoire de cette liste
chaque fois que vous l'exécutez. Donc, c'est juste un pur hasard. Par conséquent, nous allons
obtenir une de ces chaînes, une de ces guillemets, et cette citation sera définie
comme le texte de l'étiquette. C'est ainsi que cela
fonctionne. Et veillons à ce que l'importation soit aléatoire. Et nous sommes prêts à
exécuter l'application. Un login heureux Enlighten me. Et nous avons eu cette erreur qui est une erreur d'attribut
assez courante. Super n'a pas d'attribut
get. Cela se produit lorsque le
fichier Python ne trouve pas cet identifiant, l'identifiant du guillemet dans ce cas. Vous pouvez donc voir que l'
erreur s'est produite à la ligne 61. Cette ligne ne fonctionne
donc pas bien. Je pense que c'est parce que
je n'ai pas enregistré le fichier QV ai saisi
lorsque j'ai mis à jour
l'ID de l'étiquette ici J'ai donc écrit un identifiant
mais je n'ai pas enregistré le fichier QV. Alors
laisse-moi réessayer. Je suis heureuse que ces erreurs apparaissent parce que vous
apprenez à les corriger. Éclaire-moi. Et oui, donc l'étiquette est
affichée ici. Lorsque vous appuyez à nouveau, cette fonction de choix
aléatoire
va extraire un autre
choix aléatoire de la liste. Parfois, je suppose qu'il peut afficher la même citation,
ce qui est bien, je pense, mais il existe des moyens de le faire afficher une citation
différente de la précédente, mais cela fonctionne
plutôt bien, je pense. Attendez-vous à un cas où
il y a une longue citation et qu'elle sort des
limites de la fenêtre de l'application. C'est donc un problème, mais il
n'y a pas lieu de s'inquiéter car nous allons implémenter
une vue défilante ultérieurement, ce
qui compressera cette étiquette et la rendra flexible. En redimensionnant l'étiquette en fonction du widget
et de la taille de l'application Pour l'instant, laissez-moi fermer cela
et terminer le bloc Ils, séparé de ce code d'identification, ce texte équivaut à
essayer un autre remplissage. Alors laissez-moi essayer encore une fois, et nous en aurons fini avec cette vidéo. Cela fonctionne donc.
Cela fonctionne également. Et je me sens jolie. Oh, essayez une autre garniture.
Nous ne sommes pas favorables à cela. Et c'est ainsi que nous créons une application. Cela choisit une citation au hasard. La fonctionnalité du
programme est donc pratiquement terminée. Il ne nous reste plus qu'
à embellir
l'interface, les boutons et
les espaces entre les boutons
et à ajouter de l'animation. Ce sont donc des choses
qui vous aideront à créer des applications du monde réel, modernes et agréables à utiliser par les utilisateurs et que
vous pourrez réellement vendre. C'est ce que nous ferons dans
les prochaines conférences.
189. 188. Stylisation de la page d'ouverture de session: Maintenant que les fonctionnalités
de l'application fonctionnent correctement, nous allons commencer par le style. Donc, tous les boutons
font ce qu'ils sont
censés faire. Eh bien, sauf le bouton « Mot de passe
oublié », qui est censé être un
exercice à résoudre. Alors maintenant,
dans la vidéo suivante nous allons travailler
sur le style. Il s'agit donc d'un programme que nous avons
construit ensemble, ce f, et voici le produit final
stylisé. Donc, dans cette vidéo, dans
cette même vidéo, nous allons travailler
sur l'écran de connexion. En fait, vous pouvez les
redimensionner comme
ça pour voir exactement à
quoi ils
ressembleront dans un vrai téléphone,
car c'est plus ou moins la taille d'
un téléphone, le ratio de taille Fermons donc ces
deux interfaces, et je vais garder cette
interface ouverte ici pour l'utiliser comme référence. Nous ne travaillons donc pas dans le fichier Python ici
dans le fichier KV C'est une question de design. Bien, donc la première chose que
vous souhaitez ajouter est un peu de rembourrage et d'
espacement dans cette disposition en grille 15, je vais expliquer
ce que cela signifie, bien
sûr, l'espacement de 2020. Donc, cette disposition en grille, en fait, c'
est que nous avons la disposition de grille principale, qui est l'ensemble du widget, puis cette mise en page de grille
contient le nom d'utilisateur, étiquette de ces deux
entrées de texte et ce bouton. Et aussi une
étiquette invisible ici. Nous voulons donc ajouter un peu de rembourrage, 15 à l'horizontale, ce qui signifie la distance entre
la disposition en grille de
cette disposition en grille et les bordures
extérieures de l'application Vous voyez donc que nous avons
une distance d'environ 15 points ici, et il y a aussi une
distance que vous ne pouvez pas voir, mais il y a un rembourrage vertical entre cette
étiquette et le cadre principal C'est donc le rembourrage, l'espace extérieur de
cette disposition en grille Et puis l'espacement est de 2020 est-à-dire l'espacement entre les
widgets de ces mises en page en grille L'espacement est donc une affaire interne
et le rembourrage est externe Tu peux y penser comme ça. Donc 20 pixels entre ces
deux pixels et 20 ici aussi, entre cette zone de texte
et ce bouton Eh bien, vous pouvez voir qu'il y a en fait
plus de 20 pixels entre le
bouton et cette saisie de texte. Mais c'est parce que nous avons également appliqué cette interface
à ce produit final. J'ai également appliqué une certaine
taille au bouton lui-même. Il y a donc un rembourrage plus la réduction de
la taille du bouton. C'est pourquoi vous voyez
plus d'espace ici. Alors, gardons-le comme ça en toute sécurité. Ensuite, vous devez exécuter
le fichier Python comme toujours. Nous avons donc maintenant un
peu de rembourrage et un certain espacement entre
ces widgets Que diriez-vous d'augmenter
la taille
de police de cette étiquette lorsque l'utilisateur se connecte ? Vous devez donc accéder
à l'étiquette et définir la taille de police sur 20. Ce doit être une
chaîne comme ce SP. Alors maintenant, la taille du téléphone est plus grande. Travaillons maintenant sur la
taille du bouton de connexion. Vous voyez que cela
semble un peu trop large. Alors pourquoi ne pas
le raccourcir un peu ? Eh bien, dans QV, il existe un
attribut appelé indice de taille, que vous pouvez attribuer à un widget, par
exemple à un bouton ici Indication de taille. Maintenant, la façon dont QV fonctionne
est que par défaut, la zone est
divisée proportionnellement entre le widget,
ce qui signifie que, par exemple, nous avons
ici la disposition de la
grille principale qui occupe tout
l'espace car
il s'agit d'une seule disposition de grille C'est comme un enfant célibataire,
il aura tout. Ensuite, cette disposition en grille
a deux enfants. Il a cette disposition en grille ici et elle a cette
disposition en grille ici. Et la zone entre ces deux enfants
sera également divisée. Et donc, cette disposition en grille, la seconde comporte deux boutons, le bouton mot de passe oublié
et le bouton d'inscription Par conséquent, vous pouvez voir
que cette disposition en grille
présente ici la moitié de la disposition en grille
principale. Et l'autre disposition en grille, qui est la première
disposition en grille, contient l'autre moitié. Il en va de même
pour les enfants de chacune de ces
deux configurations de grille Donc, les enfants de la
première mise en page en grille. L'étiquette et les entrées de texte, chacune d'entre elles
se verra à nouveau attribuer l'
espace qu'elle mérite. Ici, nous avions une
étiquette, deux, trois, quatre, et une étiquette invisible,
donc cinq widgets, et chaque widget dispose donc de 20 % de cet espace. Cependant, il existe un attribut
d'indice de
taille que je viens de vous présenter, qui vous permet de
modifier le montant qu'un widget reçoit de son parent,
donc indice de taille. Donnons donc une valeur
de 0,3 et 0,5. Vers le bouton de connexion. Ce qui va se passer, c'est que le bouton de connexion
sera pressé verticalement. Vous voyez, parce que nous avons
donné une valeur de 0,5. Il a donc la moitié de sa hauteur. Nous avons également donné une valeur de 0,3 pour le presser horizontalement, mais cela ne
fonctionne pas car il n'
y a aucun autre widget
sur le côté. Quoi qu'il en soit, le bouton de
connexion obtiendra, à nouveau, la totalité de l'espace. Il ne divise
aucun espace avec d'autres widgets dans cette direction horizontale Pour pouvoir changer le bouton, nous devons en
fait indenter
ce bouton et en faire l'enfant d'
un widget de mise en page relatif Si vous l'enregistrez et que vous l'exécutez, vous verrez
maintenant que le
bouton a changé de position. J'ai en fait 0,3 30 % de cet espace horizontal, comme vous pouvez le voir, c'est un tiers. cet espace horizontal, et également 0,5, 50 % de la hauteur. Mais si vous réduisez ce chiffre de
0,5 à cela, si vous le faites de 0,1, par exemple, vous n'obtiendrez
pas de bouton d'une
très, très petite hauteur
car il y
a
une étiquette de taille fixe. Le minimum que vous pouvez obtenir
est donc la hauteur de l'
étiquette du bouton. Maintenant, comment placer ce
bouton au centre ? Nous devons utiliser un indice de pause, qui permet d'obtenir un dictionnaire. Centre X 0,5. Et centre Y 0,6. J'
ai expérimenté différentes valeurs, et c'est ce que j'ai
trouvé être la meilleure Mais pas encore, car
ces gars là, ces boutons
prennent trop de place. Donc, ce que nous pouvons faire, c'est passer à la disposition en grille qui
contient ces boutons. Celui-ci ici, et on dit taille. Indice, 0,20 0,2. Enregistrez cela et voyez ce qui se passe. Hum. C'est donc
beaucoup plus beau, donc indication de
taille est assez
magique car elle vous permet de
relativiser les tailles. Il n'est pas préférable de définir
une taille fixe,
car les appareils mobiles sont de
tailles différentes Il est donc préférable de conserver une taille
relative pour chaque appareil. Donc, ce que je viens de faire
ici, c'est que j'ai donné cette disposition en grille un espace de 20 %. Donc 20 % ici, et cela représente 80 % pour l'
autre disposition de la grille. Le bouton se comprimait donc
parce qu'il essayait de faire de son mieux en utilisant les valeurs que j'ai données ici
pour le bouton, ce bouton de connexion,
mais il n'a pas pu le faire parce que cette disposition en grille
prenait trop de place Par conséquent, 20 % est une bonne chose. Et si vous le souhaitez maintenant, vous
pouvez donner un rembourrage de dix et dix et un
espacement de dix et zéro C'était l'ancien. Il s'
agit d'un nouveau modèle. Donc pas mal. J'ai juste laissé un peu d'espace entre
les boutons et un peu de rembourrage
par rapport à l'extérieur Donc l'espace horizontal, celui-ci, et l'
espacement vertical vertical Et il n'y a pas d'autres boutons
verticaux au-dessus, donc cela n'a pas beaucoup de sens. Donc zéro, c'est très bien. Et laissez-moi terminer. Enfin, faisons en sorte que ces
deux boutons ressemblent à des liens. Voici donc le mot de
passe oublié et inscrivez-vous. Nous allons changer la couleur
d'arrière-plan, qui est actuellement le gris, en
un format RGB et opacité Donc Alpha pour l'opacité, et cela prend une valeur de 0 Il s'agit donc de valeurs décimales. Vous pouvez mettre 0,1 et ainsi de suite. Je vais mettre un, un,
un et zéro. Zéro signifie que la couleur de fond est complètement transparente. Je vais le sauvegarder et exécuter. Vous pouvez voir maintenant que le
mot de passe oublié est comme ça. Cependant, lorsque je
clique sur le bouton, il ne semble pas faire quelque chose comme le bouton d'
inscription. Nous pouvons donc
jouer avec l'
opacité du texte Mettons-lui une valeur
de un si l'état de soi est normal, voir 0,5. C'est donc une belle magie que je vais
vous expliquer comment cela fonctionne. Vous voyez, vous savez, quand
je clique sur le bouton, je comprends que je
clique sur le bouton. Donc, ce qui se passe, c'est
que l'opacité en est une. Si l'état de self self fait référence au
widget actuel qui est un bouton. Rappelez-vous donc que root
a fait référence à la règle, qui ressemblerait à un écran de
connexion ici. Mais je me suis référé à
ce bouton. Et si vous souhaitez accéder à une
propriété de la mise en page de la grille, vous pouvez le faire comme parent. Ainsi, ce parent
pointerait
vers le parent du bouton,
qui est la disposition en grille. Mais nous n'en avons pas besoin
pour le moment, donc sinon, si l'
état n'est pas normal, c'est l'état normal
du bouton qui n'est pas enfoncé. Il existe d'autres états,
comme celui des publications sous presse, mais cet état est normal. Sinon, si l'
état n'est pas normal, comme ici, j'ai appuyé sur le bouton. Dans ce cas, nous voulons donner
une valeur de 0,5 à l'opacité. Donc, tout ce truc
ici est du code Python. Tout
se trouve en fait du bon côté de ces attributs
ici, ici, là. Tout y est du code Python. Et enfin, changeons
la couleur du bas. Vous pouvez utiliser un
attribut de couleur pour cela. Faisons 0.1. Cela signifie donc 10 % de
rouge, 70 % de vert et 100 % de bleu avec une transparence de un,
donc pas transparent. Sauvegardez ça. Et je vais copier ces trois attributs et les
donner également à l'
autre bouton, au bouton d'inscription,
enregistrer le fichier, exécuter Et oui, c'est
ce que je voulais faire. Alors, inscrivez-vous pour obtenir un
mot de passe. J'appuie dessus. Je passe à l'autre page,
à la page d'inscription. Encore une fois, c'est l'
interface que nous avons jusqu'à présent pour les connexions. Une dernière chose que j'
aimerais ajouter est qu'actuellement, lorsque nous saisissons un nom d'utilisateur, le mot de passe est visible Nous voulons montrer des étoiles
au lieu de cela. Accédez donc à la saisie de texte pour le mot de passe, accédez à l'attribut du mot de passe
et définissez-le sur true. Ainsi, lorsque vous définissez cet
attribut sur true, le texte saisi
est
traité comme une saisie de mot de passe, sorte qu'il n'affiche pas le mot de passe. Merci d'avoir
suivi cette vidéo, et nous allons styliser les autres pages de l'application
dans les prochaines vidéos. À bientôt.
190. 189. Stylisation de la page d'inscription: Bonjour. Ce que vous
regardez, c'est la page d'inscription. Voici, de ce côté, le
programme que nous avons créé jusqu'à présent, et voici à quoi ce programme devrait ressembler
après cette vidéo. Allons-y et
ajoutons du rembourrage et espacement à notre page d'inscription. Il s'agit d'un code. Nous parlons donc de l'écran d'
inscription. Je pense qu'un rembourrage de 2020 et un espacement de 2020
à nouveau devraient convenir Alors laissez-moi exécuter l'inscription. Je pense donc que c'est
bien, mais si vous le souhaitez,
vous pouvez jouer avec ce rembourrage et cet
espacement et peut-être avec autres attributs d'indication
de taille
que je vous ai montrés Donc, c'est à vous de décider de donner un aperçu de la disposition en
grille à celui-ci puis
à d'autres si des indices sur les
zones de saisie de texte Je pense que cela semble
bon de toute façon, pour une taille d'écran mobile.
191. 190. Rendre les buttons interactifs: Bonjour, je suis très heureux de vous
montrer maintenant comment styliser la
page principale de l'application, qui est la page sur laquelle l'utilisateur passera le plus de Donc, la page où ils
arrivent à ces citations. Et voici à gauche ce que nous
avons vu jusqu'ici à quoi ressemble notre page
principale. Voici donc la page de réussite de
l'écran de connexion. C'est ainsi que nous l'
avons appelé. Et voici à quoi ressemblera
la page
après ces deux vidéos. Donc, tout d'abord, nous
allons d'abord ajouter du
rembourrage et de l'espacement
pour
séparer ces boutons les uns des autres pour
séparer ces boutons les .
C'est donc la première chose à faire. Ensuite, nous allons faire en sorte que
ce gros bouton ressemble
à ce bouton fantaisiste ici, qui change de couleur lorsque
nous survolons la souris, lorsque nous plaçons
la souris au-dessus du bouton Ensuite, nous
allons également ajouter un peu défilement à cette zone d'étiquette afin que le texte entier
soit affiché dans une petite zone, et que l'utilisateur puisse faire défiler
et voir le texte entier Allons-y et travaillons sur un peu de rembourrage et d'espacement,
puis sur le bas Avant de commencer, j'aimerais que
vous consultiez les ressources et que vous téléchargiez le fichier
hoverbl point py,
le fichier Logout, hover point PNG
et le fichier PNG Logout not Je vais expliquer dans
un instant ce qu'ils sont. Donc le rembourrage maintenant, succès de l'écran
de connexion Hmm Ajoutons également le rembourrage de 30, 30 et l'espacement de 30, 30. Voyez ce que nous obtenons. Oh, oui, ça a l'air mieux. Passons maintenant au bouton, la bibliothèque Kiv ne possède pas
nativement d'objet permettant d'
implémenter des comportements de survol afin que quelque chose change
lorsque vous survolez la souris, ou il n'y a pas de moyen
facile Mais quelqu'un a développé un
très petit sous-module appelé hoverbl et vous pouvez
obtenir ce fichier et le placer dans le même répertoire
que votre fichier point py principal Ils se trouvent donc dans le même dossier. Ensuite, vous
n'avez pas à modifier le fichier HoverBLTPI, donc je vais juste Ensuite, ce que nous pouvons faire, c'est
importer depuis hoverbl, nous importons l'objet de comportement du survol Il s'agit donc d'une classe, le comportement de survol de la classe dans
le fichier hoverbel point py C'est donc ce que
nous allons utiliser. Et la façon dont nous
allons l'utiliser est de descendre ici. Et je vais créer une classe
et l'appeler image button. Ce sera donc un bouton
spécial. Ce ne sera plus un
simple bouton, mais un bouton image. Et ce bouton d'image
va hériter de la classe de comportement et de quelques autres
classes,
que je vais
importer ici Nous
allons donc implémenter ce bouton en ayant
deux images différentes. J'ai créé ces images
dans Power Points. Vous pouvez facilement les créer.
Vous avez ces symboles. Et vous ajoutez du texte
, puis vous rendez l'
arrière-plan transparent. Vous avez donc un
bleu et un rouge. Donc, les deux états différents que
vous souhaitez donner au bouton sont une image PNG. L'idée est donc que ce bouton n'aura pas de
texte. Je vais avoir une image. Par conséquent, nous
devons importer depuis qv point x point image,
import, image Et enfin, à partir de l'importation de comportements
UX par qv point. Comportement des boutons, et c'est tout. Nous obtenons maintenant
le comportement de l'image et du bouton, et nous les plaçons en tant que parents
du bouton image. Objet. Et il ne
nous reste plus qu'à passer. C'est juste une classe qui
réunit ces trois objets. Pour créer une classe, utilisez la classe de boutons d'
image
dont les attributs se comportent
comme ces trois objets Alors, nous allons
sur le bouton image, et je le place mal ici. Désolée. Cela devrait donc être
ici, en fait, le bouton d'image. Nous parlons
du bouton de déconnexion,
pas du bouton Enlighten me. Et nous n'avons plus besoin de ce texte
de déconnexion. Nous n'avons donc pas besoin de
ce texte de déconnexion car nous
utilisons notre propre image contenant le texte. Supprimez-le donc en
appuyant sur root Lookout.
Oui, c'est exact. Et la source de ce bouton d'image, ce sera
Logout Hover I self point Hovert Lookout, No, hover Oh, point PNG, bien sûr. C'est donc le
chemin de l'image. Donc,
Overt, ce survol automatique,
est cet attribut de la classe de comportement
Hort. C'est donc une propriété de bowling. Cela peut être
vrai ou faux. C'est donc du code Python. Je vous ai dit que tout ce qui
se trouve à droite de ces attributs est du code Python. Nous allons donc définir une source l'image survolée de déconnexion
pour ce bouton d'image Si cela est vrai, si le pointeur est
survolé, c'est vrai. Le HoverLPIfile
détecte donc si une souris
est détecte donc si une souris
est Sinon, nous avons mis «
logout » et non « hover ». Donc, ce chemin. Alors laisse-moi voir ce qui se passe. Oui, donc ça marche
aussi facilement que ça. Mais le bouton prend évidemment
trop de place ici. Il faut donc un,
deux, trois, quatre, cinq, 20 %, donc nous avons cinq widgets. Chacun d'entre eux obtient
20 % de l'espace. Faisons donc quelques indications de
taille alors. Indication de taille. Je pense qu'un bon montant
serait de 0,35 ou 0,35 .
Alors voyons voir. Oui, je pense que c'est une bonne chose. Et maintenant c'est au centre. Donc, si vous voulez le
mettre sur la droite, vous devez changer de position. Et encore une fois, il y a l'attribut
position hint, qui permet d'obtenir un
dictionnaire, au centre X. Je pense qu'un bon nombre
serait 0,93 et au centre Y. 0,8. qui permet d'obtenir un
dictionnaire, au centre X.
Je pense qu'un bon nombre
serait 0,93 et au centre Y. 0,8.
Maintenant, si nous essayons cela, voyons ce que nous avons,
rien ne se passera. Comme le bouton, lorsque nous
utilisons cette indication de position, le widget doit se trouver dans un autre widget appelé disposition
relative Si vous enregistrez le fichier Kiwi
maintenant et que vous l'exécutez, cela fera la magie. Si j'appuie sur le bouton,
cela ne fonctionnera pas. Et la raison pour laquelle cela
ne fonctionne pas est cachée ici dans la façon dont nous ordonnons ces modèles de cette classe de boutons
d'image. Le comportement du bas doit
être le premier, car cet ordre peut masquer les méthodes
de ce comportement du bas. Maintenant, laissez-moi réessayer.
Attention. Alors maintenant, ça marche. Connectez-vous à nouveau. Et il s'agit de cette implémentation du
bouton image. Et dans la prochaine conférence,
nous allons implémenter cette vue défilante
de l'étiquette ici. Voyez ici.
192. 191. Créer une zone défilable: Bonjour, continuons donc à travailler sur
la page principale de notre application. L'utilisateur
saisit donc des codes. Et comme vous le savez,
cette étiquette, l'affichage, n'est pas optimisé. Donc, comme vous le voyez, nous devons placer le texte à
l'intérieur des bordures de l'application afin que si l'appareil sur lequel l'application s'exécute
est comme ça, le texte s'affiche normalement
tel qu'il apparaît actuellement. Mais le mobile, si l'
appareil est un téléphone portable, il ressemblera à ceci. Vous souhaitez donc
enrouler le texte dans cette zone afin que l'
utilisateur puisse voir l'intégralité de la citation. Nous sommes donc sur la page de réussite de
l'écran de connexion, et nous parlons de
l'attribut de taille du texte. Nous allons donc changer la taille du texte en largeur de point
automatique et en hauteur de point
automatique. Qu'est-ce que la largeur du point automatique et
qu'est-ce que la hauteur du point automatique ? Largeur de point automatique, self fait référence
au widget actuel. Donc, self est en fait l'étiquette, et la largeur est la largeur de l'étiquette, la hauteur de l'étiquette est la
hauteur de l'étiquette. Le texte
aura donc la largeur et la hauteur de
l'étiquette
où il se trouve, ce qui signifie que je vais
enregistrer le fichier Kiwi. Chaque widget ici a donc une taille. Label est donc l'un
des cinq widgets. Étiquette, vous avez un bouton, vous avez une saisie de texte, une étiquette, et vous avez cette mise en page
relative, et l'étiquette
prend 20 % ici. Il est invisible, mais s' il avait un arrière-plan
comme ce bouton, il ressemblerait à la taille de saisie
du texte
et à la taille de ce bouton. C'est donc quelque part ici. C'est donc la largeur, et c'est la hauteur, plus ou moins de l'étiquette. Donc, si je dis SD, essayons d'obtenir un long devis. C'est donc ce que nous obtenons maintenant. Donc ça a l'air mieux. Si nous comprimons, vous
verrez que le texte s' enroule dans les limites de la
hauteur et de la largeur de l'étiquette. Vous pouvez donc voir que maintenant, lorsque je presse la fenêtre, je la redimensionne,
l'étiquette est redimensionnée
dynamiquement, tout l'étiquette est redimensionnée
dynamiquement, comme le bouton
et la saisie de texte Ainsi, la taille du texte
reflétera également la taille de l'étiquette,
comme vous pouvez le voir ici. Mais cela ne suffit pas encore. Alors, pourquoi ne pas donner au texte plus de surface pour l'
étirer verticalement ? Pour
ce faire, vous devez
définir la
hauteur de la taille du texte sur aucune. Vous ne voulez donc pas que cela
soit lié à l'étiquette. Donc, si vous
l'enregistrez, essayez le code. Vous voyez maintenant que la hauteur
du texte est supérieure à
la hauteur de l'étiquette. L'étiquette est quelque part ici. Permettez-moi donc de le redimensionner à nouveau. La hauteur de l'étiquette
est
donc aussi élevée, elle se trouve quelque part ici,
et la hauteur du texte est supérieure à la
hauteur de l'étiquette. C'est mieux. Nous pouvons voir le texte, mais il est
évident qu'il se superpose. Il se trouve au-dessus des autres widgets, donc ce n'est pas
encore idéal, bien sûr. Alors, que pouvons-nous faire ici ? Eh bien, ce que je pense, c'est nous devons trouver un moyen de modifier la hauteur de l'étiquette pour qu'elle
corresponde à la hauteur du texte. Donc, dans ce cas, ce
serait comme avoir plus de cette zone
noire sur l'étiquette. Donc, avoir l'étiquette
jusqu'ici et avoir les autres widgets
pressés au-dessus de l'étiquette. Modifions donc la hauteur de l'étiquette pour l'adapter à la hauteur
du texte. Comment pouvons-nous le faire ? Eh bien, tout d'abord,
nous avons besoin de l'étiquette Y. Donc, la hauteur de l'étiquette, nous en avons besoin pour ignorer
les indications de taille, ce qui signifie, laissez-moi
vous montrer ce que cela Permettez-moi d'essayer une autre citation. Cela signifie donc que la hauteur de l'étiquette ne correspond plus à 20 %
de la disposition de la grille, mais qu'elle a une taille fixe
de 100 pixels par défaut. Par défaut, la hauteur de
l'étiquette est désormais de 100 pixels. C'est donc la
même chose que la hauteur 100. Si je le lance maintenant, nous allons obtenir exactement le même résultat. Mais si vous remplacez ce paramètre par 400, donc la hauteur de l'étiquette, il
s'agit de l'
attribut de hauteur de l'étiquette, non du texte. Donc, si vous voyez maintenant, l'étiquette est bien
plus grande. Disons réglé. Maintenant, cela
prend beaucoup de place. Donc, vous le pressez et
vous pouvez voir le texte. Mais ce n'est pas ce que nous voulons. Nous avons dit que nous voulions que la
hauteur soit dynamique. Nous voulons que la hauteur
reflète la hauteur
du texte, de sorte que lorsque la fenêtre est
étirée de cette façon, nous voulons que ces boutons
soient situés ici, et nous voulons que l'
étiquette soit plus petite. Donc, au lieu d'avoir une
taille fixe pour la hauteur, nous voulons définir
cette taille de texture. Et nous obtenons le deuxième élément
de ce tuple orcise de texte. Le texte ou la taille est donc un tuple
contenant deux éléments. Le premier élément est la
largeur du texte. Il s'agit donc d'une valeur dynamique. Cela va changer lorsque
vous redimensionnez la fenêtre. Ainsi, la première valeur est la largeur et la
seconde est la hauteur. Avec cet indice,
nous accédons donc au deuxième
élément du basculement. Si nous voulions le premier élément, nous utiliserions zéro ici. Nous voulons le second,
qui est la hauteur. Alors sauvegardez ça Donc, vous voyez, maintenant, l'
étiquette est dynamique, elle change
donc de taille en fonction de la
taille du texte. Et nous pouvons voir le texte dans son intégralité. Et lorsque nous étendons
la fenêtre de cette façon, nous n'avons pas
trop de zone vide ici, qui serait le corps de l'étiquette. Cependant, ce n'est pas l'
idéal, bien sûr, et il
reste encore une chose que nous pouvons faire ici. Ce que nous devons faire, c'est
avoir de l'espace pour le widget de
défilement. Et l'étiquette, ainsi
que ses attributs, je dois l'indenter avec un onglet
pour l' avoir comme un enfant
de la vue défilante vue défilante est donc désormais
au même niveau
que l'autre widget, saisie de texte par
bouton, l'
autre étiquette, etc. Enregistrez donc ce Kivfile
maintenant, exécutez-le. Heureux. Vous pouvez donc y
voir un scroller Triste. Éclaire-moi. Il fonctionne donc avec
tous les types de texte. Lorsque le texte est court, il n'y a pas de défilement, et lorsqu'il est plus long, il y a un défilement
automatique Vous pouvez donc aller à la
fin du texte. C'est ainsi que vous
créez une vue défilante, qui contient une étiquette et l'
étiquette contient du texte. J'espère que cela vous a plu, et je vous verrai
dans la prochaine vidéo.
193. 192. Préparer l'environnement pour déployer l'application mobile: Higène. Dans les prochaines vidéos, je suis très heureuse de vous montrer
comment créer un fichier APK partir du
fichier Python que nous avons déjà créé
lors des conférences précédentes. Désormais, un fichier APK est un fichier
qui peut être installé téléphone
Android afin que l'
application soit utilisable sur mobile. Actuellement, nous n'
avons qu'un fichier point py. Nous avons donc le fichier point py principal
et le fichier point KV de conception Et nous avons également un tas
de fichiers supplémentaires tels que ce OverltpyFle et
ces fichiers PNG, ainsi que la base de données,
qui est
stockée dans le fichier la base de données,
qui est
stockée dans le point Json de l'utilisateur Tous ces fichiers seront donc
regroupés dans un seul fichier APK. Pour créer un fichier APK, nous devons utiliser une bibliothèque
appelée Bildozer C'est une
bibliothèque Python que nous pouvons installer avec. PIP ou Conda Le problème est que créer des
fichiers APK sur les systèmes d'exploitation Windows ou
Mac est très difficile,
pour ne pas dire impossible. La meilleure chose à
faire est d'utiliser un
système d'exploitation Linux tel qu'Ubuntu. Mais je ne vais pas vous
demander de supprimer
votre système d'exploitation Windows ou macOS pour installer un système
Linux sur votre ordinateur. Nous allons maintenant
utiliser une machine virtuelle, un logiciel que vous pouvez installer sur macOS ou Windows. Et dans ce logiciel, ce logiciel
se comportera comme un ordinateur. Mais c'est un
ordinateur virtuel. C'est un logiciel. Ainsi, dans ce logiciel, vous pouvez installer des systèmes
d'exploitation tels que Linux, Windows ou Mac. Dans cette conférence,
je vais donc vous montrer comment installer Virtual Box. Cette installation est facile, que
vous soyez sous Windows ou macOS Il suffit donc d'aller sur virtualbox.org. Et cliquez sur le bouton
Télécharger, puis sur l'
un des liens. Donc, si vous êtes sous Windows, cela signifie que le système
d'exploitation hôte est Windows. Windows hébergera donc le système
Ubuntu Linux. Je suis actuellement sur une machine
Windows, je vais
donc cliquer
sur Windows Hosts. Cela me donnera donc le fichier
exécutable de Virtual Box. Une fois le fichier téléchargé. Allez-y et
double-cliquez pour installer. Je ne veux pas de raccourci sur le bureau ou sur la barre de lancement
rapide, mais n'hésitez pas à laisser
ces options cochées. Oui, nous avons besoin d'Internet dans cette boîte virtuelle, dans cette machine virtuelle, cet ordinateur
virtuel. Alors installez. J'
opterais pour l'installation à nouveau. Terminez et Oracle Virtual
Box va être lancé maintenant, attendez-vous à ce que cela prenne un
certain temps, et voilà. L'interface
est donc assez simple. Nous avons quelques boutons ici. Le nouveau bouton nous intéresse
. Mais d'abord, avant de le faire, vous devez vous rendre sur ubuntu.com Et téléchargez un système
d'exploitation Ubuntu. Alors, allez sur le bouton Télécharger, allez sur le bureau Ubuntu. Il existe deux versions maintenant, mais il s'agit d'une version stable, celle avec
le bouton vert. Je vais donc le télécharger. Attendez-vous à ce que cela prenne un certain temps car cela représente
environ 2 gigaoctets Oui, cela représente
beaucoup de données. Une fois que vous avez téléchargé ce fichier, accédez à nouveau à Oracle Virtual
Box, puis sélectionnez Nouveau. De par son nom, je vais
l'appeler Ubuntu et vous verrez que ces listes déroulantes
sont automatiquement mises à jour. Vous voulez donc
sélectionner Linux ici. Nous installons un système d'exploitation
Linux et Ubuntu 64 bits. C'est du moins ce que j'ai
téléchargé sur ubunto.com, mais votre système
détectera automatiquement l'architecture
du programme Je vais donc cliquer sur Suivant
maintenant, la taille de la mémoire Ils disent que la taille
recommandée est d'un gigaoctet pour la RAM, mais je dirais que vous
devriez opter pour une taille supérieure, soit au moins 4 Si vous n'avez pas beaucoup de RAM sur votre ordinateur
physique, vous devriez
peut-être opter
pour moins et voir comment Ubuntu fonctionnera avec
autant de mémoire. Mais c'est l'idée. C'est 3 000 mégaoctets, c'est la taille de la RAM de cet
ordinateur Windows que j'utilise, et je donne 4 mégaoctets Ce serait donc
la taille maximale 4 gigaoctets de RAM pour Linux Cliquez sur Suivant. Créez un disque dur
virtuel dès maintenant. Créez. Vous voulez un VDI, alors cliquez sur Suivant. Alloué dynamiquement, c'est bien. Encore une fois, cela dépend de vous. Je recommande 20 gigaoctets
si vous en avez. Donc, environ 20 gigaoctets, mais donnez-leur au moins dix, ou si vous n'avez pas beaucoup d'espace disque
dur de votre ordinateur, vous
devriez opter pour
moins de 5 gigaoctets et voir Normalement, si vous manquez
d'espace ou de RAM,
vous devriez obtenir des fenêtres
contextuelles provenant une boîte virtuelle vous indiquant
que l'espace n'est pas suffisant, mais que plus il y a d'espace, mieux c'est. Cliquez sur Créer.
Nous avons donc créé une couche ici. Vous voulez commencer et cela vous demandera de
sélectionner un disque de démarrage. Vous voulez donc accéder à ce
dossier ici, puis localiser le fichier ISO que vous avez
téléchargé sur ubuntu.com y en a donc une.
Cliquez sur Démarrer. Maintenant, cette fenêtre est un peu petite mais vous pouvez accéder à la machine et aux paramètres,
aller à l'affichage. Et ici, dans le facteur d'échelle, vous souhaiterez peut-être l'augmenter
à 300 %. Cliquez sur OK. Et maintenant, vous voyez que l'
écran est un peu plus grand. Voici donc l'
écran suivant que nous avons. Vous souhaitez accéder à
Installer Ubuntu. C'est pour l'anglais ici et l'anglais là pour
la disposition du clavier. Ces paramètres sont corrects. Ensuite, vous devez
sélectionner comme disque et installer Ubuntu qui
supprimera simplement tous vos programmes, vos photos et votre ordinateur, tout ce que vous avez
toujours eu. Je plaisante, c'est tout Cela ne concerne que
les programmes que vous avez dans la boîte virtuelle,
alors que nous n'en avons aucun. Ce serait donc le cas
si vous remplaciez
un
système d'exploitation existant que vous aviez déjà dans
cette boîte virtuelle. Cela n'a donc rien à voir avec vos programmes de votre système d'exploitation
principal, qui serait Windows ou macOS. Il suffit donc d'aller sur Installer maintenant. Poursuivre. Sélectionnez votre fuseau horaire. Sélectionnez un nom pour l'ordinateur. Je vais simplement me connecter automatiquement sans
fournir de mot de passe, mais vous devez choisir
un mot de passe. Cliquez sur Continuer. Cela prendra donc un certain
temps avant que les fichiers
ne soient installés. Donc, jusqu'à ce qu'Ubuntu soit installé sur cette machine virtuelle dans
ce logiciel de boîte virtuelle. Mon installation est terminée et le message me
demande de redémarrer Je vais
donc cliquer
sur Redémarrer maintenant. Cela redémarrera le système d'exploitation
Linux, pas le système d'exploitation hôte, qui est Windows dans mon cas. Il suffit donc de redémarrer Ubuntu
dans une boîte virtuelle. Il semble y avoir une erreur, j'ai juste appuyé sur Entrée et
tout semble fonctionner. Il s'agit donc d'Ubuntu. Si vous souhaitez consulter
le guide de démarrage. Il suffit de cliquer sur Suivant. Et c'est fait. Maintenant, vous voudrez peut-être accéder
à Oracle Virtual Box, donc à l'
interface Virtual Box, puis à machine et aux paramètres
, puis à General Advanced. Et vous souhaiterez peut-être activer les options
de presse-papiers partagé et de
Dragon Drop Je les ai définis comme bidirectionnels, ce qui signifie que vous pouvez copier des fichiers depuis le système d'exploitation de votre
hôte, donc de Windows ou Mac vers Linux
vers Ubuntu et vice versa. Cependant, j'ai remarqué
que cela ne fonctionne pas. Si cette invite s'affiche, cela signifie qu'il existe
des mises à jour pour Ubuntu. Mais je vais juste
fermer cette fenêtre. Je suppose donc que l'option de copier-coller des fichiers entre
les systèmes ne fonctionne pas C'est pourquoi je vais vous
montrer ce que vous pouvez faire pour transférer des fichiers de votre système d'exploitation hôte vers
votre système d'exploitation Linux vers votre système d'exploitation
Ubuntu. C'est donc le dossier où j'
ai tous les fichiers dont j'ai besoin pour ce fichier APK pour la version
mobile du programme. C'est donc tout ce que
nous avons parcouru, plus ce fichier d'
installation Kv Build Dozer point SH Il s'agit d'un fichier que vous pouvez
télécharger à partir des ressources, et je vais vous montrer à
quoi sert ce fichier. Mais pour l'instant, je
vais simplement utiliser Dropbox. J'ai donc
déjà les fichiers du projet dans ma
Dropbox sous Windows. Donc, le dossier est celui-ci ici. L'enseignement possède tous les fichiers. Très bien, je vais donc cliquer avec le bouton
droit de la souris et
copier le lien Dropbox. C'est donc sous Windows. Ce n'est pas sous Linux. C'est
en dehors de la boîte virtuelle. Une autre façon de le faire serait d'utiliser ce service,
gofle point IO Cela vous permet
de télécharger un fichier, et cela vous donnera un lien. Et pour que vous
puissiez utiliser ce lien, vous pouvez le placer dans Linux car
il y a un navigateur. Firefox est intégré à Linux. Mais comme nous ne pouvons pas
copier-coller, nous allons devoir taper ce lien
manuellement. Donc, dans mon cas, je vais
utiliser Drawbox et je vais aller sur
usebtle.com pour raccourcir
l'URL Voilà donc l'URL. Et entrez cette URL dans le navigateur de votre système d'exploitation
Linux. Si vous ne souhaitez pas utiliser ce partage de fichiers, vous pouvez simplement utiliser cette URL pour obtenir mes fichiers afin de pouvoir
les télécharger directement depuis votre système Linux à
l'aide du navigateur. Accédez à un téléchargement plus direct. Enregistrer le fichier. OK. Les fichiers devraient maintenant être
téléchargés et vous pouvez les
trouver dans les fichiers. Télécharger. Cliquez avec le bouton droit sur
le fichier Zip téléchargé. Allez en extraire deux. Vous souhaitez sélectionner le bureau. Mais cliquez sur cette
nouvelle icône
de dossier pour créer un dossier. Disons Project 1,
créez et sélectionnez. Nous voyons maintenant ce
projet dans un dossier, et il y a le dossier
pédagogique à l'intérieur, et voici les fichiers. Terminons donc
cette vidéo ici. Voici comment installer
Visual Box et comment configurer Linux dans la boîte virtuelle et comment obtenir les fichiers dans ce système
d'exploitation Linux. Nous sommes donc prêts à créer un fichier exécutable mobile
qui fonctionnera sur Android. C'est ce que nous allons faire
dans la vidéo suivante.
194. 193. Créer un dossier APK pour Android: Bonjour encore une fois. Dans la vidéo
précédente, je vous ai montré comment
installer Virtual Box, comment installer Ubuntu
dans Virtual Box, puis nous avons transféré les fichiers du projet dans ce système d'exploitation
Ubuntu. Ils sont maintenant dans le
système de fichiers d'Ubuntu. Ce que nous allons faire maintenant,
c'est utiliser la bibliothèque Python Bill Dozer
pour créer un fichier APK Mais avant
cela, nous devons
installer certaines dépendances dans le
système d'exploitation Ubuntu, car Bulldoser en a besoin
pour créer ce fichier mobile APK Pour ce faire, pendant que vous êtes dans le dossier contenant les fichiers du
projet, cliquez avec
le bouton droit de la souris et ouvrez
le terminal. Cela ouvrira donc
le terminal Linux. Vous verrez le répertoire
actuel. C'est donc là que se trouvent vos fichiers. Si vous utilisez LS, vous verrez
que ce sont les fichiers. Le point principal pi est donc là. Assurez-vous que ce fichier s'appelle exactement point principal pi, car Bill Dozer a besoin
de voir ce fichier Et ce fichier doit
contenir le programme principal. Je n'ai pas besoin de ce fichier de
capture d'écran, donc je vais juste le supprimer
, comme vous pouvez le voir, le fichier de capture d'écran n'
est plus là. Pour localiser les
fenêtres ouvertes sur Ubuntu, allez dans Activités,
et vous verrez que le terminal est ouvert et l'explorateur de fichiers est
également ouvert. Cliquez sur le terminal. Cela ramènera la fenêtre du terminal. Maintenant, parmi ces fichiers, vous voyez le point sH du programme d'
installation de Kiv Bulldozer Vous pouvez voir le
contenu de ce fichier en utilisant CAT et écrire
le nom du fichier. Voici donc ce que contient ce
fichier. En gros, il s'
agit d'instructions sur l'installation de nombreuses dépendances, notamment Python,
Belser et Kiwi, car ce système Linux
ne possède pas non plus Kiwi Alors, descends ici. Nous sommes de nouveau ici, cliquez sur Bash, appuyez sur
la touche Tab pour
compléter automatiquement le nom C'est donc le nom
du fichier SH. Cliquez sur Enter. Entrez le mot
de passe de votre système Ubuntu. Il s'agit d'un mot de passe que vous avez
créé lors de
l'installation d'Ubuntu. Ubuntu vous a
demandé un nom d'utilisateur et un mot de passe et
cela devrait prendre un certain temps. Ubuntu télécharge actuellement ces packages depuis
Internet et Internet était automatiquement
activé lors de
l' installation d'Ubuntu Je n'ai
donc pas eu à
effectuer de configuration manuelle de
la connexion Internet. Parfois, vous
recevrez des avertissements, mais vous pouvez les ignorer. Ce
processus n'est pas stable car de
nombreuses
dépendances sont impliquées et vous pouvez
parfois obtenir des
erreurs lorsque nous créons ce fichier APK, de sorte que ce fichier
ne soit pas créé parfois. Ce n'est pas un processus facile, mais vous pouvez lire les erreurs, ce qu'elles disent et
peut-être faire une recherche sur Google pour voir ce que les autres disent à propos de cette erreur
en particulier. Il n'y a aucune garantie
que cela fonctionnera. Cela étant dit, Linux est le meilleur
système d'exploitation
pour créer ces packages APK. Enfin, l'installation
de
mon ordinateur sur mon ordinateur
virtuel Linux est terminée . L'étape suivante est facultative. Vous voudrez peut-être essayer
l'application que vous avez. Pour ce faire, utilisez Python, la commande
Python 3, Minda's Pi, qui est le fichier
que nous avons utilisé L'application fonctionne bien avec
Python. Essayons-le. Oui, ça marche bien. Alors ferme cette fenêtre. Et la prochaine chose que
nous voulons faire est de créer un fichier de
spécifications Bull Dozer Pour cela, nous utilisons Bull Dozer, donc la commande Bull Dozer OK, cela a créé ce fichier de spécifications
Bilozer point. Vous pouvez réduire cette fenêtre et trouver ce fichier dans
le système de fichiers. Vous pouvez ignorer ce fichier.
Nous n'en avons pas besoin. C'était juste quelques
notes que j'utilisais. Donc, Bulloser Dot Spec, vous pouvez double-cliquer dessus et
il s'ouvrira avec l'application d'édition de texte Donc, ici, nous
pouvons modifier certains paramètres de l'application
que nous allons créer. Mettons le titre, comment vous sentez-vous ? Vous pouvez choisir un nom
pour le package, mais n'utilisez pas d'espaces dans ce nom. Je vais juste la laisser dans mon application. Et vous voulez vous arrêter là, quelles extensions souhaitez-vous inclure
dans le package ? Nous avons donc des fichiers Pi. Nous avons également des fichiers PNG, et nous avons également des fichiers JSON. C'est donc ce
que nous voulons inclure. Fichier KV aussi, mais il est déjà là KV est donc déjà là, puis descendez plus bas. Ce sera donc
la version 0.1. C'est notre premier déploiement, et ensuite vous
voudrez vous arrêter ici. Alors, quelles sont les exigences
de votre colis ? Eh bien, voyons quelles bibliothèques. Quelles
bibliothèques tierces avons-nous dans notre fichier pi principal ? Nous avons donc le fichier QV. Hoerbl est un fichier local. Ce n'est pas une bibliothèque tierce. Ce fichier local est inclus
dans le fichier de projet, vous n'avez
donc pas à le déclarer dans les exigences,
et c'est tout ce que nous avons. JSON et Globe sont des bibliothèques Python
standard, elles sont
donc également fournies avec
Python random et Path Leap. Ainsi, dans le fichier Builders
Dot Spec, nous n'avons rien
d'autre à ajouter que
Python 3 et KV Descendez ici, vous souhaitez
activer toutes les orientations, pas seulement les portraits
sur le mobile. C'est très bien. Et cette version devrait être remplacée par huit. Et c'est tout.
Assurez-vous d'enregistrer le fichier, cliquez sur Enregistrer ou sur Contrôle S, fermez, puis revenez à
la fenêtre du terminal. Et maintenant, il ne nous reste à exécuter la commande
qui créera, espérons-le, le fichier APK. C'est-à-dire, compilez Saucer Android, déboguer À un moment
donné , nous vous demanderons si
vous souhaitez accepter la licence pour
accepter la licence, appuyez sur Y puis entrez. Cela
a d'abord échoué dans mon système. Donc, si tel est le cas, vous voudrez peut-être
revenir en arrière et
examiner l'erreur, car ce ne
sont que des messages génériques. Vous voulez localiser
après ces couleurs, vous voulez localiser ici
le haut du message rouge. Cette commande a échoué. Je pense que c'est parce que nous avons
spécifié la version huit. Essayons d'accéder au fichier Blows
ou au fichier de spécifications et de le modifier cette supprimer
cette valeur et de la remplacer par arm 64
V eTA, puis de la coller dedans Et en plus de cela,
nous avons également oublié, je pense que nous avons oublié d'ajouter l'extension TXT point parmi
les extensions acceptées ici. Point TXT car point TXT est le fichier dans lequel nous
avons ces guillemets. Assurez-vous donc de l'enregistrer, le
fermer et de revenir
au terminal. Cette fois, nous allons réessayer
de créer
le fichier APK à l'aide de
Bulldozer Android Mais cette fois, nous allons ajouter le drapeau propre. Et puis débugez Ainsi, le drapeau propre
garantira de ne pas gâcher
les efforts précédents
pour essayer de créer le package APK. Présentateur, encore une fois, nous
allons devoir attendre un moment pour que le processus d'
emballage soit terminé. Mais cette fois, il
ne vous sera pas demandé d'accepter la licence, et le processus sera peut-être plus rapide qu'auparavant.
Attendons donc un peu. Les deuxièmes efforts de construction
ont donc été achevés dans mon Linux, allez dans le dossier. Le dossier a été créé pour Ben. Donc, à l'intérieur, vous
devriez pouvoir trouver un fichier
APK. C'est
à propos de cette vidéo. Dans la vidéo suivante, je vais
acheter un appareil Android et je vais
vous montrer comment installer ce fichier APK sur un
appareil Android. À bientôt.
195. 194. Installer le dossier APK sur Android: L'étape suivante consiste donc
à obtenir ce fichier APK, le
mettre sur un appareil Android et à l'installer afin que
nous puissions jouer avec l'application sur l'appareil
mobile lui-même. Maintenant, vous pouvez faire
preuve de créativité pour transférer ce fichier sur
votre appareil mobile. Ce serait plus facile
si ce système Linux était installé sur votre ordinateur
physique, et non dans un boîtier virtuel. Donc, dans la vraie vie, si vous
voulez prendre les choses au sérieux en créant des
applications mobiles avec Python, vous
voudrez peut-être installer Ubuntu sur votre ordinateur pour
avoir un ordinateur Linux. Vous pouvez le faire
avec le double démarrage, si vous avez un ordinateur portable
ou un PC Windows, et dans ce cas, vous pouvez connecter
votre téléphone portable aide d'un câble USB afin pouvoir facilement placer les fichiers
sur votre appareil mobile. Dans ce cas, je souhaite avoir une solution générale qui
fonctionne pour tout le monde. Je vais donc
télécharger ce fichier dans ce service go file point IO. Cliquez donc ici et allez dans Bin. C'est le dossier. Téléverser. Et maintenant, vous pouvez obtenir ce lien
ici, le lien de téléchargement, et vous pouvez le mettre dans
le navigateur de votre appareil
mobile. Bonjour. Alors
laissez-moi vous montrer comment installer le fichier APG sur un appareil
Android Voici donc la page Web go file point IO où j'ai téléchargé le fichier APK afin pouvoir le partager sur
mon appareil mobile. C'est l'un des moyens. Mon navigateur pointe donc
vers ce service. Je vais aller télécharger. Appuyez sur le bouton de téléchargement. Il est donc dit téléchargement. Lorsque le fichier APK sera téléchargé, il vous sera demandé si vous
souhaitez l'installer. Et donc, appuyez sur Installer. Android vous demande si vous souhaitez installer cette application ou non car normalement, vous ne
voulez pas installer d'applications dont vous ne savez pas d'où elles
proviennent pour des raisons de sécurité Donc, cette application, nous la créons, nous voulons
donc de toute façon passer
à Installer. J'ai installé l'application de messagerie. Si vous souhaitez envoyer
l'application pour numérisation à Google, je ne
veux pas le faire. Donc, n'envoyez pas. Appuyez donc sur Terminé et localisez
l'application. Voici donc l'application. Je vais cliquer
dessus. Il est en train de charger. Et deux U, un, un, connexion. Heureux. Cliquez sur Enlighten me et vous verrez que les
messages s'affichent Donc ça marche. J'espère que cela fonctionne bien pour vous. J'espère que le processus vous plaira. Si le Build n'a pas
abouti dans votre cas, veuillez consulter les questions
fréquemment posées pour voir si vous y trouvez la réponse à votre question
, et vous pouvez essayer de recommencer le processus de compilation
avec le Bildoser Android Utilisez toujours l'option de nettoyage, je vous verrai donc
dans les prochaines vidéos.
196. 195. Scraping Web avec Python et belle soupe: Bonjour, et bienvenue dans cette section
intéressante. vous allez apprendre le web Dans cette section, vous allez apprendre le web
scraping avec Python Dans cette conférence, j'ai
voulu expliquer ce que signifie le web
scraping scraping Web signifie donc supprimer
le Web pour obtenir des informations, ou en d'autres termes, extraire des
informations de pages Supposons que vous souhaitiez extraire des informations sur l'immobilier. Peut-être souhaitez-vous
connaître l'évolution des prix dans le temps et dans le lieu. Et je ne pense pas qu'il existe de
bons fichiers Excel contenant des données
bien structurées que
vous puissiez
télécharger et analyser les données immédiatement. En réalité, ces
données sont réparties sur pages Web
HTML des sites Web
immobiliers Dans notre exemple. Vous allez donc devoir les
supprimer et
les mettre dans un format structuré dans un format bien structuré tel
que des fichiers Excel et Excel,
CSV, Pandas DataFrames ou
d'autres Et le mettre dans un format
bien structuré est appelé web scrapping, et Python est excellent dans ce domaine Plus précisément, nous allons utiliser une bibliothèque Python
nommée Beautiful Soup. Donc, dans cette section, je vais vous
présenter Beautiful Soup, et nous allons extraire
quelques informations d' une simple page Web pendant que je vous montre comment fonctionne
Beautiful Soup. Ensuite, dans la
section suivante, une fois
que nous aurons terminé les cours
de cette section, nous allons extraire certaines
informations immobilières
telles que les adresses
et le prix des propriétés, la région et d'autres
caractéristiques des propriétés. Nous allons extraire ces informations
d' un grand site Web immobilier. Donc, oui, c'est à peu près
ce qu'est le grattage. Oui, je te parlerai
lors de la prochaine conférence.
197. 196. Comment fonctionne la ferraille sur le Web +: Alors, comment fonctionne le web
scrapping de toute façon ? Comment Python peut-il récupérer les informations
d'une page Web et stocker sous forme de texte afin que vous puissiez les analyser à votre convenance ? Eh bien, ce texte
que vous voyez ici. Il s'agit donc d'un exemple de site Web, et en fait, ce domaine
est réservé aux exemples. Mais il s'agit d'une
page Web normale construite avec HTML et du CSS et d'autres outils de développement
Web. Le HTML est donc ce qui rend les éléments, le texte et tout
le Sur le navigateur. Heureusement, vous pouvez voir le code de chaque page Web en accédant à la page source
comme je l'ai fait ici. Voici donc le code,
le code HTML, tel que vous le voyez, il s'ouvre ici avec des balises HTML, et
il se ferme ici Cela a donc le titre
de la page Web, qui est celui-ci ici, un
exemple de domaine, etc. Et surtout,
sachez que
le script SML est composé
d'éléments SDML Cette ligne
est donc un élément SML, donc un méta-élément, puis nous avons des éléments de
division, c'
est-à-dire celui-ci ici Cette année, nous avons
des éléments de paragraphe. Et c'est ce qu'on appelle des tags. Donc, le tag Div et le tag
de fermeture de division. Donc, ouverture du
tag de division, du tag de division. Et puis il y a le body tag. est donc ici que se
trouve
la partie visible de la page HTML de la
page Web. Donc, tout ce que vous placez à l'intérieur des body tags,
vous le verrez. Donc, si vous avez un
exemple, un domaine ici, ce domaine est
établi pour être utilisé
, etc., c'est ici que
vous voyez ce texte Ce domaine est établi
pour être utilisé pour, etc. Les éléments HTML
sont donc essentiels pour le scrabbing sur le Web. Donc, en gros,
disons que
vous voulez extraire le texte des balises de la
première page de tous les
DIF, de toutes les divisions Donc, ce que vous dites à Python,
c'est de consulter toutes les balises Age One et
d'extraire le texte de ces balises. Python qui le fera. Mais
avant tout, vous devez charger l'
intégralité de ce script en Python, et le moyen de le faire est d'
utiliser la bibliothèque de requêtes. Les requêtes vous permettent donc
de donner une URL à Python, par exemple exemple.com, et Python
récupérera tous les textes Ensuite, une fois que vous aurez ce texte, vous utiliserez la
magnifique bibliothèque SOAP pour extraire tous les
éléments du texte. Par exemple, l'examen, le texte contenu dans les balises HD h one. Vous pouvez ensuite stocker
le texte extrait dans des
variables dans des dictionnaires Python
ou des cadres de données Pandas, et partout où cela vous semble
utile pour vos besoins C'est donc le concept et vous pouvez voir le
même code source, comme vous le
savez peut-être déjà, lors de l'inspection. Cliquez donc avec le bouton droit sur Inspecter
et vous voyez ceci. Voici donc
ce code source, mais vous le voyez plus organisé. Ainsi, par exemple, si vous
passez votre souris
sur les balises body, l' élément correspondant de
la page Web sera
surligné tel que vous le voyez Donc, si vous étendez cela, vous êtes
maintenant à la limite
en matière de balises, etc. Cela vous permet donc de
voir réellement les noms de la taxe pour les éléments que
vous souhaitez extraire. Nous allons donc utiliser la fenêtre d'
inspection pour comprendre le
code source de nos pages Web Il s'agit donc du
concept de Web scrapping. Et je vous verrai dans
la prochaine conférence, où je chargerai une
page Web en Python, puis nous en extrairons quelques données
simples. Donc, juste pour commencer avec bibliothèque de
requêtes et la
magnifique bibliothèque de savons. Passons donc à autre chose.
198. 197. Exemple de scraping Web avec Python: Donc, comme vous le voyez, c'est
assez simple. Et intentionnellement, j'ai
essayé de vous trouver une page
Web simple. Alors, on y va. Je ne voulais pas vous distraire avec beaucoup de contenu pour le moment Plus tard, vous pourrez récupérer des informations sur un gros
site Web contenant de nombreuses données. Alors pour l'instant, essayons de saisir. Supposons que nous voulions extraire les noms des
villes de cette page. Donc, si vous souhaitez suivre le MIP, veuillez saisir cette adresse dans
votre barre d'adresse avec un
point HTML à la fin avons donc n'avons donc que trois villes ici que
nous allons extraire Mais le code que nous
allons écrire fonctionnera avec n'importe quel nombre de lignes ici. J'utiliserai le bloc-notes
IPython
ou le bloc-notes Jupiter
comme on l'appelle maintenant. Il donc été renommé
JPeter Alors, déplacez le pointeur droit vers la droite, cliquez et ouvrez
votre ligne de commande. Livre de nœuds JPter. Et je vais créer un livre
électronique gratuit sur Python. Génial. Donc, la première
chose à faire est de charger ce code source en Python. Pour ce faire,
utilisez la bibliothèque de requêtes. Donc, si vous ne l'avez
pas installé, vous pouvez simplement
l'installer avec PIP install ou des requêtes
similaires Je l'ai déjà, donc je suis
déjà satisfaite. Mais le processus est très simple, vous savez
donc déjà comment
installer des packages avec PIP. Et vous avez également besoin de la
magnifique bibliothèque de soupes. Donc, pour l'installer, vous devez dire PIP install
again et non Beautiful Soup, mais Bs pour so, cela signifie
Beautiful Soap Four Voici donc la dernière version
de Beautiful Soap. Et ensuite. Vous souhaitez donc importer des requêtes, et la première chose à faire est de charger
le code source. Ensuite, nous commençons à rechercher des balises
HDML et à extraire
des éléments de ces Mais permettez-moi également d'importer du
beau savon. Donc, à partir de BC BC Four,
importez. Belle soupe. Voilà donc la syntaxe.
Vous importez la magnifique
classe de soupe de BC Four. Si vous utilisez Python 2, cela devrait être
légèrement différent. Vous voulez donc importer
du beau savon directement comme celui-ci. OK, Alt Enter et
passer à la ligne suivante. Donc, pour charger une page Web. Il est conseillé de créer une variable afin de pouvoir charger le code
source de la page Web dans cette variable. Donc égal à requests dot
Get so the G method. Vous pointez donc sur la bibliothèque,
puis sur la méthode Get. Et il vous suffit de transmettre ici l'URL de la page Web
que vous souhaitez charger. Donc, dans ce cas, pythonhw.com. Exemple de code HTML à points. N'oubliez donc pas le code HTML. Il s'agit simplement d'une page Web statique, vous devez
donc y transmettre
l'ICML Maintenant, cela devrait créer
un objet de demande. Nous n'en sommes donc toujours pas là. Et ce que vous voulez faire,
c'est récupérer le contenu de ce type de données de demande et peut-être le stocker
dans une autre variable. Donc, le contenu est stocké dans
une variable C comme celle-ci. Et si vous voulez vérifier maintenant ce que cela voit, vous verrez
qu'il s'agit d'un type de données octet. Et tu peux l'
imprimer si tu veux. Même si cela
n'a pas l'air très beau, il s'
agit en fait du
code source que vous voyez ici. Nous avons donc la balise
head les balises HTML et
tout le reste. Et maintenant, c'est ici que la belle soupe
entre en jeu. La requête ne fait donc charger
le
code source de la page Web, mais sous une
forme très brouillée, comme vous le voyez ici Maintenant, si vous voulez le
rendre beau et extraire les éléments
, le texte et tout le reste de
ce code source, vous devez utiliser du beau savon. Donc, Beautiful
Soup ne fait qu'analyser ce code source et vous
donner ce que vous voulez Vous donnant ainsi les éléments du texte HTML
qui vous intéressent. Vous avez donc déjà
chargé ce contenu, et maintenant vous voulez peut-être créer une variable
et l'appeler soupe. Et cela équivaudrait
à une belle soupe et devinez ce que vous
voulez offrir ici. Eh bien, ce serait le contenu. Et peut-être un autre argument. Vous souhaitez donc spécifier l'analyseur que vous souhaitez utiliser
pour analyser ces données Il s'agit normalement
de l'analyseur HDML. C'est donc ce que vous
voulez utiliser presque toujours. Si vous ne le spécifiez pas, vous recevrez un avertissement, mais les choses fonctionneront quand même. Donc, d'habitude, je le passe là-bas. Et une fois
que vous l'avez fait, exécutez ce L. Si vous le savez, imprimez soup prettify avec des
crochets vides à cet endroit Vous verrez le code source de la page Web sous une forme
organisée. So Beautiful Soap est formé
pour reconnaître réellement ces étiquettes, puis
les restituer visuellement
à l'œil nu. Cependant, ce n'est qu'à
titre de démonstration. Normalement, vous n'aurez pas à beaucoup utiliser la
jolie méthode phi car une meilleure
méthode pour voir ce code, comme je l'ai déjà mentionné, est de me laisser supprimer la cellule. Nous n'en avons pas besoin. Donc,
une meilleure façon de voir ce code source est d'
aller sur votre page Web et d'aller inspecter. Vous verrez ici une
meilleure syntaxe du code HTML Vous allez donc le voir ici. Nous avons trois divisions ici. Avec un cours sur les villes. Nous avons d'autres
divisions ici, mais c'est ce qui nous
intéresse. Le corps est donc tout. Et si vous développez l'une
de ces divisions, vous verrez que nous
avons une balise H deux, donc une balise de titre, et également une balise de paragraphe. Donc P tag et H deux tags. Et l'autre division,
qui est celle-ci ici, possède également qui est celle-ci ici, possède cette balise H two et
la balise de paragraphe. Et Tokyo a également
la même chose. Notre devoir est donc maintenant d' extraire les noms
de ces éléments. Ce serait donc le H deux, le texte des deux balises H
à l'intérieur des balises de la ville. Alors naturellement, vous
commencez à penser à parcourir ces cases qui sont en fait des divisions Vous voulez donc passer par ici, ici et ici et extraire
ce que vous voulez extraire. Nous revenons donc au code, et ce que vous voulez faire, c'est exécuter une méthode appelée find A. Et ce que vous voulez
trouver, c'est Divs Devs, mais il peut y en avoir beaucoup sur
la page Web Donc, par exemple, nous
avons deux autres divs ici. Et nous ne voulons pas qu'
on les trouve. Nous ne
voulons que ces trois-là. Mais ces trois, comme
vous le voyez, ont un attribut de classe commun
qui est égal aux villes. Nous voulons donc en faire usage. Et nous passons ici un dictionnaire, dont la classe serait
égale à celle des villes. OK, permettez-moi de créer
une variable ici, tout
appeler et de l'exécuter. Maintenant, si vous imprimez tout, vous verrez que les divisions ont été
extraites du code source. Donc, à partir de la soupe, qui était
le code source complet. Et j'aimerais que vous y
voyiez de près. Vous pouvez voir que
la première division est divisée par une virgule ici Ensuite, la deuxième
division commence. Donc pour Paris, Paris est le deuxième, ça s'arrête ici
, puis Tokyo commence ici. Nous avons donc une liste
de trois éléments, un pour chaque division. Maintenant, si vous souhaitez rechercher uniquement le premier élément
avec cet attribut de classe, self cities, vous
devez utiliser la méthode find. Dans ce cas,
vous n'obtenez pas de liste, mais la division de code
pour la première division uniquement, qui se trouve être un élément de balise d'une belle soupe. Il ne s'agit donc pas d'une simple ficelle, mais d'une ficelle à savon spéciale, disons, d'une
magnifique ficelle à savon. Ainsi, ce beau savon
connaît sa structure, il sait quels éléments ou où se
trouvent les balises , où se trouve le
texte, etc. Cette belle soupe
est donc en mesure de vous donner les informations que
vous recherchez. Encore une fois, vous extrayez
le premier élément. Maintenant, une autre façon extraire le premier
élément est de manière logique. Nous avons
donc tous les éléments ici, c'est d'utiliser l'indexation par liste Donc cet objet que
je viens de vous montrer, l'objet technique de Beautiful
Soup, supporte l'indexation. Donc, vous l'exécutez. Et dans ce cas, comme vous le voyez, vous extrayez le premier
élément de l'objet tag, ou vous pourriez le faire comme ça, pour les récupérer tous. les avez donc toutes ici, et zéro est le premier. Tu as compris l'idée. D'accord,
mais que se passe-t-il si vous ne voulez que les balises H
de cette classe D ? Eh bien, dans ce cas,
vous devez faire référence à l'objet, puis appliquer à nouveau
la méthode fine. Et cette fois, vous voudriez
obtenir l'élément H deux. Et dans ce cas, vous n'
avez pas d'attribut de classe, vous devrez
donc le
laisser comme ça. Et vous obtenez une erreur parce que
ce que j'ai fait ici, c'est que je n'ai pas indiqué cette division, mais
plutôt la liste. Contenant toutes ces divisions. Python essaie d'
obtenir le H deux, mais cette méthode de jeu de résultats ne contient pas cet élément H deux. Donc, ce que vous voulez
faire, c'est pointer sur le premier
élément de la liste, et cela vous donne
l'élément H deux avec le texte et le texte, ce qui ressemble à une liste, donc vous voulez y effectuer
une indexation zéro Et si vous ne voulez que Londres, vous appliquez un texto et
vous obtenez Londres. C'est donc ce que
nous voulions, non ? Pour extraire les villes. Nous avons donc extrait Londres. Maintenant, que diriez-vous d'extraire
Paris et Tokyo ? Eh bien, comme vous pouvez le deviner, nous devons utiliser quatre boucles. Mais d'abord, permettez-moi de résumer
ce que nous avons fait ici. Nous avons donc chargé le
contenu ici, c'
est-à-dire celui-ci ici,
puis nous l'avons chargé la
belle méthode de la soupe. Et une belle soupe
rend cette soupe belle pour qu'elle
reconnaisse les étiquettes. Ce que nous avons fait
ensuite, c'est que nous
avons trouvé, extrait de ce contenu. Nous avons extrait tous les éléments
de division. Donc, avec les balises les attributs et
le texte qu'ils contiennent. Tout ce qui se trouve à l'intérieur de
ces divisions avec une classe est égal à une ville. Ensuite, pour chacun de
ces éléments de cette liste,
nous pouvons exécuter, encore une fois,
une méthode de recherche complète. Nous pouvons donc trouver les balises
de sous-taxe de cette division. Et dans ce cas,
nous avons trouvé le tag H. Ensuite, nous récupérons le
premier élément de la liste, qui dans ce cas était une liste avec un seul élément. Chacune de ces divisions
a donc un H à taxer. Ou bien,
vous pouvez simplement utiliser find ici et sans
utiliser cette indexation. Mais il s'agit d'une méthode générale. Ensuite, nous
y appliquons l'attribut text afin d'extraire le
texte de cet élément. Nous avons donc eu Londres. Maintenant, nous devons faire de même, mais dans ce cas, en itérant. Donc, pour, disons, l'élément en
O, vous souhaitez l'imprimer. Donc, l'article est celui-ci ici. Ce serait donc le premier élément. Vous souhaitez donc imprimer
l'article qui trouve pull. Et vous voulez trouver les
deux balises H de ce premier
élément, par exemple. Donc, il y a deux balises, puis vous devez appliquer
cet indice zéro là-dedans, et vous voulez récupérer le texte à
partir de celui-ci, et c'est tout. Voici les données. Sinon, vous pouvez simplement passer P ici et vous
obtiendrez les paragraphes. Donc celui-ci est là, le texte. C'est donc l'idée de
charger des pages Web en
Python, de
les analyser avec du beau savon et extraire des textes de la Désolée si j'ai été un peu répétitif en
expliquant ces choses, mais je veux vraiment m'
assurer que vous comprenez les concepts de base. autre côté,
si vous trouvez cela très basique, je dirais que allons passer aux prochaines
conférences où nous allons extraire des informations
d'un site Web plus avancé, et nous allons extraire des
liens et pas seulement Il s'agit donc d'un
programme réel et très
intéressant. Je te parlerai donc plus tard.
199. 198. App 8 : démo d'une application de scrapping Web ++: Bonjour, bienvenue dans
cette nouvelle section. Et, comme d'habitude lors de
la première conférence, je vais simplement vous faire
une démonstration du programme que
vous allez créer. Vous
aurez donc ce programme entre vos mains
à la
fin de cette section. Et oui, au cours de mon
travail en tant que freelance, j'ai constaté une
augmentation de la demande de données provenant d'Internet
auprès de différents clients, et ces données peuvent servir à différentes
fins Par exemple, vous pouvez avoir
besoin
de données immobilières provenant de sites Web immobiliers
tels que celui-ci, ou vous pouvez avoir besoin d'entreprises, donc d'une liste d'entreprises, et vous voudrez peut-être les
rechercher sur les pages
jaunes ou même sur des
informations de Wikipédia. Le problème, c'est que ces
sites Web ne
vous fournissent pas , comme un CSV les données que vous
recherchez. Ils ne le font donc pas. Et ce que vous voulez
faire dans ce cas, c'est supprimer les données
de ces sites Web. Et oui, vous pouvez avoir besoin de données à différentes
fins. Et nous pouvons le faire. Nous pouvons faire du web scrapping. Le processus
s'appelle donc Webscrapping. Nous pouvons le faire avec Python. Python est donc parfait pour cela. En gros, vous
obtenez ces données et vous les
stockez dans une table, telle qu'un cadre de
données Pampas ici, et vous pouvez également
les exporter facilement en sortie Oui, dans cette section, vous allez faire scrapping sur ce site
immobilier Ainsi, avec Python, vous allez
effectuer une requête de recherche
sur un certain emplacement. Python recherchera donc des données, puis il obtiendra ces données, et il les stockera dans
ce tableau, puis enfin, je dirais alors dans un fichier CSV
out food. Tout est donc automatique. Et vous souhaiterez peut-être
obtenir différents attributs sur le site Web. Donc, dans notre cas, nous avons obtenu
cet ensemble d'attributs. Et oui, vous pouvez obtenir ces données en un seul
cycle de programme. Mais bien sûr, tout d'abord, vous devez créer ce programme, et c'est ce que nous allons
faire lors des prochaines conférences. C'est donc très utile. Et en plus
d'apprendre le scrapping Web, cela améliorera également vos compétences en
Python en général Et oui, commençons, et je vous parlerai
lors de la prochaine conférence.
200. 199. Chargement de la page Web dans Python: Voilà, je suis contente que
vous regardiez ceci, c'est formidable que vous soyez
arrivée aussi loin dans le parcours. Et dans cette conférence, en fait, au cours des
prochaines conférences, vous apprendrez à supprimer
des données de ce site Web. Il s'agit donc d'un site Web
immobilier, et ce qu'il fait, il répertorie les propriétés à
vendre ou à louer. Donc, en gros,
disons Rock Springs. Il y a en fait
quelques sources rocheuses là-bas, disons Wyoming
Rock Springs dans le Wyoming Nous recherchons donc
des propriétés là-bas. A dans le Wyoming et il dit avoir trouvé 28 annonces C'est donc une petite
ville, une petite ville. L'idée est donc d'
apprendre à
supprimer les données de chacune
de ces propriétés. Donc, quel
prix peut être fixé, c'est que vous y avez l'adresse,
le nombre de paris que l'établissement a, les
bains, etc. Et vous obtenez également les
pieds carrés des propriétés. Si c'est disponible. Les propriétés n'en ont donc pas, nous devons donc également en tenir compte
. De plus, vous supprimez les données
de plusieurs pages. Nous avons donc dix propriétés
ici sur cette première page. Ensuite, à la
page suivante, nous en avons dix autres, puis à l'avant-dernière page, nous avons le reste
, soit huit, soit 28 au total. Non, normalement, je suppose
que vous connaissez les demandes et les
magnifiques bibliothèques de savons. Vous auriez donc dû suivre les conférences
précédentes
où nous avons extrait des
données d' une simple page Web C'était
donc un exemple trivial Et je crois
qu'après cet exemple, vous vous retrouvez avec ça, et maintenant ? Donc, pour cette raison, je voudrais que vous appreniez
à supprimer des données réelles. C'est donc l'un
des véritables programmes que nous élaborons
dans le cadre de ce cours. Et dans le script que
nous sommes sur le point d'écrire, vous serez confronté à de véritables problèmes de
programmation, ce qui est très important pour développer vos compétences,
vos compétences en Python. Juste un problème. Avant de
supprimer des données d'un site Web, il est bon de lire les
politiques relatives aux données de ce site Web Ils peuvent donc avoir des politiques
interdisant d'utiliser ou d'
obtenir leurs données. Je l'utilise à des fins
éducatives, donc je pense que vous
ferez de même. Cela ne devrait donc pas poser de problème. Alors allons-y et
écrivons le programme. Et j'utiliserai le
Jupiter Notebook. Je vous suggère de faire de même. Cela créera donc un fichier de bloc-notes
Jupiter. J'utilise donc Python 3. Appelez ça Century 21. Génial. Vous savez donc maintenant que la toute première chose que vous voulez faire
lorsque vous écrivez un programme peut-être d'importer les bibliothèques
que vous allez utiliser. Vous utiliserez donc des demandes
et du beau savon. Donc, de By four Import. Génial. Maintenant, passez à la ligne suivante. Et revenons
au site Web. Alors maintenant, la première chose à laquelle vous voudrez
peut-être réfléchir est savoir comment charger le
code source des pages Web ? Et maintenant, en fait, c'
est un peu compliqué. Je veux dire, ce n'est pas très compliqué, mais c'est différent de la page Web statique que nous avons supprimée lors des conférences
précédentes Voilà, nous allons
supprimer trois pages,
comme je l'ai dit, et la
bonne chose est que chacune de ces
pages possède une URL unique Donc, lorsque vous êtes sur
la page principale, vous voyez que l'URL est
tout simplement simple. Mais ensuite, lorsque vous recherchez un lieu, alors regardez l'URL.
Maintenant, lorsque je recherche, l'URL changera. Il est donc allé à l'immobilier de
Rock Springs et du Wyoming. Voici donc la chaîne, donc pour le lieu
que vous recherchez, Rock Springs et WY et vous avez également
quelque chose d'autre dont vous devez être conscient. L'idée est donc que vous obteniez
maintenant cette URL. Donc, d'abord, nous allons supprimer uniquement
la première page. Et une fois que nous l'avons
saisi, nous pensons
aux pages suivantes. Donc, comme les
pages suivantes sont identiques, la structure est la même, mais nous allons simplement écrire une boucle pour
parcourir les pages suivantes Allons-y et
déchargeons la première page. Disons que request dot
get voici l'URL. Et nous voulons connaître le contenu
de cet objet de requête. Donc ce contenu. Et
imprimons-le. Donc, un simple test. Mmm, hum. Mmm, hum. Très bien, donc ma
connexion Internet fonctionne. C'est tout ce que nous
savons de ce code, car
nous ne pouvons pas le lire. Ce que nous voulons faire, c'est passer à la prochaine vente et rendre
ce code plus lisible. Nous devons donc utiliser le
magnifique suplibrar ici. C et l'analyseur, qui est un analyseur HTML Et peut-être de la soupe imprimée. J'ai cinq ans. Eh bien, voyons voir. Voici donc la page. Parfois, vous pouvez être
expulsé de la page Web Vous voudrez peut-être vous
assurer que la page
s'est chargée correctement. Alors peut-être que je pourrais aller ici
et chercher quelque chose. Alors Winchester, je vais
chercher Winchester. Oui, donc la page semble
s'être chargée correctement. Et nous n'avons pas besoin
de cette jolie pièce. Alors laisse-moi nettoyer le
carnet qui s'y trouve. Nous avons donc pu charger correctement la
page avec les demandes. Et maintenant, quelle est la prochaine étape ?
Eh bien, nous devons ensuite comprendre la
structure de la page Web. Nous devons donc utiliser l'
outil d'inspection dans notre navigateur, et nous le ferons lors de la
prochaine conférence. Alors, tu verras.
201. 200. Extraire des éléments de Div: Génial. Passons donc à notre page. Nous y avons donc cherché des ressorts de
travail. Et ce que nous voulons faire maintenant, c'est comprendre la
structure de la page Web. Nous y utilisons donc l'outil Inspect. Et la logique est que vous voulez parcourir toutes
ces cases, pour ainsi dire Nous récupérons donc le code HTML
de ces boîtes, puis nous entrons dans
ces codes HTML Nous parcourons donc ces HTML de manière
itérative. Ensuite, nous trouvons les balises pour les données que
nous voulons obtenir. Cela nous amène donc au point que nous devrions rechercher
les éléments qui
identifient ces boîtes. Donc, si je vais inspecter à nouveau ici, je verrai que cette demi-boîte
porte ce div avec cet identifiant. Et en fait, je veux
un niveau supérieur, donc je veux que toute la boîte s'y trouve. Donc, si je vais ici, maintenant, cela ressemble à la boîte
entière ici. Donc, l'intérieur
devrait contenir les données. Voici la photo.
Et c'est le prix. Voici donc un texte
pour le prix, et nous avons ce prix d'accessoire tant que classe pour le tag H four, qui crée ce numéro ici Il s'agit donc de la
première division de division. Ensuite, nous devrions
avoir la prochaine plongée quelque part là-bas, ici. Donc ligne de propriété, ligne de
propriété ici, ligne propriété, ligne de
propriété encore une fois. Donc, la
ligne de propriétés de classe et encore une fois ici. Et laissez-moi le mettre ici. Il faut donc l'ancrer en bas pour que l'on puisse y voir toute
la boîte OK, comme ça. Alors, on y va. Donc, j'aimerais les
supprimer et les enregistrer
dans un fichier CSV ou un fichier Excel avec des pandas plus tard c'est que je vais obtenir le
prix, l'adresse, le nombre de lits,
le nombre de baignoires, la superficie de la propriété et aussi la taille du terrain
s'il y en a beaucoup Certaines propriétés n'
ont donc pas de charge à cet égard. Nous avons donc une astuce, et vous allez
apprendre à la déchiffrer. Voici donc les
données que je vais récupérer
pour chaque propriété. Et permettez-moi de
le replacer ici. Et vous pouvez soit
cliquer ici et inspecter, directement
aux éléments, donc au prix, soit y aller manuellement, ce qui est probablement mieux car cela vous aide à
mieux comprendre
le site Web, sa structure. Il s'agit donc d'un prix,
et puis ici en bas,
ici à l'intérieur, il devrait y avoir les éléments d'adresse, les
principaux détails. Ce sont les paris. Donc, si nous développons cela, vous verrez que voici
le texte de l'adresse. Il a donc une durée de
avec ce nom de classe. Voici le nom
de la ville, le code de l'État et le code
postal. Génial. Mais tout
d'abord, comme je l'ai dit, je dois passer par cette classe de ligne de
propriétés du Div. Alors faisons-le ici. Et vous savez que vous avez
une méthode appelée final, qui s'applique à
l'objet soupe. Enfin, cela
générera une liste avec
tous les éléments dif qui ont une classe de
was it Property row ? Oui, c'est Property Row. Une rangée de propriétés avec un R
majuscule, c'est tout. Je vais donc entrer, exécuter ça. Alors, que pouvez-vous faire ? Eh bien, imprimez-le tous et vous verrez
peut-être ce que vous obtiendrez. Cela commence donc
au tout début de la toute première division des rangées de
propriétés. Ce serait donc
le premier prix, qui était celui-ci
ici, ici, ici. Ensuite, il devrait y avoir une
virgule après la fin de la première
division Quoi qu'il en soit, si vous ne voulez pas les
trouver manuellement,
vous pouvez faire quelque chose. Vous pouvez trouver la longueur de tout
cet objet qui
ressemble à une liste, n'est pas exactement une liste. En fait, c'est
un élément du jeu de résultats du B four de la
magnifique bibliothèque Soup, mais il possède une fonction de longueur,
tout comme la liste 2. Donc, la longueur, et tu en as dix. Et nous avons exactement dix
résultats pour chaque page. Donc, première page ici, deuxième
page, dix résultats et ainsi de suite. Maintenant, c'est comme une liste, donc il n'y a pas de bonne
méthode, mais ce sont des éléments. Supposons donc que le premier élément, cet élément ait une méthode finale. Donc, tout comme vous le faites
avec une belle soupe, si vous appliquez la
méthode, une méthode finale, une belle soupe pour
trouver les éléments des tags, vous pouvez faire de même pour les
éléments de la liste A. Pour ainsi dire, appelons
le résultat une liste. Cela signifie que vous pouvez appliquer une méthode fine à
ce code source. Cherchons donc le prix. Eh bien, vous pouvez aller à
l'inspection ou simplement regarder ici si c'est le cas, ce n'est pas beaucoup de code. J'ai donc trouvé le prix ici. Nous avons donc les balises H
quatre, H quatre. Et il a également un
prix immobilier, une classe de prix. Passons donc ça. Vous pouvez
choisir de ne pas le faire passer. Mais le problème que vous pourriez
rencontrer si vous ne transmettez pas le nom de la classe est
que si vous avez d'autres balises H four dans le code, Python
les extraira également. Vous devez donc spécifier le
H quatre que vous souhaitez. Alors,
trouvez le prix de l'accessoire , et voici le prix C'est donc un prix, mais
avec les étiquettes aussi. Et il s'agit en fait
d'une liste, comme vous le voyez. Maintenant, comme nous n'avons qu'
un seul prix pour chaque propriété, dans ce cas, nous sommes autorisés
à utiliser la méthode find. Cela ne
nous donnerait donc pas des résultats , mais l'élément
technologique proprement dit. Cela signifie que nous pouvons maintenant
appliquer un objet texte ici, et nous y obtenons cette chaîne
géniale Les choses ne sont donc pas si
simples dans la vraie vie, comme vous le voyez, mais heureusement, tout cet objet est
en fait une chaîne. Il s'agit donc d'une simple chaîne Python. Cela signifie que vous pouvez appliquer des méthodes de
chaîne à cet objet. Laissez-moi donc contrôler cela
pour supprimer le type. Donc, dans ce cas, ce que nous voulons
appliquer, c'est
supprimer tous ces caractères. Et une façon de le faire à laquelle
je pense est de remplacer. Vous voulez donc remplacer la
barre oblique inverse N par rien. Il suffit donc de passer une chaîne
vide et de voir ce que vous obtenez. OK, ces gars du site Century 21 ont décidé de
nous compliquer la vie. Mais que diriez-vous de postuler ? Nous avons donc de l'espace
blanc, comme vous le voyez, donc nous remplaçons l'
espace blanc par rien, et nous obtenons la chaîne elle-même. Génial. Nous savons donc en quelque sorte que les choses
fonctionnent bien à ce stade. Et pour l'instant, je ne fais qu'
imprimer les résultats. Comme je l'ai déjà mentionné, il est conseillé d'utiliser
d'abord des instructions d'impression lorsque vous
créez vos programmes, puis de remplacer ces instructions d'
impression d'autres fonctions que
vous souhaitez utiliser pour données que vous obtenez ou les
autres objets avec lesquels
vous travaillez. Ainsi, dans notre
exemple, plus tard, nous ajouterons des méthodes
pandas pour récupérer ces valeurs et
les envoyer dans un fichier CSE C'est donc l'une des premières
choses que je voudrais dire. La deuxième chose est que nous saisissons
ici la valeur
du premier élément. Et maintenant, nous commençons à
réfléchir à l'efficacité. Nous devons donc au lieu
d'extraire tous les autres éléments tels que l' adresse de
la propriété et l'état de la
propriété, etc. Peut-être que c'est bien de
commencer à construire notre boucle for. Nous savons donc maintenant que les valeurs
individuelles sont correctement extraites. Mais maintenant, nous voulons nous
assurer qu'une boucle
qui parcourt toutes ces
propriétés fonctionne également Et allons-y et commençons à écrire la boucle de
l'autre conférence. Mais pour l'instant,
organisons réellement ce code. Voici donc une astuce que vous
pouvez utiliser dans Jupiter. Je passe donc à la première cellule
et je suis en mode commande. Vous appuyez donc sur Escape pour
passer en mode commande
et Shift et J, vous sélectionnez l'autre case. J, encore une fois, sélectionnez l'autre cellule, ou vous pouvez monter avec K, donc J, J, J. Et ce que je veux
faire maintenant, c'est fusionner toutes ces cellules
en une seule cellule. Et pour ce faire, en
appuyant sur Shift, vous appuyez, donc sur Shift M, et vous fusionnez toutes les cellules
en une seule cellule. C'est donc plutôt une
question de préférence, mais il est bon d'avoir un carnet
propre. C'est donc ce que nous avons fait jusqu'à présent. Allons-y et tournons la boucle dans une autre conférence. On se voit.
202. 201. Scraping les adresses des propriétés: Nous avons donc trouvé tout le
contenu de la page Web, qui est en fait
le code source. Et nous avons également obtenu le code source des divisions avec
classe property row. Et maintenant, nous n'avons pu obtenir le prix de l'immobilier
que pour la première division. Donc, uniquement pour la première case ici, maintenant pour obtenir toutes les cases, nous devons itérer. Donc, DD pour le supprimer. Et quatre,
disons, un article en alliage. Et en fait, j'
aimerais que tout soit
imprimé ici afin que vous
puissiez voir de quoi il s'agit. Donc, si vous oubliez
cela pendant un moment, vous pouvez voir ce que c'est. C'est donc comme une liste. Donc, pour l'article en tout, allez ici. Nous allons donc utiliser la méthode
d'impression ici. Mais j'aimerais l'
écrire à la fin parce que je ne veux pas y
ajouter de crochets maintenant. Il est donc bon d'avoir moins de
crochets pour le moment pour que vous voir ce
code plus clair, le code réel. Nous allons donc passer en revue
le premier élément, qui est cette division ici, et nous voulons appliquer
la méthode de recherche à cet élément ou simplement
la méthode de recherche car nous n'avons qu'
un seul H quatre ici. Donc, trouvez, et nous
voulons trouver le H quatre, qui a une classe de prix d'accessoire Et puis ce que nous
voulons obtenir de ce produit, c'est le texte. Comme vous avez vu que le texte
était un peu embrouillé, nous voulons remplacer les barres
obliques inversées par rien,
puis les remplacer par un autre Il y avait donc de l'espace, et remplacez-le par rien. C'est donc la même ligne qu'ici. Ensuite, vous
voulez l'imprimer. Ajoutez-y donc une déclaration imprimée. Et oui, c'est ça.
Voyons comment cela se passe. Hmm. C'était rapide. Donc 725, 452. Miam. C'est une bonne chose. D'accord. Permettez-moi de
le supprimer pour économiser de l'espace. Nous l'avons donc tous
déjà défini ici. Nous n'avons donc pas besoin de l'ajouter ici. Et allons-y maintenant et extrayons cette passerelle zéro qui
ne semble pas un très bon exemple. Ignorons donc cela et
extrayons cette adresse ici. Donc Winchester Boulevard, et ce serait
inspecter Mmm hmm. Cela a donc une balise span avec une classe de prop
address collapse Mais vous pouvez voir
que vous avez également une autre classe ici,
prop address collapse Donc deux classes,
voici l'adresse, et voici le
nom de la ville. Et regardez si vous avez une autre adresse
accessoire, non. Non, nous ne le savons pas. Donc, l'
adresse de l'accessoire s'effondre Ajoutons une autre
déclaration ici. Article. Ces adresses sont donc à nouveau incluses
dans cette méthode. Donc, trouvez l'objet. Maintenant, si vous utilisez fine cette
fois au lieu de Fine
Ole, le script va
récupérer la première occurrence d'un collapsus d'adresse
accessoire Il vous donnera donc l'adresse du boulevard
Winchester, et il ignorera
la seconde Il ignorera donc Rock Springs. Cela signifie donc que nous
devons utiliser le bon O. Et si vous voulez
obtenir cette première ligne, vous devez passer
l'indice zéro à cette liste de résultats , puis un indice de un
pour la ligne suivante. C'est ce que nous allons faire. Il s'agissait d'une balise span avec une classe de again, prop
address collapse Permettez-moi donc de l'imprimer pour
voir ce que nous avons jusqu'à présent. Voici donc le prix
de la première propriété, puis nous récupérons la liste des
résultats, qui comporte en fait deux éléments. Donc, l'adresse ici, puis le nom de la ville avec un
code d'État ici et un code postal. Cela signifie donc que nous devons
appliquer ici un indice zéro, si vous voulez obtenir
le premier, d'accord ? Et puis, euh, voyons voir. Voici donc le
premier, le premier élément. Si vous voulez le second, vous devez le copier
ici et le transmettre ici Exécuter. Et c'est parti. Ah, je suppose que vous voulez le texte, donc vous voulez y appliquer
la méthode du texte. Hum. Génial. Et juste pour des
raisons de visibilité, ajoutons une autre
ligne à la fin de la boucle pour passer
une chaîne vide. Maintenant, vous pouvez voir les
blocs plus clairement, et nous en avons dix. C'est génial, n'est-ce pas ? Allons-y maintenant et extrayons le nombre de lits et
le nombre de baignoires. Il s'agit donc d'une balise span
avec un lit d'information sur les classes. Et des bains. Voici l'autre verre rotatif. Si je valorise le bain complet. Maintenant, nous avons un problème. Non, nous devons faire attention car nous devons prendre
le nombre de bains ici, qui se trouve à l'intérieur des balises B. Mais le nombre de bains
figure également dans les balises B. Vous pouvez donc aller de l'avant et appliquer une méthode fine directement
dans ce niveau. Donc, directement sous O. Mais cela poserait probablement des problèmes car vous
avez plusieurs B. Vous avez donc également la zone, qui devrait également être un
peu taguée. Classe Span. Oui,
c'est un peu bizarre. Donc, parfois, vous avez trois balises B, parfois
vous en avez plus. Il peut donc y avoir deux
solutions. Vous pouvez soit partir
du principe
que les paris sont toujours les premiers transmettre un indice de zéro
à la liste des résultats. Vous obtenez donc des lits,
puis bain
complètes avec un indice de un ou deux pour ce pied carré ici,
et de trois pour celui-ci. Mais je préfèrerais le faire
de manière plus constructive. J'aimerais donc d'abord extraire
ces étiquettes de dépenses, puis entrer dans chacune d'
elles et extraire
la valeur contenue dans la balise B. Nous avons donc de la place pour le lit d'information et pour les salles de bain complètes
, et c'est celui-ci ici. Oui, en fait, c'est
répertorié comme le troisième. Les lits sont donc les
premiers et les pieds carrés, la surface est la deuxième,
puis les lits complets et ainsi de suite. Nous n'avons donc pas à
penser à leur ordre. Il suffit de récupérer
les noms des classes. Donc, je parie que
cela signifie que vous voulez accéder à
l'objet, très bien, dans ce cas. Vous voulez donc trouver l'envergure, et passons d'abord aux lits, qui étaient des lits d'information. Imprimons-le donc d'abord
pour voir si vous êtes prêt à partir. Vous n'en obtenez donc aucun pour
la première propriété. Il ne contient donc aucune
donnée sur les lits et les baignoires, vous ne pouvez
donc
rien y faire. Il vous suffit parfois de
n'accepter aucune donnée. Et puis voici le code, donc le code source du
suivant. Maintenant, voici une astuce. Si vous appliquez la
méthode du texte à cet objet, il devrait
donc être ici, ce texte, vous obtenez une erreur. Et regardez attentivement
ce que dit l'erreur. Il indique donc que l'objet non
typé n'a pas de texte d'attribut. Cet objet non typé
était celui-ci ici, donc none, qui est
un objet spécial, et aucune méthode de
texte n'est disponible. Vous devez donc
compter pour cela. Et la façon dont vous comptez ces exceptions est d'utiliser
une instruction try and accept. Vous devez donc
joindre cette
déclaration imprimée ici avec try Alors essayez ceci si cela fonctionne. Si ce n'est pas le cas, il y a
d'autres choses ici. Alors, c'est passer. Donc, ignorez simplement ces
non-types ici. Encore une fois, essayez de tirer réellement la méthode du texte
de cette plage de texte. Et si cela n'est pas disponible, passez simplement à l'
itération suivante de la boucle Essayons donc ça. Et
oui, maintenant ça marche. Maintenant, comme vous pouvez le voir, nous avons
le texte de la balise B, mais également le texte
de la balise span. Voici donc le
texte de la balise B, et voici le texte
de la balise span. Donc, si ça te convient,
tu peux le laisser comme ça. Mais j'aimerais n'avoir que
le numéro en clair. Et pour ce faire, vous devez
peut-être appliquer les méthodes de recherche. Nous avons donc, encore une fois, ce code source, nous devons
donc le trouver à
l'intérieur de ce code source. Nous devons trouver la balise Bt, qui n'a pas de nom de classe, nous la laissons
ainsi, et nous devons extraire le
texte de cette balise binaire. Et cela ne vous donne que
le numéro. Donc quatre, quatre, cinq, et ainsi de suite. C'est donc une bonne chose. Maintenant,
faisons de même. Je vais donc copier ce
bloc en entier et nous ferons de même pour
le nombre de bains. Créons un espace ici. Et pour ce nombre, il en
allait de même pour la taille de la zone. Et cet autre truc ici. Donc des demi-bains. Nous allons donc aussi compter pour cela. Donc, informations pieds carrés, informations pieds carrés là-bas. On va ici comme ça. Ensuite, nous avons la salle de bain complète Info
Value. Et encore une pour les demi-bains. Ce serait donc un demi-bain à
valeur informative. Exécuter. Nous avons un problème d'
indentation Alors Troy, celui-ci est bon. Celui-ci n'est pas
bon non plus ici. Vous devez donc mettre en retrait les déclarations après Troy et l'auteur de la déclaration, sauf Alors, exécutez et voyons voir. Bien. Donc quatre lits, puis
quatre salles de bain. Mais ensuite, nous avons obtenu le
quartier ou la propriété. La commande n'est donc pas
très bonne comme ça. Dans ce cas, nous ne
voulons pas écrire pass ici, mais peut-être ne voulons-nous en imprimer aucune. Dans ces cas, donc print, none, print, none. Pareil ici. Exécuter. Et maintenant, ça a l'air mieux. Maintenant, nous connaissons l'ordre dans
lequel nous savons que nous
avons quatre lits dans cette propriété, et que la taille de la zone n'
est pas disponible, puis nous avons quatre salles de bain. Et puis nous n'avons aucune information sur
les demi-bains qui s'y trouvent. Donc ça a l'air bien. Et j'aimerais m'
arrêter ici pour obtenir plus
de données lors de la prochaine
conférence. Oui, passons à autre chose.
203. 202. Scraping d'éléments spéciaux: Nous y voilà de nouveau. Et
nous avons ce script qui produit cette sortie. Nous avons donc des attributs
pour chacune de ces propriétés. Plus précisément, ce sont
les attributs de
ce bloc ici. Donc, le prix, l'adresse et certains attributs tels
que le nombre de paris, etc. J'aimerais maintenant aller plus loin et extraire la taille du lot pour chaque propriété chaque fois que
cet attribut est disponible. Ainsi, comme vous le voyez ici, certaines propriétés n'
ont pas une grande taille de terrain. Et bien que la taille du lot soit un attribut important à
connaître d'une propriété, dans ce cas, il est également assez difficile de l'
extraire de cette page Web. La raison en est que si
vous regardez le code source, vous verrez qu'il s'agit du
nom des attributs,
donc de la taille du lot, et la valeur réelle que
nous voulons extraire. Et ils font tous les deux
partie de cette division. Donc, la première
ligne. Cette division possède un nom de classe appelé groupe
de colonnes. Nous avons maintenant une autre classe de groupe de
colonnes, donc une autre division avec la classe de groupe de colonnes
ici comme deuxième ligne. Ensuite, si vous regardez
une autre propriété, donc une autre ligne de propriété. Vous verrez que cette division par groupes de
colonnes se répète ici. Ainsi, si vous écrivez une
boucle pour extraire l'étendue avec la
classe de nom d'entité pour toutes les propriétés, pour cette propriété, vous serez en mesure d'obtenir la taille réelle du lot. Mais pour cet autre, vous aurez probablement l'
âge de la propriété, mais vous vous attendrez à
la taille du terrain. Vous obtiendrez l'âge de
la propriété, car l'âge de la propriété est le premier nom de la
fonctionnalité. Et la taille du lot est également
le premier nom de la fonctionnalité. Donc, avec la classe de nom de fonction
dans la deuxième propriété. C'est donc l'un de ces cas où vous devez
réfléchir à des solutions alternatives. Donc, si vous pointez sur la méthode du groupe de
colonnes, c'est-à-dire que vous dites « trouver tout dans
une division » avec un groupe de colonnes de classe, et que vous
recherchez le nom de la fonctionnalité avec un indice zéro, vous obtiendrez les premières lignes. Tu le sais. Maintenant,
trouvons une solution. Eh bien, pourquoi ne pas parcourir
tous ces groupes de colonnes en boucle ? Ensuite, nous vérifions
que si le texte
du groupe de fonctionnalités est
égal à la taille du lot, donnez-moi le texte contenu
dans le nom de la fonctionnalité. Donc, dans cette
itération spécifique, encore une fois, si le groupe d'entités est égal à taille du
lot ou s'il contient une chaîne de
taille de lot dans le texte, alors dans cette itération en cours, donnez-moi la valeur textuelle du nom
de la fonctionnalité Nous aurons donc besoin d'une boucle ici. À l'intérieur de notre grande boucle. Donc, cette grosse boucle, appelons-la
, passe par chacune de ces lignes. Puis à l'intérieur de cela
, dans l'itération en cours
de cette grande boucle Supposons donc que l'itération en
cours passe par cette propriété À l'intérieur de cela, nous passons
aux divisions des groupes de colonnes. Disons quatre, appelons cette variable, le groupe de colonnes dans la
variable actuelle sera item. Encore une fois, article comme nous l'avons fait là-bas. Je trouve tout, en fait. Vous voulez donc trouver des
divisions dont nom
de classe est la colonne Group. Groupe. Et permettez-moi d' imprimer rapidement la variable du groupe de colonnes. Juste pour voir ce que
nous avons jusqu'à présent. Et c'est parti. Voici donc les données dont nous disposons, et c'est parti. Laisse-moi monter ici. Voici le code source de chacune
des divisions du
groupe de colonnes. Donc la première division, la
deuxième division, et ainsi de suite. Ce sont donc des fonctionnalités qui correspondent à
cet en-tête ici. Et puis il y a le style
architectural, ce qui n'est pas ce dont nous avons besoin. Nous avons le type de toit, donc
à chaque itération, Python imprime
ces lignes Maintenant, ce que nous voulons
faire avec ces lignes, restons imprimés
là pendant un certain temps. Ce que nous voulons faire
avec ces lignes c'est les parcourir à nouveau. Nous allons donc itérer
sur ce div et sur
cet autre div et nous
verrons que si le texte
ou le groupe de fonctionnalités de cette itération
en cours
a la taille du lot de chaîne,
nous obtiendrons le texte du nom de
la fonctionnalité pour
cette Encore une fois, nous avons besoin d'
une boucle à quatre points ici. Qui passera par chacune de
ces divisions de groupes de colonnes. Donc,
il accédera également à l'élément du groupe de
fonctionnalités et à l'
élément du nom de la fonctionnalité. Donc, pour le nom de la fonctionnalité du
groupe de fonctionnalités, nous devons y utiliser
une fonction zip. Comme vous vous en
souvenez peut-être, une fonction zip, qui est une fonction
Python intégrée, est utilisée pour parcourir deux
listes en même temps est donc ici que vous entrez le Tolist dans
la fonction zip Et notre liste de deux serait
la première serait un groupe de
colonnes qui
trouverait toutes les plages,
donc une étendue avec un
nom de classe ou un groupe de fonctionnalités De même, nous devons accéder
au groupe de colonnes qui trouve poll, et nous avons à nouveau besoin de la balise span. Mais cette fois, nous avons besoin d'une
classe de nom de fonctionnalité. Ne confondez donc pas ces variables
avec ces noms de classes. Et ici se ferme
la fonction zip. Donc, ce support est là. Donc,
après les quatre déclarations, vous avez besoin de la colonne ici. OK. Maintenant, que souhaitez-vous faire
pour chaque groupe de fonctionnalités ? Eh bien,
imprimons temporairement le
texte du groupe de fonctionnalités, par exemple. Et aussi le texte à points
du nom de la fonctionnalité. Et laissez-moi le supprimer. Ce groupe de colonnes
correspond donc à tout
ce bloc de divisions. Alors exécutez-le. Nous avons une syntaxe non valide ici
et nous cherchons la flèche. Oui, voici une petite flèche. Donc, celui-ci
nous indique ce caractère, qui est en fait une demi-colonne. Pour une raison quelconque, j'y ai mis
un point-virgule, donc ce devrait être une
colonne, pas un OK, laisse-moi exécuter ça à nouveau. Voici donc ce que nous obtenons. Pour la première propriété, par
exemple, nous avons imprimé les attributs
précédents. Donc non, non, non, pour
ce premier. Ensuite, voici
le texte du groupe de fonctionnalités,
et voici le texte du nom de la
fonctionnalité. De même, nous avons ici le texte du groupe de
fonctionnalités pour le prochain
groupe de fonctionnalités et le nom de la fonctionnalité. Nous avons donc la propriété
suivante, qui possède en fait de
nombreux attributs. Gaz combustible pour le chauffage. Et voici quelque chose
que vous devriez savoir maintenant. Vous devez être au courant de. Permettez-moi d'ouvrir à nouveau, le site Web de
Century 21. Rock Springs. Comme vous pouvez le constater,
la deuxième propriété n'a pas
autant d'attributs. Il a donc des appareils électroménagers
et un sous-sol
vétustes, mais pas de mauvaises caractéristiques
et un système de refroidissement, etc. Ces attributs supplémentaires sont donc cachés
d'une manière ou d'une autre dans le
code source de cette page Web, et vous pouvez y
accéder si vous y allez. Donc, si vous cliquez sur le lien de la page Web de la propriété
en question. Voici donc tous les attributs
que nous voyons ici. Donc, comptez
deux cheminées. Voici le nombre de foyers. Et vous pouvez également voir que
la taille du lot est indiquée sur page Web de la propriété. Alors voilà. Ce qui est en fait une bonne chose. Nous sommes donc en mesure d'
extraire tous les attributs d' une propriété sans avoir à
accéder à la
page Web de la propriété, le lien de la propriété. C'est donc une bonne chose. Et maintenant, ce que nous devons faire,
c'est conserver le
relevé imprimé pendant un certain temps, et nous devons vérifier. Donc, ici, sous les quatre boucles, si la taille du lot dans le
groupe de caractéristiques correspond à ce texte. Ainsi, par exemple, la chaîne de taille
du lot se trouve-t-elle dans le texte de ce groupe de fonctionnalités ? Si c'est le cas, donnez-moi la
fonctionnalité nommée « texte ». Cela me donnera donc
la valeur ici. Si ce n'est pas le cas, alors
ne faites rien. Nous laissons donc la boucle telle qu'elle est. Permettez-moi donc de supprimer
cette fonction maintenant, la fonction d'impression
que nous avons exécutée plus tôt et de l'exécuter. Alors, on y va. Nous n'avons rien ici. Il s'agit des attributs précédents. Ensuite, nous avons quatre
attributs ici, puis nous avons 0,221 acre Ici, nous avons un demi-acre. D'accord, cela semble bien maintenant, et j'aimerais maintenant passer
à la prochaine
conférence où vous
apprendrez à vous débarrasser de ces instructions
imprimées et à
stocker tous ces attributs dans un tableau.
Ainsi, dans le cadre de données de Panda, Ainsi, dans le cadre de données de Panda nous exporterons le bloc de
données simplement dans un fichier CSV ou un
fichier Excel, comme vous le souhaitez Nous allons donc
avoir une colonne de prix et une
colonne d'adresse, une colonne d'état avec un code postal, ainsi que des colonnes contenant ces attributs de la taille
d'un lot. Passons donc à autre chose.
204. 203. Sauvegarde des données extraites dans des dossiers CSV: Réfléchissons maintenant à la manière dont
nous pouvons additionner toutes ces valeurs. Donc, ces valeurs dans une seule
trame de données, la trame de données Pandas. J'ai donc pensé à
avoir une, deux, trois, quatre, cinq, six,
sept, plus huit
colonnes de la taille du lot dans le bloc de données. Et puis pour chaque
rangée, vous auriez, exemple pour le prix, 725 000 dollars pour celle-ci, puis la suivante
pour 152 000, et ainsi de suite jusqu'à ce que toutes les
propriétés soient J'espère donc que la structure est
claire et que la manière de le faire maintenant est claire. Eh bien, une solution serait peut-être
d'itérer
dans le bloc de données, mais c'est une solution coûteuse Cela prend beaucoup de
temps, de sorte que le processus peut devenir lent lorsque
vous itérez trames de
données, car
les trames de données ne sont pas conçues pour
les parcourir Il est donc probablement préférable créer un
bloc de données à partir d'un
dictionnaire Python ou d'une liste
de dictionnaires, peut-être Et en fait, c'est
ce que je vais faire. À chaque itération
,
je vais ajouter ces valeurs
à un dictionnaire Par exemple, je vais
commencer par le premier dictionnaire. Ainsi, dans la première itération, j'aurai une
clé de prix et la valeur du prix comme première
paire du dictionnaire,
puis la paire suivante de
ce même dictionnaire
serait la clé d'adresse et
la valeur d'adresse Ensuite, nous passons à la paire suivante. Nous ajoutons donc la troisième paire ici, puis une quatrième paire cinquième,
sixième, septième et huitième. Associez donc un dictionnaire de huit paires lors de la
première itération. Ensuite, lors de l'itération suivante, je dois créer un autre dictionnaire avec les mêmes clés Nous aurions donc, encore une fois, le prix
et la valeur de ce prix, qui correspondraient à la
valeur d'une deuxième propriété. Je vais donc créer un
deuxième dictionnaire puis un troisième dictionnaire, et ainsi de suite jusqu'à ce que les dix
propriétés présentes soient consommées. Je vais donc me retrouver avec
dix dictionnaires. Maintenant, vous devez également stocker
ces dictionnaires quelque part car si vous
parcourez simplement les dictionnaires et que vous les perdez
à chaque itération, vous n'avez Nous allons donc stocker
ces dictionnaires dans une liste. La première
chose à faire
est donc de commencer
chaque itération avec un dictionnaire vide
afin de pouvoir ajouter
les paires clé-valeur à
ce dictionnaire de phrases Ainsi, une fois que vous avez créé
un dictionnaire vide, vous pouvez remplacer
ces instructions d'impression. Vous voudriez donc que le prix soit la clé du premier dictionnaire,
et ce serait égal. Si nous n'avons pas besoin des crochets, celui-ci non plus. Alors c'est tout. De même, vous pouvez
le faire en tant qu'adresse. Supprimez-le à nouveau ici. Appelons cette localité. Nous créons donc des
clés à la volée, donc le prix, l'adresse et la localité, et nous attribuons à nouveau des valeurs à ces clés à la volée Il serait donc peut-être logique
d'avoir le prix ici. Nous commençons donc par l'adresse, localité, puis le prix. Ce seraient les lits. Et s'il n'y a pas de lits, vous ne devez en laisser
aucun pour les lits. Et puis, encore une fois,
ce serait une surface, qui est à nouveau égale à celles-ci. Même chose pour la zone, non quand il n'y en a pas et
une de plus ici. Baignoires complètes. Laissez-moi le copier. Aucune. Et
ce seraient des bains chauds. C'est égal à aucun. Nous avons
ici un segment imprimé, dont nous n'avons pas besoin. Nous allons donc passer en revue le nom de fonctionnalité de
chaque groupe si la taille du
lot figure dans le texte du groupe d'entités, alors appelons
cette taille de lot. Est égal au texte du nom de la fonctionnalité. Et supprimons cette déclaration
imprimée. Ainsi, à la fin de cette boucle, vous aurez votre
premier dictionnaire. Ainsi, à la fin de la
première itération, vous aurez votre
premier dictionnaire Maintenant, vous voulez stocker ce
dictionnaire quelque part. Stockons-le donc dans une liste. Donc normalement, vous devez
créer une liste en dehors de la boucle, une liste
vide à cet endroit. Et puis à la fin de la boucle, qui est exactement là, vous voulez ajouter
le dictionnaire Vous obtiendrez donc une liste de
plusieurs dictionnaires. Dans ce cas, vous
obtiendrez une liste de dix dictionnaires.
Exécutons ceci. Nous avons une
syntaxe invalide, bads. J'ai oublié d'y avoir l'opérateur
d'assignation, et c'est vrai. Aucune erreur cette fois. Imprimons L ici. Et ça a l'air bien. Vous pouvez donc en vérifier
la durée. Il est donc dix. Maintenant, si vous voulez ajouter cette liste de dictionnaires
à un bloc de données, cette liste à un bloc de données, vous devez utiliser Pandas, puis DF est égal
au bloc de données Pandas Et ici, nous devons écrire une très longue
déclaration. Je fais du jogging. Il vous suffit d'y transmettre la
liste et de créer un bloc de données à partir de cette
liste de dictionnaires. Nous allons donc vérifier le bloc de données. Et boum, voici les données. Et comme vous pouvez le constater, nous avons même obtenu valeurs
Nan lorsqu'il n'
y a pas beaucoup de taille de lot. Pandas comprend donc quand il n'y a aucune donnée dans
les dictionnaires Ainsi, par exemple, ici, nous
n'avions pas une grande taille de lot, et Pandas attribuera une valeur
non by nan à cela,
que vous pouvez simplement
remplacer si
vous le souhaitez par une valeur non value Ensuite, vous devez travailler beaucoup
pour l'enregistrer dans un fichier CSV. Une très longue déclaration. OK, donc je vais mettre ce CSV,
et il devrait être prêt à être utilisé. Laissez-moi vérifier cela. Voici un dossier. Et
voici les données. Donc ça a l'air bien. Génial.
Maintenant, quelle est la prochaine étape lorsque, comme vous pouvez le deviner,
nous devons récupérer les propriétés
de toutes les pages. Donc deuxième page et troisième page. C'est ce que nous ferons
lors de la prochaine conférence. À bientôt.
205. 204. Explorer plusieurs pages Web +: Génial. Nous avons donc fait
fonctionner le script sur une page. Donc pour la première page, mais il se peut que
nous y ayons plusieurs
pages. Donc, pour Rock Springs, nous avons trois pages
avec 28 annonces. Donc 28 propriétés
y sont répertoriées pour la vente ou pour les fins de fin de mois. En fait, ils sont à vendre, donc des maisons à vendre. Il s'agit donc de la deuxième page
avec dix propriétés supplémentaires, puis vous avez
la dernière page, qui devrait comporter
huit propriétés. Nous en avons donc 28 au total. Maintenant, c'est une petite ville, il n'y a
donc pas
beaucoup d'annonces là-bas, mais dans les grandes villes, vous aurez beaucoup de pages. Et le script que nous
allons créer pour extraire les données de
propriété de ces pages fonctionnera avec n'importe quel
nombre de pages. Comment s'y prendre pour récupérer les
données de toutes les pages ? Eh bien, il n'y a pas de magie là-dedans, mais il n'y a qu'un seul truc. Vous savez, si vous recherchez
à nouveau Rock Springs, vous y verrez une URL initiale, que nous avons chargée en Python. Je pense que c'était sans
cela K égal à un. C'était comme ça uniquement. Je ne suis donc pas sûre de ce que
cela signifiait, mais de toute façon, c'est peut-être parce que
j'ai de
nouveau cherché des sources rocheuses. Voici donc la première page. Maintenant, la logique qui sous-tend l'extraction des données des autres
pages est que nous devons également charger
les autres pages en Python ,
en réutilisant request Donc, comme nous l'avons fait ici, nous avons chargé la première page. Nous devons maintenant trouver un
moyen de charger les autres pages. Nous pouvons soit
parcourir manuellement chacune des 300 pages, trois pages dans ce cas, et copier l'URL, soit
essayer de trouver un moyen. Donc, pour déterminer la règle, s'il existe une règle selon laquelle l'URL change lorsque vous
passez d'une page à l'autre, il s'agit probablement toujours
d'une règle. Nous devons donc le découvrir. Je suis donc passé à la deuxième
page, et comme vous le voyez, maintenant l'URL a changé avec
une extension. Donc T est égal à zéro
et C égal à zéro. Si vous passez à la troisième page, vous voyez que l'URL
avant 20 n'a pas changé, mais que C a été changé en 20. Maintenant, si vous revenez à la
première page, vous verrez que S
est égal à zéro. Ainsi, lorsque vous recherchez directement
Rock Springs, vous obtenez l'URL de base
sans cette extension. Ensuite, si vous accédez
à la première page, manuellement en cliquant sur
le numéro un ici, vous serez inclus
dans la règle qui modifie l'URL lorsque vous
parcourez toutes les pages. Cela signifie que nous pouvons utiliser cette
URL pour accéder à la première page, puis nous pouvons
parcourir l'URL en boucle. Et changez cette valeur
à dix au fur et à mesure que nous itérons. Augmentez de dix. Donc, entre 010 et 20, et si nous avons plus de pages, ce serait 30 et ainsi de suite. J'espère donc que tu as compris l'idée. Allons-y maintenant
et voyons voir Nous allons
donc y stocker une URL de base. Nous devrions être quelque chose comme
ça sans le numéro. Il s'agit donc de l'URL des statistiques. Et maintenant, avant de demander le code
source avec les requêtes, essayons d'abord de créer des
URL et de les imprimer. Nous utilisons donc une déclaration imprimée comme toujours, pour essayer des choses. Supposons que pour une
page comprise dans l'intervalle, eh bien, la plage devrait
commencer à zéro, et jusqu'à ce que nous ayons
trois pages, et la dernière page en ait un de 20. Alors peut-être
y mettre 30 , puis itérer
avec un pas de dix Donc, à chaque itération, nous augmenterons de dix Pour l'instant, ne vous inquiétez pas
du nombre de pages. Pour l'instant, nous ne
faisons que saisir une valeur manuellement, donc nous savons que cela
comporte trois pages, donc j'en mets 30. Mais plus tard, nous changerons
cela en une variable qui saisit un certain nombre de
pages du site Web Donc, au lieu de Rock Springs, vous auriez New York et
vous auriez probablement 200 pages. Vous devez donc saisir le
numéro de la dernière page 200, puis passer quelque chose
comme 200 fois 20 ici, pour obtenir 2000 et obtenir
une boucle qui va jusqu'à zéro, dix et jusqu'à 2000. Nous le ferons donc
plus tard. Pour l'instant, imprimer ? URL de base plus. Eh bien, cette variable de page
obtiendrait un entier. Nous devons donc
convertir cet entier en chaîne en utilisant
la méthode string. Et puis la page y entre. Essayons donc ça. Ana, voici les trois anneaux. Laisse-moi en
ouvrir un. Allons-y. Et il s'agit de la deuxième série de
résultats. C'est donc la page deux. Génial. Laisse-moi clore ça. Mais bien entendu, l'impression n'
est pas ce qui nous
intéresse, nous ne
voulons
donc pas imprimer l'URL. Nous voulons en obtenir le code
source. Donc, ce que vous voulez faire, c'est
être à la hauteur des demandes. Vous êtes donc dans la boucle, et plus tard nous allons fusionner cette
boucle avec l'autre code. Concentrons-nous donc là-dessus pour le moment. Obtenez l'URL de base plus la
chaîne du numéro de page. Et juste à côté de cela, vous
voulez récupérer le contenu de la demande et préparer la soupe. Tellement belle soupe, analyseur
C et HTML. Et pour le moment,
essayons d'imprimer la version embellie de l'objet en forme
de soupe. Génial. Et cela a pris du temps, mais voici le résultat. Ainsi, lors de la première itération, nous avons imprimé l'URL par cette fonction, par
la fonction d'impression, puis nous avons obtenu la version
embellie du code
source de la première URL, qui est Bref, tu as compris l'idée. Cela semble donc fonctionner, mais c'est ce dont nous avons besoin dans
tout le code source. Nous avons donc le
code source des trois pages. Nous n'avons donc pas besoin d'imprimer
tout le code source, il suffit d'extraire
les divisions des lignes de propriétés. Donc, comme nous l'avons fait ici, nous avons obtenu la soupe
pour la première page
, puis nous y avons créé une variable
all. Nous faisons donc la même chose ici. Mais cette fois, il doit être indenté car
il se trouve à l'intérieur d'une boucle Donc, la
division des classes de toutes et de propriétés, ça a l'air bien. Donc, si vous l'imprimez, il suffit de tout
vérifier, voici le résultat. Donc, la première URL est imprimée, puis vous avez
ces divisions. Et puis vous avez également
beaucoup de données ici. Alors maintenant, ce que vous voulez
faire, c'est récupérer tout le code que
vous venez de créer ici et peut-être le
supprimer et supprimer la cellule entière, et vous voulez mettre
ce code ici. Génial. Maintenant, vous l' avez fait pendant une page, et maintenant vous
parcourez toutes les pages en boucle Donc, ce que vous voulez faire,
c'est indenter tout ce bloc sur la droite pour qu'il fasse partie
des quatre boucles qui s'y trouvent Contrôlez et
fermez donc le crochet pour mettre en retrait le texte sélectionné Alors maintenant, cette boucle s'
exécutera ici autant de fois qu'
il y aura de pages là-bas. Alors, que pouvons-nous faire maintenant ? Eh bien, nous pouvons essayer le code. Laissez-moi donc exécuter
cette saisie par changement, et nous devrons attendre un peu. Donc ça a l'air de fonctionner. À ce stade,
nous devrions avoir la liste L
avec toutes les données. Et ici, nous convertissons cette liste
L en trame de données. Alors exécutons-le. Et puis ici, nous
exécutons le bloc de données. Alors voyons voir maintenant. Ouaip. Nous avons donc 425 lignes
parce que nous partons de zéro. Mais nous avions 28
annonces, en fait. Cela signifie donc que ces trois
dernières propriétés n'
ont pas été répertoriées ici parce que quelque chose
s'y est passé. Nous en sommes donc à la troisième page, et le dernier succès
a été Wen Avenue. Nous cherchons donc l'avenue Wende,
voici l'avenue Wende. Il a donc une adresse et
la localité Sook Springs. Et puis celui d'après, il n'y a que la localité. Donc, dans
ce cas, vous
pouvez essayer de
gérer une exception
ici dans le code. Donc, pour celui-ci,
nous pourrions dire d'
essayer de le faire et d'
accepter que DCalit soit égal à aucun Et maintenant je vais l'exécuter à nouveau. Espérons que nous n'y
trouverons pas d'erreur. Oui, cela a été exécuté
avec succès. Exécutez-le sur le bloc de données. Et voyons voir. Oui, maintenant, semblerait
qu'il y ait 28 rangées. Cela semble donc fonctionner. Et la dernière chose
que vous voulez faire est, vous savez, au lieu de passer cette
plage manuellement ici, nous pourrions ajouter
une variable qui
détecte un numéro de page. Et tout ce que nous avons à faire, c'est
d'aller sur notre site Web. Permettez-moi de le supprimer. Vous voulez donc savoir où ce dernier chiffre
est rendu. C'est donc l'indicateur
du nombre de pages. Nous avons donc trois
pages dans ce cas, inspectez-les et cela nous
amène au point suivant. En fait, dans ce cas, il est
écrit page, page en cours. Passons donc à la première
page. Et laisse-moi clore ça. Nous sommes donc censés être à la première page lorsque nous abordons le script pour
la première fois. Et dans cette première page, nous voulons
donc saisir le
contenu de la première page, puis nous voulons
connaître l'élément de ce dernier chiffre. Nous voyons donc que c'est
un élément avec une page de classe. Et voici le texte, donc trois. Cela devrait être en fait le dernier élément avec
une classe de page. Vous aurez donc
un certain nombre d'éléments avec une classe de page, et celui-ci devrait être le dernier. Ouais Ce devrait donc
être le dernier. Nous gardons donc cela à
l'esprit, et nous allons ici, et ce que nous pouvons faire ici maintenant c'est ou nous devons saisir ce numéro de
page ici. Alors page, appelons
ce numéro de page. Cela équivaudrait à une soupe. La soupe contiendra donc le code
HTML de la première page. Donc celle-ci ici, qui n'est pas une requête Ajax Il s'agit donc simplement de
l'une de ces pages. Nous voulons donc trouver tous les éléments
A avec une classe. De page. Donc, si je l'imprime juste
pour voir ce que nous avons jusqu'à présent, numéro de
page indique où vous
avez trouvé quelques éléments. Mais le dernier est
le dernier numéro de page. Donc trois, c'est ce dont nous avons besoin. Nous devons donc récupérer le
dernier élément de la liste, ce qui signifie moins un, un index de moins un et du texte. Et oui, nous en avons trois ici. Nous devons donc transformer
ce nombre en 30. Et pour cela, il
suffit de multiplier le numéro de page par dix. Cela vous en donnerait 30. Eh bien, presque parce que
ce numéro de page est en fait une chaîne ici, vous savez, tapez un autre crochet. C'est donc une chaîne de caractères. Et cela signifie que vous
devez ajouter un entier ici. Vous voulez donc convertir
cette chaîne en un entier, puis la multiplier par dix pour obtenir 30. Cela devrait donc se faire maintenant, et tout devrait
fonctionner, je crois. Alors laisse-moi exécuter ça. L'URL est en cours d'impression
et le script est terminé. Ainsi, si vous n'
avez pas le texte occupé devant le titre
de votre fichier ici, cela signifie
que le
script est en cours d'exécution. Maintenant, nous n'en avons pas,
donc le script est terminé. Exécutez ça. nos résultats et
exportez-les dans un fichier CSV. Et vérifions-le.
J'ai donc mis ce CSV. Et voici les données. Nous n'avons donc aucune réputation ici. Non, tout semble unique. Cela ferme cette section
du scrabbing sur le Web. Donc, si vous voulez trouver
d'autres localités, ai essayé
pour Rock Springs, mais vous pouvez l'essayer avec n'
importe quelle autre localité vous suffit donc de
modifier l'URL ou vous pouvez même implémenter une saisie utilisateur
pour que l'utilisateur entre un nom, puis vous créez l'URL, puis vous
la transmettez ici. Nous n'en avons donc pas besoin, nettoyez-le également. Et si vous le souhaitez, vous pouvez fusionner
cette cellule avec celle-ci. Vous pouvez donc exécuter l'
intégralité du script dans une seule cellule. Et vous pouvez également l'enregistrer. Téléchargez-le donc sous forme de fichier Python et vous obtiendrez tout le code source. Donc, le script Python. Et plus ces lignes, mais
avec un hashtag en virgule. Et vous pouvez l'exécuter
sous la forme d'un script complet. J'espère donc que cela vous plaira. Je sais que c'était
un peu difficile à digérer. Et si vous avez des questions, n'
hésitez pas à les poser. Je serais heureuse de vous aider. J'espère donc que vous en avez
beaucoup appris, et nous passerons aux sections suivantes Nous avons
donc encore des choses très
intéressantes à faire. Et je te verrai plus tard.
206. 205. App 9 : blog et application de traducteur Django et Bootstrap +: Bonjour, bienvenue à une conférence très
instructive, en particulier pour ceux qui
s'intéressent à la création d'
applications Web avec Python. Comme vous le savez peut-être,
Python est utilisé à d'
autres fins que
l'automatisation des tâches de
routine de votre travail Supposons que vous souhaitiez générer des rapports
PDF automatiquement, envoyer
des e-mails automatiques, etc. Vous pouvez ensuite utiliser Python pour analyse et la visualisation
des données, la science des données et l'apprentissage
automatique, mais également pour le développement Web. Donc, créer
des applications Web avec Python. Et c'est ici que je
voudrais m'arrêter et vous
expliquer comment
exactement Python peut être utilisé dans le développement Web et quels
frameworks Web Python vous devez utiliser. Je viens donc de mentionner le
mot framework Web. Alors, qu'est-ce qu'un framework Web ? Eh bien, avec Python, vous pouvez créer des applications soit en utilisant Python
simple, soit
en utilisant l'un des frameworks Web
Python, qui sont essentiellement des
bibliothèques Python que vous
installez avec PIP Et ces frameworks Web
facilitent l'écriture d'
applications Web à l'aide de Python. Maintenant, je peux vous dire que
créer une application Web sans utiliser l'un de ces frameworks
Web
revient à réinventer la roue Parce que si vous n'
utilisez pas de framework Web, vous devez essentiellement
réécrire tout le code écrit par les auteurs de ces frameworks Web Au lieu de cela, nous installons simplement
ces frameworks Web, puis nous utilisons ce code. Cela se trouve dans les frameworks
Web. Et ce code consiste généralement à
gérer les requêtes
HDP et à diffuser des pages
Web sur le navigateur Donc des tâches de routine de bas niveau. Mais au lieu de nous
occuper de cette tâche, nous voulons nous concentrer sur le
développement des fonctionnalités l'aspect pratique de
notre application Web Ainsi,
créer les zones de saisie , par exemple, pour nos formulaires, envoyer les utilisateurs d'une page Web à l'autre, etc. Vous devez donc utiliser
un framework Web. Je suppose donc que nous avons
clarifié le point selon lequel vous devez utiliser
un seul framework Web. Maintenant, la question suivante est lequel des
frameworks Web devriez-vous utiliser ? Eh bien, il existe de nombreux
frameworks Web pour Python, mais je ne vais me concentrer que
sur trois d'entre eux
, à savoir Flask,
Jango et Pi Commençons par FLASK. FLASK est un framework Web généralement destiné à la création de
petites applications Web. Supposons, par exemple, que
vous souhaitiez simplement créer un petit traducteur capable de
traduire d'une
langue à l'autre. Pensez à Google Translate. Si vous voulez simplement une
application Web permettant aux utilisateurs d'accéder à votre domaine,
disons, translator.com, et que vous n'avez que
ces deux cases, les utilisateurs saisiront le texte dans
une langue dans la première
zone et obtiendront les résultats Donc, la traduction
dans l'autre case. Ce serait donc une petite application. Un autre exemple serait
une application dans laquelle vous convertissez, disons, des images JPG
en images PNG. Les utilisateurs téléchargent donc une image
au format JPG ou vice versa. FLASK gère donc
tous les téléchargements
et traitements en arrière-plan arrière-plan, bien sûr, vous aurez probablement besoin En arrière-plan, bien sûr,
vous aurez probablement besoin d'une
bibliothèque de traitement
d'image en plus de FLASK Vous devrez donc
installer Pip install Flask et peut-être Pip
install CV two, alors ouvrez CV pour effectuer Mais le service du site Web vers l'application Web se
fera avec FLASK FLASK obtiendra donc
l'image d'origine, l'image de
sortie d' OpenCV et servira
l' image de sortie à
télécharger sur votre Ce sont donc de petites applications Web. Maintenant, ne vous
méprenez pas avec FAS, vous pouvez également créer plus grandes applications Web et ce que j'entends par des applications
Web plus volumineuses Des applications Web plus importantes, je
veux dire des choses comme, disons que vous avez un site Web de
blog où vous ajoutez des blogs chaque semaine ou
tous les deux jours environ. Vous avez donc peut-être
plusieurs auteurs qui rédigent du contenu pour votre blog. Pour ce site Web de blocage. Nous allons donc avoir
différents blocs, et tous ces blocs doivent
être enregistrés dans une base de données. Maintenant, Flask peut le
faire, bien sûr, mais Jango le ferait mieux Jango le ferait mieux
car il est
plus facile de travailler avec des bases de données avec jango car il possède un meilleur niveau
d'abstraction Donc, avec le FAS, vous pouvez
également le faire avec le FAS, mais cela demande plus de travail Vous devez effectuer des tâches plus
routinières pour FAS. Et jango vous
permettrait également d'ajouter d' autres applications dans ce projet de
site Web Nous avons donc pris l'
exemple des blocs. Vous aurez des blocs
sur votre site Web, mais vous souhaitez peut-être
ajouter une autre fonctionnalité. Supposons que vous souhaitiez y
ajouter un traducteur. Jango peut donc également
créer un traducteur. En plus de ce site Web existant. Mais si vous voulez simplement
créer un traducteur seul, alors jango serait exagéré Qu'est-ce que je veux dire par là ? Je veux dire par là que
pour les petites applications Web, jango demande plus de travail pour configurer un projet jango Cela demande plus de travail. Mais une fois que vous avez configuré
un projet Jangle, les choses se passent bien. Mais pour les petites applications, il est bon de simplement créer
une application Fask Il est très facile d'en créer un. C'est donc la différence
entre jango et FASC. Voici maintenant Just Pi. Just Pi est un tout nouveau framework. Et pourquoi ai-je inclus Just Pi dans cet ensemble de
trois frameworks Web ? Maintenant, Just Pi est assez spécial. Qu'est-ce que je veux dire par là ? Eh bien, avec FAS et jango, vous devez également connaître le HTML
et le CSS pour pouvoir
créer des applications Web, car chaque page Web que
vous voyez sur Internet est construite Donc, tout le texte, les zones de
saisie et les boutons. Tout cela est construit en
code HTML, ce qui est très simple. N'ayez donc pas peur du HTML. C'est une
langue très facile à apprendre. Mais je dis simplement
que vous ne pouvez pas créer le front-end d'
une page Web avec Python. Le HTML est donc destiné au front-end. Et puis le CSS consiste à embellir pour embellir l'apparence de
ces éléments HTML Ainsi, les zones de texte,
le texte, les couleurs, tout cela peut être rendu
plus beau avec le CSS Le CSS est donc également un langage très
facile à apprendre. Vous devrez donc écrire du code CSS et HTML et
enregistrer ce code dans
des fichiers HTML et
CSS respectivement, et placer ces fichiers
dans votre application Web, ce
soit dans Jango ou Flask Maintenant, c'est ici que
JSpi entre en jeu. JSPI vous permet de
créer des applications Web sans écrire aucune
ligne de code HTML Mais Juspi est tout nouveau. C'est un nouveau framework, un framework
web. Et comme je l'ai dit, l'avantage de Jpi est que vous n'avez pas besoin d'
écrire du HML et du CSS car JSpi possède des objets Python spécifiques Disons qu'il possède
un DIF pour créer ces divisions où vous pouvez mettre du texte et des
choses comme ça,
ou qu' il possède un objet bouton, objet bouton
Python pour créer
un bouton sur la page Web Bien sûr, l'inconvénient est que vous n'êtes pas très
flexible comme vous le seriez
avec FLASK et Encore une fois, je dirais que Jpi est également destiné aux petites applications Web. Si vous souhaitez créer un
site Web de blog avec beaucoup de contenu, Just Pi n'est pas le meilleur choix. Cela ne fonctionne pas
aussi bien avec les bases de données que Jango ou FLASK Mais encore une fois, si vous souhaitez
simplement créer une petite application Web et que vous
ne connaissez pas le CSS ou le HTML, Juspi pourrait être
meilleur que FLASK C'était donc un aperçu de trois frameworks Web pour Python. À présent, ces trois frameworks
Web sont abordés dans le
cours de ce cours. Nous allons donc créer au
moins une application Web avec chacun de ces
trois frameworks Web, et il peut être tentant de ne
regarder
que les vidéos du framework
Web que vous aimez, mais je vous recommande ne sauter aucun de
ces frameworks Web Cela dit, parce que
si vous voulez faire du développement Web avec Python, c'est une bonne idée d'être exposé à différents frameworks
Web. Chacun des frameworks
fait les choses différemment, vous en apprendrez
donc
beaucoup sur le développement Web. Par exemple, FASC fait les choses un peu plus rudimentaires et brutes, ce qui vous aide à comprendre développement
Web
d'un point de vue plus approfondi Mais ensuite, vous
découvrirez Jango et vous
apprécierez le haut niveau d'
abstraction de Jango Vous apprécierez la facilité avec laquelle apporter des modifications
à vos applications Web. Lorsque vous utilisez jango en raison de
ce haut niveau d'utilisabilité. Jango vous cache donc certaines
choses, ce qui facilite les choses, mais vous ne comprendrez pas
certaines de ces choses C'est pourquoi vous devriez
également apprendre Flask. De plus, le Jus Pi est
très amusant à apprendre. Et je recommande Juspi,
en particulier à quelqu'un qui n'est pas intéressé à
devenir un développeur Web de base Vous êtes peut-être un analyste de données, mais vous souhaitez simplement
créer une application Web laquelle vous affichez des données,
des visualisations
sur cette application Web. Dans ce cas, Jus Pi pourrait
être le meilleur choix. Mais si vous voulez être
un pur développeur Web, vous
devez apprendre le
jangle et le flask Ensuite, lorsque vous
devez créer une application Web, vous pouvez simplement choisir l'un des frameworks
Web qui convient le mieux projet ou peut-être le framework Web
que vous connaissez le mieux. Pourquoi pas ? J'espère que cela vous aidera.
Je te parlerai plus tard.
207. 206. Mise en place d'un environnement virtuel: Bonjour. Dans cette vidéo, vous allez apprendre à créer et utiliser un
environnement virtuel Python. Qu'est-ce qu'un environnement
virtuel Python ? Eh bien, il ne s'agit que d'une copie de
votre installation Python. En d'autres termes, une copie
de votre interpréteur Python. Ainsi, lorsque vous téléchargez Python depuis python.org
ou depuis Anaconda, vous téléchargez un Maintenant, nous en faisons une copie. Pourquoi en faisons-nous une copie ? Parce qu'avec Python, nous pouvons
écrire différents programmes. Et pour chaque programme, il se peut que
nous devions installer des packages différents,
donc des bibliothèques différentes. Et généralement, nous installons ces bibliothèques dans notre installation
principale de Python. Ainsi, dans l'interpréteur que nous avons obtenu sur python.org ou Anaconda, on parle également d'interpréteur global Mais en faisant une copie pour
chaque programme que nous avons créé, nous installons des bibliothèques uniquement pour cette copie
de l'interpréteur. Cela présente
notamment l'avantage pour les applications
Web, car lorsque vous créez une application Web, vous la déployez ultérieurement
sur certains serveurs en ligne. Et lorsque vous faites une copie de l'interpréteur
, puis
que vous installez les bibliothèques dont vous avez besoin dans les bibliothèques dont vous avez besoin dans cette copie dans cet environnement
virtuel, vous obtenez une liste claire
des bibliothèques que
vous avez installées. Vous pouvez donc générer une
liste, puis transmettre au serveur sur lequel vous allez déployer
votre application Web. Ce serveur obtiendra donc la liste
des bibliothèques à partir de cette
liste et les installera. Maintenant, l'avantage est que si vous aviez votre installation globale de
Python, vous auriez de très nombreuses bibliothèques. Ce serveur devrait
donc installer toutes ces nombreuses bibliothèques. Ce n'est pas une bonne idée. Alors pourquoi ne pas avoir un interpréteur pour
chaque projet Python. Maintenant que nous sommes sur le point
de créer notre application Jango, nous allons d'
abord créer
un environnement virtuel sur du code Visual Studio C'est comme ça que tu le
fais. Donc, tout d'abord, je suis ouvert au code Visual Studio. Voici donc la page d'accueil. Je n'ai encore créé
aucun projet. Je vais donc créer un projet dans lequel il suffit
d'ouvrir
un dossier, un répertoire. Dans le code Visual Studio. Allez donc dans Fichier
, puis
dans Ouvrir le dossier ou Ouvrez
selon le
système d'exploitation que vous utilisez. Il peut donc s'agir d'
un dossier ouvert ou ouvert. Cliquez ici, puis recherchez un dossier vide que vous
auriez dû créer auparavant. J'ai créé ce dossier vide
jangoblock translator. Tu vois, c'est complètement vide. Je vais donc appuyer sur Ouvrir pour
ouvrir ce dossier. Vous le voyez ici dans mon arbre d'explorateur sur le code
Visual Studio. Maintenant que nous avons le dossier. Dans ce dossier,
nous allons donc mettre tous les fichiers de
notre projet jango, y compris la copie de
l'interpréteur Python Donc, l'environnement virtuel. Pour créer cette copie, voici comment procéder. Donc, tout d'abord,
vous devez ouvrir un terminal et vous
devez d'abord effectuer une vérification. Vérifiez donc quel
Python vous utilisez. Donc, dans mon cas, j'utilise une commande, Python 3.9,
qui ouvre Python. Il s'agit donc d'un Python global
installé sur mon ordinateur. Je suis donc sûr que cette
commande fonctionne correctement. Dans votre cas, il
peut s'agir simplement de Python sans 3.9 ou de Python trois. Cela dépend de ce que vous
avez utilisé. Donc, quel que soit l'endroit où vous l'avez utilisé, je vais quitter
ce shell interactif. C'était donc juste pour
essayer la commande Python. Maintenant, je sais que cela fonctionne, je peux
donc utiliser Python 3.9. Il n'y a donc pas de places ici. Puis un espace, le drapeau, puis V puis NV. Alors c'est quoi ça ? Eh bien, VNV est une bibliothèque
installée. Par défaut, il s'agit d'une
bibliothèque standard pour Python. Il est livré avec Python. J'utilise donc cette bibliothèque. Ainsi, lorsque vous utilisez cette commande, Python 3.9 ou Python, puis que vous utilisez cet indicateur, cela signifie
que vous êtes sur le point d' exécuter cette bibliothèque
sous forme de scripts Python. Et puis cette extrémité est le dossier où sera placée la copie de l'
interpréteur Python. Appuyez donc sur Entrée. Et vous voyez immédiatement que N a créé ce dossier ici. Et si je développe ce dossier, vous verrez qu'il y en a plusieurs
autres,
et dans cette corbeille, vous verrez que nous avons
l'exécutable Python C'est donc une copie de Python. Il peut être utilisé
uniquement en Python, Python
3 ou Python 3.9. Mais je vais maintenant vous montrer comment utiliser ce Python au lieu d'
un Python global. Ne faites donc rien
avec ce dossier. Parce que ce que nous voulons faire
maintenant, c'est sélectionner un interpréteur Python par défaut pour ce projet de code Visual
Studio particulier. Pour ce faire, vous devez accéder
à la palette de commandes. Vous pouvez le faire avec
des raccourcis. En fait, sur Mac, ce serait Command Shift, P, appuyez sur
les trois en même temps. Sous Windows, ce
serait Control, Shift, P, de sorte que cette zone s'affichera, puis vous pourrez
y taper Select interpreter. C'est donc ce que nous voulons utiliser
Python Select Interpreter. Ça commande. Cliquez dessus. Et vous verrez cette liste. J'ai donc différents
pythons dans mon système. L'un d'eux est cet environnement
visuel que je viens d'installer, et c'est celui que je souhaite choisir.
Alors, appuyez dessus. Et maintenant, vous devriez
voir ici ce Python 3.9 0.6 dans mon cas
avec ce dossier. N est le dossier. V est la bibliothèque d'
environnement virtuel. Il sera désormais utilisé
comme Python par défaut. Cela signifie-t-il ? Eh bien, cela signifie
que si vous tapez
maintenant Python ici, mais que vous fermez d'abord ce
terminal et que vous en ouvrez un nouveau, donc pour rafraîchir le terminal, vous verrez qu'avant cette balise qui me dit d'
écrire quelque chose ici, je l'ai entre parenthèses Cela signifie que cet environnement virtuel
Python
est utilisé. Maintenant, si je tape simplement Python, Python 3.9 0.6 de cet environnement virtuel est
utilisé. Laisse-moi sortir. Je peux également taper Python 3.9
et le même sera utilisé. N'importe laquelle de ces commandes ici, Python, Python 3
ou Python 3.9. Assurez-vous donc de l'
avoir là. Alors, comment cela fonctionne-t-il ? Parce que ça a l'air magique. Eh bien, ça marche comme ça. Permettez-moi de fermer à nouveau ce terminal et d'en ouvrir
un nouveau, un nouveau terminal. Vous voyez donc que nous
avons ici une commande
exécutée par Visual Studio Code lorsque vous ouvrez un nouveau terminal. Il indique donc source, qui est une commande pour activer
l'environnement virtuel. Donc source, puis
chemin vers le fichier d'activation. Vous voyez que c'est le traducteur
jangoblock, qui est ce dossier N B Activez. Activer le NBN. Ce fichier d'activation
est en cours d'exécution, et c'est la
commande qui définit l'environnement sur cet environnement
virtuel. Cela signifie également que
vous pouvez utiliser Python à
la fois à partir d'ici en tant que shell Python
interactif, mais aussi si vous
souhaitez écrire un fichier maintenant. Supposons donc de créer un fichier. Soyez donc prudent ici. Je
vais écrire Hello PY. Je dis de faire attention
car ce qui se passe, c'est que ce fichier a été créé
dans mon dossier NV Ce n'est donc pas une bonne chose. Vous ne voulez pas
toucher le dossier F. Je vais donc supprimer
ce fichier et le recréer. Pour éviter que le fichier
ne se trouve dans le fichier Nfle, vous devez d'abord appuyer sur Escape, ce qui détournera le focus de
ce dossier NF Ensuite, vous pouvez vous rendre ici
et créer le fichier. Vous voyez maintenant que le fichier est créé dans ce répertoire racine, donc jangle block
translator hello point PY Et si je dis « Imprimer
bonjour », c'est vrai. Et maintenant je peux exécuter ce fichier en utilisant ces oreilles
triangulaires
vertes au fond arrondi. Appuyez dessus et le fichier sera
exécuté à l'aide de l'
environnement virtuel Python. Vous voyez donc ici ce qui
s'est passé en arrière-plan. Encore une fois, pour terminer, l'environnement virtuel a été utilisé lorsque nous avons ouvert
le Python Shell. Il a également été utilisé lorsque nous avons
exécuté le fichier Python, et il est également utilisé si nous
installons des packages tiers. Supposons donc que PIP installe
jango pour installer jango. Ce jango sera installé
pour ce Python en particulier, pas pour notre Python global Et je peux vous le prouver
en allant sur N puis sur Lip et vous
verrez que jango vient d'être ajouté aux packages
tiers présents ici JanGot est donc ce que
nous venons d'installer. Pour vous débarrasser de cet avertissement, vous pouvez exécuter
cette commande comme il est
suggéré pour Python 3.9
ou Python directement,
PIP install, dash, dash, upgrade,
PIP pour mettre à niveau en suggéré pour Python 3.9
ou Python directement,
PIP install, dash, dash, upgrade, local le PIP
virtuel, pour ainsi dire C'est vrai. Et maintenant, si je
ferme ce projet, je l'ouvre à nouveau. Ensuite, je peux revenir à mon projet précédent soit en
utilisant cette
section récente ici, donc en cliquant dessus, soit
en allant dans Fichier, Ouvrir le projet récent et y localiser
le projet. Ou une troisième méthode serait d'aller à
nouveau dans Fichier, Ouvrir et d'aller
à nouveau dans ce dossier, donc dans le répertoire racine. Ce sont donc et hello
point PY et appuyez sur Ouvrir. Et le même projet s'
ouvrira à nouveau, mais vous devez fermer le terminal actuel
et en ouvrir un nouveau. Afin d'activer l'environnement
virtuel dans le nouveau terminal, vous voyez maintenant que nous voyons
cette fin ici. Et, bien sûr, vous pouvez
désormais exécuter à nouveau ce fichier, et l'
environnement virtuel sera utilisé pour exécuter et
obtenir le résultat. C'est ainsi que vous pouvez
utiliser l'environnement virtuel dans le code Visual Studio. Merci.
208. 207. Créer un projet Django: Bonjour, bon retour. Dans cette vidéo, je vais vous montrer comment
créer un projet Jango Qu'est-ce qu'un projet Jango ? Eh bien, lorsque vous créez
une application Web avec jango, vous devez d'
abord
créer un projet jango, qui est un ensemble de fichiers générés
automatiquement par C'est ce que je vais vous
montrer maintenant. Voici donc les fichiers du projet. Mais vous pouvez ensuite ajouter
des applications à ce projet. Vous n'avez donc qu'un seul projet, mais vous pouvez avoir plusieurs applications. Par exemple, dans notre cas, nous allons avoir un projet, puis nous aurons
également l'application de blocage et l'application de traduction. Donc, deux applications, un projet. Maintenant, je vais vous montrer
comment créer le projet. Pour cela, vous devez
avoir installé Jango et de préférence disposer d'
un environnement virtuel. Je vous ai montré comment créer un environnement virtuel
dans la vidéo précédente. J'ai donc ce dossier maintenant, le répertoire racine, le dossier, qui contient un environnement virtuel, le fichier lot PY, je vais
supprimer parce que nous n'en avons plus besoin. J'ai donc installé Jango. Cela signifie que je peux maintenant créer un projet à l'aide de la commande
jango admin Jango est donc livré avec
quelques commandes qui peuvent être utilisées pour effectuer différentes
opérations avec jango Donc, l'administrateur de Jango, cette commande, ainsi que la commande start project créeront un projet jangle, puis vous devrez donner un nom au nouveau répertoire
que jango Disons mon point de vue. Et
puis un espace et un point. Le point signifie que
le dossier actuel, qui est un traducteur de
blocs, est un dossier de projet Il placera
donc les
fichiers dans ce Exécutez donc cette commande. Et ce dossier et ce
fichier seront créés. Et ce dossier contient
d'autres fichiers. Alors, quels sont ces fichiers maintenant ? Eh bien, nous avons ce fichier d'initialisation, qui est un fichier vide, et
ici, il est facultatif Peut-être que plus tard,
vous pourrez
placer les éléments que vous souhaitez
exécuter immédiatement lorsque
le programme démarre. Je vais donc le laisser
tout de suite, nous allons le laisser vide. Et puis nous avons ce fichier
Sg, sosg point PY. Il s'agit d'un fichier de configuration que vous souhaiterez peut-être modifier ultérieurement lorsque vous déploierez votre application
jangle sur un serveur SG, et il existe également
un autre type de Cela dépend donc de l'endroit où vous
allez le déployer. L'autre type est le serveur Wiz
g ou Wiz G, si vous aimez celui-ci ici C'est donc l'autre
configuration qui
dépend du type de
serveur sur lequel vous allez placer votre projet Jango afin qu'il soit sur un serveur de
production en ligne afin que tout le monde puisse le voir Et puis nous avons les
paramètres de ce fichier PY. Cela va contenir tous
les paramètres, par exemple, le fuseau horaire, l'emplacement des fichiers statiques
tels que les images et les fichiers CSS, nous allons les aborder. Alors ne les changez pas. Et puis nous avons l'
URL, c'est le fichier PY. Cela aura essentiellement
l'URL de votre projet, la
façon dont l'URL sera
enracinée, etc. C'était donc mon site, puis nous avons
géré ce PY. Il s'agit d'un fichier que vous
ne modifiez pas normalement, il restera
donc comme ça. C'est maintenant utile lorsque vous démarrez votre nouveau site Web
Python. Nous venons donc de un site Web Jangle et nous
pouvons le voir afin de pouvoir démarrer l'application en gérant
Python, c'est PY Nous exécutons donc ce fichier avec Python et en utilisant l'argument
Run server. Exécutez que nous
ayons cet avertissement. Nous allons régler
ce problème dans un instant. Voici donc le site UrlNow. Si vous appuyez sur Ctrl ou
Commande, puis
que vous cliquez dessus, votre nouveau site Web s'ouvrira. Il n'y a donc pas vraiment d'application ni d'application personnalisée moment, car nous l'
ajouterons plus tard Mais en gros,
cela signifie que cela fonctionne. Pour arrêter l'exécution de l'application, vous devez appuyer sur la touche
Ctrl C du terminal. Et maintenant, ce message ici. Eh bien,
ce message indique que nous devons exécuter
une commande SQL. Maintenant, c'est une bonne chose
avec jango car vous n'avez pas vraiment besoin d'exécuter
de langage de requête SQL Vous pouvez simplement faire en sorte que Python
gère la migration PY. Appuyez dessus et jangle
exécutera ces requêtes pour vous. Donc, en gros, ce sont des
requêtes qui créent
des tables par défaut, des tables
de base de données. Vous pouvez également voir qu'un
nouveau fichier dbdt S three a été créé lorsque nous avons exécuté
Python manage PY Migrate Cette commande a
donc créé un fichier de base de données SQL, et Jango
utilise par défaut SQL 3, mais vous pouvez également
utiliser du SQL postgrade Mais tu peux le faire.
Vous pouvez facilement le faire sur le serveur
de production. Localement, il est bon
d'utiliser SQLite Three, qui n'est qu'un seul fichier et
toutes les données seront là, toutes les tables de votre
projet s'y trouveront Cette commande a donc
généré ce fichier. Et il a également appliqué
toutes les modifications requises pour la
phase initiale de création de JangOpject Il a donc créé des tables, et plus tard, vous
souhaiterez peut-être apporter d'autres modifications à vos tables. Je vais vous montrer comment créer nouvelles tables via
Jango et non via SQL Donc, grâce à Python,
c'est très simple. Et une fois que vous avez créé une
table dans le code Python, vous devez exécuter cette commande. Cela traduira donc votre code
Python en requêtes SQL. Vous n'avez donc pas besoin d'écrire des requêtes
SQL avec jango. Il suffit d'écrire
du code Python simple. Je vous montrerai comment
procéder lors
de la création de l'application ultérieurement. Pour l'instant, je peux vous montrer quelles tables ont été créées
dans ce fichier. Si vous double-cliquez dessus,
il ne sera pas affiché car le code Visual Studio n'affiche pas les bases de données
SQLite Vous avez besoin d'un programme approprié pour consulter cette base de données. Tu
n'es pas obligée de le voir. Je veux juste vous
montrer quelles données il contient à des
fins d'apprentissage. J'ai donc ici un programme appelé
DB Browser for SQL Light. Vous pouvez le rechercher
sur Google et l'installer ou simplement voir ici
ce que je vais faire. Vous n'avez pas besoin de ce programme juste pour voir les données par curiosité. Vous souhaitez donc
ouvrir la base de données. C'est donc à DB Sculi Three
que nous avons le fichier. Vous voyez donc qu'il
y a plusieurs tables ici. Ce sont des tableaux concernant l'interface d'administration, en fait. Aucune table n'est donc encore
créée pour des éléments tels blocs ou d'autres fonctionnalités que nous allons avoir
pour notre projet jango Donc, les choses dans Jango sont
enregistrées dans des bases de données, et Jango utilise culi
three par défaut, comme je vous l'ai déjà dit Bien entendu, chacune de ces tables contient
des données, vous
pouvez donc parcourir les données et parcourir ces tables. Pour l'instant, ils sont simplement vides parce que vous voyez,
c'est juste vide. Nous n'avons encore ajouté aucun utilisateur
à l'interface d'administration. Alors, qu'est-ce que l'
interface d'administration ? Bref ? Eh bien, laissez-moi redémarrer le serveur
. Accédez au site Web. Et si vous accédez à l'URL, donc après le port, vous faites une barre oblique, puis Admin Entrez, vous verrez
cette boîte de connexion ici. Vous avez besoin du nom d'
utilisateur et du
mot de passe de l'administrateur. À l'heure actuelle, aucun utilisateur
administrateur n'a encore été créé. C'est aussi pourquoi vous voyez que
toutes ces tables sont vides. Donc pas de données.
Il y a donc des tables, mais il n'y a pas de lignes
dans ces tables. Plus tard, je
vais vous montrer comment créer un utilisateur administrateur. Alors pourquoi avons-nous besoin de l'interface
d'administration de toute façon ? Eh bien, nous avons dit que nous allions créer un site Web
contenant des blogs. Maintenant, qui va ajouter
du contenu dans ces blogs ? Est-ce vous le développeur ou peut-être des auteurs
qui rédigent le contenu ? Donc, ces auteurs, il
existe deux manières d'
écrire ce contenu. Soit ils accèdent à votre projet de code
Visual Studio, puis vous leur montrez
les fichiers Python contenant le
contenu ou les fichiers HML, où le contenu sera
écrit, soit une solution plus intelligente consiste à avoir une
interface plus conviviale ces zones de contenu et des options
pour modifier les polices Donc des boutons, des boîtes à outils
et des choses comme ça. agit donc d'une véritable expérience
de traitement comme Microsoft Word ou
d'autres logiciels de traitement de texte. Il est donc facile pour les auteurs d'ajouter du contenu en continu
à ce site Web. Vous donnez donc à ces auteurs et moi un nom d'utilisateur et un
mot de passe pour qu'ils puissent accéder à votre site Web
et ajouter. Nous allons examiner l'interface d'administration
dans la vidéo suivante. C'est donc ce que nous avions pour le moment. Merci de m'avoir suivi.
Je te parlerai plus tard.
209. 210. Créer un modèle de base de données pour l'application de blog: Bonjour encore une fois. Dans cette vidéo, nous allons ajouter quelques codes dans nos modèles de fichiers PY. Comme je vous l'ai expliqué, une page, une page Web, possède un modèle, une vue et un modèle CML Le modèle est donc inférieur
dans cette structure en trio. Nous allons donc
commencer par les modèles. Ce que nous devons
créer, c'est une classe pour représenter un bloc de messages. Appelons donc cela un post. Maintenant, la publication n'est pas une simple classe. Post doit être une classe qui
hérite du module models. Cela fait donc de cette
classe une classe modèle. Le module est donc une
classe spécifique conçue par les auteurs de jango, les développeurs de jango
et conçue
pour contenir des champs de données Qu'est-ce que je veux dire par là ?
Eh bien, par exemple, nous avons dit que nous
voulions un champ de titre. Une page Web est un titre. Ainsi, lorsque le
créateur de contenu crée un titre, ce titre sera stocké dans le champ de titre
du tableau des articles. Vous avez donc montré que je
vous ai montré ce DB Viewer, qui est un programme permettant de voir les données
d'une base de données SQL. La base de données SQL est donc
celle-ci, db Q three, et cet article créera une nouvelle table dans la base de données db point
Sculi Three Maintenant, ce sont les
tableaux actuels, n'y a
donc pas de tableau de publication ici, mais vous verrez qu'un tableau sera créé lorsque nous aurons
terminé ce tableau. Donc, le titre est maintenant models
Qu'est-ce qu'un titre ? S'agit-il d'un domaine de soins ? Oui Je pense que ce type
conviendrait à un titre. Il s'agit donc d'un type
de champ de base de données, et il obtient un attribut
de longueur maximale. Disons 200 caractères. Il y aura donc un
manuel qui autorisera jusqu'à 200 caractères pour
le titre du blog Alors, qu'est-ce qu'on a d'autre ? Contenu. Donc le
corps du bloc. Maintenant, je n'opterais pas pour le champ
Care, car il est davantage
conçu
pour les petits morceaux de texte. Cela
ressemblerait davantage à un champ de texte. Et tu peux le laisser
vide. Quoi d'autre ? Eh bien, date, création,
peut-être devrions-nous être des modules point, date et heure. Vous voyez donc que
ce module
de modèles de jango a tous
ces champs prêts Ainsi, un champ de date et d'heure serait désormais
automatiquement ajouté égal à vrai, ce qui signifie que lorsque
le créateur
de contenu créera
un nouveau bloc
de publication depuis l'interface d'administration, il rédigera
un titre, un contenu. Ensuite, il y aura un bouton de
sauvegarde sur lequel ils pourront appuyer sur ce bouton de sauvegarde et le message sera publié en ligne. Lorsqu'ils appuient, lorsque
le créateur de contenu appuie sur ce bouton, cette classe est instanciée et génère la date et l'heure
actuelles,
et ces dates et actuelles sont injectées dans le champ de date de création de
la table des publications de la base de
données db Suli La base de données comporte plusieurs tables, pos est l'une des tables, post comporte plusieurs champs. L'un des domaines est celui-ci. OK, j'espère que c'est logique. Ensuite, nous avons un champ slunk, qui enregistrera la partie de l'URL située
après le domaine Donc, comme nous l'avons dit, si votre domaine est exemple.com et que votre article de
blog parle de chiens, alors le slug
sera slash L'URL complète
serait donc example.com slash DGS. Et ici, l'utilisateur,
le créateur de contenu, écrira simplement « dog » ou « n'
importe où ». Le
créateur de contenu saisira donc le slug dans l'interface d'administration,
comme il le fait pour le contenu du
titre et les autres zones de
saisie qui s' y trouvent Donc, slug serait à
nouveau des modèles point sur le champ Slug. Il existe donc une classe
spécifique qui représente le champ de limaces dans un
jangle, appelée champ de limaces Mettons une
longueur maximale de 200, peut-être. Il est logique de ne pas
avoir de très longues limaces. Cela ne permettra donc pas
au créateur de contenu de
saisir des slugs de
plus de 200 caractères. Et elle doit être unique, donc unique est synonyme de vérité. Si l'administrateur, le créateur du contenu saisit un slog qui a déjà
été saisi, cela ne
permettra pas de créer le nouveau slog car vous
ne pouvez pas avoir deux pages
avec la même URL Je gâcherais les choses. Par conséquent, cet argument ne permet pas de créer des URL
dupliquées Ensuite, nous avons l'
auteur, donc créez le nom de variable, les modules
pointant quatre points en touche cette fois. Pourquoi ? Parce que nous allons obtenir cette valeur à partir d'
une autre table de base de données, qui a déjà été créée
par Jango, et nous pouvons l'obtenir partir de jangodt D'importation de modèles. Donc, à partir de cette importation,
utilisateur, d'accord. C'est aussi une classe, vous pouvez la voir lorsque
je passe la souris Et donc, dans les
deux arguments présentés ici, nous avons besoin d'un utilisateur. Sans
parenthèse Donc, en gros, un type de champ à clé
étrangère signifie que la valeur de ce champ de base de données
proviendra d'une autre table de
base de données. Dans ce cas, il s'agit d'une table de base de données
utilisateur. Et ce champ créera sur l'interface d'administration
une liste déroulante dans laquelle le créateur de contenu pourra choisir entre
différents noms d'utilisateur. Cela se fait donc automatiquement. Mais nous voulons spécifier
quelques paramètres lors de
la suppression du comportement qui se produira
lorsque l'utilisateur sera supprimé. Cet utilisateur est donc supprimé de
la table de base de données d'origine. Donc, cascadez, mais vous
n'en avez pas besoin, alors supprimez-le et
laissez-le comme ça. Maintenant, qu'est-ce que cela signifie ? Cela signifie que si un utilisateur est supprimé de
la table de base de données utilisateur, les publications de l'utilisateur seront
également supprimées. C'est ce que fait Cascade. Je vais supprimer cette virgule ici, et le dernier champ
que nous voulons ajouter est le statut, le statut de la publication, qui serait égal aux
modèles de ce champ entier Sur l'interface d'administration, il y aura une liste déroulante d'
état qui contiendra deux options Rédigez et publiez. Le créateur de contenu
peut donc choisir d' enregistrer cet article en
tant que brouillon ou tel que publié. Cela permettrait donc aux créateurs de contenu
d'
organiser plus facilement les blogs, car ils pourraient enregistrer un article
sous forme de brouillon
, puis , dans notre jangle, nous pourrions établir une condition pour
ne pas publier articles ayant
le statut de brouillon, mais uniquement ceux qui
ont le statut de publication Ce serait donc un bon moyen de faire distinction entre les deux
types d'articles. Nous devons donc avoir des choix, qui sont égaux à une variable, disons, un statut
et qu'est-ce que le statut ? Eh bien, le statut doit être une
variable que nous devons créer ici. Donc, le statut est égal à un
renversement de deux renversements. L'une d'elles serait,
disons, zéro truite. L'autre
serait une publication. Et celui par défaut
serait peut-être Brouillon. Donc, zéro signifie brouillon, et un correspond à publication. Maintenant, l'administrateur, le créateur de
contenu, verra soit le brouillon, soit le publier
dans cette liste déroulante, et cela complète
notre article de classe Maintenant, assurez-vous d'
enregistrer ce fichier, sauvegarder
le fichier ou de commander
S ou de contrôler S, puis vous devez
faire quelque chose ici. Nous devons appliquer ce
modèle à notre base de données. Nous devons donc exécuter
des requêtes SQL. Mais comme je l'ai déjà mentionné, il n'est pas nécessaire d'exécuter des requêtes
SQL de manière explicite. Tout ce que vous avez à faire
est d'exécuter deux commandes, Python Manage point PI make
migrations. Actuellement, si vous regardez
le navigateur de base de données où nous voyons les données, nous n'avons aucune table
appelée posts pour le moment, même si je rafraîchis cette actualisation, il n'existe pas de telles tables. Mais maintenant, voyez ce qui va se
passer si j'exécute cette commande. OK, quelque chose se passe ici,
des migrations ont été appliquées, donc la
structure de la base de données a été modifiée, puis nous devons
ajouter une autre commande,
à savoir que Python gère le
point PY, migre cette fois. Pour cela et celui-là, nous
appliquons des requêtes SQUAR
correspondant à ce modèle Maintenant, si je vais ici,
actualisez, vous verrez que ce tableau a été
ajouté en bloc. Le nom de cette table a donc été construit en utilisant le nom de
l'application qui est block et underscore, Sol Jango
le fait automatiquement, puis après le trait de soulignement,
post, qui est le
nom du module Donc, si je sélectionne cette table, vous voyez maintenant que nous avons
ces champs de base de données. Nous voyons donc ici tous les
champs que nous créons. L'ID est un champ
créé automatiquement, mais nous avons le
contenu du titre, la date de création, statut du
slog et
l'identifiant de l'auteur. C'est vrai. Cela complète la
création de notre modèle. Nous devons maintenant créer une vue. C'est ce que nous allons faire dans la vidéo suivante.
210. 213. Vues dans Djago: Bonjour. Auparavant, nous avions
créé un modèle HTML, qui est essentiellement
chargé de rendre le contenu
sur le navigateur. Mais ce modèle HTML doit être connecté
d'une manière ou d'une autre aux
modèles du fichier PY. Ce modèle HTML contient
des variables qui
attendent d'être remplies de
contenu avec des valeurs titre doit donc
provenir de la base de données, de la base de données SQL, qui est ce fichier ici. Par conséquent, nous devons
trouver un moyen de
connecter le modèle
à cette base de données. Et comme en Python, cette publication de classe est le représentant de
cette table de base , nous devons
donc
connecter Block that HTML à cette publication de classe. C'est là que le point de
vue de l'intermédiaire est utile. Nous introduisons donc des vues et
nous créons une vue. Appelons cela une vue en blocs. Tu peux l'appeler
où tu veux. Ce n'est qu'un nom
pour la classe. Mais je tiens à distinguer
ce nom des autres classes afin que vous puissiez mieux
comprendre les choses. Donc, classe Block View. C'est un
cours très simple, en fait. Il devrait obtenir une variable de modèle. Jango s'attend donc à ce que cette classe ait
une variable de modèle, et cette variable de modèle
doit pointer vers le nom du module qui doit être
connecté au bloc. Donc, en gros, nous avons, encore une fois, une variable de module
et également un modèle. Nom de la variable. C'
est donc ce que fait ce cours. C'est tout Il connecte
le modèle au modèle. Le modèle sera publié, mais post n'est pas un
nom importé dans cet espace de noms, nous devons
donc l'importer
depuis les modèles, importer le post. Vous voyez maintenant que le message est disponible. Par conséquent, cette
ligne est maintenant valide. Et le nom du modèle,
tout ce que vous avez à faire est simplement donner le nom au modèle, qui est du
code HTML à points de blog. Et c'est tout. Très bien, jusqu'ici tout va bien. Donc, si nous exécutons le serveur maintenant
avec Python, gérez ce serveur PY Run,
mais soyez prudent. Je ne suis pas dans un
environnement virtuel ici, alors fermez-le, ouvrez un nouveau terminal et recommencez à ce
que Python gère ce serveur PY Run. Et parfois, vous obtenez des erreurs
comme celle-ci ici, les
modèles chers au système d'exploitation ne sont pas
définis dans les paramètres. Donc, allez dans les paramètres, nous sommes juste là, et nous avons évidemment besoin du système d'exploitation,
la bibliothèque standard du système d'exploitation, qui effectue des opérations de répertoire
avec des dossiers et des fichiers. Nous en avions donc besoin
lorsque nous avons déclaré la variable dear des modèles
précédemment ici. Enregistrez le fichier et réexécutez. Cette fois, le serveur a démarré. Il s'agit donc de la page d'accueil, mais il n'y a pas d'autre
page Web que celle-ci. Par exemple, si vous accédez à Chiens, vous obtenez une erreur « Parce que chiens
ou chats ». Bien entendu, nous n'avons
rien car nous
n'avons aucune entrée dans notre
table de blocs de la base de données. Dans la vidéo suivante, je vais saisir des données fictives dans
notre table de base de données via un programme
appelé navigateur de base de données pour SQL Light Si vous n'avez pas ce programme ou si vous ne voulez pas l'installer,
c' est très bien car ce
programme est simplement facultatif, mais vous pouvez l'installer gratuitement, ou vous pouvez le
rechercher sur Google. Normalement, nous voulons saisir
les données par le biais de l'administrateur, mais juste pour tester les choses, je veux disposer rapidement de
certaines données afin de vous expliquer
ce qui se passe et que vous compreniez comment
les choses fonctionnent. Alors rendez-vous dans la prochaine vidéo.
211. 214. Motifs d'URL: Bonjour. Auparavant, nous avons
créé une vue qui est une classe qui connecte
le modèle à un modèle. Maintenant, dans cette vidéo,
je veux entrer
des données fictives dans
notre table de base de données Notre
fichier de base de données est donc DQ 3, et il contient plusieurs
tables Je souhaite utiliser le navigateur de base de données pour SQLite, puis ouvrir la base
de Et puis il s'agit
d'un répertoire
racine allez dans db cul three
et double-cliquez dessus. Ensuite, vous devez parcourir les données et trouver le tableau des articles de
blog. Voici donc les champs
de la table de base de données. Vous devez les développer un peu pour
les plus visibles
et les
rendre plus visibles, les dates de création, statut du
slug de l'article, qu'il soit brouillon ou publié, et l'identifiant de l'auteur, qui peut être un nombre Le premier auteur qui sera créé en a donc une idée et ainsi
de suite. Entrons donc manuellement une nouvelle ligne de tableau. Bien sûr, comme je vous l'ai dit, cela doit être saisi
via l'interface d'administration. Mais pour l'instant, juste pour tester, nous voulons aller sur ce bouton, appuyer dessus, et cela
insérera une nouvelle ligne de tableau. L'identifiant a donc été généré
automatiquement. Donc, pour la première
rangée, ce sera une. Pour le second, il incrémentera
automatiquement deux. Deux et ainsi de suite. Mettons donc quelque chose
pour le titre, comme des chiens et du contenu. Les chiens sont bons. Ça suffit pour le moment. Date de création. Cela devrait
être au format 2022, 12 pour le mois, dix pour
le jour du mois, slug Comme ça. Dogs and Jungle se chargera de créer l'URL complète. Donc, example.com
ajoutera une barre oblique puis il ajoutera le
chien après la État, il s'agit d'une
ébauche ou d'une publication. Donc, ici, vous voyez que
nous en avons zéro ou un. Mettons-en un pour l'identifiant de l'auteur
publié, le premier utilisateur de la base de données, nous avons déjà créé
un super utilisateur. Cet utilisateur possède donc l'identifiant 1. C'est vrai. Une fois cela fait, vous devez écrire les
modifications dans le fichier de base de données. accord, puis vous pouvez
simplement fermer la base de données, et la ligne est là. Maintenant, connectons ce slug de
cette URL à la vue du bloc de
vues. Pour ce faire, vous devez accéder à votre dossier de blocs, cliquer avec le bouton
droit de la souris, accéder à Nouveau fichier et créer
une URL de fichier L point py. Et ici, vous
souhaitez importer des vues d'importation à partir de l'emplacement
actuel. Nous importons donc
le module de vues. C'est un fichier, mais lorsque vous
importez un élément qui est un module, il devient un module. C'est ainsi que nous l'appelons. Views now est disponible ici, et nous devons également importer autre
chose depuis l'URL de Jango,
un module, l' URL est un autre
module du chemin jangoimport Et nous avons maintenant besoin de ce chemin, qui est une fonction permettant de créer une liste de modèles d'URL. Je divise donc
cela car cela peut contenir différents modèles d'
URL Le premier modèle qui nous
intéresse
est donc créé par
le biais de la fonction path. Quel est donc le schéma ? Eh bien, c'est une limace, une colonne et encore une balle, avec ce support
d'ouverture et de fermeture Ainsi, lorsque l'utilisateur
visite une certaine URL, disons, laissez-moi
écrire quelque chose ici. Par exemple, exemple.com
Slug, bien sûr, ils écrivent comme des chiens, mais chiens, nous disons à Jango de
chercher des chiens dans le Jango va donc accéder à notre
table de base de données, et il recherchera
dans chaque ligne chiens dans chaque cellule
de slug, Ainsi, dans chaque rangée
du champ de limaces, il recherchera des chiens Et s'il trouve une
ligne contenant des chiens, il va
exécuter la vue en bloc, supprimer les parenthèses,
bloquer le point en tant que vue Exécutez donc cette classe en tant que vue. Et il y a aussi
autre chose que nous devons donner ici, que nous utiliserons plus tard. C'est un nom. C'est
ce qui devrait être une chaîne, et disons une vue en bloc. C'est un nom dont nous
aurons peut-être besoin plus tard, c'est
donc une bonne idée
de l'avoir ici maintenant. J'espère donc que vous me
suivez jusqu'ici. Nous devons également faire
autre chose en ce qui concerne les URL. Vous voyez qu'il existe
une autre URL qui est un fichier PY, mais elle se trouve sur mon site, qui contient les configurations
du projet Jungle, pas les applications Jungo Ce fichier
ressemble donc déjà à ceci. Il est construit
automatiquement par jango, et
voici celui-ci . Il y a aussi une variable de
modèles d'URL, tout comme celle-ci ici, modèles d'
URL, modèles d'URL Mais cela veut maintenant connaître les URL
de l'application de blocage. Ainsi, pour chaque application que
vous créez, vous souhaitez déclarer le modèle d'
URL ici. Donc, après la virgule, nous
créons un autre élément de liste, qui est path cette fois, il doit être comme ça Donc, une chaîne vide qui
indique le répertoire personnel. Ainsi, lorsque le
répertoire personnel est visité, quelque chose d'autre
après la barre oblique est écrit par l'utilisateur dans la barre d'
adresse du navigateur, et autre chose est
défini par les blogs Blog est le nom de l'application. Donc, bloquez ce
nom de dossier ici, URL. URL est le nom de l'
URL de l'application PyFleo the block. Donc, le point URL du blog. Vous pouvez également écrire autre
chose ici. Vous pouvez écrire MyBlocks, par
exemple, dans ce cas, Jango attend des utilisateurs Pas de barre oblique « chiens » sur exemple.com,
mais « exemple.com » sur «
MyBlocksSlash DOGS mais « exemple.com » sur «
MyBlocksSlash Mais ce n'est pas ce que nous voulons, alors
continuons comme ça. Example.com slash DOG. Nous avons maintenant cette erreur. L'inclusion n'est pas définie et nous devons la saisir à partir du chemin d'importation et d'inclusion des URL de
Jungle Enregistrer. Assurez-vous également de
sauvegarder tous les fichiers. Alors sauvegardez ceci également. Contrôles, enregistrez également les
vues. Donc, tout ce
que vous voyez avec ce code black.in
Visual Studio signifie
qu'il n'a pas encore
été enregistré Voyons maintenant quelles erreurs nous recevons. Type : object block view has no attribute as view as view,
voyons ce qui se passe ici. Cela se produit dans ce fichier, donc l'USPI bloque
l'URL PY, qui se trouve ici Cette classe n'a donc pas cet attribut.
Jetons un coup d'œil. Cette classe, bien sûr,
n'a pas cet attribut. Il possède uniquement des attributs de
modèle et de nom de modèle. Aucune méthode appelée vue. C'est parce que j'ai
oublié d'
hériter d'une classe de vue
spécialisée que nous devons importer Depuis jango, donc depuis jangle
point Vs Import generic, puis depuis generic, nous pouvons accéder au
détail de la vue détaillée, non supprimer la classe de vue
détaillée de la vue Supprimez donc les parenthèses. Cela signifie donc que cette
classe
contient en fait une méthode de vue. Vous pouvez donc cliquer avec le bouton droit de
la souris et accéder à Définition. Et bien sûr, cela
n'a aucune méthode ici, mais il hérite d'
autres méthodes Donc, si nous passons à la vue détaillée de base, à la définition, cela
hérite également de ces deux éléments Alors peut-être que view a
cela une fonction de vue. Oui, on l'a trouvée.
Voilà donc la méthode. Il existe donc une chaîne
d'héritage, et nous avons désormais accès
à cette méthode depuis notre classe de vue de blog. C'est vrai. Enregistrez ce fichier. Et maintenant, il est temps d'essayer notre application et vous voulez accéder
à cette URL, il fallait donc s'y attendre. La page d'accueil
n'est donc pas encore configurée. Nous n'avons aucun modèle d'
URL qui
indique à Jangle ce qu' il doit faire lorsque
les gens visitent la page d'accueil Donc, ce que vous devriez
plutôt regarder, c'est l'un de vos blocs. Donc, actuellement, nous avons des chiens, des scories. Tu t'en
souviens ? Je l'ai inséré dans le tableau, et nous avons cette erreur. Le modèle n'existe pas. Une erreur facile à corriger chez les chiens. Jango a donc reconnu que
nous avions une entrée « chien » dans la base de données, car si
vous l'essayiez pour les chats, vous obtiendrez une autre erreur Donc, cette fois, vous avez
obtenu une page introuvable, et Jango a essayé ces modèles et n'a trouvé
aucune limace pour chats Les chiens sont donc une chose différente, mais le modèle est introuvable. Donc blog point HTML. Il s'agit généralement d'un problème de communication
avec Jangle Jango n'est donc pas
en mesure de trouver le chemin du code HTML à points en bloc. Alors, vérifions-le.
Le code HTML par points de bloc est correct ici. Le
nom de la vue est donc correct, puis
examinons les paramètres. Modèles. Le nom
est correct ici. Cela semble donc bien, mais
si vous faites défiler la page vers le haut, vous avez la variable templates. Et cela comporte maintenant certains
paramètres concernant les modèles. Et l'un de ces
paramètres est le DRS. Voici donc les clés
de ce dictionnaire. Bend Derski. Le DrSki attend une valeur, et actuellement c'est
une liste vide, mais vous devez déclarer ici la liste des
répertoires de modèles Donc, dans ce cas, nous n'en avons un parce que vous pourriez en avoir plus, mais nous en avons un . Nous devons
donc le déclarer dans la sauvegarde et nous obtenons cet autre modèle d'erreur, le
cerf n'est pas défini, bien
sûr, parce que nous l'utilisons ici avant de le définir. Supprimez-le donc à partir de là et
placez-le au-dessus de son utilisation. Donc, au-dessus
de cette variable de modèles, mettez-la juste ici. Sûr. Et notre serveur
a été interrompu, nous voulons
donc exécuter à nouveau. Python gère ce serveur
PY Run. Voyons ce que nous obtiendrons cette
fois. Accédez au navigateur. Et hop, on a le blocage. Dogs, Dogs are good et modifiez le nom de l'
auteur. Cela fonctionne bien. C'est ainsi que se termine cette vidéo. Permettez-moi donc de conclure
afin que vous sachiez où vous
en êtes jusqu' présent, nous sommes en mesure de répondre aux préoccupations
des utilisateurs en matière d'URL. Ainsi, lorsqu'ils saisissent example.com
slash TOC, par exemple, ce point d'URL PY est
déclenché et cela déploie les
vues et les modules Il connecte donc les
deux ensemble pour
interroger les données de la base de données. Ces données sont injectées dans ces variables par des
crochets dans le modèle HTML Et bien sûr, elles
sont ensuite affichées dans le
navigateur pour l'utilisateur. Et comme vous l'avez vu pour le
moment, je viens de saisir des
données manuellement à l'aide d'un programme tiers qui
accède aux bases de données SQL Three Mais normalement, comme vous le
verrez dans les vidéos suivantes, nous voulons obtenir des données via
une interface d'administration. C'est donc ce que nous
allons faire ensuite. Nous allons créer
l'interface d'administration et y saisir des données.
212. 215. Créer des vues d'interface administrateur: Bon retour. Auparavant,
nous avons pu créer cette page Web avec Jango
et dans cette vidéo, nous allons travailler sur
l'interface d'administration Plus précisément, nous
allons ajouter une option pour pouvoir ajouter des articles
de blog depuis l'interface d'administration. Pour cela, vous devez disposer d'un nom
d'utilisateur et d'un mot de passe. N'oubliez pas
que nous l'avons créé précédemment, mais si
vous le manquez, vous pouvez créer maintenant avec
la commande Python. Gérez le point PY, créez un superutilisateur. Je l'ai déjà fait, donc je ne
vais pas le refaire. Par conséquent, je vais
exécuter le serveur, accéder à l'interface d'administration et me
connecter avec mes informations d'identification. Maintenant, vous voyez que
nous ne pouvons créer que de nouveaux utilisateurs et de nouveaux
groupes ici, mais pas de publications. Donc, ce que nous devons faire,
c'est accéder
au code, puis aller sur le blog, puis sur admin PY. Nous voulons maintenant
créer un modèle. Ici, nous voulons
enregistrer nos modèles, qui sont les modèles postaux des
modèles PY. Donc, celui-ci ici, nous voulons l'
importer depuis Admin PY afin que les modèles importent le post. Ensuite, nous voulons enregistrer
cela en utilisant admin ce site
qui
s'enregistre en minuscules, puis voici le post. Sans les parenthèses,
alors n'appelez pas le post, déclarez-le
simplement ici Enregistrez ce fichier et allez
vérifier l'interface d'administration. Alors actualisez, et vous devriez
voir les articles ici maintenant. Donc, si vous cliquez sur
AD, ajoutez le titre. Disons que les chats
sont également bons. La limace peut être un CAT
ou n'importe où. Modifie l'auteur
et le fait publier. Vous voyez maintenant que ce
sont tous les champs des modèles intitulés PY, le
slog de contenu, l'auteur et le statut Alors rédigez ou publiez.
Cliquez sur Enregistrer. Ensuite, allez dans le navigateur
et allez dans CATS cette fois, et vous verrez que le nouveau message est
là, aussi simple que cela. Maintenant, c'est facultatif,
mais si vous le souhaitez, vous pouvez ajouter des colonnes ici pour ajouter des détails
sur ces publications. Les créateurs de contenu verront donc cette vue lorsqu'
ils créeront des publications. Vous devriez donc leur faciliter la
tâche afin qu'ils puissent trouver de
nouveaux blocs ici. Tout d'abord, ce que nous voulons
faire, c'est voir que le nom de chaque blog est l'objet du post
1, l'objet du post 2. Il est donc très
difficile de trouver autre article que vous souhaitez
pour le créateur de contenu. Alors, comment pouvons-nous afficher ici le titre au lieu de
ce nom peu utile ? Mais d'abord, d'où
cela vient-il ? Que pensez-vous du post object ? Il me semble que Post post est le nom
de la classe models. C'est donc en fait le
nom de cette classe. Donc Python, lorsque vous avez une classe et que
vous l'
imprimez, imprimez cette classe, Python affiche simplement le
nom de cette classe. Je suppose que tu le sais. Laissez-moi vous
montrer ce que je veux dire. Alors laissez-moi ouvrir un
shell Python, et vous aurez une classe. Appelons également ce post. Il suffit de passer. Ainsi, lorsque
vous imprimez un article, vous obtenez ce type de sorties ou vous dites simplement publier, c'est pareil. Jango essaie donc d'obtenir une représentation sous forme de chaîne
de ce message de classe Mais nous pouvons changer cela en ajoutant une
méthode magique. Appelé STR. En fait, c'est underscore,
STR, underscore, underscore. Donc, deux
soulignements en tête et en fin de match. Avec des parenthèses, self est
le premier argument, colonne, et cela devrait maintenant renvoyer une meilleure représentation
de cette classe, qui serait self
représentant une classe elle-même, et title est l'attribut
de la classe Ce titre sera
imprimé lors de l'impression de la
pose. Donc, si je sauvegarde ceci, je vais à l'administrateur. Rafraîchir Nous obtenons les titres de chacun des articles de
blog, chats et chiens. Maintenant, si vous souhaitez
ajouter du contenu
sur le côté
, vous devez accéder à l'interface d'administration, et ici vous voulez
créer une nouvelle classe. Appelons cette
classe post admin, qui devrait hériter
de admin Model Admin Donc ça n'a pas
besoin d'arguments. L'administration de modèles est un type de classe, tout comme nous avons des modèles qui modélisent des modèles de classe normaux. Nous avons des modèles d'administration spéciaux, donc nous en héritons, et cela nous attend maintenant une variable d'affichage de liste
si vous voulez la transmettre,
qui devrait être un
tuple avec des chaînes, et les chaînes devraient être les
noms des champs du modèle Alors, qu'est-ce que tu veux
montrer sur le côté ? Ici. Nous avons déjà le titre, alors montrons les dates de
création et l'auteur. Oui C'est ce que nous allons faire. Donc date de création.
C'est le nom. Oui, dates de création et
auteur dans Admint PY author. Non OK, nous l'avons fait, mais ce n'est qu'un
cours qui circule. Jango ne connaît pas
ce cours. Nous voulons donc dire à Jango d'une manière ou d'une autre que le projet doit
prendre en compte cette classe, nous devons
donc
enregistrer cette C'est ce que j'essaie de dire. Donc, publiez l'administrateur ici,
juste la classe. Inutile de l'appeler comme ça. Faites-y de l'espace pour visibilité, enregistrez,
allez ici et rechargez Et c'est le
point de vue que nous avons. Je sais donc que ce n'est pas
idéal, mais je vais y remédier. Date de création de la publication
et auteur. Le titre a donc disparu car lorsque vous incluez cette variable d'affichage de
liste, l'
interface d'administration ignore le nom de la classe. Elle
n'imprime donc pas la représentation de la
classe ici, mais elle imprime
ce que vous avez déclaré ici. Par conséquent, ce que
vous devez faire est ajouter un titre parmi ceux-ci
en tant que premier. L'ordre des chaînes
ici est donc respecté par jango. Nous avons donc maintenant le titre, la date de création et l'auteur. Si vous vous demandez pourquoi la date créée
pour les chiens est vide, eh bien, c'est parce que
si vous vous souvenez, j'ai saisi manuellement
un RO pour les chiens. blog, et évidemment je
n'ai pas saisi le bon format de
date manuellement. C'est pourquoi Jango ne
sait pas quoi afficher ici. Mais lorsque vous créez une publication, la bonne manière via
l'interface d'administration, Jango est capable de
générer automatiquement la date du jour, c'est tout pour cette vidéo Passons maintenant la page d'accueil car elle n'existe pas
actuellement. Construisons la page d'accueil dans
la vidéo suivante. Voyez ici.
213. 216. Créer la page d'accueil: Bonjour, bon retour. Auparavant, nous avions créé deux articles de
blog, chats et chiens. Cependant, notre page d'accueil
ne fonctionne pas. Alors, comment ajouter une page d'accueil ? C'est ce que nous allons faire dans cette vidéo. Pour l'instant, nous allons
garder les choses simples. Nous allons avoir
juste une page d'accueil indiquant qu'il s'agit d'une page d'accueil. Mais plus tard, nous
allons générer automatiquement une liste d'articles de
blog sur la page d'accueil. Pour l'instant, nous allons
avoir une simple page HTML pour vous entraîner à créer de
nouvelles pages dans la jungle. Oh, vous savez plus ou moins
comment les choses fonctionnent maintenant, mais répétons-le. Alors, par où commencer ? Commençons-nous par créer un module, une vue
ou un modèle HTML Vous
ne savez peut-être toujours pas
par où commencer. Mais je vous suggère de
suivre cette approche. Pensez toujours à l'utilisateur. Résolvez donc le problème en
commençant par l'utilisateur. Ce que voit l'utilisateur, c'est le code HTML. Ensuite, vous descendez par niveaux
jusqu'à ce que vous atteigniez le backend, c'
est-à-dire les modèles
ou les vues. Commençons donc à créer la page en
pensant à l'utilisateur. Par conséquent, vous devez créer un modèle HTML pour le
montrer à l'utilisateur. Allez donc dans les modèles, cliquez dessus avec
le bouton droit de la souris et accédez à Newfle.
La page d'accueil est généralement appelée
index point HTML C'est une méthode standard, mais vous pouvez également écrire n'importe quel
autre nom que vous voulez. Je vais donc conserver le code HTML à points d'
index. Encore une fois, le Tok, vous avez alors des balises
HTML et des balises
body comme ça. Écrivons un texte
statique ici. Voici la page d'accueil. Mais comment l'utilisateur peut-il
obtenir ce modèle HML ? Que font-ils ? Eh bien, ils saisissent une URL
directement dans leur navigateur. Je veux dire, ils peuvent
également trouver cette URL sur Google ou la saisir directement dans
leur navigateur. Cela n'a pas d'importance pour nous, mais ils doivent entrer une URL d'une
manière ou d'une autre dans leur navigateur
, comme exemple.com.
Il s'agit d'une page d'accueil. Nous devons donc accéder aux
URL de notre application de blog. Donc, cette URL, c'est un
fichier PyFle, pas l'URL, c'est un fichier PYFle provenant de mon site Nous en avons fini avec
ça. Nous sommes entrés. Nous avons parlé à Jango de l'URL, c'est PyIL de notre
application, et c'est tout Nous le fermons maintenant et
nous travaillons sur l'URL de l'application. Donc, l'URL du blog, qui contient cette liste d'appels à la fonction
Path. Cette fonction est donc
appelée avec deux arguments, un ici, un ici, trois, en fait, et
un troisième ici. Nous devons donc maintenant
ajouter un autre appel. Trajectoire. Cette fois, c'est
juste une chaîne vide. Avant, après le
nom de domaine, il y avait le slug. Mais maintenant, après le
nom de domaine, nous n'avons plus rien. suffit donc de laisser une
chaîne vide à cet endroit. Une virgule Oh, maintenant nous avons des points de vue. OK ? Nous passons donc notre feuille de route qui consiste à publier
une page. Donc, vues, nous voulons créer
une autre vue maintenant dans les vues PY. Alors
écrivons-le d'abord ici. Nous allons l'
appeler Home View. Donc, HomeView Dots View
sera la méthode pour cela. Nous devons donc appeler Aview. Donnons-lui un nom, afin que nous puissions l'utiliser plus tard. La vue du soulignement de la maison,
c'est une chaîne, non ? Puis créez une vue. Donc un nouveau cours. La vue d'accueil de la classe provient de la vue détaillée générique. En fait, cela ne devrait pas
venir de là, mais laissons les choses
comme ça pour le moment. Et le modèle maintenant. Eh bien, cette page n'a pas
vraiment de modèle. En fait, il n'a pas besoin d'un
modèle, car vous voyez, il s'agit
simplement d'une page statique. Il ne s'agit pas d'obtenir des données d' une base de données comme le HTML à points en blocs. Vous voyez, dans le HTML du blog, nous obtenons ces données
de la base de Ce n'est pas le
cas ici, vous
pouvez donc avoir des vues sans modèles. Donc, tout ce que vous voulez faire ici est que le nom du
modèle soit égal à home,
désolé, point d'index HTML. Cela signifie donc que
lorsque les utilisateurs consultent cette URL, cette vue appelle modèle pour
qu'il soit affiché
dans le navigateur de l'utilisateur. C'est ça. Assurez-vous
d'enregistrer, utilisez ce PY, assurez-vous d'enregistrer l'URL PY, assurez-vous de sauvegarder le code HTML du point d'
index. Ensuite, essayez la page. Voici donc la page d'accueil, et il semble y avoir un problème. Des problèmes apparaissent donc aujourd'hui. Cela indique qu'il manque un ensemble
de requêtes dans la vue d'accueil. Vous devez donc définir
le modèle de vue de la maison. Le problème ici
est que dans les vues, ce n'est pas le bon type de
vue à utiliser avec des vues qui
affichent simplement un modèle sans
obtenir de données à partir d'un modèle. Par conséquent, dans
ce cas, vous souhaitez
plutôt utiliser une vue modèle. Enregistrez et actualisez. Et voici la
page d'accueil. Cela fonctionne. Vous pouvez le voir lorsque je le zoome. C'est vrai. C'est ainsi que
vous pouvez ajouter d'autres pages. Vous pouvez également désormais comprendre la différence entre les
différents types de vues. Donc, vue détaillée et vue du
modèle. vue modèle signifie que vous devez uniquement
afficher un modèle sans
obtenir de données de mon modèle. Il
s' afficher un modèle sans
obtenir de données de mon modèle agit d'une vue plus complexe qui extrait les données des modèles et les transmet aux modèles. Dans la vidéo suivante, je vais vous montrer comment
utiliser un autre type de vue, qui sert essentiellement à
créer une liste d'objets, une liste d'articles de
blog dans notre cas. Discutez avec vous dans la vidéo suivante.
214. 217. Créer la page À propos: Auparavant, nous avions créé une
page d'accueil pour notre application. Nous voulons maintenant développer
cette page d'accueil et afficher
la liste des articles de blog sur la page d'accueil au lieu de
certaines informations statiques. Donc, avant d'utiliser la
vue détaillée pour les pages de blog, la vue
modèle pour la page d'index, nous voulons
maintenant utiliser un autre type de vue pour
afficher une liste de blogs. L'affichage du modèle n'est pas le
meilleur choix pour cela. Par conséquent, nous pouvons supprimer
cette page ou la conserver et l'utiliser pour la page à propos de nous. Disons que notre site Web
devrait avoir une page à propos de
nous où vous pouvez écrire des informations sur
l'entreprise ou sur vous-même. Voyons donc comment nous
pouvons changer cela. Commençons par l'index,
la page HTML et renommons-la en about then in views, nous voulons renommer l'index en
about pour refléter le nom
du modèle HTML,
et aussi la vue d'accueil
peut changer en about view, puis passer à l point py et changer la
vue view supprimer ces parenthèses
et la
vue d'accueil à propos supprimer ces parenthèses
et la
vue Et maintenant, nous voulons donner un autre modèle d'URL à
cette page à propos de nous. On devrait parler de
slash comme ça. Enregistrez l'URL qui est PY, enregistrez les vues qui sont PY, et c'est tout
autour du serveur. Oh, je ne suis pas dans un environnement
virtuel, alors fermez le terminal et ouvrez-en un nouveau
, puis la flèche supérieure pour
exécuter à nouveau ce serveur. La page d'accueil n'
est donc plus valide, mais le fait de se terminer par
une barre oblique est valide Cela devrait donc se terminer par une barre oblique. Dans le cas contraire, vous obtenez un message d'erreur. Mais cette page est valide pour le moment. Donc, cette page, disons que
c'est la page à propos. Bien, sauvegardez cela, actualisez,
et nous verrons le changement. Il s'agit donc d'ajouter une
autre page. Dans la vidéo suivante, nous allons de
nouveau créer la page HTML à
points d'index avec du nouveau contenu Je vous montre donc une liste
de blogs.
215. 218. Listing de publications sur la page d'accueil: Bonjour. Dans cette vidéo,
nous allons ajouter la page d'accueil et afficher une liste des articles de blog
sur cette page d'accueil. Repartons donc
du point de vue de l'utilisateur. Nous voulons donc avoir pour l'
utilisateur un index de ce
modèle HTML avec des balises
HTML de type doctype et des balises de corps Alors, que mettons-nous ici ? Eh bien, donc des balises avec des
crochets et des symboles de pourcentage, et puis cette fois, nous
faisons une liste à quatre boucles,
quatre articles dans la liste des articles Ensuite, nous faisons quelque chose ici, puis nous mettons fin à cette boucle et quatre à l'intérieur,
nous faisons autre chose. Je vais vous expliquer ce qu'est une
liste de publications et ce qu'est également une liste de publications. Mais en gros, nous
avons les variables ici, qui peuvent être le
titre et le contenu de l'article. Et peut-être que non, le contenu de la publication
serait trop important pour être affiché, mais on pourrait dire auteur. Ce ne sera donc qu'
une liste de blocs. Nous ne voulons pas
afficher le contenu de cette liste
car ce serait trop important. Donc, titre du message, auteur du message. Maintenant, qu'est-ce qu'une liste de publications ? La liste de publications est une vue, que nous devons définir
dans les vues qui PY. Donc encore une autre classe de vue. Liste des publications de classe, le nom doit
être dans le même format, pour
ainsi dire, que celui-ci ici. Nous avons utilisé la liste de soulignement des messages ici avec des lettres minuscules Nous devons maintenant utiliser post in camel case : les listes de P
et L sont en majuscules Cela hérite de la vue
générique par liste de points. Il s'agit donc d'
un autre type de point de vue. Nous avions une vue détaillée rendu des modèles HTML qui
obtiennent des données d'un module. Nous avions une vue modèle pour afficher modèles
HTML sans les
données d'un modèle, et nous avons cette vue de liste, spécialisée dans le
rendu de plusieurs lignes de données, dans ce cas, de plusieurs publications. Maintenant, ce type de classe
attend une variable d'ensemble de requêtes, qui doit être égale à Post. Post est le modèle. Soyez donc prudent ici. Ce n'est pas la vue.
Ce n'est pas une vue de blog. Ce n'est pas une question de vue, bien sûr, c'est le modèle des blogs, que vous pouvez trouver à
l'intérieur des modèles chez PY. Donc, publiez ce modèle, c'est
celui auquel nous faisons référence ici. Ce que nous essayons de faire ici c'est d'
interroger les objets. Donc, les lignes de ce module de publication. Sans les parenthèses,
nous voulons appliquer un filtre et peut-être
obtenir tous les objets, peut-être appliquer un filtre tel que status égal à un,
qui signifie Laisse-moi
te le montrer. Donc, statut, nous parlons de ce champ. Nous voulons donc ces articles, ces articles de blog, qui ont
une valeur de un pour le statut. Le statut comporte des zéros ou des uns. Donc, un signifie publier, zéro signifie brouillon. Nous voulons donc
n'y afficher que les articles
publiés avec une valeur de statut de un. Et peut-être souhaitez-vous les
classer par domaine ? Nous avons donc
peut-être une date de création . Donc date de création. Telle est donc la relation
avec les modules et la relation avec les
modèles porte désormais sur les modèles Nom Eagle à deux
points d'index HTML, non ? Nous avons donc créé le modèle,
qui ressemble à ceci. Nous avons créé la vue,
mais nous devons également
faire quelque chose avec l'URL. Nous avons donc un article
ici, deux articles ici. Nous avons besoin d'une virgule ici
et d'ajouter un troisième élément, qui est la page d'accueil Donc une chaîne vide. Et nous voulons obtenir les
vues que nous voulons obtenir, à vue de la liste des publications, de la liste des publications. La liste de publications est une classe, nous voulons
donc l'obtenir sous forme de vue. Appelez donc la méthode en tant que
vue depuis la liste des
publications et donnez-lui un nom tel que qui ? Maintenant, je pense que nous sommes
prêts à essayer le navigateur et à
visiter la page d'accueil. Mais d'abord,
assurez-vous de tout enregistrer. Celui-ci, l'URL de ce
PyFle, l'index de ce fichier HTML
et les vues de ce PyFile Enregistrez-les et voyez si l'application
est en cours d'exécution, elle est en cours d'exécution. Alors visitez la page d'accueil
et cela fonctionne. Les chiens l'ont fait, les chats l'ont fait. Oui, ce sont les
deux articles de blog. n'est pas très attrayant, mais vous pouvez changer
cela avec du HTML. Par exemple,
vous pouvez placer le titre dans les deux balises H ici. Et l'auteur,
peut-être en P tags. Donc ici. Disons des rechargements et ça a l'air un peu mieux Maintenant, dans l'ordre,
les anciens articles sont en haut et les plus récents en fin. Donc, si vous voulez changer
cela, c'est très facile à faire. Passez simplement aux vues de ce PY et vous souhaitez
modifier l'ensemble de requêtes, l'ordre en ajoutant simplement un moins (c'est
la syntaxe de jango), puis actualisez, et
Kats sera en haut maintenant, le dernier bloc Cela semble donc bien, mais je pense qu'il y a deux
choses qui manquent ici. La première est que chacun d'entre
eux doit avoir un lien lequel l'utilisateur peut
cliquer pour accéder à ce bloc de publication en particulier. Et deuxièmement, ce qui manque
ici, c'est un peu de style. Donc ça a l'air plutôt horrible. Nous devons appliquer un peu de style, et nous allons utiliser
bootstrap pour cela C'est une bibliothèque CSS, et elle ne fait que créer des choses. Les pages Web ont donc une bien meilleure apparence. Ensuite, nous allons
ajouter une URL ici, qui a trait aux balises URL Vous allez
donc
apprendre à utiliser les balises URL, puis nous ajouterons un style
bootstrap. À bientôt.
216. 220. Ajouter Bootstrap à Django: Bonjour, bon retour. Dans cette vidéo, vous allez apprendre comment
passer de ceci à cela. Nous allons donc
ajouter un style CSS en utilisant
la bibliothèque bootstrap, qui est une bibliothèque CSS Bootstrap permet de
styliser facilement vos documents HTML,
et de nos jours, il est indispensable
d'avoir un site Web d'apparence moderne Allons donc là où nous l'avons
laissé avec notre code. Il s'agit de l'index du
document HTML qui affiche cette page Web, et c'est un
document sur lequel nous allons travailler dans cette conférence ce faire, nous
allons consulter la documentation du
bootstrap. Essayez donc Google bootstrap, et le premier résultat devrait être officielle
de bootstrap Donc, quelques mots sur Bootstrap. Vous savez, le CSS est
généralement placé quelque part dans un dossier
que vous appellerez static. Vous créez donc un dossier dans le répertoire du projet,
dans le répertoire racine, et vous le nommez static. Et à l'intérieur de la statique, vous créez
généralement un fichier
tel que le point principal CSS. Et dans ce fichier, vous
écrivez du code CSS. Ce code CSS, en gros,
ressemble à ceci. Disons P, puis vous avez des crochets comme ça, puis vous dites couleur
bleu, par exemple, puis taille de police 17 pixels Ce serait du CSS. Bien sûr, il serait placé
dans un fichier CSS comme je l'ai dit. Bien qu'il existe également un
moyen de simplement mettre ce code, intégrez-le dans
le document HTML. Quoi qu'il en soit, il fait
la même chose. Ce code, par exemple,
nous permet d'obtenir toutes les balises P et de les
colorier en bleu sur bleu. Le texte sera donc bleu et la taille de police du
texte sera de 17 pixels, et ainsi de suite, vous avez d'autres
propriétés de ce type. Maintenant, lorsque nous utilisons bootstrap, nous utilisons du code déjà
écrit Je parle donc à nouveau de code
CSS. La bibliothèque contient donc du code CSS, puis vous utilisez simplement ce code en faisant simplement référence à
ce qu'on appelle une classe. Par exemple, si vous vouliez utiliser et nous
utiliserons bootstrap, au lieu de cela, vous
diriez class égal à P pretty Par exemple, supposons
que ce paragraphe, ce code aient
également un nom quelque part. Alors disons P pretty. Voici donc ce qu'il y aurait dans les fichiers bootstrap
que nous installons Ensuite, dans notre code, il suffit de faire référence
à cette classe de bootstrap pour appliquer ces
attributs à ce paragraphe, qui dans ce cas,
serait le nom de l'auteur Vous le verrez donc en action. Permettez-moi de supprimer cela
et cela également. C'est vrai. Et revenons au site Web
de Bootstrap. Il existe donc deux manières
d' inclure le bootstrap
dans votre projet, soit en l'installant,
soit en utilisant cette méthode plus rapide
avec JS Deliver Et ici vous avez le guide sur la
façon d'inclure le bootstrap. Nous devons donc inclure
le fichier CSS
qui, comme je vous l'ai dit, contient tout ce code CSS. Nous devons donc
copier-coller ce code ici. Je peux juste appuyer sur Copier
ici pour obtenir ce code. Et placez-le à
l'intérieur des étiquettes avant toutes
les autres feuilles de style. Donc, nous n'en
avons pas ici, mais nous pouvons en créer. Head, comme ça.
Donc, entre les deux, on colle ce lien, avec un tag link tags, on
ouvre là, on ferme ici. Ensuite, nous devons également placer
le fichier JavaScript. Donc point JS, vous pouvez voir. Et pour ce faire, vous devez le copier à nouveau. Donc, sous Bundle, il
y a plusieurs options, mais le bundle est la
meilleure. Alors, copiez. Et tu dois le placer. Placez donc l'un des
scripts suivants à la fin de vos pages, juste avant
la balise de corps de fermeture, juste avant la balise de corps de
fermeture. Donc juste ici. Et c'est tout. Maintenant, enregistrez cet index
dans ce fichier HML, assurez-vous que l'application est
en cours d'exécution et visitez-la, et vous verrez déjà une différence sur
les téléphones Les liens sont donc d'un bleu un
peu plus clair et la police est plus grande. Voilà comment inclure le
bootstrap dans votre application. Maintenant, suivons à nouveau
le didacticiel. Nous avons donc ici un modèle de
démarrage. Tout commence donc par cette balise HTML de type
doc ici, déclaration
HML Lang
et les balises head Je vais donc copier ceci et
le remplacer par celui-ci. Donc, la première balise HTML, puis nous avons les balises méta, cela et cela Nous avons déjà inclus ce lien, nous n'avons
donc besoin que de
ces deux balises méta. Sous l'étiquette principale, sous l'étiquette principale ici. Donc meta meta, le lien vers
les fichiers CSS du bootstrap. Et le titre est facultatif. Ce n'est donc pas lié
à bootstrap, mais nous pouvons également mettre un titre
, appelons ce bloc de posts. Les balises de titre se trouvent également
à l'intérieur des balises d'en-tête. Les étiquettes de tête se ferment
ici et ici, puis nous avons les étiquettes de corps. Bonjour tout le monde, c'est facultatif. Voici le script
que nous avons déjà inclus, celui-ci ici, donc
tout va bien. C'est vrai. Donc, ici en bas, il explique à quoi servent toutes ces balises
si vous voulez lire cela. Ce que je veux faire maintenant,
c'est utiliser bootstrap. Voici donc les exigences, les liens que nous avons placés
dans les balises méta, mais maintenant nous voulons utiliser les fonctionnalités
réelles de bootstrap. Donc, la bibliothèque elle-même. Ce que je vais faire, c'est
généralement avec bootstrap,
ce que vous faites, c'est que vous
avez une balise DIV principale commence là et se termine
là où s'arrête votre contenu. Donc, ici en bas, je
vais aligner le div. Donc, ouvrez div, fermez div avec une barre oblique div
et les crochets C'est donc tout notre
contenu, d'accord, qui se reflète dans fait que le chat est mort pour
la dernière fois ici. Et ce div devrait maintenant avoir une classe égale à des guillemets doubles. Et à l'intérieur de ces guillemets,
vous écrivez container. C'est l'une des principales
classes de bootstrap, et vous voyez que
j'enregistre la page,
les documents ici et que je rafraîchis la page et nous voyons déjà une
différence Ce que bootstrap fait
avec ce conteneur, c'est que ce conteneur est un code CSS enregistré quelque part
dans ce fichier CSS, et ce conteneur a
essentiellement une certaine marge, certain espacement entre
le texte et la zone ici La page est donc
déjà réactive. Donc, si vous le voyez, il bouge, il ajuste la largeur
du navigateur Ensuite, ce que je veux faire maintenant c'est que pour chacun des articles, donc les messages sont des chats dit, donc ceci est un article avec un lien au nom de l'auteur,
ceci en est un autre. Donc, pour chacun de ces articles, je souhaite créer
une autre division. Donc, de là jusqu'
à la fin des quatre, alors voilà, et peut-être que c'est une
bonne idée de le mettre en retrait, sélectionnez-les comme ça
au toucher pour les mettre en retrait. Donc, en gros, ces deux éléments font
partie de cet élément div. C'est donc un élément maintenant. Donc, ce que je vais
faire, c'est
attribuer une classe de carte. Alors, où est-ce que je trouve ça ? Eh bien, dans bootstrap, par exemple, vous pouvez voir si vous passez à la mise en page, comment vous organisez
vos documents HML, vous voyez que vous avez des conteneurs, et vous voyez que vous avez
ici
la classe de conteneur que nous avons déjà utilisée Ensuite, si vous passez aux composants
et aux cartes, vous verrez que vous pouvez organiser votre contenu dans
ce type de cartes. Tous ces éléments
sont donc une carte. Vous voyez une carte de cours, et c'est ce que je fais
également ici. Je mets donc un message
à l'intérieur de la carte. Donc, si je l'enregistre maintenant, actualise, vous verrez qu'il y a une sorte
de bordure autour de chaque message. Et nous pouvons
améliorer cela en attribuant également. Après un espace ici, nous en faisons trois, ce qui signifie imaginer autour de
chacune de ces deux cases. Imaginons donc que 33 soit maintenant une
unité de CSS ou plus, disons, un niveau d'espacement. Vous pouvez donc en savoir plus sur les marges qui devraient figurer
dans la catégorie des services publics. Il s'agit d'espacement, donc d'espacement, vous verrez, par
exemple, que M
représente la marge, puis vous avez les niveaux Donc un, deux, trois, quatre,
cinq, il s'agit donc de
gagner de la place. Revenons maintenant à l'exemple de
carte présenté ici. Nous avons donc cette image. Nous n'avons pas besoin d'images pour le moment. Donc, cette image ici,
nous n'en avons pas besoin. Ensuite, nous avons le corps de la carte. Il y a donc un autre div
dans cette classe de cartes div. Donc Div, on l'obtient
et on le place ici. Donc comme ça,
encore une fois, ces deux-là. Alors maintenant, c'est la classe
égale au corps de la carte. Et puis nous avons aussi un
autre titre de carte. Il s'agit donc d'un titre de la carte, qui dans notre cas serait chats et chiens, ce qui signifie que nous
pourrions ajouter un titre ici. Alors voyez ce que je vais
faire Div comme ça. Ce serait donc une classe
égale au titre de la carte. Et à l'intérieur, nous
mettrions ce titre. Je sais que je suis en train de le reproduire, mais je vais vous dire pourquoi Alors publiez ce titre et actualisez-le. Donc, oui, nous avons des
chats ici, des chiens ici. Mais il vaut mieux utiliser
peut-être H deux au lieu de DIV. Donc H deux, et n'oubliez pas de le changer
également en H deux. Elle s'ouvre ici, elle
se ferme ici. Je rafraîchis donc et voici
un titre, c'est un titre. Après le titre, nous
aurions peut-être le texte. Donc ce texte ici,
qui contient le texte de la carte. Une plongée. Et ce serait du contenu
post-point, n'est-ce pas ? Voilà donc notre texte. Nous voulons afficher du
texte sous le titre. Et comme je l'ai dit, cette classe
est égale au texte d'une carte. Enregistrez l'actualisation pour voir les modifications. Oui, donc le contenu
est également ici. Maintenant, je veux supprimer ce lien en le remplaçant
par un bouton. Vous voyez donc que
nous avons ici ce fond. Il s'agit donc d'une balise A
et de cette classe. Alors, que pouvons-nous faire ? Attribuons une classe à BTN puis à BTN primary. Maintenant, enregistrons
ceci et actualisons pour voir que les chats sont bons
aussi et le bouton. Maintenant qu'il s'agit d'un bouton, nous ne voulons plus
afficher le titre de l'article
ici. Nous voulons afficher
quelque chose comme en savoir plus. Sécurisé, rafraîchissez.
Oui, ça a l'air mieux. Peut-être voulons-nous ajouter
sous la division du contenu. Peut-être voulons-nous avoir
une autre division où nous disons que l'auteur est de publier
cet auteur, n'est-ce pas ? Celui-là. Et nous
supprimons le texte P maintenant car nous ne voulons pas deux champs d'auteur.
Alors enlevez-le. Et ce serait également une
classe de carte égale au texte de la carte. Sûr. Consultez les modifications. Oui, les chats, les chats sont bons pour
écrire des textes et en lire plus. Maintenant, vous voyez que ces divs sont un peu trop
proches les uns des autres Donc, le contenu div, le dif de l'auteur, le
bouton div également. Si vous souhaitez changer cela, vous pouvez remplacer les
divs par des paragraphes Donc P au lieu de DF
P, P, P ici aussi. Rafraîchissez en toute sécurité, et ça
a l'air un peu mieux maintenant. Les boutons me semblent
un peu gros. C'est parce que ce
texte est un élément H deux. Donc, si vous voulez que le
texte soit plus petit, vous devez supprimer
les deux balises H, la balise d'ouverture et
la balise de fermeture. Rafraîchissez en toute sécurité, et
ça a l'air mieux. La page est également réactive , vous pouvez donc réduire la taille du navigateur. C'est à propos de cette vidéo. Dans la prochaine, je
vais
vous présenter les tags des modèles Jangle Dans
la prochaine vidéo, vous découvrirez de quoi il s'agit. On se voit là-bas.
217. 222. Héritage de modèles: Bonjour. Jusqu'à présent, avec notre site Web, nous avons créé cette page d'accueil. Vous pouvez le voir sur
la page d'accueil, et nous avons également la page
À propos. Donc slash AboutSlash
Il s'agit de la page À propos, qui n'a pas de style
bootstrap, bien sûr, car nous appliquons le style
uniquement à l' index Et nous avons également les modèles HTML à
points de blog, qui sont l'une de ces
pages pour chats ou chiens. Donc trois modèles,
un, deux, trois. Maintenant, nous devons trouver un moyen de
naviguer sur le site Web, c'
est-à-dire, par exemple, comment allez-vous, comment
le visiteur peut-il passer de cette
page à la page à propos ? Eh bien, cela est généralement
implémenté via une barre de menu de navigation, qui peut se
trouver quelque part en haut ici. Et vous pouvez cliquer sur
le lien et accéder à cette page. C'est ce que nous allons faire
dans ces vidéos maintenant. Comment pouvons-nous le mettre en œuvre ? Parce que la
barre de menu de navigation doit être présente sur chaque page. Une façon de le faire est donc de
créer ce menu de navigation, qui est créé en HTML. L'une des méthodes consiste à coder le code HTML de ce menu de navigation dans
chacune de ces pages HTML. Mais cela va évidemment à l' encontre du principe « sec », qui signifie
« ne vous répétez pas ». Par conséquent, ce que nous
allons faire, c'est utiliser l'
héritage de modèles. Qu'est-ce que l'héritage de modèles ? Eh bien, ça marche comme ça. Composant qui
sera répétitif. Dans notre cas, la barre de
menu
de navigation restera donc dans
un seul fichier. Et puis les autres fichiers, qui concernent le blog et l'index, recevront autre fichier où se trouve
le menu de navigation. C'est ce que l'on appelle
l'héritage de modèles. Voyons donc comment cela fonctionne en
action. Donc, cliquez avec le bouton droit sur les
modèles, allez dans Nouveau fichier et écrivez quelque chose
comme du code HTML à points de base. Le code HTML de base va contenir la barre
de menu de navigation. Maintenant, pour créer un menu
de navigation, en HTML, vous utilisez la balise Nav. Alors ouvrez-le et fermez-le, puis à l'intérieur, vous avez
un autre div qui l'ouvre et le ferme. Et à l'intérieur de ce div, nous avons l'URL, qui crée
une liste d'éléments de menu. Le premier élément du menu
serait donc avec L I Right. Et puis nous en avons un autre. Donc, à la maison, nous avons à propos de
nous. Oui, c'est tout. Donc, le premier élément de menu, le deuxième élément de menu.
Ce serait donc pour qui. Par conséquent, à
l'intérieur de la première balise LI, qui envoie une liste, nous plaçons une balise, qui créera un lien. Pareil pour le
suivant, un tag, non ? À l'intérieur du premier, une étiquette. Donc ici, nous disons
HRF, cette propriété, qui
aura comme valeur
entre guillemets l'URL de
la première page, qui serait cette balise URL. Code unique. Eh bien, nous devons maintenant examiner l'URL du blog et obtenir le nom de l'URL de la page d'accueil, qui est la
page d'accueil. Cela entre donc ici, chez nous. Nous faisons de même pour
so about view. Encore une fois,
copions-le et collons-le
dans la première balise H. Fais attention. Il y a un espace ici,
Hf, à propos de la vue soulignée Maintenant, nous devons faire autre
chose. Nous devons passer à
l'index HTML à points et couper de la balise
body qui s'ouvre ici jusqu'à la
toute première ligne, les
découper et
les coller en haut ici. Faites de la place,
collez-les dedans. Une nouvelle fois pour indexer ce
code HTML et le couper à nouveau, commençant par la balise HTML de
fermeture, y compris la balise de corps de fermeture, y compris la
balise script de bootstrap. Coupez-les, allez à la base de ce HTML, allez jusqu'au bout Faites de l'espace, collez-le. Désormais, le code HTML à points de base
sera le parent. Nous avons donc parlé de l'héritage des
modèles. Il s'agit maintenant du parent et de
l'index dont le HTML est l'enfant, qui va l'obtenir
à partir du code HTML à points de base En fait, chaque page,
non seulement l'index, mais aussi le HTML, bloque le HTML par points. Ainsi, tous les articles de blog
obtiendront tout cela à partir du HTML de base. Cela nous permet également d'appliquer bootstrap sur
chaque page Web Et maintenant, vous devez indiquer à
chacune de vos pages, exemple indexer ce code HTML,
qu' elle doit s'étendre.
Ainsi, par le biais d' une
balise de modèle comme celle-ci, vous dites, étendre le code HTML entre
guillemets simples Alors copiez-le et collez-le également
dans About HTML. Et là aussi, nous devons également supprimer ces balises body dessus, simplement le dire
et
passer au code HTML à points bloqués. Supprimez également la balise body, balises
HTML, les balises de type doc, collez-les, supprimez
la
balise HTML de fermeture et la balise de corps
de fermeture supprimez, enregistrez, enregistrez. Ensuite, passez au
HTML à points de base et à la fin, après le menu de navigation, nous voulons
refaire une balise de modèle et dire « bloc de contenu ». Et aussi la même chose. Donc, un modèle, une balise et un bloc de
contenu. Alors c'est quoi ça ? Eh bien, en gros, une page Web H. Pensez donc à ce que le visiteur
voit sur le site Web. Ils voient en haut une barre de menu de
navigation, laquelle est
celle-ci ici, non ? Ensuite, ils voient le
contenu qui peut être un article sur les chats, du contenu sur les chats ou, dans le cas d'un article à propos de ça, le
contenu de la page A. Donc, sous le menu
se trouve le contenu. Voici donc le contenu. Et maintenant, nous devons nous souvenir de
ce contenu variable et aller, par
exemple, indexer ce code HTML, puis en dessous, nous disons Bloquer le contenu. Et cela se termine encore une fois
avec le contenu en blocs. Ainsi
, comme vous le voyez, cela
étend le HTML à points de base, de
sorte qu'il extrait les données
du HTML de base,
puis ce qui comme vous le voyez, cela
étend le HTML à points de base, se trouve
entre les blocs,
les balises de contenu de là
à là, sont
combinées d'une manière ou d'une autre à cette page HTML de base pour être affichées dans le
navigateur sous forme de page complète Et cela concerne l'héritage des
modèles. C'est un peu difficile à comprendre. Voyons donc si nous avons
fait des erreurs maintenant. Nous allons voir le
résultat Oui, bien sûr. Donc, il est dit d'étendre, avez-vous oublié d'enregistrer
ou de charger ce tag ? Eh bien, étendez cela parce que le
jangos n'est pas reconnu là-dedans parce que
cela s' Ainsi, le point de blog HTML
s'étend, le point de base HTML. Faisons de même pour
les autres pages ,
sauvegardons également celle-ci et sauvegardons. Oui. Il s'agit d'un modèle HTML à
points de base Cherchons l'erreur suivante. OK, pas mal. Nous voyons donc quelque chose ici, mais nous ne voyons aucun texte. Alors revenons en arrière et réglons ce problème. Je base le HTML par points. Voici donc le lien. Mais nous n'avons aucun texto. Disons donc « à la maison » pour cela
et à propos de nous pour cela. Donc, si vous actualisez. Et oui, nous voyons quelque chose maintenant, continuez à propos de nous. Cela nous amène à la page À propos. Rentre chez toi. Cela
nous concerne. Génial. Nous ne voyons pas
le contenu ici, alors corrigeons cela
pour la page At HML Parce que nous ne le voyons pas
parce que nous n'avons pas ces balises de contenu de bloc. Bloquez donc le contenu ici et ici, mais celui-ci doit
être bloqué, sûr, très frais, et c'
est le contenu d'un bateau. Maintenant, bien sûr, si vous
voulez que ce soit plus joli, vous devez le
mettre dans la balise div et dire class container,
safe, refresh, et maintenant il
se trouve quelque part au milieu Et vous pouvez également
le rendre encore meilleur. Il s'agit donc d'un
diff principal qui contient tout. Ce serait
quelque chose comme H deux Ensuite, nous pourrions ajouter
d'autres différences avec le contenu. Voici le contenu comme celui-ci. Le menu de navigation n'
est donc plus très joli
car nous n'avons appliqué aucun
style de classe bootstrap à cet élément Vous avez donc NAF sans classe, D sans classe, UL, LI et A, également,
sans classes, sans style
bootstrap. C'est ce que nous allons faire dans la vidéo
suivante. On se voit là-bas.
218. 223. Appliquer le style Bootstrap au menu de navigation: Nous reviendrons. Ajoutons maintenant
du style au menu
de navigation. Nous revenons donc au HTML par points de base. Et le premier article est
NOV. Tout d'abord, nous voulons les sélectionner tous
et les mettre en retrait un ou deux Il doit donc être indenté
sous l'étiquette body. Hein ?
Commencez donc par NAV et class equal to I know some
classes from Bootstrap, et vous pouvez également trouver des
exemples en ligne Donc, la barre de novembre indique
qu'il s'agit d'une barre de novembre. Utilisez donc la barre lumineuse Nov de
style Navbar pour la couleur et la lumière BG d'
arrière-plan également, ayez un peu d'ombre et
ensuite vous devez également
donner la classe est une propriété de NOV et aussi après le manteau, ici vous devez donner
un autre identifiant égal au NOV principal comme ça. Ceci est donc utilisé par
JavaScript de bootstrap. Ensuite, le div suivant
aura une classe de collapse Nova collapse. Ce sont donc des
classes différentes et une idée de Nov Boar responsive Ensuite, nous avons la classe UL. Nvbnuvt. ML représente la marge gauche
et sa valeur sera de deux. Enfin, la
classe LI est un élément NOV. C'est donc un élément
du menu, et c'est tout. Enregistrez cela et voyez
ce qui va changer. OK. Pas mal. Maintenant, les balises A, donc les liens ne sont pas très
beaux, mais la barre elle-même est
belle avec une ombre. Passons donc au
style des balises A. Donc, une classe égale à la marque
Navbar, sûre. Rechargez. La maison a l'air belle, mais ce n'est pas le cas pour nous. Faisons de même pour l'autre, comme ça. Oui, ça a l'air bien. Il faut le mettre un peu à droite. Et une classe P trois ajoutée à
la première balise A devrait fonctionner. Alors sauvegardez, actualisez, et tout
va plus vers la droite. Donc P trois signifie qu'il faut lui donner un rembourrage autour de cette classe A, et vous devriez faire de
même pour les autres. Donc P trois, enregistrer, rafraîchir. Il s'agit du menu de navigation. Maintenant, ici en bas, nous voulons
plus d'espace entre le menu de navigation et ce
contenu. Réglons ça. Je pense que cela
fonctionnerait en ajoutant l'élément de navigation à la classe de l'élément de
navigation. Nous pourrions ajouter un Mo de trois. B représente donc le bas de la marge. Actualiser. Et oui, maintenant c'est mieux. Il y a donc
maintenant de l'espace sous le menu, la barre de menu de navigation. Et c'est à peu près tout. J'espère que cela a du sens, et je t'enverrai un texto
plus tard. Merci.
219. 224. Démo de l'application de traduction Django: Bonjour, bienvenue dans une
autre série de vidéos. Dans cette série, nous
allons créer une application Web de traduction avec Jango Cette application Web, l'application
Jango, fera donc partie de
notre projet de site Web Jango Le site Web dispose déjà d'une application de blocage à laquelle nous pouvons
accéder via la page d'accueil. Il ne s'agit donc que d'un
croquis du site Web. Et nous avions également
cette page à propos de nous, qui fait également partie
de cette application de blocage. Non, Translator sera une deuxième application que nous allons
ajouter à ce site Web de Jango Et il y a trois raisons pour lesquelles j' inclus cette
application de traduction dans notre JangOpject La première raison est de revenir sur
ce que vous avez appris jusqu'à présent. Vous apprenez donc à
créer cette application de blocage. Mais maintenant, je voudrais revenir sur
le processus de création
d'une application , car nous en avons déjà créé
une, mais lorsque vous créez une autre application, vous voyez les choses sous un angle
différent et vous apprenez mieux, j'en suis sûr. C'est donc l'une des raisons de revoir
le processus de création de l'application. La deuxième raison
est donc d'en apprendre davantage sur formulaires
jango, car
dans cette application jango, nous allons avoir
deux zones de texte Dans l'une d'elles, l'utilisateur
va saisir
le terme, les phrases qu'il
souhaite traduire. Et dans le second, ils
vont voir le texte
traduit. Nous allons donc utiliser l'
anglais comme première langue, puis une autre langue
comme langue traduite. Nous parlerons de
ce détail plus tard. L'idée ici est donc que vous
allez en apprendre davantage sur les formulaires. Dans Jango parce que ce truc
ici est en fait un formulaire. donc d'un formulaire qui permet aux
utilisateurs de saisir des
données, du texte, s'agit donc d'un formulaire qui permet aux
utilisateurs de saisir des
données, du texte,
puis d'exécuter une demande, qui est une demande de publication. Ils publient donc des
données sur le serveur. Dans ce cas, ce sera le texte qu'ils
écriront ici. Le serveur Jango
va donc récupérer ce texte et utiliser une bibliothèque Python pour traduire
dans une autre langue Ensuite, Jango va renvoyer
les données à l'utilisateur. Ce sera donc la zone de
saisie du formulaire, et ce sera la zone de
sortie du formulaire. Encore une fois, la révision du processus de création d'
applications était une des raisons et l'apprentissage des
formulaires en est une autre Et la troisième raison pour laquelle
je veux avoir ces vidéos est de vous
montrer comment
traiter le contenu que l'utilisateur
envoie à notre application jangle Dans ce cas, ce
sera le texte, et vous allez voir comment organiser la bibliothèque
qui traite ce texte dans des fichiers, comment obtenir ce texte et comment envoyer
à l'utilisateur,
car avec notre application de blocage, nous ne traitons pas vraiment de
contenu utilisateur, mais cette fois nous le ferons. Alors préparez-vous, je vous
parlerai dans les prochaines
vidéos. C'est ici.
220. 225. L'étape de développement d'applications Django: Hé ! Dans cette vidéo, je vais mentionner
les étapes à
suivre pour créer cette application de traduction
en particulier. Et ces étapes s'appliquent également à toutes les autres applications que
vous souhaitez créer. Donc, tout d'abord, ce que vous voulez
faire lorsque vous avez une idée ou certaines exigences
pour créer une application, vous voulez savoir s'il est possible de créer cette application Web
en particulier. Par exemple, nous voulons créer
cette application qui traduit, disons, de l'
anglais vers l'allemand. Donc, tout d'abord, vous voulez répondre
à la question de savoir s'il
est possible de
traduire un texte, donc une chaîne de caractères, qui
est en anglais. Peux-tu le
traduire en texte allemand ? Je répète donc la chaîne, mais la version allemande
de cette chaîne originale. Alors, pouvez-vous traduire
du texte avec Python ? Et pour cela, vous devriez
faire quelques recherches sur
le Web et peut-être sur OscOfms jusqu'à ce que vous
trouviez un package Python, peut-être, qui vous
faciliterait Vous pouvez également créer
votre propre package, ce qui devrait demander
beaucoup de travail pour cette tâche particulière, car traduction des langues n'
est pas facile J'ai donc fait quelques
recherches sur Google
et j'ai découvert que Google Trans, et j'ai découvert que une bonne bibliothèque de packages à utiliser
pour cela qui repose essentiellement
sur l'API Google
Translate, est . Ainsi, avec Google Trans, vous pouvez fournir une chaîne et Google Trans
obtiendra la traduction de Google Translate, et il renverra une chaîne
dans la langue cible. Le problème est donc résolu. Il est possible de traduire
via Python. Nous avons donc le feu vert pour
continuer à créer notre application. Ensuite, la prochaine chose
que vous voulez faire est de créer une application jango vide , ce que nous allons
faire dans la vidéo suivante Ensuite, vous devez
suivre l'approche du haut vers le bas, qui consiste à penser du point de vue de
l'utilisateur. Ainsi, au lieu de
parcourir vos modules, créer un modèle ou
peut-être de créer une vue, vous voulez créer ce que
l'utilisateur veut voir
, à savoir le modèle HTML. La première étape serait donc de
créer un modèle HTML, puis ce modèle, ce code HTML, doit être rendu
vers une URL particulière. Ensuite, vous devez configurer l'URL de votre application,
puis connecter les URL et cette URL souhaite déclencher
une vue particulière Ensuite, vous souhaitez
créer une vue. La vue récupérera
essentiellement le code HMLU créé à cette étape et le
servira à cette URL Vous souhaitez ensuite créer
un modèle contenant
les données qui seront injectées dans
le modèle HDML Et à ce stade, nous devrions déjà avoir
construit la structure de notre application Web avec du HTML et une zone de texte
prête à recevoir du texte. Ensuite, nous pouvons obtenir ce
texte afin de pouvoir l'obtenir le traduire et renvoyer dans l'une
des zones de texte. Telles sont donc les mesures
que nous allons prendre. Dans la vidéo suivante,
nous allons donc créer l'application Web Jango dans notre JangOpject
existant Je vous parlerai
dans la prochaine vidéo.
221. 224. Créer une structure d'application vide pour l'application Translator: Hé ! Dans cette vidéo, nous
allons créer une nouvelle application dans notre projet de janga
existant Voyons d'abord à
quoi ressemble le site Web. Donc, dans mon terminal, assurez-vous que votre
environnement virtuel est activé. La mienne ne l'est pas parce que je n'ai cette parenthèse devant moi. Mais si je crée un nouveau terminal, en utilisant l'icône plus ou en accédant à EminalNW, mon
environnement virtuel est maintenant activé Je peux
donc continuer
et dire Python, gère ce serveur PY Run Accédez à ce site Web, et voici à quoi ressemble le
site Web maintenant, et nous allons avoir
un autre élément de menu ici, qui contiendra
l'application de traduction. Alors mettons-nous au travail.
Créons l'application, arrêtons l'exécution
du serveur avec Control C et exécutons Python, gérons le point PY, démarrons l'application, puis donnons un nom à l'application. Tel que translator, execute et un nouveau
répertoire de traducteurs est créé. Vous pouvez le voir
ici. Il se trouve donc dans le même répertoire que le bloc. Le bloc se trouve dans le répertoire racine. Le traducteur se trouve également dans le répertoire racine,
comme vous pouvez le voir ici. Maintenant, une fois que vous avez créé
une application avec l'application Start, vous souhaitez enregistrer
cette application dans les paramètres de mon site. Accédez au point Paramètres PY JangOpject et vous souhaitez accéder aux applications installées Donc, avant d'ajouter le bloc ici lorsque nous avons créé
l'application de blog,
maintenant, après la virgule, nous voulons ajouter un autre élément
à cette liste d'applications installées C'est donc une chaîne, et
le nom de cette est ou Translator, oui. Cela doit donc refléter le nom de votre application et le nom
du répertoire ici. Enregistrez les paramètres qui PY. Et voici comment créer
une nouvelle application vide dans Jungo. Dans la vidéo suivante, nous
allons commencer à créer notre modèle HTML.
Alors, on se voit là-bas.
222. 222: Auparavant, nous avions créé
une nouvelle application vide dans notre projet Jangle Maintenant, l'étape suivante consiste à. Cette étape est donc terminée. Créez une application Jangle vide. La prochaine étape consiste à créer du code HTML. Donc, comme nous l'avons
dit, ce que nous voulons, c'est
avoir un nouvel élément de menu ici, que nous
créerons plus tard, mais nous voulons d'abord
créer la page. Ensuite, nous ajoutons cette page
à la barre de menu. La page
va donc être simple. Il y aura
une zone de texte ici, une autre
sur la droite, et un bouton quelque part L'utilisateur est donc censé
saisir du texte en anglais, puis lorsqu'il
appuie sur le bouton, ce texte sera traduit,
disons, en allemand. Nous allons donc prendre l'
allemand comme exemple. Bien entendu, vous pouvez améliorer
l'application ultérieurement en ajoutant une option permettant de choisir également
d'autres langues. Mais pour le moment, nous
allons rester simples et nous concentrer sur les formulaires. Ce sera un formulaire
que nous allons créer. Commençons par créer un fichier
HTML sous les modèles. Cliquez donc avec le bouton droit sur Modèles et accédez au
fichier. Donc nouveau dossier. Peut-être que translator point HTML
serait un bon nom de fichier. Nous voulons maintenant créer ces
deux zones de texte et le bouton. Mais au lieu de taper le code HTML ici pendant que vous regardez la vidéo, je vais simplement
copier le code que j'ai déjà
créé, le coller
ici et vous l'expliquer. Maintenant, pour que ça soit beau, je vais également coller le
lien vers le bootstrap. Source pour que les zones de
texte soient belles. Et vous pouvez trouver ce code
joint à cette conférence. Je vais donc l'enregistrer, puis je vais
cliquer ici avec le bouton droit de la souris et accéder à Reveal dans le Finder ou
dans l'Explorateur Windows, puis je peux double-cliquer dessus. Et voilà à quoi ça ressemble. Nous avons donc ces deux zones de
texte qui peuvent être étendues par l'utilisateur, l'utilisateur peut taper du texte ici, peut également taper du texte ici. Mais celui-ci
servira essentiellement à montrer le résultat. Quoi qu'il en soit, l'utilisateur peut
également
y taper du texte et modifier le résultat
s'il le souhaite, etc. Et le bouton d'envoi est ce qui traduit ce
texte en celui-ci. Alors maintenant, bien sûr,
cela ne fonctionne pas. Ne vous attendez pas à ce que ce bouton fasse quoi que ce soit car il
n'est pas connecté à Jango Laissez-moi vous expliquer à
quoi sert le code. Ce lien se trouve donc temporairement dans ce fichier car normalement nous
n'en avons pas besoin. Je vais donc le supprimer. Nous n'en avons pas besoin car
ce lien est déjà en HTML à points de
base. Donc
celui-ci est là. Et ce style bootstrap
sera appliqué à tous les modèles qui
étendent le code HTML par points de base Actuellement, cependant, le
traducteur HML n'étend pas ce modèle Ajoutons donc la
balise qui s'étend, de
sorte qu' elle s'étende
entre guillemets (point de base HTML). Ensuite, nous
voulons également
refaire le texte et dire « bloquer le contenu ». Voilà, fermez-le
ici et bloquez le contenu. Juste comme ça. Ce fichier va donc obtenir le
code de base point ML, et ce code
sera combiné avec ce code pour afficher
la page complète, y compris la barre de navigation. Donc, les éléments de menu
sur la page Web. C'est donc ce que nous avons ici. Nous avons cette classe container, qui est le div principal
qui contient tout, donc elle commence ici
et se ferme ici. Et à l'intérieur, ce div
contient un formulaire. Le formulaire commence donc
ici et se termine ici. Le formulaire est
donc le suivant, y compris les zones de
texte et le bouton. Donc, celui-ci est une rangée. Tout commence ici.
Ça s'arrête là. Donc, en gros, cette ligne est une division qui contient toutes ces deux cases
et à nouveau le bouton. Et à l'intérieur de cette division
avec ligne de classe, nous avons également cette division, qui est la première zone de texte. Cet appel SM six
définit donc qu'il s'agit en fait d'une colonne de
cette ligne de cette ligne. C'est donc la première
colonne qui correspond à cette zone de texte,
cette colonne ici Et puis la colonne suivante,
qui est celle-ci ici, contient l'autre zone de
texte et le bouton. Donc, la zone de texte signifie
cette zone de texte ici, et la saisie avec la classe BTN
signifie ce bouton ici Donc, zone de texte,
première zone de
texte, zone de texte, deuxième zone de texte, et entrez le bouton. C'est ça. Encore une fois, le formulaire possède maintenant une propriété d'
action, qui possède cette balise de modèle
que j'ai écrite ici. Donc, ce qui se passe ici, c'est
que lorsque vous appuyez sur le bouton, donc sur ce
bouton de soumission, il se passe
quelque chose. Et ce qui se passe, c'est que
cette URL sera visitée. ne s'agit pas d'une URL.
Il s'agit du nom d' un modèle d'URL que nous
créerons ultérieurement. Vous allez voir comment cela fonctionne. Et la méthode est une méthode post, ce qui signifie que
l'utilisateur envoie des données et qu'il s'attend à récupérer certaines données
du serveur. Le reste, nous l'avons déjà expliqué. Donc, les divisions et la zone de texte avec cette
classe bootstrap class. Lignes signifie qu'il comporte trois
lignes de texte par défaut, soit une, deux et
trois lignes de texte. Donc, la hauteur de cette zone de texte. Ce nom
sera utilisé ultérieurement pour faire référence
à cette zone de texte depuis
jango afin d'obtenir le texte de
cette zone de texte et de le traiter
dans la jungle. Nous avons donc l'autre zone de texte et le bouton de saisie avec cette
classe de bootstrap, le type est submit, qui signifie
que lorsque ce bouton est enfoncé, ce
formulaire sera envoyé Nous allons donc envoyer les données, le texte original de
l'utilisateur dans ce cas, et la valeur est le
nom du bouton. Alors soumettez, soumettez. Et c'est tout. C'est bon. Nous avons donc du HTML, mais nous devons définir une URL par laquelle l'utilisateur
accèdera à cette page Web
HTML particulière. Configurons donc également les URL
dans la vidéo suivante.
223. Obtenir et traiter les données des utilisateurs par le biais d'un formulaire: Bonjour, bon retour. Auparavant,
nous avions créé cette page Web, qui semble bonne, mais elle
ne fait pas grand-chose pour le moment. Donc, quel que soit le texte que
vous y entrez, vous appuyez sur Soumettre et
rien ne se passe. Le texte disparaît donc. Mettons donc cela en œuvre. Mais d'abord, vous
devez comprendre les deux requêtes HTTP qui
ont lieu ici. La première requête HTP est lorsque
l'utilisateur saisit l'URL, disons example.com
slash translate Slash ou cette adresse IP de l'hôte local
telle qu'elle est dans ce cas,
et il s'agit d'une requête get Et cette demande est
traitée par ce modèle d'URL, et bien sûr, également par celui-ci. Ces deux éléments sont donc
fusionnés en une seule URL, qui est example.com
slash translate slash Mais une autre
demande est également faite, et c'est lorsque l'utilisateur
appuie sur le bouton Soumettre. Une autre URL est en cours d'accès, et c'est
celle que vous voyez dans Translator Point HTML sur cette
ligne ici. Vous voyez donc que lorsque vous appuyez sur
le bouton, cette URL est visitée. Donc, la vue du traducteur, qui, encore une fois, est la même URL que celle de la révision de
traduction, qui correspond à la
barre oblique translatAS de exemple.com Ainsi, actuellement, le fait de visiter
l'URL par le biais d'une requête GT comme celle-ci, lorsque vous actualisez simplement votre
navigateur ou que vous entrez l'URL
et que vous appuyez sur le bouton
submin, et que vous appuyez sur le bouton
submin l'utilisateur accède
à la même URL Nous devons changer
cela. Nous devons séparer les deux
requêtes et effectuer des actions
différentes selon que l'utilisateur effectue une requête get ou une requête post. Lorsque l'utilisateur fait
une demande de publication, nous voulons obtenir le
texte d'ici et afficher la
version en majuscules dans cette autre zone. Alors faisons-le.
Ce que nous devons faire c'est
distinguer les points de vue. Nous devons distinguer si méthode
request point
est une requête post. Si tel est le cas, nous voulons obtenir le texte
original ou le texte saisi par l'
utilisateur ici. Et pour l'obtenir, nous utilisons
le
point post de la requête et ici, qu'est-ce qui se trouve ici ? Eh bien, nous devons entrer ici
le nom de cette zone de texte, qui est dans mon
cas, ma zone de texte. Donc ici, ma zone de texte
entre à l'intérieur sous forme de chaîne. Donc, si tel est le cas, faites ceci sinon renvoyez
la page telle qu'elle est. Autrement dit, si la
requête est une requête get. Donc, s'il s'agit d'une demande de publication
via le bouton, nous récupérons le texte
original dans la zone de texte, et nous allons l'imprimer
juste pour voir à quoi il ressemble au texte original. Sinon, dans le cas
d'une demande get, nous renvoyons simplement la
page telle qu'elle est. Donc, le traducteur point HTML. Enregistrer. Et
voyons d'abord recharger Et nous avons cette erreur. Il n'a pas de méthode attributaire, car ce devrait être une méthode. Désolée. Enregistrez et revenez. Translate est notre traduction UL. Et écrivons
quelque chose, soumettons-le. Et voyons ce que
nous avons maintenant dans le terminal. Donc je vois que AAAA est
imprimé, non ? Cette ligne a été exécutée. Mais après cela, nous avons eu une erreur. Il indique que le traducteur voit le point de
vue du traducteur. Donc, cette vue, cette fonction d'affichage n'a pas renvoyé d'
objet HTTP, ce qui est vrai. Nous avons donc reçu une demande de publication lorsque nous avons appuyé sur
le bouton d'envoi, mais rien n'a été
renvoyé ici. Nous devrions donc retourner quelque chose. Et il s'agit également d'un appel de fonction de
rendu, qui reçoit une requête en tant qu'
argument pour traduire le code HTML. Et maintenant, nous devons également
transmettre autre chose ici
, à savoir le résultat. Jusqu'à présent, nous avons vu que cela fonctionne. Nous recevons les textes
de l'utilisateur avec succès, mais nous voulons faire
quelque chose avec ce texte. Par exemple, disons en sortie,
vous revenez au texte d'origine. Pour l'instant, comme nous l'avons dit, disons que nous le transformons
en majuscules Ensuite, ce que nous transmettons ici dans la fonction de rendu
est un dictionnaire, qui ressemble à ceci. Disons sortie, texte. Il s'agit donc d'une clé, d'une chaîne, et elle a comme valeur de sortie. Donc cette variable,
le texte en majuscules. Maintenant, nous l'enregistrons, puis nous
passons au Translator Dot HTML. Et dans cette deuxième zone de texte, entre la première attaque de zone de
texte
et l'attaque de zone de
texte de fermeture, nous avons placé
ici une variable de modèle, qui est le texte de sortie. Donc ce truc là-dedans. Donc, la valeur de
ceci sera effectivement injectée dans cette zone de texte. Voyons si cela
va fonctionner. Faites donc une demande Get. Nous obtenons la page Web
avec succès, écrivons quelque chose, soumettons et nous obtenons la version majuscule de
ce texte. Donc ça marche. Cette version majuscule
du texte provient donc de
ce texte de sortie Voilà comment utiliser les formulaires
HTML avec Jango. Maintenant, avant de terminer cette vidéo, je voudrais vous montrer un problème avec notre application. Comme vous pouvez le voir, vous écrivez du
texte ici, vous le soumettez,
mais le texte original
disparaît une fois l'utilisateur a soumis le texte. Alors, réglons ça.
C'est très facile à faire. Tout d'abord, nous allons comprendre
pourquoi cela se produit. Donc, si vous allez dans Views, encore une fois, nous avons I request equals
to post, et dans ce cas, nous
renvoyons le résultat à la page, mais nous n'envoyons rien d'autre. Il s'agira donc d'un nouveau rendu. Il affichera les zones de texte, les deux zones
de texte du traducteur HML, mais l'une d'entre elles
restera vide car il s'agira d'une actualisation
de la page, pour ainsi dire Par conséquent, si vous
souhaitez également avoir le texte
original sur la page Web, vous devez ajouter une nouvelle paire ici dans
le dictionnaire. Supposons qu'il s'
agisse d'un texte original. Sous forme de chaîne. La clé et la valeur de ce texte seraient donc le texte
original, la variable. Donc celui-ci est là. Copiez cette chaîne et accédez
au code HTML du point de traduction. Et ici, dans la
première zone de texte, nous plaçons une variable de modèle. À l'intérieur se trouve le texte original. Donc, tout comme cette zone de texte,
nous avons celle-ci aussi. Et aussi simple que cela, enregistrez au format HTML traduit, enregistrez également les vues H point PY, et le serveur a redémarré. Le serveur a donc redémarré. Nous savons donc que
les modifications sont appliquées maintenant, actualisez la page,
écrivez quelque chose ici, soumettez, et le texte
original et le texte de sortie restent
sur la page Web. Cela complète la partie jango. Nous avons donc une application Web fonctionnelle. Et maintenant, au lieu
de mettre le texte en
majuscule avec une majuscule,
nous le traduisons avec
un autre package Dans ce cas, nous allons utiliser le package Google Trans. C'est ce que nous allons faire
dans la vidéo suivante. Merci de m'avoir suivi
jusqu'ici. On se voit là-bas.
224. Compléter l'application Translator: Bon retour, et c'est
parti pour la dernière
étape de notre application. Actuellement, cette application renvoie la
version majuscule d'un texte Traduisons maintenant le
texte saisi par l'utilisateur ici. Pour cela, nous allons ouvrir un nouveau terminal pour
installer Google Trans. Mais actuellement, il y a un
problème avec cette bibliothèque, qui peut être résolu en installant une
version Alpha de la bibliothèque, laquelle vous pouvez installer la version Alpha en utilisant
ce que je suis en train de taper. Vous pouvez donc essayer de ne pas
avoir peur d'essayer l'une ou l'autre de ces solutions. Donc, Google Trans
ou autre fonctionne. Donc, si vous en installez une et que vous l'essayez, elle ne fonctionne pas, puis installez la version Alpha, et cette version Alpha
remplacera la
version précédente que vous avez installée Donc aucun mal n'est fait. Tout ce qui fonctionne, utilisez-le. Pour moi, j'ai découvert que
cette version fonctionne. Donc 4.0 0.0 dash R C une exécution. Et oui, il a été installé. Alors je peux essayer de m'en servir. Je l'ai donc installé pour
mon environnement virtuel. Fais donc attention à
ça. Tu vois NFR. Il a été activé lorsque je l'ai
installé avec PIP. Alors maintenant je peux essayer ça. Je peux ouvrir un shell Python. Et la façon dont cela fonctionne
est que vous importez depuis Google Import la classe de
traducteur. Vous créez ensuite une instance
de traduction. En utilisant cette classe de traducteur,
puis à partir de cette instance, vous dites traduction qui
traduit un texte égal à. Disons, comment avez-vous
appris Python entre guillemets ? Il se présente donc sous la forme d'une chaîne et d'un test pour la langue de
destination. Disons DE pour l'allemand, vous pouvez trouver ces abréviations sur Google, donc les
abréviations linguistiques D signifie allemand. Et si vous accédez à
du texte à partir de cela, vous obtenez la version en allemand
de ce terme, de cette phrase. La bibliothèque
travaille donc pour moi. Maintenant, je veux écrire
ce code quelque part dans mon application jangle dans
l'application de traduction Donc, dans de tels cas, vous voulez
créer un fichier séparé dans
l'application de traduction, appelez-le ou traduisez ce PY. Ici, vous souhaitez importer depuis Google Import, traducteur. Ce que nous voulons faire, c'est
peut-être créer une fonction, traduire, qui obtient
un texte en tant que paramètre. Cette fonction sera
utilisée dans les vues PY. Nous allons appeler
cette fonction ici, qui ressemblera
à ceci. À partir de point Import, traduisez. Ensuite, la sortie
sera cette fois translate dot translate. Le texte sera le texte original. Donc, traduire est cette fonction. Translate est donc un nom de module, donc translate point PY et
translate est une fonction. Donc, le texte,
disons le traducteur,
égal au traducteur ,
l'instance,
puis la traduction égale au point du
traducteur traduit le
texte égal au texte, destination est égale
à la chaîne DE, puis renvoie le texte à point de
traduction. Il s'agit d'un objet de traduction, et vous devez en extraire la propriété de texte
pour obtenir la chaîne réelle. Enregistrez cela et enregistrez-le également. Et essayons l'appli. Et ça marche. Nous avons donc obtenu la traduction en
allemand, comme vous pouvez le voir. C'est vrai. Enfin, je
voulais également ajouter un élément de menu ici pour notre traducteur afin que
nous puissions y accéder facilement. Pour ce faire, vous devez accéder
au code HTML de base et simplement copier l'une d'entre elles, une taxe, la copier et la
coller ici. Et ce sera donc
un traducteur. Et voici le nom de l'URL que vous
pouvez obtenir à partir d'ici, le PY de
l'URL, copiez-le basez ce code HTML,
collez-le dedans, enregistrez et voici l'élément. Voici donc le site Web. C'est ainsi que s'achève ce projet
de jangle. J'espère que vous en avez tiré des leçons, et je pense que cela devrait être suffisant pour vous aider à
démarrer avec Jango Nous avons donc abordé certaines des fonctionnalités très importantes de jango, à savoir la gestion bases de données,
l'obtention des entrées des utilisateurs à partir des formulaires
, le traitement de ces entrées
, puis le renvoi des
résultats à l'utilisateur Merci donc beaucoup de nous suivre
et à bientôt. Au revoir.
225. 230. Démo de l'application 10 : application Web géocodeur +: Génial. Comme vous le savez peut-être, nous approchons de la
fin du cours, et celui-ci est
la dernière section
du cours où vous créez
votre dixième application. Celui-ci en particulier est spécial. La
particularité ne réside pas dans l'application elle-même, car chaque application
est en fait spéciale. La particularité de
cette application est que vous allez créer
celle-ci de manière indépendante. Cela prend donc la
forme d'un projet. Vous devez le construire
à partir de zéro. Et vous avez acquis toutes les compétences
tout au long du cours, donc les compétences nécessaires pour créer cette application
en particulier. Et dans cette vidéo, je
voulais
vous faire une démonstration de ce que fait
cette application, puis vous pourrez
commencer à la créer immédiatement après cette vidéo. Ensuite, dans la vidéo suivante,
je vais vous montrer la solution. Je vais donc vous montrer le code de
la vidéo et vous expliquer ce que fait
le code
ainsi que l'approche que j'ai utilisée pour créer
l'application. Mais non, j'aurais pu
enregistrer ces vidéos comme je l'ai fait pour
les neuf autres applications du cours, mais je voulais vraiment que vous
fassiez quelque chose par vous-même, et cela
vous sera utile pour deux raisons. La première est que vous allez réellement
faire quelque chose de manière indépendante, et vous en apprendrez
beaucoup. Et le second, vous pouvez
l'utiliser comme portfolio. Il s'agit d'une très belle application
Web. Mais c'est difficile. Je veux dire, je serais
surpris de voir
quelqu'un faire cette œuvre à quelqu'un faire cette œuvre 100 %, sauf si vous êtes un
génie. C'est vraiment ce que je pense. Mais vous devriez pouvoir
faire en sorte que cela fonctionne, disons, à environ 50 %. Si vous faites en sorte que cela fonctionne à 50 %, vous avez vraiment
appris du cours. Alors, qu'est-ce que je veux dire par 50 % ? Eh bien, vous pouvez vous arrêter
quelque part et demander de l'aide. Peut-être que vous avez une erreur et que vous
n'arrivez pas à comprendre et à la
résoudre pour l'avenir, ou vous ne
savez tout simplement pas quoi faire ensuite. Dans de tels scénarios,
vous pouvez donc intervenir et publier une
question dans la zone de questions-réponses. Donc, dans l'
espace de discussion du cours. Je dirais de ne pas
me demander tout de suite. Je veux dire, j'aime bien poser des questions, mais c'est bien pour toi de
résoudre les problèmes toi-même. Tu sais, la programmation est difficile. Je veux dire, souvent, tout ce dont
vous avez besoin c'est d'une pause, comme un café ou un thé pour rafraîchir votre cerveau
et l'aider à mieux réfléchir. Et puis vous pourriez soudainement vous
retrouver à résoudre
ce problème. Mais si cela ne fonctionne pas,
je suis là pour vous aider. Il suffit de poser une question, et
je réponds dans un délai d'un jour. Et ma recommandation est maintenant
d'essayer de repartir de zéro. Ne regardez pas tout de
suite le code ou les leçons que nous
avons suivies pendant le cours. Au lieu de cela, essayez de rassembler vos pensées
sur une feuille de papier. Notez certaines étapes,
telles que la première étape, la création de l'
interface utilisateur, la deuxième étape bit de script contenant données et
générant une sortie, puis la création du flacon, structure, etc. Ensuite, vous allez
les implémenter étape par étape. Si vous stockez alors,
vous
pouvez parfaitement examiner les ressources. Je le fais tout le temps. Alors maintenant, qu'est-ce que cette application ? Eh bien, il s'agit d'une application
FLASK qui attend de
l'utilisateur un fichier CSV, qui doit avoir au moins
une colonne nommée adresse Par exemple, voici un fichier CSV. Et vous pouvez voir que nous avons
une colonne d'adresse là-bas, donc l'utilisateur devrait avoir une colonne appelée adresse,
nommée adresse dedans. Qu'il s'agisse d'un A minuscule ou
majuscule, peu importe. Vous devez donc créer votre
application de manière à reconnaître à fois l'adresse avec un A minuscule et l'adresse avec une majuscule A. Maintenant, l'utilisateur peut télécharger ce fichier en utilisant le bouton Choisir un
fichier Et vous pouvez voir que des supermarchés y ont
été téléchargés. Une fois que l'utilisateur aura téléchargé
ce fichier, il appuiera sur Soumettre Et ce tableau apparaît. Ainsi, une fois que l'utilisateur
télécharge un tel fichier, le backend de votre application, script
Python
lira ce fichier et ajoutera une colonne de latitude
et de longitude,
qui sont calculées à partir
de la colonne d'adresse Nous parlons donc de géocodage et vous savez comment
le faire C'est ce que vous apprendrez dans le cours
de la section Pandas. Et comme vous le voyez, le
tableau des résultats s'affiche sur la page Web une fois que l'utilisateur
appuie sur le bouton d'envoi, et vous pouvez voir les
deux colonnes qu'il contient. Enfin, vous souhaitez
également autoriser l'utilisateur à télécharger
la version CSV. Donc un fichier
contenant ces données. Et par conséquent, vous devez
afficher un
bouton de téléchargement ici comme je l'ai fait. Ainsi, une fois que l'utilisateur
appuie sur Télécharger, un fichier est téléchargé.
Il s'agit d'un dossier. Nous avons également des cellules vides parce que Python n'
était pas en mesure Le
service de géocodage n'a
donc pas pu géocoder cette adresse en
latitude et en longitude Donc oui, vous devez
compter pour cela et simplement transmettre des valeurs non valides
à ces cellules. Maintenant, vous pourriez bientôt rencontrer
des problèmes tels que, vous savez, si l'utilisateur
télécharge d'autres fichiers, changeons cela pour
ajouter au lieu de l'adresse,
et je vais l'enregistrer Je n'ai donc plus de
colonne d'adresse dans ce fichier, permettez-moi de le télécharger
à nouveau. Comme ça. Soumettre. Et dans ce cas, vous voulez
y afficher un message disant que
vous devez
vous assurer d'avoir une colonne d'adresse dans votre fichier CSV ou
quelque chose comme ça. Vous ne voulez donc pas que le programme plante pour y afficher une
erreur de flasque Donc oui, vous
devez essayer d'accepter certaines erreurs.
Et c'est tout. À ce stade, vous avez
créé un service de géocodage. J'espère avoir été clair dans
mes explications. Mais si vous avez des questions, n'
hésitez pas à les poser. Je vous souhaite bonne chance
dans ce projet. Ce sera difficile mais amusant, et tout est une question de persévérance. Donc, si vous vous engagez à le
faire, vous le ferez. La vidéo suivante est dangereuse car je vais vous montrer
la solution. Veuillez donc le consulter
en dernier recours ou le regarder pour comparer votre
application terminée avec la mienne. De plus, lorsque vous comparez votre solution à la mienne, ne vous attendez pas à ce qu'elles soient
identiques. Ils ne le seront jamais. Je veux dire, il existe différentes
manières de faire une demande, et la mienne peut être meilleure que la vôtre ou l'
inverse. Alors, s'il vous plaît, gardez cela à l'esprit. Et oui, c'est ce que
je voulais dire. J'espère que vous avez apprécié mon cours. Je vous remercie également si
vous avez laissé la critique. Je regarde toutes les critiques
et je les apprécie beaucoup. Alors oui, merci beaucoup,
je te parlerai plus tard.
226. 231. Partie 1 de la création de l'application Web de géocodeur: Bonjour, bienvenue dans
cette nouvelle conférence, et j'espère que vous avez
eu du mal
à créer l'application de géocodage Je sais que cela
aurait dû être difficile, mais si vous êtes passé par un certain point,
c'est génial aussi. Dans cette conférence,
vous obtenez deux choses. Tout d'abord, vous trouverez la pièce jointe dans les
ressources de cette conférence. Vous y trouverez tous les fichiers contenant le code
de cette application Web. Plus précisément, vous
trouverez quatre répertoires, modèles statiques, les téléchargements et les visuels, ainsi
qu'un fichier app point py Maintenant, il se trouve que j'
ai quatre fichiers d'application. Mais en gros, la
dernière est la version finale. C'est donc
la version 1 très basique, où j'ajoute simplement quelques
fonctions dans un script Python, puis j'en ai ajouté d'autres à ces fonctions,
puis d'autres, puis j'ai ajouté. Et puis j'ai finalement ajouté du code supplémentaire pour
compléter l'application. Voici donc ce que vous obtenez. Et vous le trouverez dans un fichier zip. Veuillez donc
le télécharger. Oui, c'est la première chose que
vous obtiendrez dans cette conférence, le fichier zip du code de
la solution. Et deuxièmement, je vais maintenant vous expliquer
comment j'aborde ce problème, et je vais vous montrer
le code
et ce que je construis au premier et au deuxième
tiers et ainsi de suite. Voici donc les quatre versions. J'ai la première version,
où j'ai ajouté du code, deux, trois et quatre. Ignorons donc cela
pendant un moment, car la première chose que je veux
expliquer est l'interface utilisateur. Nous allons donc commencer par
le front-end. Mais la première chose que
j'ai faite a été de créer une structure de
répertoire. J'ai donc créé un dossier statique
vide, modèles et des
téléchargements et un dossier virtuel statique et les modèles
sont donc standard pour l'application
FLASK Et le dossier des téléchargements
ne sera que le dossier dans lequel je générerai ces fichiers intermédiaires que l'application met à la disposition
des utilisateurs en téléchargement Vous le verrez dans un instant. J'ai également créé ce laboratoire de dossiers
virtuels, qui est en fait le répertoire
de l'environnement visuel. Je l'ai donc fait avec
Python avec le drapeau N Virtual Virtual pour le
nom du répertoire. Donc, si vous l'exécutez,
vous obtiendrez ce répertoire avec une nouvelle installation de Python et PIP et d'autres bibliothèques
intégrées Ensuite, j'ai
installé
Flask et j'ai installé
Pandas parce que vous aurez besoin de pandas pour lire les
données soumises par l'utilisateur pour y
calculer certaines colonnes,
et vous avez également besoin de Geopy pour
géocoder ces valeurs à partir du Et ce sont les trois bibliothèques
tierces que
vous devez installer. Une fois que j'ai créé ces répertoires
vides
, la deuxième étape a consisté à
créer l'interface utilisateur. J'ai donc créé un modèle HEML à points d'index
dans le dossier des modèles Au début, c'
était très simple. Il ne contenait donc pas
autant de bonnes choses. Cela contenait simplement
un titre et quelques titres, ainsi
qu'un formulaire de base Et au départ, je n'ai
rien mis dans l'action. Ainsi, lorsque l'utilisateur soumet, j'avais ce bouton d'envoi, et j'avais également ce
type de fichier d'entrée dedans. Donc, si vous vous souvenez de ce fichier,
il s'agit d'un formulaire. Nous avons cette entrée de fichier
et le bouton d'envoi. Ces deux options ont donc également restreint la
soumission de fichiers au format CSV uniquement. Et c'est un formulaire. Je ne l'avais pas
au début, donc je ne vais pas l'
expliquer pour le moment. J'y reviendrai plus tard.
Oui, c'était une interface. Plus tard, je suis allé créer
ce fichier CSS principal. Vous trouverez donc ici le
style CSS de la page Web. Je ne vais pas entrer dans le vif du sujet maintenant. Cela va de soi. Nous avons donc utilisé le CSS
plus tôt dans le cours. Et ce fichier est
également inclus dans les ressources parmi
les autres fichiers, mais je ne m'attends jamais à ce que
vous ayez le même style. Vous pouvez donc avoir des choses
différentes, des couleurs ou
des tailles, etc. Ensuite, vous pouvez faire
référence au CSS qui tombe dans les balises head. Oui, en gros, c'est ce que
j'ai fait dans cette deuxième étape. Donc, première étape :
création d'un répertoire, et deuxième étape, création de
l'interface de base et ajout
des outils CSS à cela Si vous avez simplement créé
le code HTML, puis plus tard, lorsque vous avez
terminé votre application, vous avez créé un fichier CSS. C'est parfaitement normal aussi. Ou même si vous avez commencé directement avec le fichier Python,
c'est très bien. Certains développeurs commencent par le front-end et d'autres
par le back-end. C'est parfaitement normal. Donc, une fois que j'ai eu l'interface, j'ai
créé un fichier d'application. Donc, une application dot py fol, ces quatre versions ne
sont que des démonstrations
pour cette vidéo Je l'ai donc créé pour différents
fichiers afin de vous montrer les étapes que j'ai suivies
pour créer mon code final. Donc, la première version, c'est
ce que j'ai fait en gros. J'ai importé ces bibliothèques. Donc, à partir de FAS, j'ai importé
la classe FLASK habituelle et la méthode de rendu des
modèles normalement pour renvoyer des modèles HML Et je savais que ma candidature impliquait une soumission par un utilisateur, donc une demande de publication. Par conséquent, j'y ai également inclus la méthode de
demande, puis la méthode du fichier envoyé, qui est utilisée pour envoyer un fichier au navigateur pour le téléchargement. Et oui, il s'agit du FAS, puis nous voulons
géocoder les données, Je le télécharge donc depuis
Geo Pi sur des codeurs, je le saisis en nominant
et aussi Une fois que j'ai saisi
les dépendances, j'ai créé
une instance FAS juste ici, puis trois fonctions qui, pour le moment,
ne font rien La première
serait donc la page d'accueil,
comme vous le voyez ici avec cette barre oblique inversée Et je nomme cet
index, la fonction, et je renvoie simplement le modèle de
rendu. Et bien sûr, voici
le HTML à points d'index. Cela affichera donc
la page d'accueil, qui est en HTML à points d'index Ensuite, la prochaine chose à laquelle
vous pourriez
vous attendre, c'est que l'utilisateur
se trouve sur votre page Web. Et une fois que l'utilisateur appuie sur
le bouton Choose Fall, qu'il sélectionne un fichier, puis qu'il appuie sur Soumettre. Ce que vous voulez faire lorsqu'
ils appuient sur le bouton d'envoi c'est
que vous voulez maintenant charger ce fichier en Python, et vous voulez le lire
sous forme de trame de données Pandas,
et vous voulez calculer
une colonne de coordonnées dans
laquelle vous calculez
la latitude et la longitude à colonne de coordonnées dans
laquelle vous partir de la colonne d'adresse à l'aide de Geo Ensuite, hors de la colonne de coordonnées, vous souhaitez calculer la
latitude et la longitude. Nous l'avons
donc déjà fait dans le cours dans la
section du panneau, puis
vous souhaitez éventuellement renvoyer un
bloc de données et envoyer ce bloc de données via une méthode de modèle de
rendu. Vous voulez envoyer ce
bloc de données ici bas. Donc, ce que nous parlons
ici, c'est de créer une
fonction qui fait tout cela. Il lit donc le CZ fall
et le traite avec des panneaux, puis il affiche le tableau. La table ASO du bloc de données. Et j'ai créé la fonction Sutter et j'ai appelé la table des succès. Si vous vous souvenez, le
paramètre methods
doit être égal à post car nous attendons
une demande de publication. Et puis nous avons encore
une autre fonction. C'est ce que j'appelle l'automne du téléchargement. Voici donc l'URL, le tableau de bord des
succès, et
voici le nom d'une fonction. Que nous avons encore une autre URL et une autre fonction
attachée à cette URL. C'est ce que j'appelle le téléchargement. Comme je l'ai dit, chaque fois que
l'utilisateur fait quelque chose, vous souhaitez créer un décorateur et une fonction associée à celui-ci Donc, tout d'abord, l'utilisateur
effectuera une soumission, et vous souhaitez la capturer dans
cette fonction. Tableau de réussite, puis la prochaine chose que
l'utilisateur fera est d'appuyer sur le bouton de téléchargement qui s'
affichera ici. Et cela doit déclencher
une autre fonction en Python, et cela doit déclencher la méthode d'
envoi de fichier en Python, afin que nous envoyions le
fichier à l'utilisateur. Cela signifie que nous avons besoin d'une autre
fonction appelée téléchargement. C'est du moins comme ça que je l'ai appelé. Quoi qu'il en soit, passons à la
version 2 nulle. Voyez donc la différence
ici et ici. La fonction d'index
reste la même. est donc tout ce que nous faisons pour
l'index. C'est très simple. Nous renvoyons simplement l'
index initial qui est le modèle ML. Et puis ici, j'ai ajouté
pas mal de code. Et en gros, ce que nous avons,
c'est que nous vérifions la demande. Si nous avons une demande de publication, je reçois le fichier
en utilisant des points de requête, et le fichier est le nom du fichier. Toutes les informations sont là. Donc oui, ce qui
se passe, c'est que lorsque l'utilisateur appuie sur le
bouton d'envoi qui se trouve ici, une URL est déclenchée, puis cette URL est l'URL la fonction
de
tableau de soulignement des succès Donc, cette fonction
ici. Cela signifie que cette fonction sera exécutée, puis nous y créerons
une trame de données, qui lira
l'automne de cet automne que nous recevrons de l'
utilisateur, à partir du formulaire utilisateur. Ensuite, nous faisons cette nomination et nous y créons une colonne de
dataframe Vous le savez grâce à la section
pandas avec la
méthode d'application , puis à l'application du
géocode à la colonne d'adresse Ensuite, à partir de la colonne de
coordonnées, je reçois une colonne de latitude, et j'utilise une
fonction Lambda pour extraire la latitude de chacune
des lignes de coordonnées, et également compter les
n valeurs qui s'y trouvent Et puis je n'ai pas besoin de
cette colonne de coordonnées. Je le supprime donc
en utilisant la méthode drop, puis je
le convertit en CSV. Ici, je génère un fichier CSV. Il s'agit du résultat que nous
voulons donner à l'utilisateur. Et je vais le trier
dans le dossier des téléchargements. Il vous suffit donc de
passer le chemin là-bas, le chemin relatif
télécharge le géocode C'est ainsi que je l'
appelle. Plus tard, je ferai quelque chose de
plus avancé. Nommons-le donc géocodé
pour le moment, ce CSV. Et puis ce que cela fera, c'est qu'il renverra un modèle, donc il renverra l'
index de ce modèle. Mais alors, si vous regardez ici, permettez-moi d'ouvrir la question
à un autre point de vue. Oui, nous avons ici une division. Associez le gingembre à la syntaxe
que j'utilise ici. J'inclus donc
la variable BTN, et j'ignore quand elle
est manquante Maintenant, c'est
différent d'ici. Ici, je renvoie le
HTML sous forme de chaîne. Et ici, je renvoie
un modèle HML. La syntaxe est donc différente. Et c'est également différent
de lorsque nous utilisons extend. Ainsi, lorsque nous étendons une mise en page, vous étendez une mise en page lorsque vous souhaitez que,
dès que l'utilisateur visite, disons l'index de
ce modèle HD Melt, l'index de la plaque HM
Meltem,
affiche d'autres modèles HML Il s'étendra donc
dès que l'utilisateur visitera cette page d'index et non les pages
HTML de la page d'accueil C'est différent
car nous ne
voulons pas que cela s'
affiche immédiatement. C'est pourquoi vous
dites d'ignorer les éléments manquants, alors ignorez-les
lorsqu'ils sont absents. Et ne l'incluez que
lorsque l'utilisateur visite cette URL du tableau de
bord des succès. Et lorsque l'utilisateur le visite,
c'est-à-dire lorsqu'il appuie sur Soumettre, après avoir soumis un fichier, vous souhaitez afficher ce modèle HTML de
téléchargement. Cela contient donc
un bouton ici. Vous voulez
y générer un bouton, qui devrait être, vous savez, rue fall, soumettre. Donc oui, vous
y trouvez ce fichier de
téléchargement et vous
obtenez également la table HML Le bloc de données
possède donc une table HTML. Donc, la première rangée,
la deuxième rangée, la première rangée, la deuxième rangée. Quoi qu'il en soit, ce bas est maintenant
attaché à une référence, ce qui suggère que lorsque
l'utilisateur appuie sur Télécharger, l'URL de la
fonction de téléchargement Python sera visitée Nous allons donc ici, et cette URL de la
fonction de téléchargement sera visitée Je sais ce que nous voulons faire
lorsque l'utilisateur visite cette URL c'est renvoyer la méthode d'
envoi du fichier. En fait, il devrait s'agir de
téléchargements au format CSV à points géocodés. Nous voulons donc envoyer à l'
utilisateur le fichier que nous avons généré ici plus tôt
dans cette fonction. Nous voulons l'envoyer à l'utilisateur sous le
nom youfle point CSV Et aussi en pièce jointe, vous connaissez ce code lors
des conférences précédentes. Et il s'agit du
téléchargement de ce modèle SML. Et, en gros, nous avons terminé. Je veux dire, vous pouvez vous en tirer avec cette version du programme, et ce serait presque excellent
si vous alliez aussi loin. Cependant, cela peut nous poser quelques
petits problèmes. Le problème serait que
si vous choisissiez
un fichier, un fichier CZ qui ne contient pas
de colonne d'adresse, donc une colonne nommée adresse, ce vous pourriez charger
ce fichier sous forme de trame de données, puis lorsque vous essayez créer une nouvelle colonne dans la
trame de données appelée coordonnées, puis que vous essayez d'accéder à une colonne existante nommée
adresse dans un Python lancera une flèche et arrêtera
l'application. Cela signifie que lorsque l'utilisateur
accède à l'URL de la table de réussite, une page d'erreur s'affiche. Et ce n'est pas très
convivial. Vous pouvez
plutôt
ajouter ici une fonctionnalité qui
vérifie si le bloc de données, s'agit d'un fichier
saisi par l'utilisateur, vous souhaitez
donc lire le
fichier en tant que bloc de données. Ensuite, dans le bloc de données, vérifiez si vous avez
une colonne d'adresse. Si vous en avez un,
vous pouvez faire les calculs. Mais si vous ne le faites pas, vous
renvoyez quelque chose à l'utilisateur. Ainsi, au lieu de
renvoyer le DF au format HTML, vous renvoyez un message
disant que désolé, vous n'avez pas une telle
colonne ou une telle colonne par défaut. Donc oui, je vais vous montrer le code pour cela lors de la prochaine
conférence. Alors voyez
227. 232. Partie 2 de la création de l'application Web de géocodeur +: Génial. Nous en sommes à la version deux, et je vais essayer d'être
rapide maintenant et de vous montrer la version trois. Il s'
agit de la troisième version. J'ai implémenté cette fonctionnalité pour
vérifier s'il
existe une colonne d'adresse dans
le bloc de données en ajoutant une instruction try and
expect. Donc, en gros, si vous
pouvez voir la différence c'est que je reçois le fichier, puis j'essaie de le
lire. Ou cela peut également être
en dehors d'un mot clé try. Ce ne serait pas un problème et C en dehors d'un
mot clé try également. Cependant, c'est toujours
mieux, car vous pouvez également vérifier
si les utilisateurs envoient des
fichiers qui ne sont pas au format CSV. Nous
vérifions donc ici que l'utilisateur
soumet un fichier CSV. Cependant, cela signifie uniquement que le fichier possède une
extension CSV à points dans la voie du fichier. Cependant, cela ne signifie pas
que le fichier est réellement au format CSV. Vous avez peut-être, disons, un fichier MP quatre et vous avez changé l'
extension en CSV, mais il s'agit toujours
d'un fichier MP quatre. Donc, ce que vous voulez faire
, c'est inclure DF dans le bloc try
and expect. Si Python ne parvient pas à créer un bloc de données à
partir d'un fichier Epi, il générera une erreur C'est donc ce qui
se passe réellement si vous transmettez EpiOurFle, vous ne pourrez pas le
lire comme une trame Donc oui, vous voulez l'
inclure ici, puis vous renvoyez le même, donc je n'ai
rien changé ici. Vous renvoyez le même index de
modèle au format HML, et vous
y envoyez le code HTML ainsi que le bouton Sauf en cas d'erreur, vous ne
renvoyez pas
l'index au format HML, mais au lieu
de la table HML, vous souhaitez renvoyer ce Et bien sûr, vous
ne voulez pas
y renvoyer de bouton de téléchargement. R, ça devrait suffire. Et il s'agit de la version 3. Telles étaient donc les différences. Maintenant, la version quatre,
c'est ce que j'ai là. Eh bien, si vous voyez ici, nous avons obtenu cet automne CSV géocodé Maintenant, c'est une chaîne. Cela signifie qu'un fichier CZ de
géocode sera créé pour tous les utilisateurs qui
soumettront des données Cela peut poser
des problèmes, car si deux utilisateurs soumettent
des données en même temps, se peut
que des conflits de
noms se produisent. Donc, ce que vous pouvez faire
ici, c'est utiliser un module datat pour générer des noms uniques pour
chaque fichier généré Et c'est ce que j'ai fait.
Voici donc la version 4. Je place le module des
jours ici, puis je génère le fichier CSV
géocodé ici, donc le nom du fichier DF vers CSV Et j'ai rendu ce nom de fichier
global ici parce que je souhaite
également y accéder à partir de la
fonction de téléchargement ici. Encore une fois, je veux
générer cela ici, je génère un nom de fichier. Ensuite, dans le nom du fichier, nous
avons la chaîne de téléchargement, qui pointera vers le répertoire où se trouvera
ce fichier. Et puis il y a la barre oblique. Et en fait, cet avantage
ne devrait pas être là. Donc, juste après la barre oblique,
nous avons le nom du fichier. Et ce serait, vous
savez, nous avons l'année, puis le mois, puis le jour,
puis l' heure
, les
minutes, les secondes
et les millisecondes Et puis l'
extension CSV à points dans le nom du fichier. Donc oui, c'est
assez unique pour chaque utilisateur car nous avons des
millisecondes dedans. Mais laissez-moi vous montrer à quoi
cela ressemble, en fait. Encore une fois, l'utilisateur
choisit un fichier, le soumet, et lorsqu'il appuie sur Soumettre, un Python génère
le bloc de données un Python génère
le bloc de données
et
génère également le fichier CC. Donc, dans cette ligne, ici. Et vous pouvez maintenant trouver ce
fichier CC dans le dossier des téléchargements. Cela a donc été généré plus tôt, et voici le fichier. C'est le fichier que
nous venons de générer. Ensuite, lorsque l'utilisateur
appuie sur Télécharger, ce fichier sera téléchargé, mais avec votre nom de fichier,
qui est celui-ci ici. Quoi qu'il en soit, la fonction obtiendra le
chemin du fichier à télécharger dans le navigateur et
obtiendra
le nom d'automne à partir de
cette variable globale C'est pourquoi je la
transmets en tant que variable globale afin que je puisse accéder à
sa valeur, qui est générée ici, je peux accéder à cette valeur
depuis une autre fonction. Et oui, c'est ma version
de l'application. Je sais que ce n'est pas
votre version. J'espère que tu étais
aussi proche que possible, et ce serait bien que
tu le fasses mieux que moi. Dans les deux cas, je suis sûr qu'essayer de résoudre cette
application aurait dû améliorer vos
compétences en résolution de problèmes en Python, car cela vous permettra
au moins de vous positionner Nous définirons
donc votre niveau, votre niveau Python afin
que vous puissiez combler les lacunes qui, selon
vous,
ne sont pas vos points forts. C'était à propos de cette
conférence, et je te verrai.