Transkripte
1. Einführungsvideo: Hallo, ich bin Ardit, ein Python-Entwickler und Dozent mit langjähriger
Erfahrung im Unterrichten von Programmierung für über 500.000 Studenten weltweit Ich bin auch der Gründer und
Autor von pythonhow.com, einem Zentrum Ich habe einige
der beliebtesten
Python-Kurse online erstellt , und in diesem Skillshare-Kurs werde
ich Sie von Anfängern bis hin zu
fortgeschrittenen Python-Kenntnissen führen, werde
ich Sie von Anfängern bis hin zu
fortgeschrittenen Python-Kenntnissen führen indem ich reale Projekte
baue Kurs beginnt mit
den Grundlagen, sodass keine
Vorkenntnisse erforderlich sind Wir werden Python von
Grund auf behandeln und im weiteren Verlauf das Gelernte anwenden, indem wir zehn
reale Anwendungen
erstellen. Sie werden praktische Erfahrung
mit der Datenanalyse mit Pandas sammeln , mit wichtigen Datensätzen
mit Python wie JSO, SQL,
CSV
arbeiten mit Python wie JSO, SQL, und sogar
Webanwendungen
und Desktop-Anwendungen entwickeln und Sie werden sogar eine mobile App
mit der Kev-Bibliothek in Python
erstellen mit der Kev-Bibliothek in Python Dies sind reale
Anwendungen mit echten Daten und vielen Funktionen Sie werden echte
praktische Erfahrung sammeln und sind
bereit, diese Fähigkeiten anschließend
für einen Job als
Programmierer anzuwenden für einen Job als
Programmierer Also für wen ist der Kurs? Der Kurs ist perfekt für Anfänger, die
Python von Grund auf lernen möchten, sowie für Fortgeschrittene praktische Projekte erstellen
möchten also keine
Vorkenntnisse im Programmieren erforderlich, nur ein Computer und
Lernbereitschaft Programmieren lernt man am besten selbst, und genau
darauf konzentrieren wir uns in diesem Kurs Jedes Projekt, das du
erstellst, stärkt deine Fähigkeiten und gibt dir
etwas Greifbares, das du präsentieren kannst. Wenn Sie also bereit sind, Python
auf
ansprechende und praktische
Weise zu lernen , lassen Sie uns anfangen. Wir sehen uns in
der ersten Lektion.
2. 2. Die ersten Schritte vorstellen: Hallo, willkommen zu einem neuen Video Dies ist ein
Einführungsvideo zum Abschnitt Funktionen und
Bedingungen Jetzt betreten Sie also einen
fortgeschritteneren Abschnitt von Python. Funktionen und Bedingungen sind einige fortgeschrittene
Kernkonzepte von Python, und dies sind sehr grundlegende
Blöcke, mit denen Sie Ihre Programme
intelligenter und überschaubarer machen können Ihre Programme
intelligenter und überschaubarer machen intelligenter und überschaubarer Sie machen Ihre Programme also
intelligenter, indem Sie sie dazu bringen, Entscheidungen zu treffen, die Sie mithilfe von
Bedingungen implementieren können Wenn Ihr Programm also
einige Eingaben erhält und
Sie nachdenken möchten, möchten
Sie Ihr
Programm dazu bringen, darüber nachzudenken, ob diese Eingabe in Ordnung ist oder nicht, und Sie möchten
etwas tun, wenn diese Eingabe
wahr ist , und etwas anderes,
wenn diese Eingabe falsch ist Sie treffen also Entscheidungen in Ihrem Programm anhand
eines bedingten Blocks. Und dann gibt es Funktionen
auf der anderen Seite, Funktionen werden verwendet
, um Codeblöcke einzuschließen, also ähnliche Codeblöcke. Es hilft dir, deinen Code zu organisieren. So
könnte eine Funktion beispielsweise USD in Euro umrechnen. Diese Funktion macht
also bestimmte Dinge
und macht es gut. Es erhält also USD als Eingabe und gibt Ihnen
Euro als Ausgabe. In der Funktion haben Sie also die mathematischen Operationen
, die die Konvertierung durchführen. Bedingungen und Funktionen
sind also zwei Dinge, die Sie in diesem Abschnitt natürlich
anhand von Beispielen lernen werden. Wir sehen uns also
im nächsten Video.
3. Python und die IDE (kein WASSERZEICHEN) installieren: Hallo. In dieser Vorlesung
zeige ich Ihnen, wie Sie Python und die Visual
Studio-Code-IDE installieren. Wenn Sie
Python installiert haben und bereits eine IDE haben, können
Sie dieses Video überspringen. Sie können also auch andere IDEs verwenden. Visual Studio-Code ist
nur meine Präferenz, und ich empfehle die Verwendung von
Visual Studio-Code. Also, wo sind die Anweisungen? Nun, wenn Sie
textbasierte Anweisungen bevorzugen, können
Sie die PDFs
aus den Vorlesungsressourcen herunterladen Wenn Sie Videoanweisungen wünschen, sind die
Videos länger. Wenn Sie also Probleme
mit einer Textversion haben , möchten Sie die Videos vielleicht danach
herunterladen. Aber die Textversionen
sollten ausreichen. Und
die Anweisungen richten sich an Windows-, Mac- und Linux-Benutzer. Abhängig von Ihrem
Betriebssystem möchten
Sie möglicherweise
die Dateien
herunterladen, die für
Ihr eigenes Betriebssystem bestimmt sind. Also danke, und ich werde in der nächsten Vorlesung mit Ihnen sprechen
.
4. 4. Installationsanleitung unter Windows +: Hallo, in diesem Teil zeige ich dir, wie
du Python unter
Windows und auch Visual Tudo
Code unter Windows installierst Windows und auch Visual Tudo
Code unter Windows installierst Beginnen wir also mit der
Installation von Python. Suchen Sie einfach bei
Google nach Python, und die erste Seite sollte die offizielle
Python-Website python.org Sie auf python.org zu
Downloads und gehen Sie zu Downloads und gehen Derzeit ist die aktuelle
Version Python 3.10 0.3. In Ihrem Fall könnte es vielleicht Python 3.11
sein. Also, was auch immer Sie
dort sehen, laden Sie es einfach herunter. Eine Sache, wenn Sie
Windows 7 oder früher verwenden, sollten Sie zu
diesem Link gehen , der eine Liste der
Downloads anzeigt, und Python
3.8 oder früher herunterladen , da 3.10 nicht für
Windows 7 oder eine ältere
Version von Windows funktioniert Windows 7 oder eine ältere
Version von Also klicke ich jetzt
auf Python 3.10 0.3. Diese ausführbare
Datei wird heruntergeladen, dann sollten Sie die
ausführbare Datei installieren . Dieses Fenster
sollte angezeigt werden Wenn Sie bereits eine
Python-Installation haben, wird auf
dieser Schaltfläche hier
Upgrade statt Installieren angezeigt. Wenn das der
Fall ist, führen Sie einfach ein Upgrade durch. Wenn du kein
Python auf deinem System hast, dann solltest du
auf Jetzt installieren klicken, aber du solltest
das auch bei Python 3.10 zum Pfad überprüfen Stellen Sie also sicher, dass das angekreuzt ist und gehen Sie zu
Jetzt installieren oder aktualisieren Mein Setup war erfolgreich, also schließe ich dieses
Fenster und gehe zur Windows-Suchschaltfläche
und öffne
die Eingabeaufforderung. Suchen Sie also nach Command Prompt oder einfach CMD und öffnen Sie diese App Dies ist nun eine
Befehlszeilenschnittstelle, über die
Sie mit Ihrem
Windows-Betriebssystem interagieren können Sie mit Ihrem
Windows-Betriebssystem interagieren wir nun
sicher , dass Python erfolgreich
installiert wurde. Dafür möchten Sie
P Y, Leerzeichen minus drei, eingeben. Drücken Sie die Eingabetaste. Wenn dies mit
diesen drei Pfeilen angezeigt wird, bedeutet dies, dass Python installiert wurde. Was Sie jetzt sehen, ist die interaktive Python-Shell, auch bekannt als
Python-Konsole. Hier können Sie jetzt Python-Code
eingeben. Zum Beispiel 3.4, drücken Sie die Eingabetaste und Sie erhalten die Ergebnisse sieben. Dies wird als interaktive
Art der Programmierung bezeichnet. Um dies zu beenden, können Sie auf
Beenden in Klammern klicken, die Klammer
öffnen und schließen, Eingabetaste
drücken und
zur Windows-Befehlszeile zurückkehren Wenn wir nun dieses Fenster schließen, verlieren
wir den Code, den wir dort geschrieben haben
, also haben wir den Code nicht gespeichert Das war einfach eine
interaktive Sitzung ,
in der Sie einfach einige Codes zu
Testzwecken eingeben in der Sie einfach einige Codes zu
Testzwecken und den Code nicht speichern
möchten. Wenn Sie den Code speichern möchten, benötigen Sie eine IDE. Also das
werden wir als Nächstes tun. Wir werden eine IDE installieren. Gehen Sie also zur Google-Suche
nach Visual Studio-Code. Wenn Sie jedoch eine andere IDE
verwenden möchten, beispielsweise Pycharm, können Sie diese
gerne verwenden Der Python-Code
, den ich in Visual Studio-Code schreiben
werde Visual Studio-Code schreiben
werde , ist derselbe, den
Sie selbst schreiben werden . Lieblings-IDE. Die IDE ist nur eine
Frage der Präferenz. Lassen Sie uns also weitermachen und auf
die ersten Ergebnisse klicken .
Visual Studio-Code. Verwechseln Sie Visual
Studio-Code nicht mit Visual Studio. Dies sind zwei verschiedene IDEs. Visual Studio-Code, für
Windows herunterladen und warten, bis die
ausführbare Datei heruntergeladen ist. Dann möchten Sie auf die
ausführbare Datei klicken, um sie zu installieren. Gehen Sie also einfach den
Installationsvorgang durch. Als Nächstes, als Nächstes. Als Nächstes bevorzuge ich es, diese Optionen zu
überprüfen. Es gibt Ihnen die Möglichkeit
, Python-Dateien in
Visual Studio-Code zu öffnen , indem Sie
mit der rechten Maustaste auf Ihre Python-Dateien in
Ihrem Windows Exploder Klicken Sie dann auf Weiter und Installieren. Meine Installation war erfolgreich, also werde ich das beenden und jetzt
Visual Studio-Code öffnen. Also suche ich einfach nach
Visual Studio-Code, oder wenn Sie nur VSC verwenden, ist
das die Abkürzung, die normalerweise für
Visual Studio-Code verwendet wird Sie sollten also
Visual Studio-Code öffnen. Sie haben dort einige
Versionshinweise. Wenn Sie
sie lesen möchten, werde ich
das schließen . Schließen Sie auch dieses Fenster. Das ist also
Visual Studio-Code. Die Einrichtung von Python- und Visual Studio-Code war auf meinem Computer
erfolgreich. Sowohl Python- als auch Visual
Psudio-Code funktionieren gut. Im nächsten Video zeige
ich Ihnen nun, wie Sie die beiden zusammen
verwenden, also wie Sie Python
in Visual Studio-Code verwenden. Ich werde es dir im nächsten Video sagen.
5. 5. Installationsanleitung auf Mac +: Hallo. In diesem Video
zeige ich Ihnen, wie Sie Python und die Visual
Studio-Code-IDE auf dem Mac installieren. Wir beginnen mit der Installation
von Python. Wenn Sie also bei Google nach
Python suchen,
sollten Sie
die ersten Ergebnisse auf die offizielle Python-Webseite verweisen . Und wenn Sie zum Herunterladen gehen und dann zu dieser Schaltfläche gehen, sollte
dies die
neueste Version von Python herunterladen. In meinem Fall ist das 3.10 0.3. In Ihrem Fall könnte es noch
neuer sein, zum Beispiel 3.11. Was auch immer die Version ist, drücken Sie
einfach die Taste und das Installationspaket
wird heruntergeladen Klicken Sie dann auf die
Datei, um sie zu installieren. Wenn Sie jetzt
eine andere Version von
Python
auf Ihrem Computer installiert haben , können
Sie
diese neuere Version trotzdem installieren. Die beiden Versionen verhalten sich wie separate
unabhängige Software, und Sie können sie beide verwenden.
Ich zeige dir, wie das geht. Also drück auf Weiter,
Weiter, Weiter. Stimme zu. Installieren. Meine Installation von Python war erfolgreich. Um jetzt zu überprüfen, ob
Python wirklich,
wirklich erfolgreich installiert wurde , kann
ich das Terminal öffnen. Dafür möchten Sie Spotlight
verwenden, um nach Terminal oder Alfred zu
suchen . Wenn Sie Alfred verwenden, also öffnen Sie das Terminalprogramm, und auf dem Terminal möchten
Sie Python
3.10 oder 0.11 eingeben, möchten
Sie Python
3.10 oder 0.11 eingeben wenn Sie Python 3.11
installiert haben Je nachdem,
was Sie hier hatten, möchten
Sie diese Version eingeben Einfach so ohne Leerzeichen. Also 3.10 in meinem Fall, drücke Enter und das
sollte erscheinen Sie sehen also diese
drei Pfeile hier. Hier können Sie
Codes schreiben, zum Beispiel drei plus vier, und Sie
erhalten die Ausgabe sieben. Das ist also als interaktive
Python-Shell
oder Python-Konsole bekannt . Es ist eine schnelle Möglichkeit, Code zu schreiben. Sie können die Shell,
die Python-Shell, verlassen , um zum Terminal
zurückzukehren. Also los geht's. Und jetzt sind
wir im Terminal. Wenn Sie
eine andere Version von Python verwenden möchten ,
die Sie installiert haben, können
Sie Python 3.9 verwenden, z. B. wenn Sie
Python 3.9 installiert hatten, und das sollte diese andere Version
von Python öffnen , wie Sie hier sehen. Auch hier können Sie den Vorgang beenden und zum Terminal
zurückkehren. Sie können dieses Fenster schließen, und jetzt ist auch der Code verloren. Also haben wir den
Code in keiner Datei gespeichert. Wir können das tun, indem wir eine IDE verwenden, und genau das
werden wir als Nächstes tun. Wir werden Visual Studio-Code herunterladen und
installieren. Visual Studio-Code ist eine IDE. Jetzt ist die IDE eine
Frage der Präferenz. Wenn Sie also eine
Lieblings-ID haben, zum Beispiel schon einmal Pycharm verwendet haben,
können Sie gerne Pycharm verwenden, da der Code, den ich in die
Videos schreibe, derselbe sein wird In meinem Fall werde ich
Visual Studio-Code verwenden. Suchen Sie einfach bei
Google danach, gehen Sie zu den ersten Ergebnissen, und das sollte Sie
zum Visual Studio-Code führen. Verwechseln Sie jetzt Visual
Studio-Code nicht mit Visual Studio. Dies sind zwei verschiedene IDEs. Visual Studio-Code ist
der, den wir verwenden. Drücken Sie also diese Taste, um den
Visual Studio-Code herunterzuladen , und
warten Sie , bis die Installation heruntergeladen ist. Das hat also
eine Zip-Datei für mich heruntergeladen. Die Zip-Datei wurde extrahiert, und jetzt habe ich diese
Datei, wenn ich
darauf doppelklicke und auf Öffnen drücke. Dadurch wird
Visual Studio-Code geöffnet. Das ist also Visual Studio-Code. Beachten Sie, dass sich die Anwendung derzeit in meinem
Download-Ordner befindet. Vielleicht möchten Sie
diese Datei also in den
Anwendungsordner ziehen . Sie können das Visual
Studio-Codefenster schließen, und normalerweise können Sie es mit Spotlight öffnen
, oder wenn Sie Alfred verwenden, können
Sie nach
Visual Studio Code suchen, und Sie sehen es in meinem
Anwendungsordner,
jetzt in der Visualsudio Code Dot App Öffnen Sie es und schon ist es wieder
Visual Studio Code. Im nächsten Video zeige
ich Ihnen, wie Sie Python in
Visual Studio-Code
verwenden
, damit wir Programme in
Dateien erstellen können , die wir
speichern und wiederverwenden können. Also werde ich
im nächsten Video mit dir sprechen.
6. 6. Installationsanleitung unter Linux +: So
installieren Sie Python und die Visual
Studio-Code-IDE auf Linux-Computern. Sie können Python mit dem Terminal unter
Linux installieren. Suchen Sie also in Ihren
Programmen nach Terminal, öffnen Sie das Terminal und zuerst möchten
Sie ein
Psudo-App-Update durchführen Geben Sie das Passwort für
Ihr Linux für Sudo ein
und Sobald das Update abgeschlossen ist, möchten Sie die
Sudo-App ausführen, um Python Three zu installieren Und das sollte
Python auf deinem Computer installieren. Und die neueste verfügbare Version von
Python wurde installiert. Deshalb habe ich
hier diese Nachricht bekommen, die besagt, dass Python Three bereits die
News-Version ist, also ist alles in Ordnung. Lassen Sie uns jetzt die
Visual Studio-Code-IDE installieren. Öffnen Sie also Ihren Browser und rufen Sie die offizielle Website von Visual Studio Code auf,
nämlich code.visualstudio.com Andernfalls suchen Sie bei Google nach Visual Studio Code
. Aber verwechseln Sie Visual
Studio-Code nicht mit Visual Studio. Visual Studio- und
Visual Studio-Code sind zwei verschiedene IDEs, und die,
die wir im Kurs verwenden , ist
Visual Studio-Code Sie dann auf der Website Gehen Sie dann auf der Website zum Deep-Datei-Download. Und warten Sie, bis die
Datei heruntergeladen ist, und doppelklicken Sie dann auf die Datei. Visual Studio-Code
kann auch als Snap-Paket installiert Dies wäre
also eine
Alternative zur Installation. Andernfalls können Sie meinen Anweisungen
folgen. Geben Sie Ihre Linux-Passwörter und warten Sie, bis die
Installation abgeschlossen ist. Sobald die Installation abgeschlossen
ist, können
Sie nach Visual Studio-Code
suchen Daraufhin sollte Visual Studio angezeigt
werden, das Sie öffnen können, und es
sollte so aussehen. So
installiert man Python- und Visual Studio-Code unter Linux. Im nächsten Video
zeige ich Ihnen, wie Sie
Ihr erstes Python-Programm in
Visual Studio-Code erstellen . Danke.
7. Erstellen und Laufen eines Python-Programms (keine Wasserzeichen): Hallo, willkommen zurück. In diesem Video. Ich zeige Ihnen, wie Sie ein Python-Programm
erstellen und
dieses Python-Programm ausführen , damit
Sie die Ausgabe erhalten. Natürlich wird dieses
Programm sehr
einfach sein, da der
Schwerpunkt hier darauf liegt,
Ihnen den Prozess der Erstellung und Ausführung
eines Programms zu zeigen . Um ein Programm in Python zu erstellen, benötigen
Sie zwei Dinge. Einer ist Python und der andere
ist eine IDE oder ein Texteditor. Eine IDE ist nur ein
fortgeschrittener Texteditor. Also werde ich Visual
Cilia Code als IDE verwenden. Welches ist das hier, und dann werde ich hier
ein Projekt erstellen Ein Projekt ist nichts anderes als nur ein
leeres Verzeichnis zu erstellen. Sie möchten also zunächst zu Ihrem Dateisystem,
Windows Explorer oder MacFinder
gehen Windows Explorer oder MacFinder und sicherstellen, dass Sie einen leeren Ordner
haben Das erste Projekt ist der Name
dieses leeren Verzeichnisses. Im Windows Explorer, und dann möchten Sie
zum Visual Studio-Code zurückkehren. Wenn Sie sich in einer anderen IDE befinden, ist
der Vorgang
im Grunde derselbe. Sie gehen zur Datei und dann
zu OpenFoldero Make it could be write just
open. Also klicken Sie darauf. Und dann möchten Sie
zu diesem leeren Ordner suchen, darauf
doppelklicken und
dann Ordner auswählen. Ein Visual Studio-Code, der
diesen Ordner als
Stammverzeichnis des Projekts öffnet . Sie haben diese Warnung hier, es ist in Ordnung zu sagen, ja,
ich vertraue den Autoren. Sie können jetzt
das erste Projekt sehen, der Name eines Ordners ist auch der
Name des Projekts. Also, was ich jetzt tun werde, ist
ein Programm zu schreiben, ein Python-Programm. Und das besteht darin,
eine Textdatei zu erstellen , in die Sie das eigentliche Programm
schreiben. Um diese Textdatei zu erstellen, können
Sie
erneut zu Ihrem Ordner gehen und sie hier erstellen, oder normalerweise erstellen
wir diese Datei in
der IDE. Wenn Sie also hier
klicken, geben Sie einen Namen für die Datei ein, z. B. M
underscore program Es wird nicht empfohlen,
Leerzeichen in den Namen
der Dateien zu verwenden Leerzeichen in den Namen
der Dateien Verwenden Sie also bitte immer
Unterstriche statt Leerzeichen. Und dann versuchen wir es mit TXT
und sehen, ob das funktioniert. Die eigentliche Erweiterung ist Punkt PY, aber das ist keine Voraussetzung. Natürlich werden wir
Punkt PY verwenden, immer, immer. Aber lassen Sie uns vorerst bei Punkt
TXT
bleiben , damit Sie
ein sehr wichtiges
Konzept von Python verstehen . Also drücke ich die Eingabetaste und hier
drucke ich drei plus vier, und das ist unser Programm. Dieses Programm gibt also einfach
die Summe von Drei und Vier aus. Wie kann ich dieses Programm
jetzt ausführen, um die Ergebnisse zu erhalten? Nun, Sie sehen diesen
Terminal-Menüpunkt hier, Sie drücken ihn und
gehen zu einem neuen Terminal, und das sollte hier ein
neues Terminal öffnen. Das ist also wie die
Befehlszeile, über Sie mit Ihrem Computer interagieren. Und hier können wir jetzt
Py minus drei schreiben , wenn
Sie Windows verwenden. Wenn Sie auf einem Mac sind,
sollten Sie Python 3 schreiben. Ich verwende hier also Windows, also verwende ich
Pi-Leerzeichen minus drei und dann mein Unterstrich-Programm, ich kann jetzt
sogar die Tabulatortaste benutzen Wenn ich die Tabulatortaste drücke, wird
der Dateiname automatisch vervollständigt Dieser Teil hier ist nicht notwendig, die Punkte
und der Backslash Du kannst es lassen. Es ist in Ordnung. Aber selbst wenn du es
so entfernst, funktioniert es trotzdem. Wenn Sie jetzt hier die Eingabetaste
drücken, gehen wir
zur nächsten Zeile über. Vielleicht haben Sie darauf gewartet, dass
die Ausgabe hier angezeigt wird. Es wurde nicht angezeigt, weil
die Datei immer noch leer ist. Wir haben die Änderungen nicht gespeichert. Nachdem ich
diese Codezeile geschrieben
habe, habe ich also nichts gespeichert. Sie möchten also zu
Datei, Speichern oder Steuerungen gehen und dann die obere
Pfeiltaste
drücken,
um den zuvor ausgeführten
Befehl abzurufen, und die Eingabetaste drücken. Dann bekommen wir die Ausgabe sieben. Wie Sie sehen, ist
ein Python-Programm nichts anderes als nur
eine Textdatei, die Sie schreiben und dann mit dem Python-Befehl
ausführen. Aber es gibt eine bessere
Möglichkeit,
Python-Programme zumindest
auf Visual Studio-Code auszuführen Python-Programme zumindest
auf Visual Studio-Code Und das
mit einer Run-Schaltfläche. Derzeit gibt es hier keine Schaltfläche „
Ausführen“, da wir
eine Python-Erweiterung installieren müssen. Wenn Sie also zu diesem Punkt übergehen, hören Sie auf dem
Symbol Erweiterungen. Und hier möchten Sie nach Python
suchen, drücken Sie die Eingabetaste. Und dieses erste Ergebnis ist die Erweiterung, die wir installieren
wollen. Drücken Sie also auf die Schaltfläche Installieren. Und das wird
die Python-Erweiterung installieren. Aber was ist die
Python-Erweiterung? Nun, ich habe dir gesagt, dass hier irgendwo die
Run-Schaltfläche angezeigt wird. Es wurde nicht angezeigt, weil meine Datei keine
PY-Erweiterung hat. Die Python-Erweiterung
sucht also nach PY-Dateien. Sie
möchten also mit der rechten Maustaste hier klicken Punkt PY
umbenennen. Und jetzt sehen wir diesen Button. Wir erhalten auch die Meldung, dass wir einen
Python-Interpreter auswählen
müssen Um also einen
Python-Interpreter auszuwählen
, drücken
Sie entweder dort diese Taste oder wenn Sie das Fenster nicht
erhalten haben, möchten Sie zu diesem Symbol hier gehen,
zu dieser geschweiften Klammer, und dann
Interpreter auswählen Und dann möchten Sie
den Python 3.10 0.3-Interpreter auswählen , den wir im vorherigen Video installiert haben Vielleicht ist
es in deinem Fall eine andere Version. Also, welchen Python-Interpreter
Sie auch verwenden, wählen Sie ihn aus, und dann sind Sie bereit, dieses Programm
mit dieser Schaltfläche
auszuführen Drücken Sie also diese Taste. Und das ist der Ausgang sieben hier unten. Wie Sie sehen, gibt es zwei Möglichkeiten, Ihre
Python-Programme auszuführen. Entweder verwenden Sie den
Python-Befehl wie wir es mit PY minus drei getan haben, und dann haben Sie
den Namen der Datei erwähnt. Oder Sie verwenden den einfacheren Weg
, nämlich diese Schaltfläche. Aber wenn Sie nähen, müssen
Sie Ihre Dateien
mit dem Punkt PY am Ende benennen, um diese Schaltfläche verwenden zu
können . Und das ist eigentlich
die beste Vorgehensweise. Jeder benennt
seine Dateien mit Punkt PY. Es ist wie eine Konvention.
Es ist keine Anforderung, aber es ist eine Herzkonvention. Und wie Sie sehen, funktionieren Dinge
wie Erweiterungen und
IDE-Erweiterungen auch
besser, funktionieren Dinge
wie Erweiterungen und
IDE-Erweiterungen auch wenn Sie Ihre
Dateien mit dem Punkt PY benennen. Ein weiterer Vorteil
dieser Schaltfläche besteht darin, dass
Sie den Code nicht speichern müssen, wenn Sie mehr Codes
wie vier plus neun haben. Sie führen es einfach aus und Sie gelangen zu den
Ergebnissen sieben und 13. Also die Summe dieser Zeile und auch
die Summe dieser Zeile. Wenn Sie
ein anderes Programm erstellen möchten
, gehen Sie einfach erneut zu Datei,
öffnen Sie den Ordner und
stellen Sie sicher, dass Sie
einen leeren Ordner haben , oder
erstellen Sie hier einfach spontan einen. Also Ordner, zweites Projekt. Doppelklicken Sie darauf,
wählen Sie den Ordner aus Dadurch wird das
aktuelle Fenster, das aktuelle Projekt, geschlossen und
das zweite Projekt geöffnet. Also dieser hier, du
erstellst wieder eine Datei. Mein Programm Punkt Py Punkt PY immer, wähle einen Interpreter mit dieser geschweiften Klammer aus und gehe dorthin Wählen Sie immer denselben
Interpreter, den Sie
zuvor verwendet haben, es sei denn, Sie möchten Wenn Sie viele Interpreter haben
und Code schreiben, führen Sie ihn aus, und Sie sollten
die Ausgabe hier in der Befehlszeile sehen die Ausgabe hier in der Befehlszeile Damit danke ich Ihnen, dass Sie
sich dieses Video angesehen haben, und ich werde
im nächsten mit Ihnen sprechen
8. Was ist Python überraschend (KEIN WASSERZEICHEN): Nehmen wir an, Sie gehen
im Amazonaswald spazieren. Im Wald triffst du einen Stamm
und der Stamm hat einen Koch. Du willst dem Koch sagen, dass du Hunger hast, also musst
du essen. Das Problem ist, dass du die Sprache nicht
kennst. Was Sie also wollen, was Sie
bekommen, ist ein Dolmetscher. Das ist also der Dolmetscher. Sie sprechen Englisch mit
dem Dolmetscher, und der Dolmetscher spricht
Amazonis Und der Koch bedient dich. Das Essen. Python funktioniert genauso. Das sind Sie wieder
und Sie möchten mit dem
Prozessor Ihres Computers
kommunizieren. Sie möchten beispielsweise
die Summe von drei und vier wissen. Das Problem
ist wiederum, dass der Prozessor eine sehr schwierige Sprache
spricht, die Maschinensprache
genannt wird. Und diese Sprache
ist für
Menschen sehr schwer zu sprechen oder zu schreiben. Was wir bekommen, ist ein
Interpreter namens C Python. Was ist C Python? C Python ist die Software wir in den
vorherigen Videos installiert haben. Wenn Sie also Python von
python.org herunterladen und installieren, installieren Sie
eigentlich C Es ist ein Interpreter. Dieser Interpreter erhält
Python-Sprache von Ihnen und übersetzt diese
Sprache in Maschinensprache, und er spricht diese
Maschinensprache an den Prozessor Im Gegenzug verwendet der Prozessor
den Computerbildschirm, also Ihren Laptop-Bildschirm, um die Ergebnisse
anzuzeigen, zum Beispiel sieben, und
Sie sehen diese Wie Sie sehen können,
ist Python genau wie Englisch.
Es ist nur eine Sprache. Die Software, die Sie
installieren und mit der Sie Python
ausführen, ist
nur eine Software, und sie ist
in Siegelsprache geschrieben. Sie ist zufällig
in Siegelsprache geschrieben. Deshalb heißt es C Python, obwohl die meisten Leute es nur Python
nennen. Wenn du sagst, hast
du Python installiert? Ja. Nun, Sie sprechen
von der Installation von C Python. Die Python-Sprache
selbst ist nur Wissen. Es ist in der Dokumentation gespeichert. Wenn Sie zu
python.org gehen und dann
zum Dokumentationsmenü gehen, sollten Sie die
Dokumentation von Python sehen Die Dokumentation
von Python
entspricht also einem Wörterbuch,
einem englischen Wörterbuch, wie dem Oxford-Wörterbuch, in dem die englische
Sprache dokumentiert ist. Es gibt jedoch einen Unterschied. In dem Fall, in dem wir
mit dem Koch gesprochen
haben, haben wir gesprochene Sprache verwendet. Um hier mit dem
Dolmetscher zu kommunizieren, verwenden
wir Textdateien Also schreiben wir die Sprache
in eine Textdatei und der Interpreter
liest diese Textdatei Natürlich geben wir diesen Textdateien
den Erweiterungspunkt PY , aber es sind immer noch Textdateien Die Erweiterung ist anders.
Und das ist die Idee. Das ist Python. Python ist also die Sprache. Und danke, dass Sie diesem Beispiel, diesem Vergleich gefolgt sind, und ich werde im nächsten Video mit Ihnen sprechen
.
9. 9. Beginnend mit den Grundlagen von Python: Hallo, willkommen zu einem neuen Video Dies ist ein
Einführungsvideo zum Abschnitt Funktionen und
Bedingungen Jetzt betreten Sie also einen
fortgeschritteneren Abschnitt von Python. Funktionen und Bedingungen sind einige fortgeschrittene
Kernkonzepte von Python, und dies sind sehr grundlegende
Blöcke, mit denen Sie Ihre Programme
intelligenter und überschaubarer machen können Ihre Programme
intelligenter und überschaubarer machen intelligenter und überschaubarer Sie machen Ihre Programme also
intelligenter, indem Sie sie dazu bringen, Entscheidungen zu treffen, die Sie mithilfe von
Bedingungen implementieren können Wenn Ihr Programm also
einige Eingaben erhält und
Sie nachdenken möchten, möchten
Sie Ihr
Programm dazu bringen, darüber nachzudenken, ob diese Eingabe in Ordnung ist oder nicht, und Sie möchten
etwas tun, wenn diese Eingabe
wahr ist , und etwas anderes,
wenn diese Eingabe falsch ist Sie treffen also Entscheidungen in Ihrem Programm anhand
eines bedingten Blocks. Und dann gibt es Funktionen
auf der anderen Seite, Funktionen werden verwendet
, um Codeblöcke einzuschließen, also ähnliche Codeblöcke. Es hilft dir, deinen Code zu organisieren. So
könnte eine Funktion beispielsweise USD in Euro umrechnen. Diese Funktion macht
also bestimmte Dinge
und macht es gut. Es erhält also USD als Eingabe und gibt Ihnen
Euro als Ausgabe. In der Funktion haben Sie also die mathematischen Operationen
, die die Konvertierung durchführen. Bedingungen und Funktionen
sind also zwei Dinge, die Sie in diesem Abschnitt natürlich
anhand von Beispielen lernen werden. Wir sehen uns also
im nächsten Video.
10. 10. Variablen: Warum und wie man Variablen verwendet +: Hallo, willkommen zurück. Bitte schauen Sie
sich dieses Programm hier an. Sehen Sie ein Problem
mit diesem Programm? Nun, das Programm funktioniert gut. Wenn wir es ausführen, erhalten wir
sieben als Ausgabe, was der erwarteten Ausgabe entspricht. Also drei plus vier
ergibt sieben. Aber es gibt ein Problem
mit dem Programm, und das Problem ist, dass wir
keine Ahnung haben , was drei bedeutet
und was vier bedeutet. Als Programmierer
wissen wir also nicht, was hier vor sich geht, und das macht dieses
Programm nicht lesbar Lassen Sie mich
Ihnen nun zeigen, wie ich
dieses Problem mithilfe
von Variablen sofort beheben dieses Problem mithilfe
von Variablen sofort Also werde ich das
komplett löschen und sagen, ausgegeben ist gleich drei. Gespendet entspricht vier. Gesamtbetrag entspricht dem Betrag, den Sie
ausgeben, spenden und dann den Gesamtbetrag ausdrucken. Wenn ich dieses Programm jetzt ausführe, erhalte
ich dieselbe Ausgabe,
also sind es wieder sieben. Aber dieses Mal können wir als Programmierer dieses Programm
verstehen Also können wir dieses Programm
anderen Personen,
einigen anderen Programmierern geben , oder wir können zu diesem Programm zurückkehren Später können wir dieses Programm immer noch
verstehen , weil wir jetzt
Namen für die Werte haben, und diese werden als Variablen bezeichnet Ausgegebene, gespendete und
Gesamtbeträge sind also alles Variablen. Die Syntax ist ziemlich einfach. Alles was Sie tun müssen, ist einfach einen Namen aus Ihrem
Kopf für eine Variable
auszuwählen. Also habe ich mich dafür entschieden,
als erste Variable ausgegeben zu haben. Das ist also der
Geldbetrag , den ich zum Beispiel
für den
Kauf von Dingen ausgegeben habe, und dann
ist das der Betrag, den ich gespendet habe. Und dann habe ich
den Gesamtbetrag berechnet. Jetzt
macht dieses Programm mehr Sinn. Und natürlich gibt es auch
andere Beispiele, wie Artikel zehn
entsprechen, und einen Preis, der insgesamt zwei
entspricht. Der Preis entspricht dem Faktor
Artikel mal Preis. Jetzt gibt es hier also
dieses Sternchen, was
Multiplikationsoperator bedeutet Drucken Sie den Gesamtpreis aus und wir
bekommen hier 20 als Ausgabe. Also noch einmal, wir haben hier eine
Variable, zwei und drei. Nun gibt es einige Regeln bezüglich der Syntax
von Variablen. Die erste Regel lautet
, dass Sie vor
Ihren Variablen keine Zahlen
haben sollten , aber Sie können Zahlen irgendwo in der Mitte oder am Ende haben, aber nicht davor. Sie können Unterstriche verwenden, wie ich es hier getan habe, aber Sie können keine Leerzeichen verwenden Das funktioniert also nicht in Python, was bedeutet, dass Sie einen Unterstrich verwenden sollten, wenn
Sie
Variablen mit mehr
als einem Wort haben Wort Unterstrich verwenden sollten, wenn
Sie
Variablen mit mehr
als einem Es ist die beste Methode
, einen Unterstrich zu verwenden. Und zu guter Letzt können Sie den
Zuweisungsoperator mit
beliebig vielen Leerzeichen umgeben Das wird also funktionieren. wird jedoch
empfohlen Laut dem offiziellen
Python-Styleguide wird jedoch
empfohlen, auf
beiden Seiten des
Zuweisungsoperators ein Leerzeichen zu
haben beiden Seiten des
Zuweisungsoperators um die Codes lesbarer zu machen. Leerzeichen dienen hier nur der
Lesbarkeit. Das Gleiche gilt für
diese Operatoren. Es ist gut, Leerzeichen
um den Operator herum zu haben. Nochmals zur besseren Lesbarkeit. Jetzt macht unser Programm also mehr
Sinn. Wir wissen, was hier vor sich geht. Wir verstehen den Code, und das ist ein
Vorteil von Variablen. Es gibt noch einen zweiten
Vorteil. Variablen dienen als Eimer
, um Daten oder Objekte zu transportieren. Zehn ist also ein Datenwert, oder Sie können ihn auch als Objekt bezeichnen Zehn ist also ein Objekt,
zwei ist ein Objekt und items ist der
Name dieses Objekts, oder Sie können sagen, die
Variable dieses Objekts. Also diese Namen, diese Variablen
sind wie Eimer Sie werden verwendet, um Gegenstände
herumzutragen. Nehmen wir zum Beispiel an, wir haben zehn in
den Artikelkorb
gelegt, und dann nehmen wir diesen Bucket und multiplizieren diesen Bucket
mit einem Preissegment, dem sich zwei befinden. Anstatt also
zehn hier und zwei reinzuschreiben, arbeiten
wir tatsächlich
auf Bucket-Basis, auf variabler Basis. Das hat einen Vorteil, denn nehmen wir zum Beispiel an, dass wir den Wert auf drei ändern,
und
das bedeutet, dass die Artikel, die jetzt
hier sind, auch drei sein werden. Also drei mal zwei,
wir bekommen sechs. Deshalb wollen wir zum Beispiel keine festen Kodierungen für
Objekte haben festen Kodierungen für
Objekte Wenn das zehn wären, würden wir das ausführen, wir würden die alte Ausgabe 20 erhalten Ich hoffe also, dass das klar ist. Benutze immer Variablen, und damit ist dieser Vortrag
über Variablen abgeschlossen. Ich bin auf viele
Details eingegangen, weil Variablen in jedem einzelnen
Programm, das Sie schreiben, verwendet
werden. Stellen Sie also sicher, dass Sie sie
verstehen. Wenn nicht, stellen Sie Fragen
in den Fragen und Antworten, und ich werde
im nächsten Video mit Ihnen sprechen Danke.
11. 11. Verwendung der Python Interactive Shell: Hallo, willkommen zurück
zu einer neuen Vorlesung. Zuvor haben wir dieses Skript
geschrieben, und wir können es mit
dieser dreieckigen Schaltfläche ausführen, und wir erhalten sechs als Ausgabe. Also drei mal zwei ergibt sechs. Also, was wir hier gemacht haben, ist, dass wir
das Skript in eine Punkt-PY-Datei geschrieben , dass wir
das Skript in eine Punkt-PY-Datei und dieses
Skript dann an den Interpreter geschickt haben Also senden wir die gesamte
Punkt-PY-Datei an den Interpreter. Aber es gibt noch eine andere
Möglichkeit, Python-Code auszuführen. Das heißt, indem Sie den
Interpreter auf Abruf haben. Lassen Sie mich erklären
, was ich damit meine. Sie müssen also zum
Terminal zur Befehlszeile gehen. Hier führen Sie
Betriebssystembefehle aus. Ich verwende also Windows, also kann ich PY
Space minus drei ausführen. Wenn Sie Mac oder Linux verwenden, müssen
Sie Python
3.10 oder Python 3.9 schreiben 3.10 oder Python 3.9 je nachdem, welche Version
von Python Sie verwenden Ich verwende Pi-Leerzeichen minus
drei und drücke die Eingabetaste. Dieser Befehl startet also
den Python-Interpreter. Jetzt ist der Interpreter, wie
gesagt, auf Abruf,
was bedeutet, dass der
Interpreter jetzt
darauf wartet , dass
Python-Code ihn interpretiert Stellen Sie sich die bisherigen Methoden also so als würden Sie den Dolmetscher
auf Vertragsbasis einstellen Sie senden dem Interpreter also
das gesamte Skript und er sendet Ihnen die Ausgabe
zurück Aber hier
ist der Dolmetscher ein Mitarbeiter, sagen
wir, er ist vor Ort
und
wartet auf Ihre Eingabe Sie hören dir zu. Sie sagen also, dass die
Punkte gleich
drei sind.
Sie schreiben zum Beispiel Code und der Moderator und der Dolmetscher
hören Ihnen zu Es registriert also die
Variablen items im Speicher. Und du kannst weiterhin Code schreiben. Der Preis entspricht
zwei, der Gesamtpreis entspricht dem Faktor Artikel mal Preis. Und wenn Sie den Gesamtpreis drucken, erhalten
Sie die Ausgabe sechs, was der gleichen
Ausgabe entspricht. Jetzt
fragen Sie sich wahrscheinlich, wann
Sie die eine und wann
die andere verwenden sollen. Sollten Sie also in einer
Python-Datei oder in einer
interaktiven Python-Shell
codieren? Das ist jetzt als
interaktive Shell bekannt. Lassen Sie mich
Ihnen diese Frage beantworten. Aber bevor ich Ihnen antworte, möchte
ich auf
die Unterschiede zwischen
den beiden Arten der Codierung hinweisen . Der größte Unterschied besteht
darin, dass der Code Sie in die interaktive
Shell schreiben, nicht gespeichert wird. Wenn ich also diese Shell jetzt verlasse, geht
dieser Code verloren
und es gibt keine Möglichkeit, ihn zu speichern. Und das bringt uns
zum anderen Punkt,
nämlich dass diese Art der Codierung nur für
Wegwerfcode ist Wenn Sie also einfach Dinge schnell
testen möchten, möchten Sie
vielleicht einige mathematische Operationen
wie Addition,
Multiplikation Und Sie sind nicht daran interessiert ein wiederverwendbares Programm zu
erstellen, dann ist diese interaktive
Shell Es ist schneller,
als
eine PY-Datei zu erstellen und dann den Code dort zu
schreiben. Also ich glaube, ich habe die Frage
beantwortet. Sie sollten die Punkt-PY-Datei
immer dann verwenden , wenn Sie wiederverwendbare Programme
erstellen möchten. Und Sie verwenden die
interaktive Python-Shell für schnelle Einzeiler. Also schreib einfach eine Zeile, vielleicht noch eine hier.
Also mathematische Operationen. Jetzt möchte ich auf einen
Unterschied zwischen den beiden hinweisen. Ein weiterer Unterschied, den
Sie beachten sollten
, besteht darin, dass
Sie in der
interaktiven Python-Shell keine Druckfunktion verwenden
müssen. Sie können einfach Gesamtpreis sagen. Und du bekommst den Output. Sie müssen den Gesamtpreis
nicht ausdrucken. In einer Punkt-PY-Datei müssen
Sie jedoch sehr explizit sein. Wenn ich also die
Druckfunktion entferne und dieses Programm ausführe, erhalten
wir keine Ausgabe. Lassen Sie mich
dieses Programm jetzt ausführen, aber ich warne Sie, dass
wir einen Fehler bekommen werden. Also starte das Programm, das ist der Fehler. Also,
was ist hier passiert? Dieser Code ist in Ordnung, aber
was passiert, ist dass Visual Studio-Code diesen Windows-Befehl
in der Python-Shell
ausführt. Die Python-Shell akzeptiert nur Python-Code, aber keine Windows- oder
Mac-Betriebssystembefehle. Das ist also ein
Windows-Befehl, weil er startet, versucht, das Python-Programm zu
starten, und er versucht
, meine Programmpunkt-PY-Datei auszuführen. Sie müssen
also die Shell beenden
, wann immer Sie eine Punkt-PY-Datei ausführen
möchten. Wenn Sie sich also in einer
interaktiven Python-Shell befinden
und wissen, dass
Sie immer dort sind, wenn Sie diese drei Pfeile sehen, dann möchten Sie mit
Klammern beenden und die Eingabetaste drücken . Dadurch gelangen Sie zurück zur Betriebssystem-Shell,
zum Terminal, zur Befehlszeile Das bedeutet, dass Sie jetzt Ihr
Programm ausführen können. Lassen Sie mich also die
dreieckige Taste drücken und wir haben keine Fehlermeldung erhalten. Es gibt jedoch
auch keine Ausgabe, wie Sie sehen können, denn wie ich bereits erwähnt habe, drucken
wir hier nichts
aus. Der
Interpreter weist also nur 32 Elemente variabel Das Gleiche gilt für den Preis. Es berechnet den Gesamtpreis
und dann tut es hier nichts Um also eine Ausgabe zu erhalten, müssen
wir sagen,
die Variable erneut drucken und Sie erhalten sechs Wenn Sie wieder zur Python-Shell zurückkehren möchten, schreiben Sie den Befehl Py minus
drei, und Sie gehen zurück zur Shell, und Sie können den
Code hier erneut ausführen. Also gehe ich zurück zur
Shell und da
geht es um die interaktive
Python-Shell. Danke fürs Folgen.
12. 12. Das Terminal verwenden: Bevor wir mit dem Programmieren beginnen, möchte
ich Ihnen einen
Produktivitätstipp zur IDE geben. Nun, dieser Tipp bezieht sich auf
die visuelle Sudo-Code-IDE, aber er wird wahrscheinlich auch für andere IDEs gelten Es geht um das Terminal, darum, wie man das Terminal
effizienter
benutzt, und das wird dir beim
Programmieren und auch
beim Lernen helfen . Also das
möchte ich dir zeigen. Ich habe mein Terminal hier geöffnet. Zuallererst
möchte ich alle Terminals löschen
, die dieses Symbol verwenden , oder das Symbol
könnte sich irgendwo hier drin befinden. Also lösche einfach alles. Ja, das Symbol zeigt uns jetzt hier, drücken Sie das oder das andere bis das Terminal verschwindet. Und dann willst du das Terminal wieder
anzeigen, und das kannst du tun, indem du diese Taste
drückst. Damit wird der Code ausgeführt. Es wird ein neues
Terminalfenster erstellt. Und dann ist es gut, auch
eine Python-Shell
an der Seite zu haben . Sie haben also sowohl die
Befehlszeile, in der Sie den Code ausführen, auch die
interaktive Python-Shell in der Sie
schnelle Einzeiler schreiben können Um das zu tun, möchten Sie
auf dieses Symbol klicken. Und das wird
das Terminal teilen. Jetzt haben wir ein
Terminal hier auf der linken Seite und ein Terminal
hier auf der rechten Seite. Hier auf der rechten Seite möchten
wir den Python-Befehl ausführen ,
der die interaktive Python-Shell
öffnet. Unter Windows ist das
PY-Leerzeichen minus drei, oder Macan Linux
wäre das Python 3.10 oder Python 3.11 und Das öffnet also die interaktive
Python-Shell. Jetzt haben wir sowohl die
Befehlszeile, in der wir Punkt-PI-Dateien
ausführen, als auch die Python-Shell, in der Sie Code
interaktiv ausführen Das wird
dir beim Lernen helfen. Lassen Sie mich Ihnen schnell zeigen, ob
das gut funktioniert oder nicht, damit ich mich darauf konzentrieren kann. Es spielt keine Rolle, und
ich drücke diese Taste, aber der Code wird
an das Terminal gesendet. Und dieses Terminal hier
ist davon unabhängig. Also nochmal, wenn
das nicht funktioniert,
stellen Sie sicher, dass Sie erneut alles
löschen. Also keine Terminals. Dann
öffne hier kein Terminal. Anstatt das zu tun, lassen Sie das Terminal
mit dieser Taste öffnen. Weise stellen Sie sicher
, dass dieses Terminal
mit dem laufenden
Prozess dieser Datei verbunden ist , und dann teilen Sie das Terminal auf, und dann haben Sie die
Befehle, um Python zu öffnen. Noch ein Tipp, bevor wir dieses Video in
der Befehlszeile
schließen , wo die Windows- Mac- oder Linux-Befehle gesendet werden. Wenn wir also hier die Punkt-PY-Datei
ausführen, können
Sie das Terminal
mit CLC löschen und dort CLC schreiben Wenn Sie Windows verwenden,
wäre es auf einem Mac auch für Linux klar CLC drücken Sie die Eingabetaste und das Terminal
wird gelöscht. Das funktioniert also in
der Befehlszeile, nicht in der Python-Shell. In Bezug auf das geteilte
Fenster hier an der Seite können
Sie sehen, wie viele
Terminal-Pans Sie haben Wir haben also das, das auf der linken Seite
darauf zeigt, linken Seite
darauf zeigt, und dann das andere auf
der rechten Versuchen Sie auch, hier nicht
mehr als zwei Terminals zu haben da die Dinge
verwirrend werden können , denn wenn
Sie das Plus-Symbol
drücken, haben Sie ein drittes Terminal, das sich hinter diesen beiden
versteckt und die
Dinge werden verwirrend. Achte darauf, dass du immer zwei hast. Wenn Sie mehr haben,
löschen Sie alles und starten Sie den Vorgang
erneut um sie
herum, etwa um PY, minus drei
, und so weiter. Damit bist du bereit, in den nächsten Videos zu
programmieren, und das wird dir wirklich, wirklich
beim Lernen helfen. Also werde ich
im nächsten Video mit dir sprechen.
13. 13. Einfache Typen: Integers, Strings und Floats: Lass mich
dir etwas zeigen. Ich erstelle die X-Variable. Speichern Sie zehn in dieser X, Y-Variablen, speichern Sie den Text zehn
in dieser Variablen und erstellen Sie dann
zwei neue Variablen. Eins entspricht also zwei. X plus X, und etwas zwei
ergibt zwei, Y plus Y. Und dann drucke etwas
eins und einige Speichern Sie das Skript, vergessen
Sie es nicht und führen Sie es aus. Das ist die Ausgabe. Also haben wir 20 von X plus
X und 1010 von Y plus Y. Was ist mein Punkt hier Mein Punkt ist, dass
Computer Müll sind. Damit sie
dich verstehen, musst
du in deiner Sprache, in diesem Fall mit Python,
sehr klar und deutlich sein ,
was du sagen wirst ,
was du sagen . Es reicht nicht, einfach
zehn zu sagen , man muss erklären,
was diese Zehn ist. Ist es eine Zahl oder ist es Text? Aus diesem Grund haben
wir in einigen Sprachen, in den meisten Sprachen, in den meisten Sprachen, Typdeklarationen. In anderen Sprachen würde
man also etwas wie int sagen, was für Integer steht. Sie sagen also, dass
dies eine Ganzzahl ist. Zehn ist eine Ganzzahl, und
das wäre wie STR Y ohne Anführungszeichen. Das sagt
Python also, dass dies
tatsächlich ein Text ist und auch so behandelt werden
sollte. Wenn Sie also in Python einen Plus-Operator
anwenden, verkettet
Python diesen Text, fügt
also zehn nach zehn hinzu und erstellt diese
verkettete Zeichenfolge Nun, so funktioniert
es in Python nicht. In Python haben
wir statt
dieser expliziten Deklarationen stattdessen eine implizite
Deklaration
, und zwar diese hier. Wenn die Zahl also ohne
Anführungszeichen ist, handelt es sich um eine Ganzzahl. Nun, es kann auch ein Float sein, aber lassen Sie mich in ein paar Sekunden
darüber sprechen. Und wenn es mit doppelten Anführungszeichen steht, bedeutet
das, dass es sich um einen Text handelt. Wenn es
beispielsweise 10,1 entspricht,
bedeutet das, dass es sich um einen Float handelt Und wenn Sie mir nicht glauben, können
Sie die
Typfunktion wie X verwenden, Y
eingeben und eingeben Die Typfunktion
druckt den Typ jedes Werts aus. Es ist also eine Klasse int, eine Klasse STR, die für Strings
steht. Alles in Anführungszeichen ist
eine Zeichenfolge und Floats, was für Float steht Bei Zeichenketten können Sie auch einfache Anführungszeichen wie diese
verwenden. Wenn Sie es speichern, erhalten
Sie dieselbe Ausgabe. Wenn Sie also Text verarbeiten möchten, müssen
Sie Anführungszeichen verwenden. Wenn Sie Zahlen verarbeiten möchten, um
mathematische
Berechnungen mit ihnen durchführen zu können , müssen
Sie sie ohne solche
oder ähnliche Zeichen verwenden
14. 14. Datentypen auflisten: Jetzt kennst du drei
Datentypen in Python,
du kennst Ganzzahlen, du kennst Zeichenketten
und
du kennst Floats und
du Das sind einfache Datentypen. Wir haben auch
sogenannte zusammengesetzte Datentypen,
Typen, die aus verschiedenen Objekten
bestehen Und die Liste ist die
beliebteste. In einer Liste können Sie also tatsächlich mehrere Objekte
speichern. Nehmen wir an, Sie sind
Lehrer und
möchten die
Durchschnittsnote Ihrer Schüler berechnen. Sie verwenden dafür Python
und benötigen eine Datenstruktur, und benötigen eine Datenstruktur um diese Werte in Python zu speichern. Sie benötigen den richtigen Typ in Python, um die
Noten Ihrer Schüler darzustellen, und eine Liste wäre eine gute Wahl. Lassen Sie uns eine Liste erstellen. Speichern
Sie es wie gewohnt in einer Variablen. Noten der Schüler. Entspricht offenen eckigen Klammern,
geschlossenen eckigen Klammern. Die Objekte werden jetzt also
dieser Syntax entsprechen. Sie haben also gesehen, dass
Sie bei Ganzzahlen eine Zahl
ohne Anführungszeichen für
Zeichenketten verwenden würden, Sie bei Ganzzahlen eine Zahl
ohne Anführungszeichen für
Zeichenketten verwenden würden um Python mitzuteilen
, dass es sich um eine Zeichenfolge handelt, Sie verwenden doppelte oder einfache Anführungszeichen Und bei Listen verwendet man
diese eckigen Klammern, sodass jeder Typ
seine eigene Syntax hat Sagen wir also 9.1
und 8.8 und 7.5. Das sind die Noten
Ihres Schülers.
15. 15. Bereiche verwenden: In diesem Video werden Sie sich mit Listen
besser vertraut machen. Bisher haben wir also
drei
Float-Datentypen in einer Liste gespeichert , aber Sie können
jeden beliebigen Objekttyp speichern, nicht nur Floats, sodass wir eine Ganzzahl wie neun
speichern können Sie können eine
Zeichenfolge speichern, z. B. hallo. Sie können
Listen sogar in einer Liste speichern. Sie schreiben einfach eckige
Klammern und
geben dann die Elemente dieser Liste ein. Diese Liste enthält also immer noch
drei Elemente: diese Ganzzahl, diese Zeichenfolge und diese Liste. Und natürlich
können Sie diese Liste drucken, indem Sie auf die Variable zeigen, die der Liste
zugeordnet ist. Und das ist die
Ausgabe, die wir erhalten. Nein, mathematische Operationen mit Listen, was unterstützt List? Nun, nicht viel, wirklich. Sie können Multiplikationen
mit einer Ganzzahl durchführen, z. B. zwei oder drei, und lassen Sie uns sehen, was
passieren wird Ich werde diesen Ausdruck
direkt hier
ausdrucken, anstatt ihn in eine
Variable einzufügen Was auch immer Sie bevorzugen, Sie
können eine neue Variable erstellen, diese in der Variablen
speichern und dann die Variable
in der Druckfunktion platzieren oder diesen Ausdruck
direkt
in der Druckfunktion platzieren. Beides wird funktionieren.
Wenn Sie das also ausführen, erhalten
Sie diese Ausgabe. Das ist also dieselbe Liste, die dreimal
wiederholt wird. Wenn das Plus wäre,
wird dies nicht unterstützt, da
Python nicht weiß, was mit einer
Liste und einer Ganzzahl zu tun ist. Es gibt Ihnen also einen Fehler
vom Typ Fehler kann nur Listen
zu Listen verketten Es kann also Listen zu Listen verketten
. Wenn Sie also Noten für Schüler und Schüler
machen, wird
das auch funktionieren Also führe das aus und du
bekommst diese Ergebnisse. Die Liste wurde zweimal wiederholt, was dasselbe ist
wie das mal zwei. Also nochmal, wir werden hier und da
dieselben Ergebnisse erzielen. Schließlich gibt es auch eine Möglichkeit,
automatisch Listen mit
ganzen Zahlen zu generieren , die
eine bestimmte Reihenfolge haben Nehmen wir an, Sie
möchten eine Liste von 1—10,
eins, zwei, drei, vier,
fünf, sechs, sieben,
acht, neun, zehn haben.
Wie können wir das machen? Nun, eine Möglichkeit
besteht natürlich darin, das aufzuschreiben, aber es gibt einen besseren Weg, und das ist, einen Bereich zu verwenden. Range ist eine andere Art von Objekt, genau wie wir
Listen und ganze Zahlen haben Wir haben auch Bereiche. Also die Bereiche Null und 11, und lassen Sie uns die Noten der Schüler überprüfen, um zu sehen, was diese Variable jetzt als Wert
hat. Führen Sie das aus, und das
ist ein Bereichsobjekt. Also noch nicht viel zu sehen. Aber wenn du das
in eine Liste umwandelst und erneut ausführst. Schließlich werden
wir diese Ausgabe erhalten. Also Null, eins, zwei, drei, vier, fünf, sechs, sieben,
acht, neun, zehn. Also
ist Student Grades jetzt ein Listenobjekt. Und dieses Listenschlüsselwort
hier ist eine Klasse. Es stellt also
den letzten Datentyp dar
und wird hier verwendet, um einen Bereichsdatentyp
in einen Ist-Datentyp
umzuwandeln in einen Ist-Datentyp , weil ein Bereich
einfach so angezeigt wird. Es ist also nicht
sehr vorteilhaft, wenn man sieht, dass die Ausgabe nicht so klar ist, also konvertieren wir sie in
einen Datentyp der kleinsten Größe. Und wie funktioniert es? Nun, es beginnt bei Null bis zu der Zahl
vor dieser Zahl, die zehn ist, also Null bis Zehn. Deshalb haben wir Null bis Zehn. Natürlich kannst du hier alles
haben. Also eins bis acht, ich müsste
neun schreiben, um eins auf acht zu bekommen. Also mindestens eins bis acht. Sie können hier auch
ein anderes Argument haben, zwei, und lassen Sie uns sehen, was
sich dadurch in der Ausgabe ändert. Wir erhalten also diese Ergebnisse. Diese beiden sind der Schritt. Also eins, drei, fünf, sieben, das
bedeutet, dass du bei eins
anfängst und dann um einen Schritt
von zwei weitergehst. Also eins plus zwei, Sie haben drei, drei plus zwei, Sie haben
fünf, fünf plus zwei, Sie haben sieben, sieben
plus zwei, Sie haben neun, aber neun ist nicht im Bereich
enthalten. Der Bereich reicht bis zu acht, sodass die Liste bei sieben
enden wird. Natürlich können
Sie hier beliebige Schritte ausführen, z. B. drei, und Sie
erhalten unterschiedliche Ergebnisse. Das waren also einige
weiterführende Informationen über Listen und auch Bereiche. Damit danke ich dir und werde im
nächsten Video mit dir sprechen. Wir sehen uns.
16. 16. Was sind die Attribute von Datentypen: Okay, Sie kennen also
Zeichenketten, Sie wissen schon, Gleitkommazahlen, Sie wissen schon,
ganze Zahlen, Sie wissen schon, Listen Okay, du weißt schon, Datentypen. Aber wie kann man eigentlich etwas in Python
machen? Was kann man mit
diesen Datentypen machen? Nun, um Ihre
Frage zu beantworten, sollten Sie den Befehl Hirsch
ansehen. Nun, lassen Sie mich jetzt anfangen,
die Python-Shell etwas
häufiger zu verwenden , um die Dinge schneller zu erledigen. Also werde ich das in zwei
Teile aufteilen. Dies ist für
die Ausführung der Python-Datei, dies ist für die
interaktive Python-Shell. Was können wir also mit der Liste machen? Das kannst du
herausfinden, indem du Deer machst. Dear ist eine Funktion in
Python, die
dir all die Dinge gibt, die du mit einem bestimmten Typ
machen kannst. Bei einer Liste handelt es sich in diesem
Fall also um
Attribute einer Liste. Sie können dasselbe
für das Einchecken von int tun. Sie können dasselbe tun, um beispielsweise float, dear float,
dear STR zu
überprüfen .
Lassen Sie uns bei SDR anhalten, bevor wir zur Liste gehen Bei Zeichenketten können Sie sie
beispielsweise sie
beispielsweise diesen Methoden
in Großbuchstaben umwandeln Um herauszufinden, was Upper macht, möchten
Sie help STR verwenden, das ist der Typ, der das Attribut upper
hat Nun, Attribute
sind all das, und sie können entweder
Methoden oder Eigenschaften sein. Das wissen Sie erst, wenn
Sie mit Hilfe nachfragen. Das ist also eine Hilfedokumentation
für die obere Methode. Es ist eine Methode, wie
Sie hier sehen können,
Q, um zu beenden und zur Shell
zurückzukehren. Dann lass uns weitermachen
und das benutzen. Hallo, das Oberteil. Sie verwenden eine Methode mit runden
Klammern und Klammern. Und das gibt
die großgeschriebene Version
von Hello zurück . Wenn wir stattdessen Title
verwenden,
wird nur der
erste Buchstabe groß geschrieben Natürlich können Sie Variablen
verwenden. Und Sie erhalten die gleiche Ausgabe. Nun, was haben wir für Listen? Wie wäre es mit der Berechnung des
Notendurchschnitts der Schüler? Lass uns das im nächsten Video machen.
17. 17. So findest du heraus, welchen Code du brauchst: Um den Durchschnitt
dieser Noten zu berechnen, wollen
wir herausfinden, ob es für einen
Listentyp eine Art Mittelwert- oder
Durchschnittsmethode gibt, mit
der wir
den Durchschnitt seiner Werte ermitteln können . Dafür
schauen wir bei der Hirschliste nach. List ist der Name, der alle Listen
repräsentiert. Das ist also ein Typ, und dies ist eine Instanz
dieses Listentyps. Liebe Liste. Und lassen Sie uns hier einen
kurzen Blick darauf werfen. Haben Sie eine durchschnittliche oder durchschnittliche
Methode? Ich glaube nicht. Es gibt also keine Methode
vom Typ Liste, mit der wir den
Durchschnitt der Listenwerte berechnen könnten. bedeutet jedoch nicht, dass es in
Python keine Methode gibt , um das zu tun. Mensch oder Durchschnitt ist keine Methode, aber es kann eine Funktion sein. Erinnerst du dich an die Druckfunktion? also so drucken, sehen
Sie, dass beim Drucken
die Punktnotation nicht verwendet werden muss. Zum Beispiel benötigte die Upper-Methode eine Punktnotation,
weil Upper eine Methode ist, die dem Halo-Typ
zugeordnet Und Drucken ist eine Funktion. Es ist eine unabhängige Funktion
, die mit vielen Typen funktioniert, nicht nur mit Zeichenketten, nicht
nur mit Ganzzahlen und Gleitkommazahlen Mit print können Sie
alles drucken. Deshalb ist es nicht
an einen bestimmten Typ gebunden. Wo sehen wir also
eine vollständige Liste der Funktionen, die wir verwenden können? Sie können das tun, indem Sie
die integrierten Befehle wieder, Unterstrich, Unterstrich, Unterstrich,
Unterstrich und schließende Klammer Und das ist eine vollständige Liste der Funktionen, die Sie verwenden können Lassen Sie mich also nach einer
Mittelwertfunktion oder einer Durchschnittsfunktion suchen. Nein, es ist nicht da, aber es gibt eine Summenfunktion. Was wir also tun können, ist, sagen
wir, meine Summe
nicht als
Variablennamen zu verwenden, weil Sie sehen
können, dass sum
ein reserviertes Schlüsselwort ist. also
die Noten der Schüler zusammenzählen, erhalten wir die
Summe dieser drei Zahlen. Dann möchte ich zählen, wie viele
Artikel in dieser Liste enthalten sind. Haben wir da also
etwas gezählt? Vielleicht nicht. Nun, ich weiß, dass
es keine Zählmethode gibt. Aber wir haben diesen Stift, was bedeutet, dass Sie
überprüfen können, was er bedeutet. Also gib die Anzahl der
Artikel in einem Container zurück. Eine Liste wird also auch als Container bezeichnet
. Nehmen wir an, die Länge entspricht der
Länge und den Noten der Schüler. Dann
können wir endlich den Mittelwert ermitteln, meine Summe geteilt durch
die
Länge ist, und den Mittelwert ausdrucken, außer dass das
der Mittelwert all dieser drei Zahlen ist.
18. 18. Wörterbuch-Datentypen: Sie sind also Lehrer
und
wollten die
Durchschnittsnoten Ihrer Schüler berechnen, und das haben wir mit diesem Algorithmus hier und
dieser Datenstruktur gemacht Algorithmus hier und
dieser ,
um die Noten zu speichern. Das Problem dabei ist, dass Sie nicht
wissen, welche Klasse von wem ist. Eine Liste ist zwar eine gute Datenstruktur, um eine Reihe von Elementen zu
speichern, sie ist nicht gut genug, wenn diesen Elementen eine Art
Identität zugeordnet ist. In diesem Fall
möchten Sie ein Wörterbuch verwenden. Sagen wir
Schülernote, geschweifte Klammern. Das ist eine Syntax
für ein Wörterbuch. Und dann benutzt du
die Namen deiner Schüler. Nehmen wir an, Mary eine Spalte, machen Sie ein Leerzeichen oder kein Leerzeichen, wo immer Sie möchten,
aber es ist gut, dort
ein Leerzeichen zu haben , um
es lesbarer zu machen Und dann schreibst du
die Note von Mary. Sagen wir S 8,8 und Johannes-Kolumne 7,5. Der Unterschied zwischen dem
Wörterbuch und der Liste sind die Klammern,
verschiedene Klammern. Und dann wird dies als
ein Element in einem Wörterbuch betrachtet. Dies wird als
ein Element in einer Liste betrachtet. Elemente in einem Wörterbuch
bestehen also aus Schlüsseln. Das ist ein Schlüssel und
Werte, das ist ein Wert. Eine Liste wäre besser
geeignet, wenn wir
beispielsweise eine Reihe
von Temperaturwerten speichern müssten. Nehmen wir an, am Montag herrschten diese Temperaturen
am Montag. Und schließlich, wie berechnen wir den Durchschnitt, wenn wir ein Wörterbuch
haben? Da es sich um Schlüssel
- und Wertepaare handelt, können
Sie
die Summe nicht einfach so zusammensetzen. Sie müssen die Summe
dessen angeben, was Sie erhalten möchten. Also Noten der Schüler. Und wenn Sie in ihrem
Diktat nach einem Wörterbuch suchen, werden
Sie feststellen, dass Wörterbücher diese Werte
haben, was eine Methode ist Diktieren Sie die Werte, es ist eine Methode, und sie bietet eine Ansicht In einfachen Worten, es gibt Ihnen
die Werte eines Wörterbuches. Wenn Sie also dieses Wörterbuch bekommen, stellen Sie die Warteschlange für „Beenden“ hier in die Warteschlange, fügen Sie es hier ein und sehen Sie, wie die
Schüler diese Werte bewerten. Dadurch erhalten Sie
diesen Datentyp. Es ist immer noch ein Datentyp. Es sieht aus wie eine Liste. Es ist nicht gerade eine Liste, aber sie verhält sich wie eine Liste
mit diesen drei Werten Es ist ein Typ mit diktierten Werten. Diese Methode erzeugt diesen Typ. Deshalb können Sie das dort
hinzufügen, nicht die Klammern, vergessen nicht zu speichern und vergessen Sie nicht, auszuführen, um
die Ausgabe zu erhalten , und das ist Durchschnittswert
der
Wörterbuchwerte Um die Schlüssel des
Wörterbuchs zu erhalten, geben Sie einfach Schlüssel ein. Und Sie erhalten diesen
Typ mit den gestorbenen Schlüsseln mit den Schlüsseln
des Wörterbuches als Elementen
des Arrays mit den gestorbenen Schlüsseln.
19. 19. Was einen Programmierer zum Programmierer macht: Was macht einen Programmierer zu einem Programmierer
? Mit anderen Worten, was müssen Sie wissen
, um eine Computeranwendung programmieren zu können Das werde ich dir in diesem Video
sagen. Es gibt drei Dinge, die Sie wissen
müssen, um zu programmieren, um ein Programm zu programmieren. Und das erste ist, dass Sie die Syntax kennen
müssen. Sie müssen zum Beispiel wissen, dass
Sie, um einige Ausgaben
ausdrucken zu können, Ausdrucke gefolgt von Klammern verwenden müssen und dann die Eingabe
in diese Klammern setzen Das ist also Teil einer Syntax,
wenn Sie wissen, ob Sie Klammern oder Kommas usw.
verwenden möchten .
Das ist das Erste. Das nächste ist, nehmen wir an
, wir bauen ein Programm, das
den Durchschnitt aus
einer Reihe von Werten berechnet den Durchschnitt aus
einer Reihe von Werten Dann möchten Sie wissen, welchen
Datentyp Sie verwenden müssen, um diese Daten
darzustellen Wenn
Sie also beispielsweise Daten als
Namen von Schülern haben, gefolgt von
der Note jedes einzelnen Schülers,
dann wissen Sie, dass Sie ein Wörterbuch
verwenden müssen, da ein Wörterbuch
aus Schlüsseln und Werten besteht. Die richtige Datenstruktur wäre
hier also ein Wörterbuch. Aber wenn Sie nur Werte
ohne Schülernamen hätten, dann würden Sie über eine
Liste nachdenken, weil eine Liste
nur aus einer Reihe von Elementen besteht ,
Werten ohne Schlüssel. Also Datenstrukturen, Sie
müssen Datenstrukturen kennen und Sie müssen die
Syntax kennen. Das sind zwei Dinge. Die dritte Sache ist, dass
Sie
den Algorithmus kennen müssen , den Sie verwenden müssen, um die erwartete Ausgabe zu erzeugen. In diesem Fall sollten Sie also
wissen, welche Methoden Sie verwenden können, oder Sie sollten wissen, wie Sie
diese Methoden erstellen , falls
sie nicht existieren. In unserem Beispiel müssen
Sie also wissen, wie Sie diese Durchschnittsmethode
erstellen. Das sind also die drei
Dinge, die Sie
wissen müssen, um ein Programm zu erstellen. Das sind die Grundlagen. Ich hoffe, das macht mir den Weg zum Programmieren
klarer , und ich werde in
den nächsten Videos mit Ihnen sprechen. Wir sehen uns.
20. 20. Tuple-Datentypen: Dieser hier ist eine Liste. Und jetzt ist es ein Sturz. Ein Tupel ist also wie eine Liste,
aber mit Klammern, nicht mit eckigen Klammern Wenn Sie es ausdrucken würden, würden
Sie natürlich dieselbe
Darstellung wie hier erhalten Also 14, fünf, 145. Die Klammern
und die Klammern sind jedoch nicht der einzige Unterschied
zwischen Listen und Tatsächlich ist dies nur ein
Unterschied in der Syntax. Der wirkliche Unterschied
besteht darin, dass Tupel, wie dieser
hier, unveränderlich sind und Listen wie diese veränderbar sind Das bedeutet, dass Sie bei den Temperaturen vom letzten
Montag zwei weitere Elemente
zur Liste hinzufügen können, indem
Sie
beispielsweise die Append-Methoden verwenden beispielsweise Wenn Sie also die
Temperaturen vom Montag bis heute überprüfen, erhalten
Sie eine mutierte Liste Diese Veränderlichkeit macht sie
sehr dynamisch. Sie werden später sehen, wie wir bei diesen Batch-Operationen
und jeder Operation Elemente zur
Liste hinzufügen, Elemente zur
Liste hinzufügen während wir diese Elemente
generieren, diese Werte mit
einigen Funktionen Dies ist jedoch bei Tupeln nicht der
Fall. Wenn Sie versuchen, ein Tupel anzuhängen, erhalten
Sie eine Fehlermeldung,
da ein Tupel eigentlich überhaupt
keine
Anfügemethode Ebenso gibt es keine Methode zum Entfernen,
wie es Methode zum Entfernen,
wie Vier ist also nicht mehr da. Tupel
haben allerdings den Vorteil, dass sie etwas
schneller sind als Listen,
aber man sollte sich
überlegen, was man verwenden soll Ob Sie nun
List oder Topples verwenden, Sie sollten sich überlegen, ob das Array , das
Sie erstellen, im Laufe
des Programms geändert
wird oder Im Moment werde ich mich also nicht
eingehender mit Stürzen und Is befassen. Aber wenn wir diese
zehn Anwendungen
während des Kurses erstellen , werden
Sie die
Hauptunterschiede zwischen den
beiden verstehen , indem Sie sehen, wie sie in echten Programmen
funktionieren
21. 21. Datentypen in der realen Welt verwenden +: Okay, Sie kennen jetzt einige der wichtigsten
Python-Datentypen,
aber ich wette, Sie sind
immer noch verwirrt, wie diese Datentypen in der realen
Welt verwendet werden Normalerweise würden Sie
diese Daten beispielsweise in einer
Excel-Datei oder einer Textdatei speichern. Macht es also
Sinn, sie so oder
so
in ein Python-Wörterbuch zu schreiben ? Liste? Nein, tut es nicht. Es gibt tatsächlich Möglichkeiten, die Daten
automatisch aus
Ihrer Excel-Tabelle nach
Python zu laden , um dieses Wörterbuch zu erstellen Sie müssen das Wörterbuch immer noch
erstellen, aber Sie müssen
die Daten nicht in
die
Python-Punkt-Py-Datei eingeben , wie ich es hier getan habe Sie werden einige
spezielle Python-Erweiterungen verwenden , um die Daten hier zu laden. Dann verarbeiten Sie das
Wörterbuch wie wir es hier gemacht haben. Aber mach dir keine Sorgen. Ich werde das behandeln und
wir werden später im Kurs im
Bewerbungsteil
einige nette Bewerbungen haben später im Kurs im
Bewerbungsteil
einige nette . Bleib dran.
22. 22. Operationen mit Datentypen: Nehmen wir an, Sie haben eine Liste Lebensmittelartikeln und Sie
haben ein Programm erstellt, und Sie haben
diese Artikel in
einer Python-Liste mit
eckigen Klammern gespeichert . In Ihrem Programm können
die Benutzer nun Artikel aus dieser Liste entfernen und
hinzufügen. Entfernen und Hinzufügen sind also zwei Beispiele für Operationen
, die Sie mit Listen ausführen können. Liste ist also ein Datentyp und kann
verschiedene Operationen haben, die Sie auf einen Listendatentyp anwenden
können Und dann
haben Sie vielleicht an einer anderen
Stelle in Ihrem Programm Text , und Sie können
diesen Text großschreiben, sodass Großschreibung
eine weitere Operation ist , die Sie auf
einen Stream-Datentyp anwenden können Jeder Datentyp hat also
seine eigenen Operationen. Das werden
Sie also in diesem Abschnitt lernen. Das war also ein
Einführungsvideo. Wir sehen uns im nächsten Video.
23. Fehlermeldungen in Python 3: In dieser Vorlesung
werden wir uns ansehen, was in Python 3.10 in
Bezug auf Fehlermeldungen
neu ist in Python 3.10 in
Bezug auf Fehlermeldungen
neu Python 3.10 wurde
im Oktober 2021 veröffentlicht und enthält einige
Verbesserungen in Bezug auf Fehlermeldungen und auch
andere Verbesserungen, die ich in den
nächsten Videos in den
nächsten Abschnitten eingehen werde nächsten Videos in den
nächsten Abschnitten also an, Nehmen
wir also an, Sie haben einen Ausdruck mit
viel Nachdruck Sie möchten beispielsweise
eine Zeichenfolge haben und das I-Zeichen
in dieser Zeichenfolge
durch ein Y-Zeichen
ersetzen . Aber wenn Sie eine Klammer vermissen und das Programm
mit Python 3.9 ausführen, haben wir natürlich den
Syntaxfehler, weil die Syntax nicht korrekt
ist, aber der Fehler ist nicht
so Wir erhalten also beim Parsen den Syntaxfehler
unerwartetes EOF. Sie wissen also immer noch nicht, was
Sie in Ihrem Code falsch gemacht haben. Also musst du zurückgehen
und es noch einmal lesen. Vergleichen Sie das jetzt
mit Python 3.10. Wenn ich also zu Python 3.10 als
Interpreter wechsle und
den Code mit 3.10 ausführe, ist der
Syntaxfehler
diesmal Also Syntaxfehler,
diese Klammer hier drin wurde nie geschlossen.
Also dieser Jetzt wissen wir, dass, wenn wir hier eine Klammer
beginnen, wir sie am Ende schließen sollten Das ist die erste Klammer,
die offene Klammer. Ich sollte eine schließende Klammer haben.
Also lass uns das hinzufügen Ein anderes Beispiel
wäre, wenn Sie eine Liste haben, zum Beispiel eins, zwei, und dann fehlt Ihnen ein Komma, und wenn Sie mit Python 3.10 laufen, werden
Sie wieder
diesen Syntaxfehler haben :
ungültige Syntax Vielleicht hast du das Komma vergessen
und es zeigt uns mit
diesen Pfeilen auf die
Stelle, und es zeigt uns mit an der das Komma Wenn du das mit 3.9 vergleichst, ist
das nicht die beste Erklärung Es heißt zwar ungültige Syntax, aber es
heißt nicht ausdrücklich , dass hier
ein Komma fehlt. Dennoch ist Python 3.10 besser
darin, fehlende Kommas zu erkennen. Die Idee ist, dass
Sie in Python 3.10 den Syntaxfehler und auch einige zusätzliche Informationen erhalten Lassen Sie uns dieses Video
mit einem dritten Beispiel schließen. Wenn Sie einen Tippfehler machen, wir an, Sie haben Real
Pace statt Replace geschrieben, und nehmen wir das Komma hier Also ist alles in Ordnung, außer diesem Tippfehler hier Wenn Sie das also zuerst
mit 3.9 ausführen, erhalten
Sie diesen Attributfehler Es besagt, dass das String-Objekt kein Attribut replace
hat. Also heute
hat das Attribut
eigentlich kein richtiges Tempo. Und du fragst dich,
ob replace
gar kein Attribut
von Zeichenketten ist . Also vergleiche das mit 3.10, 3.10 run, und das ist
der Attributfehler Also meinten Sie ersetzen, das ist ein sehr expliziter Fehler und es hilft uns, diesen Fehler schnell zu
beheben Deshalb wollte ich Python drei mit Python
3.10
vergleichen , um die
Unterschiede in Bezug auf Fehler hervorzuheben Nun, im Kurs werden
wir
einen speziellen Abschnitt über Fehler haben,
also wie man
mit ihnen umgeht , wie man sie liest,
wie man sich nicht über Programmierfehler frustriert,
weil
jeder Programmierer Fehler macht,
also muss
man wissen, wie man sie sich nicht über Programmierfehler frustriert wie man sie liest,
wie man sich nicht über Programmierfehler frustriert,
weil
jeder Programmierer Fehler macht,
also muss
man wissen, wie man Im Moment bist du
noch ein Anfänger, also schau dir weiterhin
Videos an und du wirst immer besser in Python werden. Wir sehen uns
im nächsten Video.
24. 24. Mehr Operationen mit Listen durchführen: Lassen Sie mich Sie nun mit
Listendatentypen
etwas vertrauter machen , indem ich Ihnen zeige,
was Sie mit ihnen machen können Sie wissen bereits, dass Sie bei DR List nachfragen können,
was
Sie mit ihnen machen können Sie können die
Attribute ignorieren, die
mit einem doppelten Unterstrich beginnen und mit einem doppelten Unterstrich
enden Sie sind im Grunde Attribute, die von Python intern
verwendet werden, und selten werden Sie sie verwenden
müssen. Im Moment können Sie sie
einfach ignorieren und sich auf das konzentrieren,
was Sie tatsächlich verwenden werden, nämlich dieses Set hier. Lassen Sie mich eine weitere Python-Shell öffnen und einige Operationen
auf diese Liste in
dieser Python-Shell
anwenden . So können wir sehen, welche
Methoden wir in
diesem Fenster anwenden können , und wir können
die Methoden in diesem
anderen hier anwenden . Und ich möchte nicht, dass du dir nur im Dunkeln
zeigst, was das
macht. Ich möchte dir
zeigen, wie du selbst
herausfinden kannst ,
was diese Dinge bewirken. Verwenden Sie also immer die Hilfefunktion. List, lass uns
die Append-Methode ausprobieren. Jetzt werde ich die Variable
eingeben, aber Sie
müssen nicht alles eingeben Sobald Sie mit der
Eingabe dieses Variablennamens begonnen haben, können
Sie die Tabulatortaste verwenden. Dadurch wird
der Variablenname automatisch vervollständigt. Verwenden Sie dann eine
Punktnotation und fügen Sie sie an, und dann zwei Klammern In der Klammer werden
Sie also sehen, dass dafür Eigentlich ist es
nur ein Argument. Es ist nur das Objekt selbst. Self
bezieht sich auf die Liste selbst, und Objekt ist eigentlich was Sie an diese Liste
anhängen möchten Nehmen wir an, Sie möchten 8.1 auf diese
Weise anhängen.
Wenn Sie die Temperaturen am Montag überprüfen, werden
Sie feststellen, dass es jetzt
einen weiteren Das ist also die Syntax von append. Sie ignorieren immer
self, weil self automatisch als Argument
an diese Methode übergeben
wird und self im Grunde
die eigentliche Liste selbst ist Versuchen wir es mit einer anderen Methode. Hier warten, um zu beenden, Hilfliste zu löschen. Wie funktioniert es? Nun, in diesem Fall sehen Sie, dass es keine
Argumente gibt. Also, Montagstemperaturen
, die einfach so klar sind. Und was es tut, es löscht einfach die Liste, es löscht alle Einträge Lassen Sie mich auch den Index ausprobieren und die Liste für Sie zum Ausprobieren
übrig lassen. Index erhält tatsächlich
einen Wert, einen Start und einen Stopp und gibt
den Index des Werts zurück. Was ist also ein Index? Lassen Sie uns den Punktindex ausprobieren, der Wert mit Wert, den Python
bedeutet , ist einer der
Werte der Liste. Jetzt, da wir eine
Liste ohne Werte haben, werde
ich die
Liste noch einmal so neu erstellen Das ist jetzt unsere Liste. Lassen Sie mich einen Index
mit Klammern und dem
Wert versuchen , sagen wir 8,8 Das wird eins zurückgeben.
Warum? Das liegt daran, dass Listen eine Indexsynchronisierung
im Hintergrund haben. Auch wenn wir es nicht sehen, ist
jedes dieser Elemente einem Index
zugeordnet. Der erste hat
einen Index von Null. Der zweite hat einen Index von eins und der letzte hat
einen Index von zwei. In diesem Fall und so weiter. In diesem speziellen Fall sehen
wir nun auch dieses Argument und dieses andere
für die Indexmethode. Wenn Sie diese Werte jedoch nicht übergeben
möchten, können
Sie einfach einen Wert übergeben. Also, wie ich es hier getan habe, 8,88 bedeutet das,
dass 8,88 der Wert Standardmäßig ist Start
gleich Null und Stopp
entspricht diesem Wert Was sind also Start und Stopp? Nun, wenn es Null ist,
wie es standardmäßig ist, bedeutet
das, dass Sie nach 8,8
suchen, beginnend mit dem ersten
Element der Liste. Der Interpreter startet
die Suche also mit dem ersten Element, also dem Element mit dem Index Null, und wir werden nach 8,8 suchen, und er wird es finden und
Ihnen sagen, dass es
einen Index von eins hat Wenn Sie Python jedoch anweisen
möchten, mit dem Element mit
Index zwei zu beginnen, sagen wir, also eine Suche
von hier aus zu starten und nach rechts von 7.5
vorzugehen, was zufällig
keine weiteren Elemente enthält. Aber wie dem auch sei, also
überspringst du diesen Teil
der Liste. In diesem Fall Der Interpreter wird
Ihnen sagen, dass 8.8 Zeitpunkt nicht in der Liste
enthalten
ist. Sie haben auch den Stopp
, der standardmäßig
diese große Zahl ist Wenn Sie also die Suche
auf den Index auf der rechten Seite
einschränken möchten , können
Sie das auch tun. Aber standardmäßig
werden Sie diesen Wert bei Null belassen. Und das wird dir sagen, dass
die Zahl diesen Index hat. Mehr zur Indexierung finden Sie
im nächsten Video.
25. 25. So greifst du auf Listenelemente zu: Zuvor habe ich Ihnen gezeigt, dass Sie die
Indexmethode verwenden können,
um den Index eines Elements abzurufen. Wie können wir nun das Gegenteil tun? Wie können wir einen
Artikel anhand seines Indexes ermitteln? Nun, dafür
müssen wir uns noch einmal
die Liste der Attribute ansehen , die wir auf die Liste anwenden können. Und ich weiß, dass wir
die Methode underscore get item
underscore verwenden können die Methode underscore get item
underscore Okay, ich weiß, ich habe
Ihnen bereits gesagt, dass Sie
diese Methoden selten verwenden
werden, und tatsächlich benötigen
wir diese Methode nicht für das, was ich jetzt tun werde, aber lassen Sie mich gleich
erklären, warum, Sie werden es Das ist ein sehr geheimes Geheimnis von Python. Lassen Sie mich also weitermachen und get item mit
doppelten Unterstrichen
verwenden, und natürlich ist es eine Methode, also braucht sie diese runde
Klammer Versuchen wir also, das Element mit
Index eins zu
bekommen . Welches wäre das? Nun, 8.8. Nun, das
Geheimnis ist, dass Sie verwenden
müssen dort
nicht diese hässliche Methode mit
diesen doppelten Unterstrichen Alles, was Sie tun müssen,
ist diese Syntax zu verwenden, den Variablennamen
so
aufzurufen und dann offene und
schließende eckige Klammern hinzuzufügen und dann innerhalb dieser Klammern
einfach den Index einzugeben Dadurch erhalten Sie wieder den Wert, das Element für diesen Index. Obwohl Sie das tun, ruft
Python im Hintergrund
tatsächlich diese Methode auf und übergibt dieses Element, diesen Wert, als Eingabe
für diese Methode. Das ist also eigentlich das, was im
Hintergrund vor sich
geht, aber mit Python können Sie es hier besser machen .
26. 26. So greifst du auf Listen-Slices zu: Ich habe hier eine Liste mit
fünf Artikeln. Lassen Sie mich Ihnen zeigen, warum Sie
eine n-Funktion verwenden , und Sie sehen, dass
sie wirklich fünf Elemente hat. Jetzt können Sie nicht nur auf
einzelne Elemente
aus Ihrer Liste zugreifen , wie das
Element mit dem Index drei, Null, eins, zwei, drei, 6.6, sondern auch auf
Teile der Liste zugreifen. Nehmen wir an, 1-4, dann
erhalten Sie eine weitere Liste. Die Ausgabe
dieser Datei ist also ebenfalls eine Liste, und sie wird
die Elemente mit Index eins,
Index zwei und Index drei enthalten . Die Obergrenze
ist nicht enthalten. Es ist nie
in einem Python-Slice enthalten. Das ist also ein Slice, und das ist die
Ausgabe des Slice. Versuchen wir, die ersten
beiden Elemente der Liste zu finden. Die ersten beiden Elemente haben
einen Index von Null und Eins. Also fangen wir mit Null an. Da wir auch das
Element mit Index eins haben wollen, werden
wir
dort zwei schreiben, sodass wir eins bekommen. Das ist die Ausgabe. Der Index zwei
ist also nicht enthalten, 7.5 ist nicht enthalten. Sie können dafür auch eine
Abkürzung verwenden. Sie müssen nicht Null
eingeben, wenn
Sie alles
mit dem ersten Element beginnen möchten. Dadurch erhalten Sie dieselbe Ausgabe. Ebenso können Sie, wenn Sie, sagen wir,
die letzten beiden Elemente abrufen
möchten , damit beginnen,
Null, Eins, Zwei, Drei zu zählen. Drei, fange bei drei an, das hat einen Index von vier, also
schreiben wir dort fünf. Obwohl wir
die erwartete Ausgabe erhalten haben, sollten
Sie dafür besser
die Abkürzung verwenden. Das ist also intuitiver weil es Ihnen sagt, dass Sie vom Element mit
Index drei bis zum
letzten Element der Liste
extrahieren Index drei bis zum
letzten Element der Liste Also ohne zu wissen, wie viele
Elemente die Liste enthält. In ähnlicher Weise extrahieren
Sie hier vom allerersten Element bis
zum Element mit Index eins nun bei großen Listen Wenn Sie nun bei großen Listen die letzten Elemente
extrahieren möchten, macht
es möglicherweise wenig Sinn, von Anfang an
zu zählen, also
eins, zwei, drei, vier,
fünf, sechs usw. Aber Python hat ein anderes
Indizierungssystem, und das werde ich Ihnen
im nächsten Video zeigen. Und
27. 27. So verwendest du negative Indizes: Wie kommen wir also an den
letzten Punkt dieser Liste? Nun, Sie können das tun, indem Sie
auf die Liste und dann auf eckige Klammern und dann auf den Index
des gewünschten Elements verweisen. 9,9 hat also einen Index von Null, Eins, Zwei, Drei, Vier, Vier Okay. Aber eine intelligentere Methode ist es, eine negative Indizierung
zu verwenden, was bedeutet, dass
Sie, anstatt zu zählen, einfach minus
eins schreiben können und Sie 9,9 erhalten Jedes Element einer
Python-Liste hat also zwei Indizes, einen negativen und einen positiven Index Also minus eins dafür, minus zwei dafür, minus drei, minus vier, minus fünf Also minus fünf ist eigentlich der erste
Punkt, 9.1. Und natürlich können Sie das Aufteilen von
Listen mit
negativer Indexierung durchführen Aufteilen von
Listen mit
negativer Indexierung Versuchen wir, die letzten beiden
Elemente zu finden. Um das Schneiden durchzuführen, müssen
Sie also den Index des ersten Elements
des Segments eingeben Das erste Element
der Scheibe ist also 6,6 und
6,6 hat einen negativen Index von zwei Verwenden Sie eine Spalte, und dann möchten Sie
hier nichts zuweisen, weil Sie alles wollen
, was nach 6.6 kommt. Also einfach so, und
du bist am Ende der Liste. In ähnlicher Weise können Sie zum Beispiel minus
vier minus zwei machen , das ergibt 8,8
minus vier minus drei, und minus zwei ist nicht in der Schicht
enthalten, weil ich Ihnen gesagt habe,
dass die Obergrenze niemals in der Schicht enthalten
ist. Du bekommst also nur dies und das. Sie können auch am
Anfang
der Liste beginnen , um 9.1 zu erhalten, den ersten Eintrag wie diesen.
28. 28. So greifst du auf Zeichen und Slices in Strings zu: Zu Ihrer Überraschung oder nicht, Zeichenketten haben auch
ein Indexierungssystem Die gute Nachricht ist, dass sie
genau das gleiche
System wie Listen haben genau das gleiche
System wie Listen Sie haben also positive
und negative Indizierungen, und Sie können sie aufteilen und von ihnen aus auf Elemente zugreifen Lassen Sie mich eine kurze
Demonstration machen. Zeichenfolge Hello
gibt Ihnen die Zeichenfolge E, die immer noch eine Zeichenfolge ist. Hello ist eine Zeichenfolge,
E ist auch eine Zeichenfolge, eine negative Indizierung
und auch Slicing Eine coole Sache, die du tun kannst,
ist, mich diese Liste holen zu lassen. Es ist also eine Liste, die
verschiedene Arten von Objekten enthält. Und was Sie tun können, ist, darauf zuzugreifen, erraten
Sie es? Nun, das ist die gelbe Schnur, also der erste Punkt auf der Liste. Dann können Sie eine
Kettenindizierung verwenden, z. B. wenn Sie
dort zwei eingeben , raten Sie mal, was
Sie erhalten werden Nun, Sie erhalten das erste L weil es
einen Index von zwei hat, also Null für H eins, für E, zwei für L. Weil dieser Teil
hier ein eigenständiger Wert ist und dieser andere Teil
das Element mit Index
zwei dieses Werts erhält , der zufällig eine Zeichenfolge So einfach ist das.
29. 29. So greifst du auf Elemente in Wörterbüchern +: Haben
Wörterbücher dasselbe Indexsystem wie Lass uns das herausfinden. Ich
habe dieses Wörterbuch hier auf meiner
Python-Shell, Studentenklasse. Versuchen wir also, vielleicht den
zweiten Artikel zu bekommen. Nein, da steht Schlüsselfehler eins,
was bedeutet, dass das
Wörterbuch
keinen Schlüssel mit dem Namen One Also, welche Schlüssel hat das
Wörterbuch? Vielleicht derselbe Schlüssel. Ja. Wörterbücher
haben also
statt Ganzzahlen Schlüssel Eine Liste wäre also Zugriff. die Elemente der Liste würde über Ganzzahlen zugegriffen
werden, die bei Null beginnen und bis zum letzten
Element der Liste
enden, dem Index des letzten
Elements der Liste Bei Wörterbüchern ist das
anders, wie Sie sehen können, und genau das
macht Wörterbücher zu Wörterbüchern Sehen wir uns ein weiteres Beispiel dafür an, wie nützlich
das ist. Nehmen wir an, Sie haben
dieses Wörterbuch, vom Englischen ins Portugiesische. Es ist ein echtes menschliches Wörterbuch.
Du hast da ein paar Wörter. Sagen wir in Suva auf
Portugiesisch und die Sonne wird es sein. Entschuldigung, ich habe da einen Tippfehler. Codes. Also, wenn du die
portugiesische Version von Sun willst, schreibst
du das, und das gibt
dir diese Version. In diesem Fall
wäre es also sehr nutzlos, ganze Zahlen als
Indizes zu Jeder Anwendungsfall hat also seine eigene Datenstruktur
, die in Python verwendet werden kann.
30. 30. Weitere Grundlagen von Python: Funktionen und Konditionen: Hallo, willkommen zu einem neuen Video Dies ist ein
Einführungsvideo zum Abschnitt Funktionen und
Bedingungen. Jetzt betreten Sie also einen
fortgeschritteneren Abschnitt von Python. Funktionen und Bedingungen sind einige fortgeschrittene
Kernkonzepte von Python, und dies sind sehr grundlegende
Blöcke, mit denen Sie Ihre Programme
intelligenter und überschaubarer machen können Ihre Programme
intelligenter und überschaubarer machen intelligenter und überschaubarer Sie machen Ihre Programme also
intelligenter, indem Sie sie dazu bringen, Entscheidungen zu treffen, die Sie mithilfe von
Bedingungen implementieren können Wenn Ihr Programm also
einige Eingaben erhält und
Sie nachdenken möchten, möchten
Sie Ihr
Programm dazu bringen, darüber nachzudenken, ob diese Eingabe in Ordnung ist oder nicht, und Sie möchten
etwas tun, wenn diese Eingabe
wahr ist , und etwas anderes,
wenn diese Eingabe falsch ist Sie treffen also Entscheidungen in Ihrem Programm anhand
eines bedingten Blocks. Und dann gibt es Funktionen
auf der anderen Seite, Funktionen werden verwendet
, um Codeblöcke einzuschließen, also ähnliche Codeblöcke. Es hilft dir, deinen Code zu organisieren. So
könnte eine Funktion beispielsweise USD in Euro umrechnen. Diese Funktion macht
also bestimmte Dinge
und macht es gut. Es erhält also USD als Eingabe und gibt Ihnen
Euro als Ausgabe. In der Funktion haben Sie also die mathematischen Operationen
, die die Konvertierung durchführen. Bedingungen und Funktionen
sind also zwei Dinge, die Sie in diesem Abschnitt natürlich
anhand von Beispielen lernen werden. Wir sehen uns also
im nächsten Video.
31. 31. So erstelle du deine eigenen Funktionen +: Zu Beginn des Kurses haben
wir
nach einer Mittelwert- oder
Durchschnittsfunktion gesucht , die Python möglicherweise
benötigt, um den Durchschnitt der Elemente der
Zahlen einer Liste zu ermitteln. Und wir haben herausgefunden, dass Python
einige grundlegendere
Funktionen hat , wie Länge, um eine Reihe von Elementen einer Liste zu
erhalten und Summe, um die Summe
der Zahlen
einer Liste zu bilden, aber es hat keine Mittelwertfunktion. Am Ende haben wir
das gemacht. Wir hatten diese Liste. Wir haben die Summe mit der Summenfunktion
berechnet, die Länge berechnet, also die Anzahl der Elemente
mit der Längenfunktion, und dann die Division zwischen Summe und Länge durchgeführt,
um den Mittelwert zu erhalten. Die Tatsache, dass
Python keine Mittelwertfunktion hat
, bedeutet jedoch nicht, dass wir keine
eigene Mittelwertfunktion erstellen können. Was wir
jetzt tun werden, ist, unsere eigene Mittelwertfunktion zu erstellen. Um Funktionen in Python zu erstellen, verwenden
Sie das Schlüsselwort def und wählen dann einen Namen
für Ihre Funktion Der Name muss
den gleichen Benennungsregeln folgen wie bei Variablen Er kann also nicht
mit einer Zahl beginnen, er kann nicht mit
einem mathematischen Operator beginnen. Sagen wir, dann benutzt du runde Klammern und innerhalb
dieser Klammern endet die erste Zeile mit einer Spalte In der Klammer können
Sie
optional einige
Parameter Ihrer Funktion eingeben Mit anderen Worten, Parameter sind Eingaben, die Ihre
Funktion erhält und die diese Eingabe verarbeitet und eine Ausgabe erzeugt Die Eingabe
wäre in unserem Fall eine Liste. Hier
müssen Sie jedoch einen Namen angeben, wiederum die gleichen
Regeln wie bei Variablen gelten. Sagen wir meine Liste. Okay, dann
willst du dort die Eingabetaste drücken und du siehst automatisch den
Visual Studio-Code. Also hat der Editor die
nächste Zeile mit vier Leerzeichen eingerückt, eins, zwei, drei, vier Das
verlangt die Syntax also nach
der ersten Zeile. Nachdem Sie
also definiert haben, welchen Namen Sie
für Ihre Funktion haben wollen und
welche Parameter Sie wollen, müssen
Sie
die nächsten Zeilen einrücken Entweder macht es Ihr Editor
automatisch,
aber wenn er es nicht tut, ziehen Sie eins,
zwei, drei, vier, vier, vier, ziehen Sie dort
vier Leerzeichen Sie können es auch mit
einem Leerzeichen oder nur einem Leerzeichen erstellen. Würde auch funktionieren, aber es
wird empfohlen, vier Leerzeichen zu verwenden. Jeder verwendet vier
Leerzeichen, weil der
eingerückte Code besser sichtbar ist und Ihr
Code
dadurch schrecklicher wird Dann können Sie mit der
Berechnung des Mittelwerts beginnen. Sagen wir den Mittelwert. Ich werde es
so nennen, damit ich es nicht mit
dem Funktionsnamen
verwechsle Das wäre die
Summe meiner Liste, geteilt durch die Länge meiner Liste Und als Nächstes wollen
wir das Schlüsselwort
return verwenden. Und darauf folgt das
, was Sie zurückgeben möchten. Nun, wir wollen den Mittelwert
zurückgeben. Nun, spar dir das. Und lass
mich ein Terminal öffnen. Ich möchte
dieses Skript jetzt ausführen. Lassen Sie mich Ihnen zeigen
, was passieren wird. Eigentlich wird nichts passieren. Nichts passiert
, denn Python liest nur
diese Definition. Das ist wie eine Blaupause. Sie haben deklariert, was
Ihre Funktion tun soll, aber Sie haben Python nicht angewiesen
, Ihre Funktion auszuführen. Um Ihre Funktion auszuführen, möchten
Sie die Funktion
aufrufen einen Eingabewert für den von Ihnen definierten
Parameter übergeben. Wenn Sie
drucken möchten, müssen Sie die Klammer dort öffnen, dort Klammer
schließen, speichern, nicht vergessen Und das ist der Mittelwert dieser drei Zahlen. Weise kann ich das einfach Auf diese Weise kann ich das einfach mit
vielen Eingabewerten
ausprobieren. Einfach so, ich
muss hier nichts umschreiben. Das ist das Schöne an einer Funktion. Sie können die
Ähnlichkeit hier also sehen. So wie wir
die Summenfunktion verwenden, verwenden
wir die
Mint-Funktion auf die gleiche Weise. Summe erhält also diesen Eingabewert
Man erhält diesen Eingabewert. Das ist zufällig eine Variable. Das ist zufällig ein direkter
Wert, aber das spielt keine Rolle. Wenn Sie die Art des Mittelwerts,
den Mittelwert und die Art der Summe
überprüfen , werden Sie feststellen
, dass Mean eine Funktion ist. Das wurde also ausgedruckt. Das wurde dadurch ausgedruckt. Also Mittelwert ist eine Funktion
und nochmal Summe, es ist eine Funktion, aber es ist
eine eingebaute Funktion. Es ist also im
Python-Interpreter eingebaut. Es wurde vom
Python-Kernentwicklungsteam entworfen, und diese Funktion wurde
von mir, dem Programmierer, entworfen So erstellen und
rufen Sie eine Funktion in Python auf.
32. 32. Wann solltest du Print und Return verwenden +: Es sei darauf
hingewiesen, dass
Ihre Funktion, wenn sie keine Rückgabeanweisung (
save, execute ) hat, implizit ein Objekt
zurückgibt, das kein Objekt ist Keines ist ein bestimmtes Objekt in
Python, was nichts bedeutet. Es ist keine Ganzzahl,
es ist kein Float, es ist kein String, es ist einfach
keiner. Es bedeutet nichts. Python, was es tut ist, wenn es die
Rückgabeanweisung nicht im Hintergrund findet, gibt
es keine zurück. Wenn Sie das also ausführen, Ups, ein Einrückungsfehler.
Das ist eine gute Sache Sie sehen, dass dieser ganze Block hier dieselbe
Einrückungsebene haben muss Wenn Sie hier vier Zeilen eingerückt haben, müssen
Sie auch hier vier
Zeilen einrücken Der Einzug muss also konsistent
sein. Das sieht richtig aus. Also haben wir die gleichen Ausgänge, keine hier und keine da. Manche Leute machen diesen Fehler. Anstatt zurückzukehren, verwenden
sie Printmedien. Anstatt Return zu verwenden, verwenden
sie eine Druckfunktion. Der Mittelwert, der halbwegs
funktioniert. Es gibt also immer noch den Wert zurück
und es gibt auch keinen zurück. Was hier vor sich geht, ist, dass ,
wenn Sie die Funktion hier aufrufen, Python,
wenn Sie die Funktion hier aufrufen,
all diese Zeilen ausführt, also berechnet es den Mittelwert geht
dann zur nächsten Zeile Also Zeile für Zeile wird es den Mittelwert drucken, also wird es
den Mittelwert hier ausdrucken und dann wird es nach einer Rückmeldung
suchen. Es findet es nicht, also gibt
es auch nichts zurück. Das Problem dabei
ist, dass, wenn
Sie versuchen , andere Operationen
mit Ihrem Mittelwert durchzuführen, sagen
wir, mein Mittelwert gleich
der Mittelwertfunktion
Null, Drei und Vier ist . Okay. Und ich möchte meinen Mittelwert plus zehn
ausdrucken. Ich würde also erwarten, dass mir das den Wert Sieben gibt, das ist die Summe
geteilt durch drei, zwei Punkt etwas plus
zehn, 12 Punkt etwas. Aber mal sehen, was mir
das geben wird. Also das wird mir stattdessen
einen Typfehler geben. Ich habe versucht, den
Nicht-Typ hinzuzufügen, der keiner ist. Das ist also ein Nichttyp. Das ist der Typ dieses Werts. Es versucht, das auf zehn zu addieren. Mein Mittelwert ist also keiner
, weil er keinen zurückgibt. Ein Dolmetscher wird versuchen, das zu zehn
zu addieren .
Das ist nicht möglich. Deshalb
sollten Sie Print nicht verwenden. Wenn ich das stattdessen
durch return ersetze, die Klammern
entferne, save, execute, erhalte ich 12,3 Das ist der Durchschnitt plus zehn. Dies bedeutet jedoch nicht, dass Sie das Drucken
nicht
in Ihren Funktionen verwenden können. Das können Sie tatsächlich tun. Nehmen wir an, Sie möchten nur
einige Informationen ausdrucken . Stell es dir Funktioniere, studiere
und führe das aus. Sie erhalten hier die Ausgabe
von print, und dann
gibt Python den Mittelwert zurück. Sie erhalten den Mittelwert,
speichern ihn hier, die Ausgabe Ihrer Funktion, aber der Wert der Funktion ist immer das, was Sie hier zurückgeben. Wenn du das siehst, verwende also immer Return in deinen Funktionen, es sei denn, du hast einen ganz besonderen Grund dafür.
33. 33. Einführung in Conditionals: In den vorangegangenen Vorlesungen haben wir diese Funktion definiert, die in der Lage ist,
den Mittelwert einer Liste zu berechnen Was passiert jedoch, wenn statt
einer Liste als Eingabe wir
statt
einer Liste als Eingabe ein Wörterbuch übergeben Schülernoten finden Sie in
diesem Wörterbuch hier. Mal sehen, was
passieren wird. Nun, da steht ein Operandentyp, der
nicht unterstützt wird. Bei der Summenfunktion wird also ein Fehler auftreten weil sie versucht, Zeichenketten und ganze Zahlen zu
addieren,
und diese Funktion ist nicht
für die Verarbeitung von Wörterbüchern konzipiert Sie ist für die Verarbeitung von Listen konzipiert. Wie können wir
diese Funktion also so einrichten, dass sowohl Listen als auch Wörterbücher
verarbeitet Wir können das
mit Bedingungen tun. Schauen wir uns in den nächsten Videos
an, wie das geht.
34. 34. Benutze die If-Bedingung: Diese Funktion gibt den
Mittelwert einer Liste zurück, aber wir wollen
sie intelligenter machen. Wir möchten, dass die Funktion
den Mittelwert zurückgibt auch wenn der
Eingabewert ein Wörterbuch ist. Wenn der
Eingabewert also eine Liste ist, wendet
er
einen bestimmten Algorithmus an und
gibt den spezifischen Wert zurück, was ein Mittelwert ist,
wenn es sich um ein Wörterbuch
handelt, wird es prüfen, ob es sich um
ein Wörterbuch handelt, und
den entsprechenden Algorithmus anwenden , der den
Mittelwert eines Wörterbuchs
berechnet Wir wissen also, dass einige
Montagstemperaturen geteilt durch die Länge der
Montagstemperaturen den Mittelwert der Liste ergeben Ähnlich verhält es sich mit Schülernoten, einem Wörterbuch,
dessen Werte, die Summe seiner Werte
geteilt durch die Länge des Notenwörterbuches, den Mittelwert
ergeben.
Deshalb möchten wir, dass unsere Funktion das
überprüft und eine Entscheidung trifft. Das ist ein Parameter. Lassen Sie
mich ihn in einen Wert ändern. Value ist ein aussagekräftigerer Name da das, was wir verarbeiten, nicht nur eine Liste sein
wird, sondern es kann sich auch um ein Wörterbuch handeln. Und dann muss unter der Funktion alles eingerückt werden Sie können sehen, dass der gesamte
Funktionstext eingerückt ist. Der Bedingungsblock
, den ich
hier schreiben werde , wird ebenfalls
eingerückt sein Es beginnt damit, dass
wir, wenn Sie sich erinnern, zu
Beginn des Kurses eine Typfunktion verwendet haben, die den
Typ eines Objekts zurückgibt Das
ist zum Beispiel ein Wörterbuch, ein leeres, aber es ist
immer noch ein Wörterbuch. Was Sie
hier also tun können, ist zu sagen:
Ich gebe Wert, doppelten Zuweisungsoperator ein,
was gleich bedeutet. Es ist ein Vergleichsoperator,
ich überprüfe die Gleichheit. Wenn das ein Diktat ist, eine Spalte, geben Sie ein, und es muss
mit vier Leerzeichen eingerückt werden Sie sehen also, dass es sich um eine weitere
Einrückungsebene handelt. Es ist eins hier für mich, und das ist für die Funktion Also hier ist der Mittelwert
gleich der Summe der Werte, die
Werte
durch die Länge des Werts dividieren. Das ist also ein Wörterbuch,
diktiert Punktwerte und
Länge des Wörterbuches Ich muss den
Summenfunktionsaufruf
dort so schließen und eingeben, wenn
Sie mit I-Block fertig sind Also, wenn das alles ist, was
du überprüfen willst, dann sagst du etwas anderes, und
wir haben diesen Code
, der auch unter
s eingerückt werden muss, und das war's Lass mich das versuchen.
Mit den Noten der Schüler und dem Wörterbuch als Eingabe haben
wir diesen Wert hier. Wenn ich die Temperaturen vom
letzten Montag verwendet habe , erhalte
ich den anderen Wert
, der der Mittelwert der
Montagstemperaturen ist. Das ist also eine Wenn- und
Sonst-Bedingung. Aber lassen Sie es mich im nächsten Video Zeile für Zeile erklären.
35. 35. Ein Konditional, das Zeile für Zeile erklärt wird: Also, was ist
in diesem Drehbuch los? Lassen Sie es mich Zeile für Zeile erklären. Python führt die
Funktionsdefinition aus, tut
aber nichts weil es nur eine
Funktionsdefinition Python macht Dinge, wenn
es einen Funktionsaufruf findet, wie diesen hier. Hier rufen wir also
die Funktion auf und der Eingabewert
für
diese Funktion ist
die Montagstemperatur, was dieser Liste
entspricht. Diese Liste wird in dieser Variablen
gespeichert. Ein Wert
entspricht also dieser Liste. Was also passiert, ist, dass der
Interpreter prüft, ob der Typ dieser Liste tot ist Wenn das stimmt,
wird er diese Zeile hier ausführen. Ich werde die Ausgabe dieses
Ausdrucks
der Variablen Mittelwert zuweisen . Dies ist in diesem Fall jedoch nicht
der Fall , da der Typ der
Liste nicht abhängig ist. Python wird diese Zeile also nicht
ausführen. Es wird zur nächsten Zeile gehen. Also, wenn das nicht wahr wäre, dann wird es diese Sache hier machen. Der Mittelwert
entspricht also der Summe
der Liste geteilt durch
die Länge der Liste,
was etwa 9,26 entspricht Das ist also der aktuelle
Wert des Mittelwerts, also endet hier der
Einzug Return befindet sich also außerhalb
des I- und Else-Blocks.
Das kannst du hier sehen. Es muss draußen sein. Der bedingte Block endet also
hier und der aktuelle Wert des Mittelwerts wird
von der Return-Anweisung zurückgegeben. Sie erhalten also
den Mittelwert für diese Liste. Wenn das stattdessen die
Note eines Schülers
wäre, würde das
Wörterbuch als Wert gespeichert , und wenn der Typ des Werts dict
ist, ja, es ist dict Der Mittelwert wird dem entsprechen. Also zum Mittelwert
des Wörterbuchs. Und wenn diese Bedingung
wahr ist, wird sie ausgeführt und Python ignoriert
alles, was unter anderem steht. Ich habe alles gesagt
, was unter ls steht, was alles bedeutet,
was unter else steht Die Kinder von
Else sind also sozusagen Return of the Mean
kein Kind von ls Es steht nicht unter
ls, es ist unabhängig. Es hat seine eigene
Einrückungsebene. Der aktuelle Wert
des Mittelwerts ist also dieser hier drin. Also gib den Mittelwert zurück, wir geben
tatsächlich den Mittelwert für das Wörterbuch zurück.
Der da drin.
36. 36. Weitere Informationen zu Conditionals +: Nun, dieser bedingte Block befindet sich
zufällig innerhalb einer Funktion, kann sich
aber auch außerhalb
einer solchen Funktion Und sagen wir, drei
größer als eins, mehr
drucken, mehr
drucken sonst Drucken, nicht größer. Und du wirst größer werden. Was ein bedingter
Block überprüft prüft
tatsächlich, ob dies wahr ist. Also wahr ist eigentlich
ein anderer Typ in Python, genau wie Ganzzahlen,
Leads und Strings True ist ein anderer Typ. Das ist also das
Äquivalent zu if true, print greater, else,
print, not greater. Also wahr ist immer wahr. In ähnlicher Weise gibt der Typ
Drei, z. B. ist gleich t, wahr zurück Das ist es also, was wir hier auch
tun. Es gibt jedoch eine andere Methode, die in
Python als besser angesehen wird, ist die Verwendung von Instanz als Instanzwert, und Sie möchten hier so nach
Wörterbüchern suchen Führen Sie es aus und
Sie erhalten dieselbe Ausgabe. Zum Beispiel
erhalten Sie mit drei Ints dieselbe Ausgabe. Sie können beide verwenden, aber
aus einigen fortgeschrittenen Gründen, die ich
jetzt nicht näher eingehen werde , weil sie
aus dem Zusammenhang gerissen sind. An dieser Stelle ist
es natürlich besser, diese Instanz zu verwenden. Nun, Sie haben dieses
Beispiel gesehen, bei dem ich
verwendet habe , wenn drei
größer ist als eins, und ich habe
größer und nicht größer ausgedruckt. Wir könnten auch
diese drei Fälle haben Drei ist größer als eins, drei ist gleich eins und drei ist kleiner als eins. In diesem Fall brauchen wir
etwas anderes, wenn ein anderes
nicht ausreicht. Ich werde dir im nächsten Video zeigen, wie wir das machen
können.
37. 37. Den Elif-Konditional-Modus verwenden: Ich habe diese beiden
Variablen hier, jede von ihnen hat einen Wert und lass mich eine
Bedingung schreiben, die etwas anderes
macht, je nachdem, ob X größer,
gleich oder kleiner als Y ist . Wenn X größer als Y
ist, X ist größer als Y. Wenn X gleich Y ist, ist
print A S gleich Y. Was bleibt also,
was ist Wenn X nicht größer und
nicht gleich ist, nun ja, s. Wenn Sie also mehr
Bedingungen zu überprüfen hätten, können
Sie mit ob das
und L dies und das und so weiter fortfahren und L dies und das und Aber wenn Sie fertig sind, können
Sie Ls verwenden. Drucken, also muss es
sein, dass X kleiner als Y ist. Und so bekommen wir, dass X
größer als Y ist
38. 38. Weißraum +: In dieser Vorlesung möchte ich die Verwendung von Leerraum
erläutern. Also, wann man einen Leerraum benutzt, wann man mehr als einen benutzt und wann nicht. Um dir das zu erklären, habe
ich hier ein Drehbuch
mit drei Teilen. Jeder der Teile wird das Gleiche
tun. Der erste druckt also
A, aA und drei als aus , und dann B, hier und dann C. Also beim ersten,
hier habe ich ein, zwei,
drei, vier, fünf, sechs,
sechs, sechs Leerzeichen eingegeben drei, vier, fünf, sechs,
sechs, sechs Leerzeichen Das wird also funktionieren.
Wie Sie hier sehen können, erhalten
Sie die Ausgabe korrekt, aber das ist keine gute Praxis. Auch wenn das funktionieren wird, ist
es keine gute Vorgehensweise, da der Code nicht gut lesbar ist. Das ist also ein Problem
mit diesem ersten Block. Und hier im zweiten
Block repariere ich das. Der Platz hier ist genau richtig. Im Grunde willst du Dinge mit Leerzeichen
trennen. Wenn es um
Operatoren wie
die Vergleichsoperatoren oder Plus
oder Minus oder Multiplikation geht die Vergleichsoperatoren oder Plus
oder , funktioniert
der Code auch dann, wenn Sie keine solchen Leerzeichen haben Um den
Code lesbarer zu machen, ist
es jedoch besser, auch einige Leerzeichen
zwischen den Operatoren zu haben auch einige Leerzeichen
zwischen den Operatoren Das Leerzeichen zwischen I und
einer Zahl ist ein Muss. Wenn Sie das haben, funktioniert der
Code nicht. Sie erhalten eine ungültige Syntax. Es ist jedoch kein Leerzeichen zwischen
Operatoren in Ordnung. Das ist also ein Problem
in diesem Block hier , dass Sie diesen
Ausdruck ohne Leerzeichen haben. In bestimmten Fällen verwende
ich manchmal keine Leerzeichen in den
Videos, weil ich Ihnen den Text
in größeren Schriftarten
zeigen möchte Ihnen den Text
in größeren Schriftarten
zeigen Deshalb muss ich bei
weniger Leerzeichen Abstriche machen, damit ich
mehr Texte auf dem Bildschirm unterbringen kann. Wenn Sie also keinen
guten Grund dafür haben, verwenden
Sie bitte Leerzeichen ein Leerzeichen. Dann ist das hier in Ordnung. Ein Leerzeichen hier, eins hier und eins da, und dann nach der Kolumne,
das solltest du wissen. Ich habe dir schon
von Indentation erzählt. Nach einer Spalte steht
immer Einrückung. Einzug bedeutet
mindestens ein Leerzeichen. Das würde auch so funktionieren, aber es hat sich bewährt, vier Leerzeichen zu
haben, vier Das ist richtig. Und wenn Sie mehr Code
in Ihrem Skript haben, ist
es gut, die Dinge durch
Umbruchlinien zu
trennen , um Logiken zu trennen Wenn Sie dort also einen
bedingten Block haben, müssen
Sie
ihn Zeile für Zeile schreiben Hier gibt es keine solchen Bruchlinien. Das würde auch funktionieren, aber bitte verwende
keine Umbruchlinien, um
deinen Code lesbarer zu machen. Sobald der
bedingte Block endet, haben
Sie jedoch einen weiteren logischen Block Hier
gibt es keine klaren Regeln, sondern verwenden Sie einfach die Logik. Deshalb fand ich es gut,
diese Druckfunktionen ohne
Ziegelsteine dazwischen zu haben . Also, wenn ich hier eine weitere Funktion
hinzufügen würde, mache
ich eine Ziegellinie und dann erstelle ich
hier eine Funktion und so weiter. Und natürlich verwende Indentation auch
für Funktionen. Nach der Spalte kommt also immer der Einzug. Das ist es mehr oder weniger um
Space Wide Space in Python.
39. 39. Weitere Grundlagen von Python: Verarbeitung von Benutzereingaben: Willkommen zu einem Abschnitt
des Kurses. Hier
lernst du, wie du
mit dem Benutzer über
dein Python-Programm interagierst . So kann Ihr Python-Programm Eingaben vom Benutzer
erhalten. Es kann den
Benutzer zu einigen Eingaben auffordern, und der Benutzer gibt einige Eingaben ein, und das Programm,
so dass
Ihr Python-Skript diese Eingabe
erhält , verarbeitet und dann
einige Ergebnisse liefert. Lassen Sie uns also in
diesem Abschnitt sehen , wie Sie Eingaben vom Benutzer
erhalten, sie
verarbeiten und einige Ausgaben
erzeugen können. Ich werde im
nächsten Video mit dir sprechen. Danke.
40. 40. Mehr zur Benutzereingabe lernen: Wie Sie aus den
vorangegangenen Vorlesungen wissen, haben
wir diese Funktion definiert, und hier rufen wir sie auf, sodass
sie prüft, ob die angegebene
Temperatur höher als
sieben ist , und sie gibt
warm zurück, wenn das wahr ist, und kalt, wenn die Temperatur
gleich sieben oder
weniger als sieben ist . Das ist in Ordnung. Aber was
nützt diese Funktion in
einer realen Umgebung? Also, wer gibt diesen Input? Sie als Programmierer schreiben
diese Funktion für
jemand anderen, damit dieser sie verwenden kann Sie
erwarten jedoch nicht, dass sie
die Python-Datei bearbeiten , wie ein Editor wie Visual
Studio-Code oder andere Editoren. Und dann können Sie ihnen nicht
einfach sagen, zu Zeile 7
gehen und
den Wert ändern dass sie zu Zeile 7
gehen und
den Wert ändern und dann diesen Code
ausführen sollen, um
je nach Wert unterschiedliche Ausgaben zu erhalten. Wie wäre es also, den
Benutzer aufzufordern, einen Wert einzugeben? Und dann gibt der
Benutzer den Wert ein, und dann erhalten wir diesen Wert und verarbeiten ihn in unserer Funktion In diesem Fall erhalten wir diesen Wert und fügen ihn hier in
den Funktionsaufruf ein. Lass uns das machen. Also
haben wir da eine Funktion. Wir wollen einen
Wert vom Benutzer erhalten. Um einen Wert vom Benutzer zu erhalten, verwenden Sie die Eingabefunktion. Die Eingabefunktion
erhält ein Argument, und das ist die Nachricht, die
Sie
dem Benutzer in der Befehlszeile anzeigen möchten . Geben Sie beispielsweise Temperatur
eingeben ein. Fügen Sie
dort vielleicht eine Spalte ein, wenn Sie möchten, Sie können schreiben, was Sie möchten. Lassen Sie mich das Skript speichern
und ausführen. Sie sehen jetzt, dass ich es ausgeführt habe, und diese Eingabefunktion friert die Ausführung eines Programms
ein und wartet auf
Benutzereingaben in der Befehlszeile Wenn ich
hier also etwas wie Sieben eingebe, wird das
in diesem Fall passieren, dass dieser Ausdruck hier gleich Sieben sein
wird Da wir hier jedoch nichts
gemacht haben, passiert
nichts, wenn wir
diesen Wert ausdrucken , zum Beispiel Sieben. Sie erhalten den Wert
davon
ausgedruckt , der sieben ist. Da kannst du also
alles hineinlegen, was du willst. Hallo, und du wirst dort
high, ausgedruckt. Was herauskommt, ist, dass
Sie es, anstatt
es auszudrucken , es zuerst in eine Variable
einfügen möchten. Das würde
es lesbarer machen. Verwenden Sie also Ihre Eingabe, und dann können Sie mit
dieser Variablen machen,
was Sie wollen , z. B. sie verringern. Drucken Sie also die
Version in Kleinbuchstaben aus. Hallo ihn. Hi Hi bekommst du also mit
Kleinbuchstaben. Okay, zurück zu unserer Funktion. Lassen Sie mich jetzt versuchen, die
Ausgabe
der Wetterbedingungsfunktion mit einem Wert von,
naja, Benutzereingabe auszudrucken Ausgabe
der Wetterbedingungsfunktion mit einem Wert von,
naja, , unabhängig davon, was
der Benutzer als Eingabe eingibt. Also führe ich das Programm jetzt aus. Das Programm fragt mich nach der
eingegebenen Temperatur. Das Programm fordert mich
auf, eine Temperatur einzugeben, sodass die Ausführung zu diesem Zeitpunkt
eingefroren ist. Diese Zeile
wurde noch nicht ausgeführt. Sie wird ausgeführt, nachdem wir hier
einen Wert eingegeben
und die Eingabetaste gedrückt haben. Lassen Sie mich also sechs aufschreiben. Lass uns sehen, was
wir dieses Mal bekommen werden. Wir bekommen einen Fehler.
Lesen wir den Fehler sorgfältig durch. Es geht um die Datei Basics Punkt PY, was unsere Datei ist, okay? Der Fehler ist
zuerst in dieser Zeile hier aufgetreten. Also hier,
Wetterbedingungen und Benutzereingaben ausdrucken. Als Python versuchte, diese Zeile
auszuführen, konnte
es dies nicht tun. Und warum? Nun, du
musst dem Fehler folgen. Also immer noch Line Basics, das ist Zeile zwei. Diese Linie. Als Python also
versuchte, diese Zeile auszuführen
, rief diese Zeile einige andere
Dinge im Skript auf. Und der Fehler war
in dieser zweiten Zeile. Als der Funktionsaufruf also
versuchte, die Funktion aufzurufen, versuchte
er, diese Zeile auszuführen. Bei der Temperatur versuchte es also, fünf mit sieben
zu vergleichen. Und dann bekam es
diesen Fehler, als es versuchte,
fünf mit sieben zu vergleichen. Also, als es versuchte, diese Zeile
auszuführen, anderen
Worten,
schau, was darin steht. Geben Sie einen Fehler ein. Dieser Operator wird zwischen den Instanzen
von string und integer nicht
unterstützt. Also string und int, was bedeutet, dass dies eine
Zeichenfolge war, und das war eine Ganzzahl. Unsere Benutzereingabe war also
sieben, wurde hier übergeben, und das wurde mit sieben
verglichen. Es scheint, dass unsere Eingabe, die Benutzereingabe, eine
Zeichenfolge war,
und das ist der Punkt, den
ich
hier ansprechen wollte , denn welche Eingabe auch immer der Benutzer hier eingibt,
auch wenn es eine Zahl ist,
Python
konvertiert sie tatsächlich in auch wenn es eine Zahl ist, eine Zeichenfolge. Sieben
werden also tatsächlich in eine Zeichenfolge umgewandelt, z. B. mit Anführungszeichen oder doppelten
Anführungszeichen in Python. Aber das lässt sich leicht beheben. Was Sie tun können, ist, diesen Wert, eine Zeichenfolge 7 ist
, zu konvertieren, Sie können ihn in einen Float konvertieren. Seien Sie vorsichtig mit Klammern. Float ist also eine Funktion. Es hat hier eine offene
Klammer und
hier eine schließende
Klammer Die Eingabe ist auch eine Funktion mit eigenen öffnenden Wenn ich das jetzt mache, Temperatur von fünf,
werde ich die richtige Antwort bekommen Und lassen Sie mich Ihnen
gegenüber transparent sein. Lassen Sie uns noch einmal Benutzereingaben abrufen,
Eingaben eingeben. Lassen Sie mich jetzt
die Art der Benutzereingabe ausdrucken. Führen Sie aus und sechs, Sie werden sehen, dass sechs
tatsächlich eine Zeichenfolge ist. Deshalb
wandle ich es in einen Float um, sodass sechs
dieses Mal tatsächlich ein Float ist, was so aussieht. Sie können
die tatsächliche Zahl
hier ausdrucken , die tatsächliche umgerechnete Zahl, die Float-Version der
Zahl, erneut ausführen, 6.0. Sie können
hier auch int verwenden, wenn Sie möchten ,
sechs, sodass Sie sechs erhalten, was natürlich
6,0 entspricht. Aber Floats wären bessere Wahl, weil
ich dir zeigen kann, warum Wenn Sie beispielsweise 6.3 eingeben, kann
es nicht konvertiert werden, weil
das so ist, als würde
man Int,
6.3 in doppeltem Code ausführen 6.3 in doppeltem Code Int wird also verwirrt
sein und nicht wissen, wie man
das in eine Ganzzahl umwandelt. Es konvertiert jedoch
sechs, wenn es eine einfache Sechs
ohne Dezimaltrennzeichen wäre. Float konvertiert leider sowohl sechs als auch 6,3. So verwendet man
Benutzereingaben in Python.
41. 41. String-Formatierung +: Wie würden Sie ein
Programm erstellen, das sich verhält? Auf diese Weise werden
Sie nach Ihrem Namen gefragt
und Sie geben Ihren Namen als Benutzer ein. Das Programm begrüßt
Sie,
gibt eine Nachricht mit Hallo
und Ihrem Namen
sowie ein Ausrufezeichen
am Ende der Zeichenfolge aus und Sie geben Ihren Namen als Benutzer ein. Das Programm begrüßt
Sie, Das Programm begrüßt
Sie gibt eine Nachricht mit Hallo und Ihrem Namen sowie ein Ausrufezeichen
am Ende der Zeichenfolge Nun, das machst du
mit zwei Dingen. Zuerst benötigen Sie die
Eingabefunktion, um
den Benutzer um eine Eingabe zu bitten , um den Benutzer zur Eingabe
aufzufordern, und dann benötigen Sie eine
Zeichenkettenformatierung. So
sieht die Zeichenkettenformatierung in Python aus. In der ersten Zeile
erhalten wir also die Benutzereingabe, speichern diese Eingabe als
Zeichenfolge in der Benutzereingabe und erstellen dann eine Variable. In dieser Variablen speichern wir
die Nachricht, die wir erstellen. Und das hier ist ein Ausdruck zur
Formatierung von Zeichenketten. Also wollen wir
Hallo ausdrucken und dann ein Leerzeichen haben, und dann wollen wir den Namen des Benutzers
ausdrucken,
also den Wert, den
der Benutzer eingibt. Und das hier, Prozentsätze, ist
eine spezielle Zeichenfolge in Python. Dann haben wir ein
Ausrufezeichen, das eine normale Zeichenfolge ist Und ein doppeltes Anführungszeichen. Also
das ist etwas Besonderes hier. Und nach der Zeichenfolge möchten
Sie kein Komma setzen Sie möchten nur
diesen Prozentoperator verwenden und dann eine Variable verwenden Jetzt wird der Wert dieser
Variablen
den Prozentsatz S ersetzen .
Stattdessen erhalten Sie
also Hallo und
Ihren Namen Nun, diese Methode der
Zeichenkettenformatierung, bei dieser Prozentsatz S
hier und der
Prozentoperator hier
verwendet werden, gilt auch für Python zwei
und Python drei. Jetzt gibt es eine weitere Methode, die in Python 3.6 eingeführt
wurde. Die Methode, die ich
jetzt vorstellen werde, funktioniert also nicht, wenn Sie
sie mit einer
Python-Version vor 3.6 ausführen . Die Methode sieht so aus. Lassen Sie uns die gesamte
Zeichenfolge erneut in einer Variablen speichern, sodass es sich um eine Zeichenfolge mit doppelten oder einfachen Anführungszeichen handelt, was auch immer Sie bevorzugen. Ich verwende doppelte Anführungszeichen. Also hallo, und du benutzt
diese geschweiften Klammern. Und darin gibst
du den Namen
der Variablen ein, welchen Wert du an dieser
Stelle haben möchtest Nun, das ist noch nicht alles. Also, wenn ich das
speichere und
den Code ausführe und sage:
Füge ihn hinzu, wird es diese Zeichenfolge
zurückgeben. Also müssen wir hier
etwas anderes tun. Was wir tun müssen,
ist,
ein Präfix F direkt
außerhalb des Codes hinzuzufügen . Das ist also die Zeichenfolge. Dieses
F geht außerhalb des Codes. Wenn ich das Skript
jetzt speichere, führe es erneut aus, schreibe meinen Namen, und jetzt
bekommen wir die erwartete Ausgabe. Beachten Sie, dass wir hier
zwei Variablen mit
demselben Namen haben , und was
passieren wird, ist, dass
Python zuerst ein Skript
von oben nach unten ausführt, also die erste Zeile ausführt, es führt die zweite Zeile aus, sodass es hello audit
in der Nachrichtenvariablen speichert Aber dann
überschreiben wir diese Variable. In diesem Fall
wird die Zeichenfolge also in diese
Nachrichtenvariable geschrieben Also egal, wo Sie hier erstellen, welches Objekt Sie hier
in der Variablen speichern, dieses Objekt ist
das aktuelle Objekt , auf das sich
diese Variable bezieht. In diesem Fall drucken wir das Objekt
aus, das
Sie hier erstellt haben, was zufällig Hello Audit heißt. Welches solltest du verwenden? Nun, wenn Sie glauben
, dass Ihr Projekt mit
Python 3.6 oder höher ausgeführt
wird , dann verwenden Sie diese bessere Version Es ist besser lesbar. Wenn
Sie glauben, dass Ihre Python-Dateien
mit Python zwei oder
3.1 oder zwei oder drei ausgeführt werden , sollten Sie sich für diese Methode
entscheiden. Denn manchmal,
wenn Sie
Ihr Skript auf einem
Server bereitstellen , wir
an, Sie möchten
ein Skript jeden Tag zu einer bestimmten Stunde ausführen , Sie möchten
es auf einem Webserver bereitstellen, und dieser Webserver wird über
eine bestimmte Version von Python verfügen . Manchmal
ist diese Version Python zwei. In diesem Fall möchten Sie also Ihre Skripte so
anpassen, dass sie mit Python zwei
funktionieren
und der Webserver, der Server, der
Computer
Ihr Skript mit einer
bestimmten Python-Version ausführt. Wir werden uns das später
ansehen wenn wir die Web-Apps bereitstellen. Im Moment
sind dies also die beiden Methoden der Zeichenkettenformatierung.
42. 42. String-Formatierung mit mehreren Variablen +: Zuvor habe ich Ihnen
vorgestellt, wie Sie den Wert
einer Variablen
dynamisch in eine Zeichenfolge einfügen. Hier haben wir also Hallo und den Wert
, den der Benutzer in die Eingabefunktion
eingegeben hat, konstruiert . Das hat also mit
Python zwei und drei funktioniert. Dies funktioniert mit Python
3.6 und späteren Versionen. Was ist nun, wenn wir
mehr als einen Wert in
die Zeichenfolge einfügen wollen , wie geht das? Nehmen wir zum Beispiel an,
die erste Eingabefunktion fragt uns nach dem Namen und die zweite
nach dem Nachnamen. Nennen wir diese Variable
Name und diesen einen Nachnamen. Um diese Version der
Zeichenkettenformatierung
mit zwei Variablen zu verwenden , müssen
Sie dies tun. Anstelle von nur einer Variablen müssen
Sie
runde Klammern verwenden und dann alle Variablen
eingeben, die Sie in diesem Fall in
die Zeichenfolge
Vor- und Nachname einfügen möchten . Wenn Sie das jetzt ausführen, erhalten
Sie eine Fehlermeldung. Also musst du dort
etwas mehr tun. Sagen wir Audit. Ulce und
du haben einen Tippfehler Nicht alle Argumente wurden
bei der Zeichenkettenformatierung konvertiert,
was bedeutet, dass es sich bei den Argumenten um Vor- und Nachname
handelt Nicht alle wurden konvertiert,
da nur der Name
konvertiert wurde , weil Sie
hier nur
einen Platzhalter hatten , nämlich Prozentsätze Sie möchten
zwei Platzhalter haben,
einen für den Nachnamen, einen für den Nachnamen Wenn Sie das ausführen, bekommen wir einen weiteren Fehler, aber das hat nichts mit dieser Zeile hier zu tun Diese Zeile ist völlig in Ordnung. Es funktioniert. Warum funktioniert es? Nun, weil Sie sehen können
, dass der Fehler aufgetreten ist. Hier beginnt also die
Rückverfolgung. Sie sehen, dass der Fehler in Filebsics Punkt i
auftritt, der Datei
, in der wir den Code in Zeile fünf
haben,
was bedeutet, dass über Zeile
fünf alles in Ordnung ist was bedeutet, dass über Zeile
fünf alles Diese Zeile hat jetzt also die
Fehlerprüfung bestanden.
Sie ist fehlerfrei. Das ist also die Zeile
, die den Fehler hat, und es ist ein Namensfehler, Eingabe des
Namens durch den Benutzer ist nicht definiert. Diese Benutzereingabe hier wurde also in unserem Code
nicht definiert. Wir haben keine Variable
mit diesem Namen. Wir verwenden es nur hier, aber wir haben es nicht definiert.
Und hier ist ein Trick. Wenn Sie diese Zeile nicht
ausführen möchten, können
Sie sie mit einem Befehl ausführen. Wenn Sie dieses Symbol hier hinzufügen, ignoriert
Python diese Zeile. Es wird es als Kommentar behandeln. Nicht als Code. Also speichere
das Skript, führe es aus. Geben Sie Ihre Eingabe als Benutzer ein, und das ist die Ausgabe, die
wir diesmal erhalten. Das war also eine gute Übung
, um Fehler zu beheben. Nun zurück zu unseren Operationen zur
Formatierung von Zeichenketten. Mal sehen, wie das jetzt mit zwei Variablen
funktioniert. Benutzereingaben sind also
keine Variable mehr. Wir wollen den Namen verwenden. Also hallo Name, und dann
wollen wir hier ein Leerzeichen haben. Also das ist ein Leerraum. Also Name, Leerraum, Nachname. Und so einfach ist das. Hinrichten. Und du bekommst die
Ausgabe Hello oder die Suche. Das ist also die Nachrichtenvariable, die Zeichenfolge der
Nachrichtenvariablen. Auf diese Weise können
Sie also so viele
Variablen eingeben, wie Sie möchten. Was ist zum Beispiel los? Wann könnte es eine Variable sein. Heute ist die Zeichenfolge today
Teil der Wind-Variablen, die Win-Variable
wird
hier durch den Wert ersetzt , den
sie aktuell hat, also heute, führe das aus. Und so funktioniert es. Und das
müssen Sie über die
Zeichenkettenformatierung in Python wissen .
43. 43. Einführung in For Loops +: Hallo, willkommen zurück in
diesem neuen Bereich. Falls
Ihr bisheriges Python-Wissen in Bezug auf die Python-Grundlagen
, die Sie in
diesen Abschnitten gelernt haben, Lücken Bezug auf die Python-Grundlagen , die Sie in
diesen Abschnitten gelernt haben, aufweist, versuche
ich in diesem Abschnitt, diese Lücken
zu schließen, damit Sie
wissen, was vor sich geht. Wir werden das tun,
indem wir alle Teile zusammenfügen, indem wir mit
den Codeblöcken, die Sie
gelernt haben,
eine größere App erstellen den Codeblöcken, die Sie , sodass
alles mehr
Sinn ergibt und Sie wissen, wie man Programme aus der
realen Welt erstellt. Das ist also der erste
Schritt zur Entwicklung von Programmen für die reale
Welt. Und das ist nicht wirklich ein Programm aus
der realen Welt, weil
wir in den nächsten Abschnitten noch einige Beispiele aus der
realen Welt anführen werden . Dies dient also nur
dazu, sicherzustellen, dass Sie die wichtigsten
Python-Konzepte gut
gelernt haben. Fangen wir also mit dem nächsten
Video an. Wir sehen uns dort.
44. 44. Wie und warum man For Loops verwendet: In dieser Vorlesung werde
ich eines der wichtigsten Konzepte
der Python-Programmierung erklären , und das sind vier Schleifen. Ich verwende ein Beispiel, damit du nicht nur die Syntax verstehst, wie man eine Viererschleife schreibt, sondern auch, warum
du vier Schleifen verwenden solltest. Nehmen wir an, wir haben diese
Temperaturen für Montag. Vielleicht wurde das
morgens
mittags aufgenommen und das
abends Wie können wir ein
Programm erstellen, das die gerundeten Werte jedes
dieser Werte
ausdruckt die gerundeten Werte jedes
dieser Werte
ausdruckt So wie das. Das
wäre also die erwartete Leistung. Sie können hier unten sehen,
wie Sie Neun bekommen, weil 9,1 auf eine ganze
Zahl aufgerundet wäre, und dann wieder 8,89 und 7,68 Wie können wir das machen?
Wir müssen also einen Weg finden, auf die
Elemente der Liste zuzugreifen. Und Sie kennen bereits
eine Methode, um auf Listenelemente zuzugreifen, die Indizes verwendet Wenn Sie also die
erste wollen, verwenden Sie Null. Sie möchten also das erste Element
ausdrucken, das würde jedoch 9.1
ausdrucken. Sie möchten die runde
Version von 9.1 Vielleicht möchten Sie einen
Blick
darauf werfen , welche Funktionen
Ihnen zur Verfügung stehen. So wie das. schau mal hier nach und
du wirst einen runden Surround
finden können ,
was bedeutet, dass du eine Zahl runden
willst, Surround 9,1, du bekommst neun. Und in unserem Fall ist die
Zahl, die wir aufrunden
möchten , dieser Ausdruck. Also wollen wir das
ungefähr hier anwenden und diesen Ausdruck in Klammern setzen,
so dass das die Nummer 9.1 ist. Probieren Sie es aus, bevor Sie den gesamten Code
schreiben, und das ist in Ordnung. Mach das nochmal. Aber mit einem und mit zwei. Führen Sie es aus und Sie erhalten
die erwartete Ausgabe. Okay, das ist in Ordnung. Es funktioniert. Aber was wäre, wenn Sie eine
große Liste mit 100 Elementen hätten, würden
Sie am Ende
100 Codezeilen haben. Nun, ich kann Ihnen zeigen,
wie man das stattdessen mit nur zwei Codezeilen macht.
So machst du es. Sie verwenden eine Vierschleife
für die Temperatur und wählen einen Namen für eine Variable. die Temperatur sehen Sie, wie diese Schlüsselwörter hervorgehoben
werden. Das sind also eigentlich reservierte
Python-Wörter. Die Temperatur ist nur eine Variable. Deshalb ist es schwarz. Verwenden Sie bei Montagstemperaturen eine Säule, und was passiert
nach einer Kolumne, von der ich Ihnen im vorherigen Video
erzählt habe ? Nun, Einrückungen, was
in Visual
Studio-Code für Leerzeichen automatisch
passiert in Visual
Studio-Code für Leerzeichen Was wollen wir für
jede der Temperaturen tun? Nun, wir wollen die
runde Form der Temperatur ausdrucken. Einfach so speichern, ausführen und das ist die Ausgabe. In nur zwei Codezeilen können
wir also einige Befehle für alle
Elemente eines Arrays ausführen , was in diesem Fall eine Liste ist, aber es kann auch eine Zeichenfolge sein. Zum Beispiel für einen Brief
in Hallo einen Brief drucken. Und Hallo ist dort ausgedruckt. Und natürlich kannst du dort machen,
was du willst. Titel, hol dir den ersten
Gegenstand, der ein Buchstabe ist. Also wird der Buchstabe so
groß geschrieben. Lassen Sie mich
diese beiden Zeilen
noch einmal durchgehen , um
ihnen zu erklären, was sie bedeuten Die Schleife berechnet also die Temperatur in
Monte-Temperaturen Sie erstellen
also eine Variable, und die Schleife
durchläuft all diese Elemente
nacheinander mit Schleifen. In der ersten Iteration wird die
Temperatur also gleich sein, also wird die Variable gleich 9,1
sein Daher
rundet die Rundungsfunktion 9.1 auf und
druckt es hier aus. Und wenn hier
zum Beispiel
mehr Zeilen drin sind , drucken, fertig. Wenn du das tust, siehst du, wenn es noch eine weitere Zeile gibt, nach neun, wird diese
Zeile ausgeführt, sodass du die Zeichenfolge
fertig ausgedruckt bekommst. Wenn es mehr Zeilen gibt, werden
diese Zeilen ausgeführt. Wenn es keine Zeilen mehr gibt, wird die Ausführung
wieder an der Spitze
der vier Schleifen ausgeführt, und die Schleife erhält dieses Mal das
zweite Element. Diesmal
wird die Temperatur also 8,8 betragen. Und das Gleiche
passiert wieder Runden Sie es zusammen, drucken Sie es aus. D wird ebenfalls ausgedruckt, geht zur nächsten
Zeile, 7.6, und so weiter. Und dann, nach 7.6, versucht
die Schleife zu
sehen, ob es
mehr Elemente in diesem Array gibt . Wenn es keine Elemente mehr gibt,
passiert, dass
dieser eingerückte Block die Ausführung dieses
Blocks beendet und Python zu den nächsten Zeilen
übergeht, um
auszuführen, was
im Skript noch übrig ist
45. 45. So durchmachst du ein Wörterbuch +: Sie haben gesehen, dass das Durchblättern
einer Liste einfach ist. Du machst es einfach so. Wenn Sie jedoch ein Wörterbuch
haben, ist
es etwas komplexer. Auch hier machen Sie vier, wählen einen Variablennamen
im Wörterbuch, Sie möchten iterieren, aber hier möchten
Sie angeben, was
Sie iterieren möchten Möchten Sie über
Elemente, Schlüssel oder Werte iterieren? Wenn Sie also über Elemente
iterieren möchten, würden
Sie diese Elemente dort anwenden Vergiss die
Spalte nicht und drucke. Großartig. Mal sehen, was passiert. Sie bekommen diese Elemente also als Tupel
ausgedruckt. Das sind Tupel. Also der Schlüssel und der Wert
für jede Iteration. Wenn du stattdessen die Schlüssel haben willst, schreibst
du einfach die Schlüssel dorthin und
wenn du die Werte haben willst, schreibst
du einfach diese Werte
und du bekommst die Werte So iteriert man
Wörterbücher.
46. 46. Wie und warum du While Loops verwendest: Sie lernen also, dass eine Vierer-Schleife
durch einen Container iteriert
, der eine Liste, eine Zeichenfolge
oder ein Tupel sein kann, und dass die Schleife beendet wird wenn der Container erschöpft ist Es druckt also zum Beispiel eins, zwei und drei
aus. Und wenn es keine
Artikel mehr gibt, endet die Schleife. Also eine Viererschleife läuft, bis
ein Container erschöpft ist, und eine Whileloop eine
Drahtschleife , solange
diese Bedingung erfüllt ist Lassen Sie mich das ausführen und sehen,
was passieren wird Sie werden also sehen, dass
11 ständig
ausgedruckt wird ständig
ausgedruckt Wenn ich also hier nach oben scrolle, kann
ich nicht finden, wo der Startpunkt
war, weil dort jetzt alle Sekundenbruchteile
1 Million gedruckt
werden . Was hier also vor sich geht
, ist, dass eine Y-Schleife Y ein Schlüsselwort ist, und
darauf folgt eine Bedingung. In diesem Fall ist die
Bedingung, dass A größer als
Null ist, was wahr ist. A ist also tatsächlich drei,
das bedeutet, dass diese
Bedingung wahr ist. Und solange diese
Bedingung wahr ist, wird sie ausgedruckt. In der Wile-Schleife können
Sie also so viele
Aktionen ausführen, wie Sie möchten Lassen Sie
mich das zum Beispiel
mit Control C auf Ihrem Terminal unterbrechen und dann hier eine weitere Zeile hinzufügen, zwei
drucken, speichern, ausführen Also eins, zwei, eins, zwei, eins, 21, zwei wird ausgedruckt Okay, ich unterbreche das. Nun, die Geschwindigkeit, mit der diese
Zahlen
ausgedruckt werden, hängt von der Geschwindigkeit Ihres
Computerprozessors Je schneller Ihr Prozessor ist, desto schneller werden
die Aktionen hier ausgeführt, diese Operationen werden ausgeführt. Nun, das
wird natürlich immer so sein, weil es hier
nur eine statische
Deklaration einer Variablen ist, also ändert sie hier niemand. Daher
wird die Bedingung immer wahr sein. Du kannst in der Site
Python sehen, wenn du überprüfst, dass etwas Drei größer
als Null ist, du „wahr“ bekommst. Das ist also im Grunde absolut wahr und du wirst es manchmal so
sehen. Also lösche einfach die erste Zeile. Beenden Sie hier, führen Sie
den Code erneut aus. Also nochmal, das Gleiche passiert weil wahr immer wahr ist. Auf diese Weise werden
Wild Loops
in der realen Welt jedoch nicht verwendet. Es ist sinnlos zu
überprüfen, ob wahr
wahr ist , und ständig
etwas auszudrucken Lassen Sie mich also weitermachen und
Wil Loops im nächsten Video an einem besseren
Beispiel erklären Wil Loops im nächsten Video an einem besseren
Beispiel
47. 47. While Loops mit Benutzereingabe: Wir hatten also ein Skript, das
prüft, ob a größer als
drei ist , und diese
Operationen ausgibt, wenn das wahr ist. Lassen Sie mich nun
ein Beispiel aus der realen Welt verwenden. Lassen Sie uns hier eine
Variable namens
username erstellen und ihr
den Wert einer leeren Zeichenfolge geben. Und hier wollen wir
überprüfen, ob sich
der Benutzername vom echten Benutzernamen unterscheidet. Nehmen wir an
, es ist Pi Pi. Das ist zwar wahr, wir möchten den Benutzer bitten
, einen Benutzernamen einzugeben. Schauen wir uns also an, was
passieren wird. Geben Sie den Benutzernamen ein,
wir haben
hier die Aufforderung von der Eingabefunktion erhalten. Pi. Nein, wir bekommen wieder Enter
user name. Pi Pi vielleicht. Nein. Pi Pi. Also
bekommen wir dieses Mal keine Aufforderung mehr. Die Ausführung des Programms, also lassen Sie mich erklären,
was hier passiert ist. Wir haben die leere Zeichenfolge
zur Variablen username deklariert. Und dann
prüfen wir hier, ob sich der Wert der Benutzername-Variablen von Pi Pi
unterscheidet. In diesem Fall ist es anders, weil dies eine Eingabezeichenfolge ist und das ist Pi Pi. Daher wird die erste
Iteration stattfinden
, und zwar diese hier. In der ersten Iteration bitten
wir den Benutzer also, einige
Eingaben einzugeben Das ist hier
in der ersten Iteration passiert. Also wurde
zur Eingabe des Benutzernamens aufgefordert, und wir haben Pi eingegeben. Pi ist jetzt eine Zeichenfolge, die dem Benutzernamen zugewiesen
wird. Und die Schleife durchläuft
die zweite Iteration. Der Benutzername
unterscheidet sich zwar von Pi Pi, was in diesem Fall der Fall ist, denn der Benutzername
ist vorerst Pi, die Zeichenfolge Pi Pi ist also anders als Pipi. Fahren Sie daher fort und führen Sie den Körper
der Drahtschleife erneut Welches ist das hier. Fragen Sie den Benutzer also noch einmal nach
dem Benutzernamen. Also Benutzername, der Benutzer
gibt diesmal Pi P ein. Die Schleife geht erneut durch den Kopf bis zum
Anfang
und prüft, ob Pi P anders
ist als Pipi Das stimmt, hol dir
den Benutzernamen erneut. In diesem Fall haben wir Pi Pi. Der Benutzername ist jetzt also Pipi. Die Schleife wird erneut
wiederholt, obwohl der Benutzername anders
ist als
Pi Pi. In diesem Fall ist
das nicht der Fall,
da
der Benutzername in diesem Fall Pi Pi entspricht Also Pi Pi. Ist es anders als Pi Pi? Nein, das ist falsch. In der dritten Iteration wird
dies also gleich False sein, und dann endet die Schleife Vier Schleifen enden also, wenn der
Container erschöpft ist, und eine Schleife endet, wenn die
Bedingung falsch ist
48. 48. While-Loops, Break und Continue +: Im vorherigen Video
haben wir diesen Code erstellt. Der Code sieht so aus. Wir weisen die leere Zeichenfolge der Variablen username
zu. Dann bauen wir eine Drahtschleife, die
prüft, ob diese
Bedingung zutrifft. Wenn die Bedingung, dass
sich der Benutzername von Pi Pi
unterscheidet, wenn der Benutzername sich von Pi Pi unterscheidet, wird
dies ausgeführt. In der ersten Iteration
unterscheidet sich der
Benutzername tatsächlich von Pipi, da der
Benutzername eine leere Zeichenfolge ist Daher
wird dies ausgeführt. Das Programm fragt
nach dem Benutzernamen. Wenn die Eingabe beispielsweise A ist, wird
A dem Benutzernamen zugewiesen und dann beginnt die zweite
Iteration, also während A sich
von Pi Pi unterscheidet, was wahr ist Dies wird erneut
ausgeführt. Deshalb bekommen wir hier wieder diese
Aufforderung. Wenn Sie Pi Pi eingeben, endet
die Schleife, da sich
Pipi
in der dritten Iteration nicht von
Pipi unterscheidet, Pipi
in der dritten Iteration nicht von
Pipi unterscheidet sodass dies
nicht mehr vorkommt Jetzt gibt es einen anderen
Weg, dies mit
einer Break-Anweisung zu tun ,
anstatt wie oben beschrieben.
Lassen Sie mich das noch einmal anders machen, indem ich die Wile-Schleife verwende Aber dieses Mal möchten Sie
überprüfen, ob es wahr ist, obwohl es wahr ist, was immer wahr ist, sodass die Schleife immer
ausgeführt wird, bis wir sie unterbrechen Das ist zwar wahr, aber du
möchtest nach dem Nutzernamen fragen. Eingabe, geben Sie den Benutzernamen ein. Jetzt wollen wir hier
eine Bedingung erstellen, um
innerhalb der Wile-Schleife nachzuschauen Wenn der Benutzername Pip Pi ist, Break the Loop, sonst, Continue Mal sehen, was uns
das geben wird. Python drei, B dieser Pi. Das ist das
Skript auf der rechten Seite. Geben Sie den Benutzernamen ein. Hm, nein, nein. Pippi? Ja. Lass es mich nochmal versuchen. Wenn Sie sofort
wieder Pi Pi eingeben, wird die Schleife beendet Ich bevorzuge das
sogar, weil Sie
dadurch mehr Kontrolle über den
Arbeitsablauf Das ist es also, was hier passiert. Das ist zwar wahr, was immer wahr
ist. Die erste Iteration
findet also statt, weil true wahr ist, und wir fragen
in der ersten Iteration nach dem Benutzernamen In der ersten Iteration hier lautete
der Benutzername also ASFD der Benutzername Also, wenn ASFD gleich
Pipe Pi ist, unterbrich die Schleife. Das ist nicht der Fall, weil
ASFD anders ist als Pipi. Daher wird dies nicht , da diese
Bedingung falsch ist Sonst wird ausgeführt. Fahren Sie fort. Continue verschiebt nun das Steuerelement wieder
an die Spitze der Schleife. So benutzt man Break
and Continue in einer While-Schleife. Beide Möglichkeiten sind richtig, aber ich finde das
lesbarer.
49. 49. Ein Programm in Python erstellen: Hallo, willkommen zurück in
diesem neuen Bereich. Falls
Ihr bisheriges Python-Wissen in Bezug auf die Python-Grundlagen
, die Sie in
diesen Abschnitten gelernt haben, Lücken Bezug auf die Python-Grundlagen , die Sie in
diesen Abschnitten gelernt haben, aufweist, versuche
ich in diesem Abschnitt, diese Lücken
zu schließen, damit Sie
wissen, was vor sich geht. Wir werden das tun,
indem wir alle Teile zusammenfügen, indem wir mit
den Codeblöcken, die Sie
gelernt haben,
eine größere App erstellen den Codeblöcken, die Sie , sodass
alles mehr
Sinn ergibt und Sie wissen, wie man Programme aus der
realen Welt erstellt. Das ist also der erste
Schritt zur Entwicklung von Programmen für die reale
Welt. Und das ist nicht wirklich ein Programm aus
der realen Welt, weil
wir in den nächsten Abschnitten noch einige Beispiele aus der
realen Welt anführen werden . Dies dient also nur
dazu, sicherzustellen, dass Sie die wichtigsten
Python-Konzepte gut
gelernt haben. Fangen wir also mit dem nächsten
Video an. Wir sehen uns dort.
50. 50. Problem-Statement in Python: Hi, hier ist Arditi, dein Lehrer. Wenn Sie den vorherigen
Videos des Kurses folgen, bedeutet
das, dass Sie die
Grundlagen von Python lernen, und zwar
Variablen, Datentypen, Funktionen, Bedingungen,
Schleifen und Benutzereingaben Das ist der Kern von Python. Welche Anwendung
Sie auch erstellen
werden, sei es ein datenwissenschaftliches Skript oder eine Web-App oder etwas, das Ihre täglichen Aufgaben
automatisiert, Sie werden
fast immer all diese Grundlagen benötigen Bevor wir in diesem Abschnitt weiter zu den
fortgeschritteneren Funktionen von
Python gehen, wollen wir uns etwas Zeit nehmen und über das Gelernte
meditieren Mit Meditation meine
ich, dass Sie ein
wenig über diese Grundlagen nachdenken sollten
, die Sie Und der beste Weg, das zu
tun, besteht darin,
ein Programm zu erstellen , das all diese
Kernfunktionen von Python verwendet. verschwenden Lassen Sie mich das Programm demonstrieren, das wir erstellen werden
, ohne Ihre Zeit zu Ich habe den Code in einem Skript gespeichert. Ich werde
dir den Code nicht sofort zeigen. Ich werde
dir die Ausgabe zeigen. Also, wenn ich den Code ausführe, bekomme
ich eine Nachricht
ausgedruckt, sag etwas. Es ist also eine Aufforderung, die nach Benutzereingaben
fragt. Nehmen wir an, es ist heute
gutes Wetter. Rufen Sie das Programm auf und fragen Sie erneut
nach Eingabe. Wie ist das Wetter? Hier gibt es nur
ein paar Wolken. Geben Sie ein und wenn Sie das Programm beenden
möchten, drücken
Sie den umgekehrten Schrägstrich, drücken Sie die Eingabetaste, und
das ist die Ausgabe Dieses Programm ist, dass
es Sie nach Eingaben fragt. Sie geben die Eingabe immer wieder und sobald Sie die Eingabe mit einem Backslash (
Backslash End) beenden, wird
das Programm beendet
und die
eingegebenen Backslash End) beenden, wird
das Programm beendet
und die Phrasen
werden in Großbuchstaben ausgegeben Also
wird der erste Buchstabe groß geschrieben
und zu solchen Sätzen wird ein Punkt hinzugefügt,
und ein Fragezeichen, falls es sich um eine Frage wie
diese und ein Fragezeichen, falls es sich um eine Frage wie
diese hier handelt Und das Gleiche gilt für einen Punkt. Und das ist unsere geheime Zeichenfolge. Es ist also ein umgekehrter Schrägstrich d. Wenn
das Programm diese Zeichenfolge erhält, bedeutet das, dass es an der Zeit ist, das Programm zu beenden und das Ergebnis zu
erhalten Das ist also keine der
zehn realen Anwendungen , die ich in diesem Kurs zu
entwickeln verspreche Die erste Anwendung
kommt später im Kurs,
aber das dient nur dazu, das zu üben,
was Sie bisher gelernt haben. Auch wenn es
ein nutzloses Programm , wer
wird das
natürlich brauchen, aber es wird
dir sehr helfen, zu wissen, wie
man die Bedingungen, Funktionen
und Schleifen benutzt. Also mach das bitte
nach dem Ende dieses Videos. Ich möchte, dass du dir
etwas Zeit nimmst und darüber nachdenkst,
wie du dieses Programm lösen, programmieren kannst.
Jetzt kennst du die Ausgabe. Versuche nachzudenken und
versuche vielleicht, Code zu schreiben. Warum nicht? Ich erwarte nicht, dass
du das wirklich löst. Aber trotzdem, wenn Sie sich
in den Problemlösungsmodus versetzen
und dann, wenn Sie meine Lösung
in den folgenden Videos
sehen,
weil ich Sie Schritt für Schritt durch
den Code führen werde
,
wie man ihn und dann, wenn Sie meine Lösung
in den folgenden Videos
sehen , weil ich Sie Schritt für Schritt durch
den Code führen werde erstellt. Dann wirst du einen Aha-Moment
haben. Und dann kannst du dir Dinge besser
merken, denn in deinem Kopf war
das etwas, das du wissen
musstest, wenn du versuchst zu verstehen,
wie du das machen kannst Und dann siehst du, wie es gemacht wird, und dann lernst du es besser Also ja, ich werde in den nächsten Videos mit
dir sprechen.
51. 51. Annäherung an das Problem: Großartig. Lassen Sie uns weitermachen und dieses Programm jetzt
erstellen. Schauen wir uns
die Ausgabe noch einmal an , denn wenn
Sie ein Programm erstellen, möchten
Sie
eine klare Vorstellung
davon haben , wie die Ausgabe aussehen
wird, und dann versuchen, die
große Aufgabe in kleinere Aufgaben aufzuteilen. Nehmen wir zum Beispiel an, dieses Programm fragt immer wieder nach Benutzereingaben. Und es erhält einige
Zeichenketten in diesem Zeilenformat, keinen Punkt mit einem kleinen
Buchstaben am Anfang. Und wenn der Benutzer dann den
umgekehrten Schrägstrich d eingibt, kennt
das Programm diese Zeichenfolge
und gibt die Ausgaben zurück Das Programm schreibt also diese Zeichenketten groß. Der erste Buchstabe wird also groß geschrieben und es wird ein Punkt
oder ein Fragezeichen hinzugefügt Nun, Sie sehen, das ist eine Liste
von Phrasen hier mit Sätzen. Aber wie gesagt, versuchen Sie, die Aufgabe in
kleinere Aufgaben
aufzuteilen. Versuchen Sie also, die Ausgabe
in kleinere Teile aufzuteilen. in diesem Fall nicht darüber nach, Denken Sie in diesem Fall nicht darüber nach, wie Sie diese Liste
erstellen, sondern überlegen Sie, wie Sie
die geringstmögliche Leistung erzielen können. In diesem Fall erhalten Sie auf diese Weise eine Zeilenzeichenfolge wie diese hier und wie Sie
sie in diese Zeichenfolge konvertieren. Und der beste Weg, dies zu tun, besteht
darin eine Funktion zu verwenden, um
Ihre eigene Funktion zu definieren , die diese Zeichenfolge abruft und
diese hier erzeugt. Als Erstes müssen
Sie also eine Funktion erstellen. Lass uns das im nächsten Video machen.
52. 52. Baue die Maker-Funktion: Beginnen wir also damit,
eine Funktion zu erstellen, die
diese Art von Zeichenketten
in diese Form umwandelt . Definiere, nennen wir
diesen Satzmacher. Es macht also Sätze
aus Zeilenfolgen. Nennen wir die Zeichenketten Phrasen. Phrase. Also bekommt es
eine Phrase und zuerst willst
du
diese Phrase groß schreiben, richtig? Erstellen Sie also vielleicht eine Variable
innerhalb dieser Funktion, nennen Sie sie großgeschrieben
oder wo auch immer Sie wollen, und sagen Sie Phrase und verwenden Sie die Methode mit
Großbuchstaben In der Zwischenzeit können Sie
Ihre interaktive
Python-Shell verwenden , um
Methoden auszuprobieren , um zu sehen, wie sie funktionieren,
während Sie gleichzeitig eine Funktion
in Ihrem Editor
erstellen. Nehmen wir zum Beispiel an, ich möchte
diese Zeichenfolge groß schreiben Zunächst möchte ich
ausprobieren, wie die Methode mit Großbuchstaben funktioniert Jetzt bin ich mir sicher, dass der erste
Buchstabe
groß geschrieben wird, also ist das Nein, wir wollen diesen Ausdrücken
einen Punkt oder ein Fragezeichen hinzufügen
, um sie
zu verketten , oder Aber das hängt davon ab. Deshalb
sprechen wir hier von einer Erkrankung. Das Programm muss
entscheiden, ob
am Ende des Satzes
ein Punkt oder ein Fragezeichen stehen soll . Lassen Sie uns also weitermachen und die Bedingung
aufbauen. Wenn Satz. Wie können wir also zwischen
Fragen und einfachen Sätzen
unterscheiden , die mit einem Punkt enden? Nun, es kann
verschiedene Möglichkeiten geben, das hängt
also
vom Programmierer ab und wie anspruchsvoll
Sie das machen möchten Aber lassen Sie es uns einfach halten. Nehmen wir an, Fragen
sind all jene, die mit
fragenden Worten
wie wie, warum und was
beginnen wie wie, warum und Und das können Sie überprüfen, sagen wir, Sie
haben einen Satz, zum
Beispiel, wie geht es Ihnen nochmal Sie können die Methode
start with verwenden, die ein Tupel als Eingabe erhält Also ein Tupel und innerhalb des Tools können
Sie einige Zeichenketten haben, können
Sie einige Zeichenketten haben denen Sie überprüfen, ob der Satz mit einer
dieser Zeichenketten
in diesem Tupel beginnt dieser Zeichenketten
in Also lass uns sagen wie, was? Und warum. Das wird also wahr zurückgeben, denn wie fängt
man mit einer
dieser Zeichenketten an? In einem anderen Szenario
, zum Beispiel bei schönem Wetter, wirst
du falsch liegen. Also können wir uns das
zunutze machen und sagen, ob Satz mit Wie beginnt? Was? Und warum? Das können Sie tun, oder noch besser wäre es,
dieses Tupel zu holen und
es in einem sehr Brunnen zu speichern Sagen wir Befragungen
und legen es dort hin. Dann fügen Sie hier einfach
die Variable ein, und das macht den
Code lesbarer Wenn der Satz also
mit Fragebögen beginnt, wollen wir in diesem
Fall eine Zeichenfolge konstruieren Nehmen wir an, die Funktion return gibt diese
Zeichenfolge zurück. Das ist also groß geschrieben. Großgeschrieben wird also die großgeschriebene Version
der Phrase, die der Benutzer eingibt, und dann wollen wir
einfach
so ein Fragezeichen hinzufügen einfach
so ein Fragezeichen Das wird also durch diese Zeichenfolge in
Großbuchstaben ersetzt, und dem wird ein
Fragezeichen hinzugefügt Das passiert also, wenn der
Satz mit einem der Fragebögen
beginnt sonst kommt er zurück. In diesem Fall
geben wir einen Satz mit einem Punkt und
einem Punkt zurück Auch hier setzen wir
Großbuchstaben ein. Lassen Sie mich bis
jetzt zeigen, was wir haben. Satzmacher. Also wollen wir die
Funktion ausführen, oder? Mit einem Wort, mit einer
Phrase. Wie geht's dir? Speichern, ausführen. Und so verstehen wir den Satz
richtig. Und wie geht's dir? Das ist es. Jetzt
haben wir eine Funktion , die etwas tut
und es gut tut. Lassen Sie uns nun
im nächsten Video über die anderen Aspekte
eines Programms nachdenken .
53. 53. Den Loop konstruieren: Im vorherigen Video haben wir hier diese Funktion
erstellt, die eine Phrase als Eingabe erhält, also eine Zeichenfolge, und wenn Sie die Funktion
ausführen, wird
sie diese
Version der Zeichenfolge zurückgeben Nun wird die Ausgabe
des Programms, das Sie in
diesem Abschnitt erstellen ,
immer wieder nach diesen
Phrasen in Form von Benutzereingaben fragen . Wir sprechen also davon,
Benutzereingaben vom Benutzer zu erhalten. Und da das
immer wieder passiert, haben wir
hier einen Hinweis darauf , dass es sich um eine Schleife
handelt. Und da diese Schleife, also wenn der Benutzer einen
Backslash eingibt, endet die Schleife mit dieser Zeichenfolge Das heißt, wir
sprechen von einer bedingten Schleife, und das bringt uns dazu, über Wile-Schleifen
nachzudenken,
weil Wile-Schleifen auf Bedingungsbasis funktionieren Nehmen wir an, die Wile-Schleife
wird ständig ausgeführt, sodass sie nach Benutzereingaben fragt Geben Sie ein, sagen Sie etwas, eine Spalte und machen Sie
dort etwas Platz, nur zur Dekoration Was passiert also, wenn der Benutzer
eine Eingabe eingibt? Hm. Nun, zuerst
wollen wir diese Eingabe überprüfen, ob diese Benutzereingabe
tatsächlich die spezielle Zeichenfolge ist. Wenn das der Fall ist,
wollen wir die Schleife durchbrechen. Sonst. Was wir machen
wollen? Sonst? Hm. Also hast du diese
Sätze dort gesehen. Sie sahen aus wie eine Liste. Es waren also mehrere von ihnen. Das heißt, wir sprechen davon
, eine Menge Gegenstände zu haben. Und wenn Sie an viele Artikel
denken, denken
Sie an eine Liste. Vielleicht möchten wir also die Phrasen
, die der Benutzer eingibt, in einer
Liste
speichern . Wie können wir das machen? Nun, das können wir tun, indem wir
mit einer leeren Liste
außerhalb der Schleife beginnen . Python wird also
die Funktionsdefinition ausführen. Das brauchen wir nicht mehr, weil
wir
es gerade benutzt haben, als wir die Funktion
getestet haben. Sobald die
Funktionsdefinition von Python gelesen wurde, rufen
wir
die Funktion hier nicht auf. Wir werden eine leere Liste
erstellen und dann die Schleife starten. Der Benutzer wird mit einer Nachricht
aufgefordert. Wenn eine Zeichenfolge, die der
Benutzer eingibt, diese ist werden
wir alles kaputt machen. Die Schleife wird also enden, andernfalls, wenn diese Zeichenfolge nicht dem entspricht,
was der Benutzer eingegeben hat, andernfalls wollen
wir
die Benutzerzeichenfolge anhängen, also Benutzereingaben in
die Ergebnisliste Also am Ende der
Schleife, was hier so unbeabsichtigt ist, ist
das, nachdem die
Schleife beendet ist,
was nur passiert, wenn
die Also, wenn der Benutzer das eingibt, nachdem die Schleife beendet ist, werden
wir eine
Liste mit vielen Daten haben Also Ergebnisse ausdrucken. Wie geht's dir? Ob es gut ist und
und und das haben wir. Okay, ich weiß. Dies sind die Zeichenketten, die
der Benutzer eingegeben hat. Wie können wir also
die tatsächlichen Zeichenketten bekommen? Nun, das ist sehr einfach. Hier fügen wir die Zeilenzeichenfolgen, die der Benutzer eingegeben hat, an
die Liste Aber wir haben eine Funktion, die diese Zeichenketten
in Sätze
umwandeln kann diese Zeichenketten
in Sätze
umwandeln Lass uns diese
Funktion benutzen. Wir werden die Ausgabe
der Funktion anhängen Um die Ausgabe zu erhalten,
müssen Sie die Funktion aufrufen. Um die Funktion aufzurufen, benötigen Sie
eine Eingabe für die Funktion. Die Eingabe hier ist
die Benutzereingabe. Einfach so, führe es erneut aus. Und wir haben diese Ausgabe
wie erwartet erhalten. Wir machen also gute Fortschritte. Wir wollen
hier jedoch nicht den geringsten Output. Wir wollen nur eine Zeichenkettenausgabe ohne diese eckigen Klammern. Wie können wir also
all diese Zeichenketten
zusammenführen oder verketten , um
einen einzigen Text als Lass uns das im nächsten Video machen.
54. 54. Die Ausgabe benutzerfreundlich gestalten: Um also alle Zeichenketten zu einer
einzigen Zeichenfolge zu verketten, können
Sie die
Join-Methode von Strings verwenden Das ist also eine Methode von Zeichenketten.
Das ist eine Zeichenfolge hier. Lassen Sie mich zum Beispiel diese Zeichenfolge
eingeben. Es ist nur ein Gedankenstrich, aber
es ist immer noch eine Zeichenfolge. Diese gemeinsame Methode
erhält eine Liste als Eingabe. Wie geht's dir? Gut, gut. Das ist also eine Liste von Zeichenketten. Wenn Sie das ausführen, werden
diese Elemente
der Liste durch diese Zeichenfolge hier
verknüpft
, die Sie hier deklarieren. Wenn Sie also mehr hinzufügen, um es klarer zu
machen, erhalten Sie einen Bindestrich, der all diese Zeichenketten
verbindet, diese Elemente der Liste, das erste Element, das zweite
Element, das dritte Element. Wir können
das hier nutzen, indem wir sagen, treten Sie der Ergebnisliste bei. Speichern Sie das, führen Sie es aus. Das Wetter ist gut und wie
geht's dir? Das Wetter ist gut? Wir haben hier ein kleines Problem. Wir brauchen wahrscheinlich ein Leerzeichen
zwischen diesen Zeichenketten. Das können wir also sehr einfach machen. Sie können einfach ein
Leerzeichen in die Zeichenfolge einfügen und dann erneut ausführen. Und das sind die Ergebnisse , die wir
für unser Programm erwartet hatten. So erstellen Sie dieses
Programm in diesem Abschnitt. Sie definieren zusätzlich zu
Ihrem Skript eine Funktion , die etwas tut
und das sehr gut macht. Dann iterierst du,
du machst eine Schleife. Sie bitten den Benutzer bei jeder Iteration um
Eingabe. Überprüfen Sie sofort, ob die
Eingabe die Zeichenfolge war. Sie möchten nicht zuerst anhängen
und dann überprüfen, ob die
Benutzereingabe dieser entspricht Sie
möchten dies also nicht als erste Bedingung verwenden,
denn wenn Sie
das hinzufügen, bedeutet
das, wenn der
Benutzer hier einen umgekehrten
Schrägstrich eingibt und
danach die Ergebnisse angehängt wurden erste Bedingung verwenden,
denn wenn Sie
das hinzufügen, bedeutet
das, wenn der
Benutzer hier einen umgekehrten
Schrägstrich eingibt , wird diese Endzeichenfolge mit umgekehrtem Schrägstrich an
die Ergebnisliste angehängt Endzeichenfolge mit umgekehrtem Schrägstrich an
die wird Das willst du nicht.
Daher müssen Sie sofort überprüfen, ob die
Zeichenfolge ein umgekehrter Schrägstrich
D ist , und das
Programm unterbrechen, falls dies
der Fall ist . Andernfalls müssen Sie dies tun Speichern Sie also die Ausgabe
des Satzmachers
in der Ergebnisliste ab Dann verketten Sie zum Schluss einfach
die Elemente dieser
Liste und drucken Sie
die Ergebnisse aus , und
zwar dieses hier Ich hoffe, dieses Programm
war nützlich für Sie und
Sie haben etwas gelernt, wie
man Teile zusammensetzt In den nächsten Videos werden
wir
einige fortgeschrittenere
Dinge über Python lernen , und danach werden
wir uns mit der ersten
realen Anwendung befassen. A Die nächste Anwendung
danach und die nächste, also werden Sie zehn Anwendungen
haben. Und ich weiß, dass Sie
ein guter Programmierer sein werden, wenn
Sie
diese Anwendungen ernst nehmen ein guter Programmierer sein werden, wenn
Sie Ich wünsche Ihnen weiterhin viel
Spaß mit meinen Unterweisungen
in den nächsten Videos
55. 55. Einführung in das Listenverständnis: Hallo, willkommen zurück.
In diesem Abschnitt erfahren
Sie mehr über das
Verständnis von Listen. Listenverständnisse
ähneln nun vier Schleifen. Der Hauptunterschied besteht darin, dass
Sie
bei einem Listenverständnis den Code
in einer einzigen Zeile schreiben Und mit vier Schleifen haben Sie mehrere Zeilen Außerdem
sind Listenverständnisse ein Spezialfall
von vier Schleifen Sie werden verwendet, wenn Sie eine Liste erstellen
möchten. Ein Listenverständnis ist also eine
Schleife, die eine Liste erstellt. Sie können eine Liste
auch mit vier Schleifen erstellen,
aber wie gesagt, die
Listenverständnisse bestehen aus nur einer aber wie gesagt, die
Listenverständnisse bestehen aus nur Das macht den Code
eleganter und pythonischer. Lassen Sie uns also
in diesem Abschnitt
anhand von Beispielen mehr über das Verständnis von
Listen lernen in diesem Abschnitt
anhand von Beispielen
56. 56. Ein einfaches Listenverständnis: Im Laufe meiner Erfahrung mit Arbeit mit großen Datensätzen sind
mir einige Techniken aufgefallen, mir einige Techniken aufgefallen die
Datenerfassungsinstitute verwenden, um Speicherplatz
zu sparen und dafür zu sorgen, dass ihre Daten weniger
Speicherplatz auf Computerfestplatten haben Eine gängige Technik besteht darin,
keine Dezimalzahlen zu verwenden. Wenn Sie beispielsweise nach Temperaturdaten
suchen, werden
Sie nicht die
tatsächlichen Temperaturen sehen, die , sagen wir, Celsius
sind, Sie werden sie nicht so sehen, aber Sie werden sie
ohne die Punkte sehen, weil das Speicherplatz auf den Servern
spart Also ein Zeichen weniger, das bedeutet ein paar Byte weniger. Ihre Pflicht als
Programmierer ist es also, all diese Werte
durch zehn zu teilen , sodass Sie die tatsächlichen Daten
erhalten Nehmen wir an, diese Daten
waren in einigen Textdateien enthalten, und wir öffnen diese
Daten mit Python, und der Kurs behandelt
tatsächlich , wie man
Textdateien in Python öffnet. Aber lassen Sie uns
diesen Teil vorerst überspringen. Nehmen wir an, wir haben sie hier als Liste
geladen. Jetzt wollen wir tatsächlich
jeden von ihnen durch zehn
teilen . Also, wie
machst du das? Nun, eine Technik besteht darin, über TAMs
zu iterieren. Für Temp in Temps
und in jeder Iteration sollten
Sie also und in jeder Iteration Temp dividieren durch zehn Aber wo speichern wir
diese Temperatur geteilt durch zehn? Nun, wir können
es in einer neuen Liste speichern. Sagen wir, neue Mitarbeiter. Das ist vorerst eine leere Liste. Die Schleife wird also durch
diese Liste iterieren und bei jeder Iteration werden
wir
diesen Wert an neue TEMs anhängen Hängen Sie also diesen Wert an. Das sieht okay aus. Und
dann neue TEMs ausdrucken. Lassen Sie mich weitermachen
und das ausführen. Das ist also die gewünschte Ausgabe. Nun, das ist sehr richtig, aber es gibt eine bessere Möglichkeit,
dies in nur einer
Zeile Python-Code zu tun dies in nur einer
Zeile Python-Code Und zwar mithilfe von Listenverständnissen.
Es geht so Sie müssen keine leere Liste erstellen
, weil
eine Liste dynamisch
generiert wird,
Sie würden sagen, Temp geteilt durch zehn, vier Temp in Temps Drucken Sie neue Temps aus, um zu
sehen, was wir bekommen, führen Sie aus und Sie erhalten
exakt dieselbe Ausgabe Das ist also ein Listenverständnis. Es ist eine Möglichkeit, eine Liste zu erstellen ohne eine Viererschleife
erstellen zu müssen,
eine Standardschleife mit vier Schleifen,
weil wir hier tatsächlich eine
Inline-Viererschleife
haben Was
hier vor sich geht, ist, dass wir hier eine Iteration
haben
und in jeder Iteration werden
wir diesen Wert in
der Liste in der neuen TEMS-Liste
speichern der Liste in der neuen TEMS-Liste Das ist also so, als würde man
Speichertemperatur geteilt durch zehn sagen, aber Python wird sagen: Okay, aber was ist TEM?
Es ist eine neue Variable Wir haben es nicht, wir haben es nirgends
definiert. Und dann sagen wir: Nun,
für Temp in ist
Temp eine Variable von So erstellen Sie also eine Liste mit diesen Werten für jeden Wert
von TAMS Das ist ein Listenverständnis.
57. 57. Listenverständnis mit einem If-Conditional: Wenn Sie nun mit
Beobachtungen wie
Wetterbeobachtungen, z.
B. Temperaturen, gearbeitet haben Beobachtungen wie
Wetterbeobachtungen, z.
B. Temperaturen, , ist
Ihnen vielleicht aufgefallen, dass diese Art
von Werten manchmal
in diesen Daten vorkommen,
was bedeutet, dass
für diese Beobachtung kein Wert oder
kein gültiger Wert gefunden wurde und Organisationen diesen
speziellen Wert verwenden, um zu bedeuten, dass keine Daten vorliegen Wenn wir also
ein Listenverständnis verwenden wollen , bei dem wir all diese Werte durch zehn
teilen, all diese Werte durch zehn
teilen, sollten
wir darauf achten, diesen Wert nicht durch zehn zu
teilen wollen wir ignorieren
. benötigen
wir eine I-Bedingung innerhalb des Listenverständnisses.
So können wir es machen Erstellen Sie also eine neue Variable, in Sie die neue Liste speichern werden. Und noch einmal, sagen wir Temperatur
geteilt durch zehn für
Temperatur in Temperaturen Wenn die Temperatur unterschiedlich ist, zum Beispiel minus 9999 Drucken Sie neue TEMs, führen Sie sie
auf dem Terminal und wir erhalten das erwartete Ergebnis Das ist also genau wie der
einfache Loop,
den wir im vorherigen Video gesehen haben , mit dem Zusatz
der I-Bedingung. Das ist also bedingt. Wir prüfen, ob die Temperatur
anders ist als minus 9999.
58. 58. Listenverständnis mit einem If-Else Conditional +: Zuvor haben wir
dieses Listenverständnis entwickelt, das diese Liste durchläuft
und jedes
Element dieser Liste durch zehn
teilt. Es ignoriert nur, wenn die Temperatur
anders Was passiert also, wenn
temp gleich dieser Zahl ist? Nun, die Schleife, das
Listenverständnis wird diesen Wert ignorieren, wie
Sie in der Ausgabe gesehen haben Das war also die Ausgabe. Was ist, wenn Sie stattdessen
einen anderen Wert angeben möchten? Nehmen wir an, Sie möchten Null
anstelle dieser negativen Zahl eingeben . In diesem Fall, wenn Sie denken,
Sie könnten hier einfach se,
Null, machen , Sie würden das ausprobieren, Sie würden sich irren, weil
das zu einem Syntaxfehler führen würde. Wenn Sie ein Is in
der Liste haben, ist
die Reihenfolge der Komponenten etwas anders Man muss die
vier Temp in Temps haben, also muss die Schleife
hinter der Bedingung sein ,
einfach Wenn Sie das ausführen, werden
Sie die erwarteten
Ergebnisse erzielen Sie sehen dort also die Null
statt minus 9999. Das Listenverständnis sieht
dieses Mal also so aus. Geben Sie mir Temperatur geteilt durch zehn, nur wenn sich die Temperatur von dieser Zahl
unterscheidet, andernfalls geben Sie mir Null
für Temperatur in Temperaturen Denken Sie also immer daran
, dass, wenn Sie
ein Verständnis von Is in der
Liste machen müssen ,
die For-Schleife ganz
am Ende so endet
59. 59. Mehr über Funktionen: Willkommen zurück in einem neuen Bereich. In diesen Videos erfahren Sie mehr über Funktionen
. Sie haben bereits im Kurs gelernt, wie man
eine Funktion definiert und wie man
sie aufruft. Aber hier lernen Sie einige fortgeschrittenere
Konzepte über Funktionen kennen, und Sie müssen wirklich, wirklich über Funktionen lernen,
weil es sich dabei
um einige sehr
grundlegende Codeblöcke handelt. Sie schreiben also Ihre Programme indem Sie Funktionen verwenden, die bestimmte Dinge
tun. Lasst uns also mehr
über Funktionen lernen . Wir
sehen uns im nächsten Video.
60. 60. Funktionen mit mehreren Argumenten: Vielleicht erinnern Sie sich an
die Funktion len und die Instanzfunktion is. Die Len-Funktion benötigt nur ein Argument und die Stance-Funktion Sie, also benötigt
sie zwei Argumente. Das können Sie auch in
der Hilfedokumentation nachlesen. Obj, das ist das einzige
Argument, das eine Länge benötigt. Und wenn du dir die Haltung ansiehst, wird
es Obj und
Klasse oder Manche Funktionen benötigen also ein
Argument, manche zwei. Diese beiden Funktionen wurden nun in Python-Funktionen
eingebaut. Also hat das Python-Entwicklerteam diese Funktionen
entworfen. Wie können wir also
unsere eigenen Funktionen
mit mehreren
Argumenten erstellen ? Ziemlich einfach. Nehmen wir an, wir möchten, dass eine
Flächenfunktion,
die die Fläche eines Rechtecks berechnet , mehr als ein Argument
hat Sie müssen nur
die Parameter durch ein Komma trennen Also Parameter und Argument. Ein Parameter ist das, was wir
auf diese Variablen beziehen , wenn wir
die Funktion definieren, und wenn wir die
Funktion wie hier aufrufen, bezeichnen
wir sie sozusagen als Argumente auf
der
Funktionsaufrufseite. also A mal B zurück
, um die
Fläche eines Rechtecks zurückzugeben. Und wenn
Sie die Funktion aufrufen, übergeben
Sie natürlich einfach Werte
für diese Argumente. Und Sie erhalten den Wert korrekt
ausgegeben.
61. 61. Standard- und Nicht-Standardparameter, Schlüsselwort- und Nicht-Schlüsselwort-Argumente: In Python
kann es sich hauptsächlich um zwei Arten von Argumenten handeln. Wir haben Argumente, die keine Schlüsselwortargumente und wir haben Schlüsselwortargumente. Bei diesen beiden Argumenten handelt es sich nicht um
Schlüsselwortargumente. Ihnen ist das
Schlüsselwort nicht angehängt. Wenn dies jedoch der Fall wäre, würden
die Dinge immer noch genauso
funktionieren. Aber diese beiden würden jetzt
als Schlüsselwortargumente bezeichnet. Argumente,
die kein Schlüsselwort sind, also dieses eine ,
zwei, werden auch
als Positionsargumente bezeichnet Sie werden als
Positionsargumente bezeichnet , weil die Art und Weise, wie Sie
diese beiden Argumente
der Funktionsdefinition mitteilen , auf der Position
basiert Die erste Position,
vier, steht also für A und die
zweiten fünf für B. Positions- und
Nicht-Schlüsselwortargumente sind
also dasselbe, wenn
es Schlüsselwortargumente Die Position
spielt eigentlich keine Rolle. Sie können also den Wert von
B als erstes Argument übergeben ,
wenn Sie möchten, und vier gehen an B
und fünf an A. Solange Sie sie
also so übergeben, Schlüsselwortargumente, die Position keine Rolle, Sie würden immer noch
dieselbe Ausgabe erhalten. Jetzt haben wir auch
Standardparameter, keine Argumentparameter. Das bedeutet,
dass ein Parameter einen solchen
Standardwert haben
kann,
was bedeutet, dass Sie den Wert
dieses Arguments nicht angeben
müssen den Wert
dieses Arguments nicht angeben
müssen , wenn
Sie die Funktion aufrufen. Also weisen wir A fünf zu
und B ist standardmäßig sechs. Daher erhalten wir 30. A muss nicht unbedingt ein Kord-Argument sein. Es kann
hier im Funktionsaufruf auch ein
nicht kurdisches Argument sein , Sie erhalten immer noch dieselbe Ausgabe Natürlich kannst du B auch einen anderen Wert
zuweisen. Einfach so. Und schließlich können
Sie es auch so belassen, wenn es
sich nicht um Schlüsselwortargumente handelt, und Sie erhalten die
Ausgabe trotzdem korrekt. Sie
sollten wissen, dass
ein Standardparameter nicht vor
Nicht-Standardparametern stehen
kann. Wenn Sie das ausführen, erhalten
Sie eine Fehlermeldung. Es heißt, dass ein nicht standardmäßiges Argument dem Standardargument
folgt. Also folgt ein nicht
standardmäßiges Argument auf das Standardargument, das A ist. Und das ist meiner Meinung nach eine
sehr gute Information über Funktionsargumente
und Parameter.
62. 62. Funktionen mit einer beliebigen Anzahl von Nicht-Schlüsselwort-Argumenten: Einige Funktionen in Python,
wie die Funktion len, erhalten nur ein Argument. Wenn Sie versuchen,
mehr als ein Argument zu übergeben, wird ein Fehler zurückgegeben besagt, dass
genau ein Argument benötigt wird. Einige andere Funktionen,
wie z. B. instance
, benötigen genau zwei Argumente. Zweitens, wenn Sie versuchen,
drei Argumente oder nur
eines zu übergeben , erhalten Sie eine Fehlermeldung. Einige andere Funktionen wie print benötigen eine unbestimmte
Anzahl von Argumenten, und Sie haben gesehen, wie wir solche Funktionen
mit nur einem oder mehreren Argumenten
definieren können , aber ich habe immer noch nicht
erklärt, wie
man diese
Art von Funktionen erstellt Lass uns eine erstellen.
Definieren Sie, nennen wir diesen Mittelwert, um den
Mittelwert einer Reihe von Zahlen zu berechnen. Stellen Sie sich vor, das
wäre unsere Funktion. Wir wollen so
viele Artikel weitergeben, wie wir wollen. Wir haben tatsächlich früher eine
Mean-Funktion erstellt, die wir so aufrufen konnten, aber sie hatte immer noch
nur ein Argument, also war es eine solche Liste. Es ist immer noch ein
Objekt, ein Argument. In diesem Fall
wollen wir keine Liste weitergeben. Wir möchten so
viele Artikel weitergeben, wie wir möchten. Also Min und dann, was du tust, du verwendest Sternchen und dann Bögen Das kann
eigentlich alles sein, was hinter dem Sternchen steht. Jeder Variablenname würde funktionieren, aber es ist eine gute Praxis, da jeder Programmierer Arcs verwendet Es ist also gut, dass Sie
Arcs verwenden , damit andere Ihren Code
lesen können Und Sie gewöhnen sich auch daran, den
Code anderer
zu lesen , indem Sie ständig Bögen Sie wissen, wovon die anderen
sprechen. Lassen Sie mich Ihnen nun
etwas zeigen, bevor ich den Algorithmus
anwende, der den Mittelwert
berechnet Bögen zurückgeben. Mal
sehen, was wir hier bekommen. Lassen Sie mich jetzt die Funktion aufrufen. Also eins, drei, du kannst
auch Zeichenketten übergeben, was auch immer du willst, so. Und was Sie erhalten, ist tatsächlich eine obere Stange, die
alle Gegenstände enthält, all die Objekte, die Sie in der Funktion Kohle
übergeben haben. Das ist also tatsächlich ein oberer Pol. Was können wir also
mit einem Tupel machen, mit dem wir die Summe der Bögen berechnen
können Arcs ist also eine Variable, keine Sternbögen, geteilt
durch die Länge der Bögen In diesem Fall würde es einen
Fehler geben, weil wir Also entferne A von
dort und versuche es erneut. A ist eine Zeichenfolge, daher
macht es keinen Sinn , den Durchschnitt einer Zeichenfolge zu haben. Also haben wir gerade
eine Funktion mit
einer beliebigen Anzahl von nur bekannten
Schlüsselwortargumenten erstellt . Ich sage nur, weil Sie hier
keine
Schlüsselwortargumente haben können. Sie sehen, dass X gleich drei ist, hier nicht funktionieren
würde. Wenn Sie Schlüsselwortargumente
benötigen, schauen Sie sich das nächste Video an.
63. 63. Funktionen mit einer beliebigen Anzahl von Schlüsselwort-Argumenten +: Diese Funktion hier
, die wir in der
vorherigen Vorlesung erstellt haben,
akzeptierte also , die wir in der
vorherigen Vorlesung erstellt haben, eine beliebige Anzahl
von Argumenten, die kein Schlüsselwort sind. Bei Schlüsselwortargumenten müssen
Sie
ein weiteres Sternchen zum Sternchen hinzufügen ein weiteres Sternchen zum Sternchen und dann einen Variablennamen übergeben, aber Kew arcs Verwenden Sie das also bitte,
obwohl Sie es nicht müssen, und schauen Sie
dann, was KeyWRC ist,
was für Keyword Args steht . Wenn Sie versuchen,
die Funktion dort aufzurufen, erhalten
wir eine Fehlermeldung,
da es sich hier nur um
eine Funktion mit einer
beliebigen Anzahl
von Schlüsselwortargumenten handelt eine Funktion mit einer
beliebigen Anzahl von Schlüsselwortargumenten Daher
müssen all diese Argumente als Argumente,
Schlüsselwortargumente benannt werden , wobei das
Schlüsselwort der Argumentname ist. B und C mögen das und führen Sie es aus
und Sie erhalten ein Wörterbuch. Das Wörterbuch wird
Elemente enthalten, bei denen jeder Schlüssel
der Name der
Argumente ist, die Sie beim Aufrufen
der Funktion
verwendet haben der Name der
Argumente ist, die Sie , und der Wert ist der
Wert dieses Arguments. Funktionen mit einer
beliebigen Anzahl von Schlüsselwortargumenten werden
leichter verwendet als Funktionen mit einer beliebigen Anzahl von Argumenten, die
kein Schlüsselwort sind, wie z. B. die Print-Funktion
, von der ich Ihnen zuvor erzählt habe, bei der Sie einfach beliebig viele Argumente
ohne ein Schlüsselwort
übergeben können .
Da hast du es also.
64. 64. Einführung in die Dateiverarbeitung: Sie haben
verschiedene Datentypen kennengelernt , die Sie in Python verwenden können Sie haben zum Beispiel gelernt
, dass Sie Zeichenketten und
Listen und Zahlen usw. haben können Und wir haben diese
Datentypen in Variablen gespeichert. So wurde beispielsweise eine Variable mit einer Zeichenfolge verknüpft
. Das Problem dabei
ist, dass Sie
Daten in Ihrem Python-Programm speichern . Wenn Sie die Punktzeit wirklich,
wirklich speichern möchten, z. B. wenn Sie Wettervorhersagen
speichern möchten, sollten
Sie
diese Prognosewerte nicht in
Zeichenketten oder Zahlen
in Ihrem Punkt-PY-Skript schreiben diese Prognosewerte nicht in . Stattdessen möchten Sie diese Daten in
externen Dateien speichern,
zum Beispiel in Textdateien oder
CRC-Dateien,
oder später lernen Sie etwas
über Datenbanken,
wie man Daten in
Datenbanken speichert und
diese Daten über Python abruft und sie in Python
verarbeitet In diesem Abschnitt
erfahren Sie jedoch, wie Sie Daten in
Textdateien speichern und wie Sie
Daten aus Textdateien abrufen, wie Sie
Textdateien mit Python erstellen, wie Sie die Daten
aus Textdateien lesen und mit Python
verarbeiten. Das ist also ein sehr, sehr wichtiges
Konzept der Programmierung. Das ist also ein
fortgeschrittenes Konzept, und das lernst du
in diesem Abschnitt. Also viel Spaß und wir
sehen uns im nächsten Video.
65. 65. Dateien mit Python verarbeiten: Hier auf meinem Desktop habe ich eine Textdatei,
Flout Dot TXT Wenn ich darauf doppelklicke,
wird es mit einem der
Texteditoren geöffnet , die ich auf meinem Computer
installiert habe Der Texteditor ist ein Programm, und in diesem Programm kann
ich diese Datei lesen, sodass ich diese Zeilen lesen kann. Ich kann hier mehr Zeilen schreiben, ich kann das kopieren und einfügen, sie
multiplizieren, um viele dieser Zeilen
hier in dieser Textdatei zu haben , und ich kann all das mit
diesem Texteditor-Programm machen diesem Texteditor-Programm , das ich zufällig
hier auf meinem Computer habe. Jetzt können wir
dasselbe mit Python tun, was bedeutet,
dass wir
die Datei mit Python lesen mehr
Inhalt in diese Datei schreiben können. Wir können das multiplizieren und
das können wir tatsächlich sehr effizient machen. Wenn ich das multiplizieren müsste, müsste
ich
sie vielleicht 1.000 Mal kopieren und einfügen. Aber mit Python können Sie das sehr einfach
machen. Machen wir weiter und machen dasselbe mit Python und beginnen
wir mit dem
Lesen der Datei. Also, wie liest man eine
Datei mit Python. Das zeige ich dir
im nächsten Video.
66. 66. Text aus einer Datei lesen +: So öffnen Sie eine Textdatei mit Ihrem
bevorzugten Texteditor-Programm, und lassen Sie mich Ihnen zeigen, wie Sie dasselbe mit Python
tun können. Natürlich
ist die Erfahrung ein bisschen anders. Es geht nicht darum,
auf die Datei zu doppelklicken, es geht darum, Code zu schreiben. Wenn Sie diese Datei also
mit Ihrem Texteditor öffnen,
passiert, dass ein Objekt in Ihrem temporären
Speicher Ihres Computers im RAM
erstellt wird . Die Datei war also
auf der Festplatte. Wenn Sie sie öffnen, wird sie
als eine Art
Objekt im RAM erstellt . Das Gleiche passiert mit Python. In diesem Fall
möchten Sie vielleicht das Objekt,
das Dateiobjekt, das Sie in Python erstellen
werden, speichern . Vielleicht möchten Sie
es in einer Variablen speichern. Nennen wir es meine Datei. Die Öffnungsfunktion
erzeugt Dateiobjekte. Und da es sich um eine Funktion
handelt, erhält sie ein Argument. Diese grundlegende Punkt-Py-Datei befindet sich nun im selben Verzeichnis wie
die Fruit Dot-TXT-Datei. Bitte laden Sie die
Fruits Dot TXT-Datei herunter, die so aussieht.
Lass es mich hier aufteilen. Sie können eine Datei an die Seite ziehen sodass Sie im
Visual Studio-Code-Editor zwei Fenster haben, aber
ich bin mir sicher, dass Sie das
auch in anderen Editoren tun können , wenn Sie andere Editoren
verwenden. diese Datei vorerst Lassen Sie diese Datei vorerst im selben
Ordner wie Basics dot py liegen. Sobald Sie das getan haben,
ist die Eingabe für diese Funktion der
Pfad zur Datei. In diesem Fall
wäre das Fruit Dot TXT, da sich die Fruit-DTX-Datei
im selben Verzeichnis
wie Basics Dot Pi befindet im selben Verzeichnis
wie Basics Dot Pi Nein, um den
Inhalt von Fruits DL
TXT in Ihrem Texteditor zu lesen ,
wie wir
es grafisch gemacht haben, müssen Sie nur
auf die Datei doppelklicken und dann sehen Sie den Inhalt
auf der Texteditor-Oberfläche In Python sind die Dinge ein bisschen
mehr, sie müssen
ein bisschen expliziter sein. Sie müssen angeben, was Sie tun
möchten, weil
wir mit dieser Datei gerade
ein Dateiobjekt erstellt haben. Wenn wir das ausführen,
wird nichts passieren. Ein Objekt wird im temporären Speicher
erstellt und wenn die Ausführung
des Programms beendet ist, wird
das Objekt aus dem Speicher
gelöscht. Genau wie wenn Sie
die Textdatei mit dem
Texteditor öffnen und dann schließen, wird Objekt, das Dateiobjekt aus dem
temporären Speicher
gelöscht. Wenn Sie lesen möchten, möchten
Sie vielleicht meine Datei
ausdrucken. Jetzt hat meine Datei eine Lesemethode. Dies ist das Dateiobjekt, das eine Lesemethode hat. Es benötigt keine Argumente, also belassen Sie es einfach so, speichern, ausführen, und hier
erhalten Sie die Ausgabe der Datei. So liest du
eine Datei in Python.
67. 67. Datei-Cursor: Nun, etwas, das Sie
wissen sollten, ist das Cursor-Konzept. Was hier passiert, ist,
dass Sie eine Datei erstellen, ein Dateiobjekt wird erstellt, und wenn Sie dann
die Lesemethoden anwenden, bevor Sie die Lesemethode anwenden, steht
der Cursor am allerersten Zeichen
der Textdatei. Wenn Sie die Lesemethode anwenden, bewegt sich der Cursor an das
Ende der Textdatei. Jetzt, nachdem die
Lesemethode angewendet wurde, steht
der Cursor hier. Wenn Sie einen weiteren
Lesevorgang
wie diesen anwenden , speichern Sie, führen Sie ihn aus. Was passieren wird,
ist, dass Sie vielleicht
erwartet haben , dass diese Zeilen zweimal ausgedruckt
werden. Stattdessen werden
sie einmal gedruckt,
und dann ist das nur
eine leere Zeichenfolge, weil der Cursor nach der
ersten Ausführung des Lesevorgangs an diesem Punkt war
und unterhalb dieses Punktes, da ist nichts, also erhalten Sie dort
diese leere Zeichenfolge. Was Sie tun können, ist, wenn Sie den
Inhalt viele Male drucken möchten, Sie können
den Inhalt in einer
Variablen speichern und dann
den Inhalt so oft drucken , wie Sie möchten, und Sie erhalten die Ausgabe zweimal,
wie Sie hier sehen können. liegt daran, dass die
Lesemethode hier nur einmal ausgeführt wurde. Das solltest
du wissen.
68. 68. Eine Datei schließen: Wenn Sie ein Dateiobjekt erstellen, wird
ein Dateiobjekt im RAM
erstellt und es bleibt dort,
bis Ihr Programm ausgeführt
wird . Daher ist es
möglicherweise eine gute Idee die Datei tatsächlich
zu schließen ,
sodass sie aus dem Speicher gelöscht wird , sobald Sie mit
der Verarbeitung der Datei
fertig sind. In diesem Skript erstellen
Sie beispielsweise das Dateiobjekt, und hier
lesen Sie den Inhalt dieses Dateiobjekts und
speichern ihn als Zeichenfolge. Meine Datei Read gibt also eine Zeichenfolge aus, die den
Text der Datei darstellt. Diese Zeichenfolge wird
in dieser Inhaltsvariablen gespeichert. Also hier bin ich mit der
Verarbeitung der Datei fertig, danach kann
ich nur die Zeichenfolge verarbeiten,
die ich in dieser Variablen gespeichert habe. Daher ist es sinnvoll
, meine Datei „Punkt schließen“ anzuwenden. Dies ist zwar nicht
unbedingt vorgeschrieben, aber es ist eine gute Idee, es zu verwenden. Wenn Sie das also tun, erhalten Sie
immer noch die richtige Ausgabe. Etwas, das Sie jetzt
wissen sollten, ist, dass Sie eine Fehlermeldung erhalten, wenn Sie meine Datei
anwenden, die
erneut gelesen wurde, nachdem
Sie die Datei
geschlossen haben . Es besagt, dass dieser
Vorgang an einer geschlossenen Datei
ausgeführt wird ,
also können Sie das nicht tun. So erstellt man
eine Datei und schließt sie,
aber es gibt einen besseren
Weg, all das zu tun. Das zeige ich dir
im nächsten Video.
69. 68. Dateien mit öffnen: Eine bessere Methode, um die Datei
zu erstellen, den Inhalt zu
lesen und die Datei zu schließen, ist
die Verwendung des Managers
Mit Kontakten. Auch hier verwenden
Sie die Öffnen-Funktion,
die genauso funktioniert wie TXT. Jetzt sagst du myfile. Meine Datei ist nur eine Variable, und dann müssen Sie einrücken Was Sie
hier getan haben, ist, dass Sie
dieses Myfile erstellt haben , das Open
Fruits Dot TXT entspricht ,
genau das Der Unterschied besteht darin, dass
Sie alles schreiben , was mit der
Verarbeitung dieses Dateiobjekts zu tun hat Sie müssen
alles unter
diese Zeile schreiben , die als Block unter
dieser Zeile eingerückt ist Das wird die Dinge
besser organisieren. In diesem Fall wollen
wir also mit
der Datei machen , sie so zu
lesen. Sobald Sie fertig sind, schließen Sie einfach
den Einzug Die nächsten Zeilen werden also wie die
Druckzeile ohne Einrückung angezeigt. Mal sehen, was hier passieren wird. Das ist die erwartete Ausgabe
des Druckinhalts. Auch wenn Sie das löschen, um Sie
nicht zu verwirren , erhalten Sie
wieder dieselbe Ausgabe Diese Ausgabe ist also
tatsächlich von dieser Zeile. Und das Schließen der Datei ist hier
nicht erforderlich, da der With Context-Manager die Methode close implizit
anwendet Ihre Datei wird also geschlossen,
sobald dieser Block endet. Verwenden Sie also bitte den With Contact Manager, und
so machen Sie es.
70. 69. Verschiedene Dateipfade verwenden: Bisher
befanden sich unser Basis-PY und unsere Fruits Dot TXT-Datei im selben Verzeichnis, in demselben Ordner,
sodass wir
nur den Namen der
Datei in die Basis-PY-Datei schreiben konnten nur den Namen der
Datei in die Basis-PY-Datei schreiben Befanden sich die Früchte dieser
TXT-Datei jedoch zum Beispiel in diesem anderen Verzeichnis, so habe ich Fruits
TXT einfach in Dateien verschoben. Fils ist ein Ordner, der sich im selben Verzeichnis
wie Basics Dot PY Basics, das ist PY
im selben Ordner mit
Skripten mit Dateien und Früchten in Dateien Wenn Sie in diesem Fall die grundlegende PY-Datei
ausführen, erhalten
Sie die Fehlermeldung „
Datei nicht gefunden“. Keine solche Datei oder kein solches Verzeichnis, Fruits Dot TXT.
Und das ist wahr. In dem Ordner, in
dem
Basics Dt PY so ist, gibt es keine Früchte DTXT Ordner, in
dem
Basics Dt PY so ist, gibt es keine Früchte DTXT Sie müssen lediglich den vollständigen Pfad zur Datei im Verhältnis
zum Basis-Punkt PY angeben , also
Dateien, Schrägstrich, Obst, Punkt Führen Sie das aus und
die Dinge werden funktionieren.
71. 70. Text in eine Datei schreiben: Schauen wir uns die
Hilfedokumentation von Open an. Und Sie werden sehen, dass
die Funktion open eine Reihe von Argumenten
erhält. Die ersten beiden sind die
wichtigsten. Wir haben bereits file verwendet
, das ist der Pfad
zum Dateiobjekt. Und für diese anderen verwenden wir ihre Standardwerte,
was bedeutet, dass
wir für Modi R verwendet haben, R bedeutet Lesen. Daher
ist dieser Code hier derselbe wie dieser. Sie erhalten also die gleiche Ausgabe.
Welche solltest du verwenden? Nun, um den Code einfacher
und kürzer zu machen, ist das in Ordnung. Um den Code
in Bezug auf die Lesbarkeit expliziter zu machen
, sodass andere sehen können, dass es
darum geht , den Code zu lesen,
dann würdest du das verwenden So oder so ist es in Ordnung. Nun, was kannst du zum Schreiben
verwenden? Zum Schreiben würdest du W zum Schreiben
verwenden. Und lassen Sie mich eine neue Datei
im Dateiordner erstellen. Nenn es Gemüse. Eine Gemüse-Datei
existiert derzeit also nicht in
meinem Dateiordner. Sie wird mit
der Open-Funktion erstellt. Und dann werden
wir in diese leere Datei
etwas schreiben, das wir Tomato machen. Natürlich macht die Inhaltsvariable hier
keinen Sinn weil wir
einige Daten nicht aus der Datei abrufen Wir schreiben nur dort. Also lassen wir es
so, speichern wir es. Execute und ein Gemüse, die TXT-Datei wurde auf
meinem Computer mit einer
Tomatenzeichenfolge dort erstellt . Lass es mich hier hinstellen. Die Lesemethode
sucht also nach einer vorhandenen Datei. Die richtige Methode
erstellt eine neue Datei, und ich sollte Sie warnen
, wenn die Datei existiert, wie in diesem Fall, Obst,
dass Tix da ist. Wenn das der Fall ist, überschreibt
Python
die bestehende Datei. Wenn Sie also
Fruits Dtixti jetzt öffnen, werden
Sie sehen, dass Sie diesen
neuen Inhalt der Datei haben Der bestehende
Inhalt wird also verworfen. Wie können wir mehr Zeilen schreiben? Nun, Sie müssen den speziellen
Backslash N verwenden, der Bruchlinien erzeugt Zwiebel, führe aus. Also das ist Fruits TXT. Und du bekommst diese drei
Zeilen, wie wir es erwartet haben. Sie sollten wissen
, dass Sie mehr als
eine Methode auf die geöffnete Datei anwenden können. Lass uns hier Knoblauch schreiben. Ich habe bewusst nicht
getan, was ich tun
sollte , um
dir zu zeigen, was passiert. Gälisch wurde also sofort hinter Onion
gesetzt,
weil es dort
kein Leerzeichen oder einen umgekehrten Schrägstrich N
gab kein Leerzeichen oder einen umgekehrten Schrägstrich N Wenn ich
hier ein Leerzeichen setzen würde,
würden Sie natürlich ein Leerzeichen zwischen
Zwiebel und Gälisch bekommen Aber was Sie
stattdessen wollen, ist
, dass Sie nach jeder Zeile, die Sie schreiben, einen umgekehrten Schrägstrich
N
haben wollen. Und in diesem Fall würden
Sie die korrekte Ausgabe erhalten Jetzt fragst du dich
wahrscheinlich,
nun, ich habe diese
Frucht, das Ich möchte es nicht überschreiben. Wie kann ich tatsächlich
eine weitere Zeile unter
diesen vorhandenen Zeilen hinzufügen eine weitere Zeile unter
diesen vorhandenen Zeilen Wie das geht, zeige ich dir im nächsten Video.
72. 71. Tex an eine bestehende Datei anhängen +: Okay, also ich habe diese Früchte
dieser CX-Datei hier, die diese vier Zeilen hat,
die sowieso keine Früchte sind,
aber Sie verstehen schon, was ich meine. Es ist Text. Wir möchten diesen
vorhandenen Früchten in der CX-Datei
zwei weitere Zeilen hinzufügen. Wir wissen im Moment nicht, was
da ist. Wenn Sie sich die geöffnete
Dokumentation ansehen und nach unten scrollen, werden
Sie hier sehen, dass Sie
in diesem Argument hier verschiedene Modi übergeben können. Also, was wir bereits verwenden, verwenden
wir W, und dann haben Sie X. Wenn Sie X verwenden und versuchen zu
schreiben, sagen wir Okra Wenn Sie das ausführen, heißt es
, dass die Datei existiert. Im Gegensatz zum W-Modus
, der eine Datei überschreibt, überschreibt
X die
Datei also , der eine Datei überschreibt, nicht, wenn die Datei existiert Es kann jedoch keinen
Inhalt an eine bestehende Datei anhängen , da es besagt, dass
die Datei existiert Deshalb springen wir zum
nächsten Modus, nämlich A. Sie sehen, dass Okra dort
hinzugefügt wurde, natürlich
mit einem kleinen Problem, weil es hier in
der vorhandenen Textdatei keine
Ziegellinie gab hier in
der vorhandenen Textdatei keine
Ziegellinie Das sind einige Informationen, die
Sie kennen sollten, und wenn Sie wissen, dass
es keine Ziegelinie gibt, dann müssten Sie
mich diese Textdatei sagen lassen, dann müssten Sie dort
eine Umbruchlinie hinzufügen , um die korrekte Ausgabe zu
erhalten Jedes Mal, wenn Sie eine neue Zeile hinzufügen, müssten
Sie davor eine
Ziegelsteinlinie hinzufügen. Wie wäre es nun, diesen Inhalt zu
lesen? Vielleicht speichern Sie es in einer Variablen
und drucken Sie den Inhalt aus. Wird es funktionieren? Ich glaube nicht. Es heißt, dass die Operation
nicht unterstützt wird. Die Datei ist nicht lesbar. Es ist A, was für das Anhängen steht. Wenn Sie gleichzeitig schreiben und
lesen möchten, möchten
Sie ein Plus hinzufügen Einfach so. Hinrichten.
Sie erhalten eine leere Ausgabe. Warum? Wegen des Cursors. Also, was passiert ist, als wir dort die Oca-Zeile hinzugefügt haben, also zuerst haben Sie die
Datei hier an dieser Stelle erstellt, der Cursor ist hier, okay? Dann schreibst du die Datei. In dieser Zeile
geht der Cursor an das Ende der Datei. Wenn Sie also jetzt lesen, lesen
Sie, was unter der letzten
Zeile
noch übrig ist , was nichts ist. Was Sie tun können, ist, in meiner Datei Sk eine Sk-Methode anzuwenden, um den Cursor wieder an die
Nullposition zu bringen. In diesem Fall geht der Cursor
bis zum Ende. Mit dieser Zeile geht er wieder auf die
Nullposition, und dann liest du
alles von dort und unten, sodass du
die richtige Ausgabe erhältst.
73. 72. Integrierte Module in Python: Wenn Sie den vorherigen
Abschnitten des Kurses folgen, haben
Sie einen langen Weg zurückgelegt Sie kennen jetzt also die
Grundlagen von Python. Sie wissen, wie man
grundlegende Probleme löst. Nehmen wir zum Beispiel an, Sie möchten die Anzahl der Zeichen
der Zeichenfolge angeben. Sie haben also Methoden und Funktionen, die Sie verwenden können. Methoden können Sie also mit Deer SDR
suchen, Sie würden hier die Menge an
Methoden sehen , die auf Zeichenketten angewendet
werden könnten, und dann können Sie
Funktionen sehen, die in Funktionen eingebaut Zum Beispiel
wären die n-Methoden hier praktisch. Es würde die
Anzahl der Zeichen für
die Pi-Pi-Pi-Zeichenfolge zurückgeben ,
die sechs ist. Nun, all diese hier. Also diese Funktionen und
die String-Methoden, sie sind alle eingebaut. Das sind also Methoden und Funktionen, die in
der Python-Software
geschrieben sind , die Sie von python.org
herunterladen und installieren Diese Software ist in der Sprache C
geschrieben. Daher sind diese Methoden und Funktionen auch in C-Sprache
geschrieben. Und wie Sie sehen, sind
diese Namen hier sofort in
Ihrem Python-Interpreter
verfügbar Das heißt, sie sind eingebaut. Sie befinden sich in
diesem Interpreter, und Sie können sie einfach aufrufen,
ohne sie zu importieren. Was wäre, wenn wir
andere Probleme hätten, wie zum Beispiel, sagen
wir, Sie sehen
das Skript hier. Was dieses Skript
macht, ist eine Schleife. Es ist eine lange Schleife.
Es ist zwar wahr, was bedeutet, dass es ewig laufen wird. Es
liest also diese Datei,
Vegetable Dot TXT, im Dateiverzeichnis,
das sich zufällig
im selben Verzeichnis Basics Dot Pi. Das ist also der Pfad der Datei. Und diese Textdatei
enthält eine Zeichenfolge. Also lese ich es
unter dieser Variablen und drucke
den Inhalt hier aus. Wenn ich also diese Datei ausführe, wird der Inhalt Sekundenbruchteilen
ausgedruckt , und das hängt von Ihrer Prozessorgeschwindigkeit und der Prozessorgeschwindigkeit Ihres
Computers ab. Was ist, wenn wir nicht wollen, dass das jeden
Bruchteil einer Sekunde passiert? Was ist, wenn Sie den
Inhalt alle 10 Sekunden lesen möchten? Lassen Sie mich
das mit Control
C unterbrechen . Sie würden bald feststellen
, dass Sie keine eingebaute Funktion haben , die das tut, die irgendeine Art von
Schlafmethoden in Ihrem Skript
implementiert Es gibt also keine Funktion, die
Sie sofort verwenden können. In diesem Fall möchten Sie vielleicht nach integrierten Modulen
suchen. Verwenden Sie dazu bitte diese Syntax. Importieren Sie CS, was
für System- und dann für
CS-Built-in-Modulnamen steht . Und hier erhalten Sie
eine Liste von Modulen, eingebauten Modulen,
also Modulen, die wieder in
die Python-Software
eingebaut sind . Also lass uns eines davon mal benutzen. Sie verwenden es, indem Sie den Modulnamen
importieren. Andererseits können Sie DR verwenden, um zu sehen, was Sie
für dieses Modul haben. Hier werden Sie zum Beispiel
sehen, dass wir eine Schlafmethode haben. Verwenden Sie die Hilfe, um zu erfahren, wie Sie
diese bestimmte Methode verwenden können. Es heißt also, dass es
die zweite als Argument erhält. Also lass es uns versuchen. T, das ist Schlaf. Nehmen wir an, drei,
eins, zwei, drei, und zu welcher Uhrzeit dieser
Ruhezustand die Ausführung
des Skripts um eine bestimmte Anzahl von
Sekunden, in diesem Fall drei, verzögert Das heißt, wir können
das im Skript implementieren. Es empfiehlt sich, Module in der
ersten Zeile des Skripts zu
importieren. Und dann verwenden Sie dieses Modul in Ihrem Skript,
wo immer Sie es benötigen. In diesem Fall wollen
wir annehmen,
dass das Gemüse, dessen TX-Datei ist,
alle 10 Sekunden auf unserem Server
generiert wird . Nehmen wir an, eine Software auf dem Server bezieht
diese Daten von irgendwoher und schreibt alle 10 Sekunden einen neuen
Inhalt. Zum Beispiel ist es jetzt Tomate, später wird es 10 Sekunden Knoblauch
sein. Danach
wären es Zwiebeln und so weiter. Wir bekommen also alle 10 Sekunden neue
Inhalte. Also wollen wir
den Inhalt der Datei ausdrucken und dann den
Ausführungsschein für 10 Sekunden haben. Jetzt werde ich das Skript
speichern, zur
Befehlszeile
gehen und es ausführen. Also bekommst du sofort Tomaten. Wenn ich das nun in Onion ändere, sagen
wir, die Software hat
es geändert und speichern, klicken Sie auf Speichern. Onion wurde
dort nach 10 Sekunden ausgedruckt. Wenn ich es auf Knoblauch ändere, speichere. Warte, warte ein paar Sekunden. Knoblauch ist da draußen gedruckt. Also ruft
das Skript alle 10 Sekunden die Daten von
Gemüse ab,
das CXC verarbeitet, und druckt sie in
einer Befehlszeile aus Also kontrolliere C, um es zu unterbrechen. So benutzt man ein Modul. Jetzt ist nicht alles
in Ihrer
Python-Interpreter-Software integriert in Ihrer
Python-Interpreter-Software Manche Dinge,
viele davon, kommen in einer anderen Form vor, die ich in der nächsten Vorlesung erläutern werde in der nächsten Vorlesung erläutern
74. 73. Python-Standardmodule: Zuvor haben Sie gelernt, dass Sie der in C
integrierten Modulnamen eine Liste der in Python
integrierten Module abrufen
können mithilfe der in C
integrierten Modulnamen eine Liste der in Python
integrierten Module abrufen
können. Als Beispiel
verwenden wir das Zeitmodul, das die
Skriptausführung
für eine bestimmte
Anzahl von Sekunden einfrieren würde . Lass mich dir jetzt etwas zeigen. Ich führe ein Skript aus.
Zwiebel wird
ausgedruckt , weil sie in der CXT-Datei im
Gemüse ist Wenn ich diese Datei jetzt
lösche, werden
Sie feststellen, dass das Skript beim nächsten Mal nach
den Dateien sucht, den TXT-Pfad mit
Gemüsepunkten markiert Das ist also ein Dateipfad. Es wird ein
Fehler generiert, der Fehler „Datei nicht gefunden“, keine solche Datei oder kein solches Verzeichnis. Stellen Sie sich vor, Sie hätten dieses
Programm rund um die Uhr auf
einem Server ausgeführt und aus
irgendeinem Grund die Software generiert
die Software, die diese
Dateien generiert
hat,
irgendwann die Datei nicht, sodass Ihre Skriptausführung
beendet wird und
Ihre Software vielleicht in einer Minute erneut mit der
Generierung der Dateien beginnt, aber Ihr Python-Skript wird sodass Ihre Skriptausführung
beendet wird und
Ihre Software vielleicht in einer Minute erneut mit der
Generierung der Dateien beginnt,
aber Ihr Python-Skript wird
nicht fortgesetzt, weil hier ein Fehler aufgetreten ist. Was wir also tun wollen, ist,
das Python-Skript weiter auszuführen , auch wenn die Datei dort nicht
im Verzeichnis befindet. Dazu wollen wir das
OS-Modul verwenden. Importieren Sie OS, und Sie
werden feststellen, dass
OS nicht zu den
integrierten Python-Modulen gehört. In der Tat ist OS ein in Python
geschriebenes Modul. Alle diese Module sind integriert,
was bedeutet, dass sie in der
Python-Softwareimplementierung in C-Sprache
geschrieben sind . OS gehört nicht dazu. Um herauszufinden, wo sich OS befindet, können
Sie das OS-Präfix verwenden. Dort erhalten Sie einen
Verzeichnispfad
, der
je nach verwendetem
Betriebssystem
unterschiedlich sein kann . Navigieren Sie also bitte
zu diesem Verzeichnis. Ich ziehe es vor, in dieses Verzeichnis zu gehen indem ich es ohne die Codes kopiere. Also kopiere alles ohne
den Des, so. Gehen Sie zu Ihrem
Befehlszeilenterminal, und wenn Sie Windows
verwenden, verwenden Sie Start, fügen Sie
das Verzeichnis dort ein
und drücken Sie dann die Eingabetaste. Wenn Sie einen Mac oder Linux
verwenden, verwenden Sie Öffnen statt Start und
fügen Sie das Verzeichnis erneut ein. Drücken Sie die Eingabetaste, um
Ihren Windows Explorer oder Finder zu öffnen ,
unabhängig davon, was Sie
zum Öffnen von Ordnern benötigen. also auf den 3.7-Ordner
, den Sie hier sehen Doppelklicken Sie also auf den 3.7-Ordner
, den Sie hier sehen
und dann zu Lib gehen. Suchen Sie dann den Ordner
Python 3.7 oder eine andere
Version, die Sie haben. Also Python Three Point
irgendwas. Doppelklicken Sie darauf. Und hier sehen Sie eine Reihe
von Python-Dateien Punkt Pi. Dies sind alles Python-Dateien. Dies sind alles
Standard-Python-Module, und OS gehört
dazu. Gehen Sie zu Oh hier, doppelklicken Sie darauf oder öffnen Sie
es mit einem beliebigen Texteditor, und Sie werden sehen, dass dies tatsächlich Python-Code
ist. Stellen Sie sicher, dass Sie es schließen,
bevor Sie es ändern. Ändern Sie also nicht, ändern Sie keine
Python-Standardmodule. Also werde ich
es schließen und Sie können DR
tatsächlich verwenden , um zu sehen, was Sie für dieses Modul
zur Verfügung haben. Unter ihnen werde
ich zum Beispiel das Pfadobjekt verwenden. Also mit diesem Pfad, und Path hat eine Methode
namens exists. Die Methode exist erhält ein Argument, das eine Zeichenfolge sein
sollte, und es soll
der Pfad der Datei sein, von der Sie überprüfen möchten, ob sie
im aktuellen Verzeichnis existiert. Schreiben wir also den
Verzeichnispfad zur Datei
und ich erhalte False, weil die Datei nicht
im aktuellen Verzeichnis befand. Wenn ich dorthin gehe und diese Datei
im Dateiordner
erstelle, habe ich
jetzt einen TXT-Dateipfad mit einem Schrägstrich,
Gemüse und einem Punkt Wenn ich das noch einmal ausführe, werde
ich wahr Und diese
Tatsache können wir in unserem Python-Programm nutzen. Bevor wir die Datei im Real-Modus
öffnen, wollen
wir also überprüfen, ob die
Datei existiert, denn wenn wir das nicht tun und
die Datei nicht da ist, diese Zeile hier generiert
diese Zeile hier den Fehler, dass die Datei
nicht gefunden wurde. Bevor wir das tun, wollen
wir überprüfen
, ob dieser Pfad existiert. Dateien mit Schrägstrich, Gemüse, Punkt TXT. Und da das eine Bedingung ist, wollen
wir dort eine Spalte verwenden Und danach muss alles, was
Sie tun wollen
, eingerückt werden Also, es wird
unter stehen, wenn das auch
Teil des W-Blocks ist,
also rückt auch diesen Und dann geht s wieder in
die Drahtschleife. Was du unter ls
machen willst, naja, vielleicht wollen wir die Datei
ausdrucken Die Datei existiert nicht. Und dann sei vorsichtig hier. Der
Zeitunterschied muss sich außerhalb des IL-Blocks befinden,
da Sie ihn
unabhängig vom bedingten Block
ausführen möchten ,
da Sie ihn
unabhängig vom bedingten Block
ausführen Das heißt, wenn die Datei existiert, wird sie ausgeführt. Wenn die Datei nicht existiert, wird sie ausgeführt. Und nachdem eine von
beiden ausgeführt wurde, werden wir
immer die Zeit
ausführen, die verrutscht. Lassen Sie mich das
Skript speichern und ausführen. Und wir haben einen Fehler,
OS ist nicht definiert. Ich bin froh, dass das aufgetaucht , weil Module importiert werden
müssen. Andernfalls erhalten Sie diesen Namensfehler, weil das Betriebssystem, bevor
es hier verwendet wurde, nicht importiert wurde und es sich nicht um eine integrierte
Funktion oder Methode wie print handelt, die
Sie nicht importieren müssen. Der Name ist also nicht sofort
im Namensraum
verfügbar. Speichern Sie das Skript erneut, führen Sie es aus und wir erhalten eine leere
Zeichenfolge, da Gemüse derzeit leer ist. Wenn ich jetzt so ein
Gemüse lösche , warte eine Weile. Und wir lassen das ausdrucken. Wenn du die Datei erneut erstellst, schreibst du
dort etwas, speichere die Datei. Vergessen Sie nicht, so zu tun, die Software diese Datei
generieren Also bringst du Gallic dahin. Jetzt kann ich die
Skriptausführung mit Control C unterbrechen, und das sind beide
Standard-Python-Module, und sie sind genau gleich, sodass Sie JR mit ihnen verwenden können Für diese Module
gelten also alle Python-Regeln. Der einzige Unterschied besteht darin
, dass Time in der Sprache
C geschrieben und in
die Python-Software integriert ist
und das Betriebssystem als Punkt-Pi-Skript geliefert wird, und es kam hierher, als
Sie Python installiert haben. Es wurde also im Grunde in eines Ihrer
Computerverzeichnisse
kopiert, und Sie können
all diese Module importieren, Standardmodule in Python. Natürlich ist nicht alles Ihrer
Python-Installation enthalten. Also Dinge, die du installieren musst. Also werde ich dir das
im nächsten Video zeigen.
75. 74. Module von Drittanbietern: In den vorherigen
Vorlesungen haben wir
ein Programm entwickelt , das
alle 10 Sekunden
die Gemüse durchsucht , die TXI-Datei enthält, und den Inhalt
ausdruckt Also die Programme, die hier laufen. Nun, Vegetables Dot TXT ist nur eine einfache Textdatei
mit nutzlosen Daten wie
Knoblauch und Zwiebel. Was passiert, wenn wir mehr Daten aus der realen
Welt hätten , wie zum Beispiel
die Temps,
die CSV-Datei unterstrichen
haben die Temps,
die CSV-Datei unterstrichen Das ist also eine CSV-Datei, die im Grunde eine Textdatei ist Und es hat eine Struktur
aus mehreren Spalten. Jede Spalte hat also einige Daten. Sie sehen hier, dass dies ein Header ist. Es hat zwei Spalten, SD eins für Station eins und
SD zwei für Station zwei. Wir haben also zwei
Wetterbeobachtungsstationen, und sie haben diese
Daten, diese Temperaturen, aufgezeichnet. Nehmen wir an, das sind
Beobachtungen an einem Tag. Das ist am
Morgen und das ist später am Nachmittag
und in der Nacht. Wir haben also zwei Spalten. Unsere Pflicht ist es jetzt,
diese Datei alle 10 Sekunden zu lesen, genau wie wir es mit
Gemüse tun, diese TXT-Datei. Aber anstatt ihren Inhalt
auszudrucken, müssen
wir
den Durchschnittswert all
dieser Werte ausdrucken . Also sollten wir das
alle 10 Sekunden machen. Also, normalerweise
müsstest du das
alle 24 Stunden machen , weil
es sinnvoller ist. Da es sich bei diesen Daten tägliche Daten und tägliche Temperaturdaten handelt,
werden sie täglich geändert. Es ist sinnvoll, den Wert,
den Durchschnittswert,
alle 24 Stunden
auszudrucken . Und natürlich
können Sie das ganz einfach tun, indem Sie
einfach den Wert
von 10 Sekunden
auf
eine Sekunde ändern , die 24 Stunden entspricht. Das können Sie leicht berechnen. Aber
lassen Sie uns der Einfachheit halber einfach 10 Sekunden verwenden. Wir können dies zwar
tun, indem wir
die Open-Methode verwenden , um
die Daten in Python zu laden, aber
das würde die
Daten als Zeichenfolge laden. Dieser gesamte Text
würde also als Zeichenfolge in Python geladen werden. Dann müssten wir
einige
Zeichenkettenverarbeitungsoperationen anwenden einige
Zeichenkettenverarbeitungsoperationen um all diese Werte aufzuteilen
und sie in Float umzuwandeln. Aber das wäre, als würde man das
Rad neu erfinden. Ich versuche zu sagen
, dass jemand
anderes Python-Code geschrieben hat, der dies sehr einfach in nur einer
oder zwei Codezeilen erledigt. Und die Leute, die das geschrieben
haben, haben es als Bibliothek
eines Drittanbieters gebaut. So wie wir Time
und OS verwendet haben , indem wir
sie in Python importiert
haben, können wir für diesen Fall auch eine andere
Bibliothek verwenden, um diese Daten in
einem schönen Format in Python zu laden .
Lass mich dir zeigen, wie. Der Bibliotheksname, den
ich kenne, ist Pandas, und Pandas
wird standardmäßig nicht mit Python geliefert Wenn Sie also Python installieren, ist
Pandas nicht da, aber Sie können es mit PIP installieren PIP ist eine weitere Bibliothek, die standardmäßig in Python installiert ist
und zur Installation
anderer Bibliotheken von Drittanbietern verwendet wird Ein sehr wichtiger Punkt, den
ich ansprechen möchte
, ist , dass der PIP-Befehl zwischen verschiedenen
Betriebssystemen
und verschiedenen
Python-Installationen
variieren kann und verschiedenen
Python-Installationen Wenn Sie beispielsweise Python Version 3.8
verwenden, müssen
Sie möglicherweise
PIP 3.8 statt nur PIP eingeben Wenn Sie Python 3.9 verwenden, müssen
Sie PIP 3.9 eingeben Wenn Sie Python 3.10 verwenden, das neuer als 3.9 ist, müssen
Sie PIP 3.10 eingeben Um es zusammenzufassen, müssen Sie also Ihre eigenen
Befehle verwenden. Immer wenn ich PIP drei
eintippe, müssen Sie Ihr
eigenes PIP 3.8 oder PIP 3.9 usw.
auf Ihrem Computer verwenden Computer verwenden Also werde ich Pip Three verwenden
und dann Pandas installieren. Beachten Sie, dass Sie
den
Teil „Pandas installieren“ des Befehls nicht ändern sollten den
Teil „Pandas installieren“ des Sie sollten nur
den PIP-Teil ändern , wie ich es Ihnen
erklärt habe Okay, Pandas ist also der Name der Bibliothek, die
wir installieren wollen Also füllen sich die Balken. Das bedeutet, dass die Pandas-Bibliothek erfolgreich installiert wurde Großartig. Lassen Sie uns jetzt weitermachen und Pandas in unserem Skript hier
verwenden Importieren Sie Pandas, genau wie wir es mit anderen
Bibliotheken getan haben. Also diese beiden, das war
eine Standardbibliothek. Es ist in
den Python-Interpreter integriert. Und das ist wiederum eine Standardbibliothek, aber sie ist nicht eingebaut,
sie ist in Python geschrieben. Dieser Pandas, das ist auch in Python
geschrieben, und jetzt wurde es einfach
in unseren
Python-Installationsdateien installiert in unseren
Python-Installationsdateien Lass mich dir zeigen
, wo der Pandas ist. Lassen Sie uns eine Python-Sitzung öffnen. Wenn Sie also SIS und
dann das Punktpräfix sys importieren ,
erhalten Sie dieses Verzeichnis. Welches Verzeichnis Sie auch haben, kopieren Sie es ohne die Codes, und dann starten Sie unter Windows
und zahlen das Verzeichnis auf Mac und Linux öffnen und
bezahlen,
drücken die Eingabetaste, das
öffnet das Verzeichnis, gehen Sie zu Lib to Python. Und dann
war zum Beispiel OS da, Os dot pi. Das waren Standardbibliotheken. Nun, was auch immer Sie mit PIP
installieren, es wird sich im Verzeichnis der
Site-Pakete befinden, das sich
irgendwo hier unten befindet, ja Also Pandas, das sind Pandas. Wir haben gerade Pandas installiert. In diesem Fall
handelt es sich nicht um ein Modul, sondern um eine Reihe von Modulen Und das nennt man ein Paket. Wenn Sie mehrere Module haben, wird
das als Paket bezeichnet. Aber Sie können es immer noch als Bibliothek bezeichnen
. Eine Bibliothek ist also ein Name,
der normalerweise sowohl für
Module als auch für Bibliotheken verwendet wird . Programmieren Sie also, wenn Sie Pandas verwenden, es macht keinen Unterschied Wenn es ein Modul ist oder es ein Haufen von Modulen ist,
also ein Paket Der Code von
Pandas ist also vollständig da, und wir können diesen
Code jetzt in unserem Skript verwenden Lassen Sie mich Ihnen in
der nächsten Vorlesung zeigen, wie wir diese Pandas-Bibliothek eines
Drittanbieters
verwenden
76. 75. Beispiel eines Drittanbieter-Moduls ++: Lassen Sie uns also weitermachen und
den Inhalt dieser
Datei mit Pandas lesen den Inhalt dieser
Datei mit Pandas Eine sehr leistungsstarke
Datenanalyse-Bibliothek. Wir werden später tief
in Pandas eintauchen. Wir haben einen Bereich, der Pandas
gewidmet ist, und wir haben Anwendungen, in denen
wir Pandas häufig verwenden Aber lassen Sie
mich Ihnen vorerst nur
eine kurze Demo geben , wie Pandas funktionieren Stellen Sie sicher, dass Sie es importieren. Ich habe hier importiert, und während wir fertig sind, behalten wir diese Bedingung um zu überprüfen, ob die Datei da ist In diesem Fall
wäre das Temps Today Punkt C SV. Und wenn die Datei dann existiert, wollen
wir die Daten
in diese Datenvariable laden Dazu verwenden wir die CSV-Lesemethode von Pandas Und da ist, du hast es
erraten, der Pfad
der Datei . So wie das Wenn die Datei also existiert, lesen Sie die Daten und
drucken Sie dann die Punktwerte aus. Dieses Objekt
hat also eine Mittelwertmethode. Lass mich dir später zeigen
, was dieses Objekt ist. Aber lassen Sie uns vorerst dieses Skript ausführen. Wir erhalten also den Mittelwert
der einzelnen Spalten. Das ist ein Mittelwert für Station eins, und das ist ein Mittelwert
für Station zwei. Es funktioniert also.
Also, wenn du nur
den Mittelwert aus einer
Spalte ST haben wolltest, würdest du das einfach tun. Das gibt Ihnen also den
Mittelwert der
ST-Eins-Spalte aus Station eins. Und so weiter. Die Idee hier ist also
, Pandas zu importieren, und wenn Sie das ausführen, passiert dort, dass ein Objekt namens
Datenrahmen erstellt wird Sie können sehen, dass Sie
eine strukturierte Ansicht dieser Daten haben eine strukturierte Ansicht dieser Daten Das ist also ein bestimmter
Objekttyp. So wie wir Ganzzahlen
und Gleitkommazahlen haben, haben
wir auch diese
anderen Typen, die Sie in Bibliotheken
dieser Drittanbieterbibliotheken finden
können, sodass jeder
seine eigenen Typen erstellen kann Und hier geht es um Bibliotheken, also eingebaute Bibliotheken,
Standardbibliotheken, in Python
geschrieben wurden, und Bibliotheken von
Drittanbietern, die fast immer
in Python geschrieben sind . Es geht
um Bibliotheken.
77. 76. Einführung in die Verwendung von Python mit CSV-, JSON- und Excel-Dateien: Hallo, willkommen in einem neuen Bereich, und es wird für
mich sehr
spannend sein, diesen zu vermitteln, und es wird auch sehr,
sehr nützliche Informationen
für Sie sein, um sie zu lernen Wir werden also mit
externen CSV-Dateien,
Excel-Dateien und JSON-Dateien arbeiten . Das sind also externe
Dateien, in denen Sie Daten
speichern und
auf diese Dateien zugreifen können. Sie können sie
von Ihrem Python-Programm aus manipulieren. Ihr Programm kann also mit diesen Dateien
interagieren, und das werden
Sie in diesem Abschnitt lernen. Machen Sie sich also bereit und ich werde im nächsten Video mit Ihnen sprechen
.
78. 77. Die Pandas-Bibliothek für + Datenanalyse: Hallo, willkommen in
diesem neuen Bereich. Und in diesem Abschnitt erfahren
Sie, wie
Sie Pandas verwenden
, eine sehr wichtige
Python-Bibliothek, und das sollten Sie wirklich nicht
verpassen Also, was ist Pandas? Nun,
Pandas ist eine Bibliothek die Datenstrukturen und
Datenanalysetools
in Python bereitstellt Datenanalysetools
in Python Oder wenn Sie das Wort
Tools verwirrt, können
Sie sagen, dass
Pandas eine Bibliothek ist die Datenstrukturen
und Datenanalysecode bereitstellt Mit Pandas können Sie also Daten aus
verschiedenen Quellen in
Python
laden und dann Python-Code
verwenden, um diese Daten zu analysieren
und Ergebnisse zu erzielen, die in
Form von Tabellen, Text
und auch Visualisierungen
mit Hilfe von
Visualisierungsbibliotheken
wie Book,
Book vorliegen können, die
später im Kurs behandelt werden und auch Visualisierungen
mit Hilfe von Visualisierungsbibliotheken
wie Book,
Book vorliegen können, die
später im Kurs behandelt Moment konzentrieren wir uns also auf
Daten, ohne sie zu visualisieren,
und Panas eignet sich hervorragend dafür und Panas eignet sich hervorragend Also praktisch, wie verwenden
wir Pandas? Nun, Sie haben
zu
Beginn des Kurses gelernt, wie Sie Textdateien
mit den in Python integrierten
Dateiverarbeitungsmethoden öffnen mit den in Python integrierten . Was wir nun von
TextFils aus geöffnet haben, war nur einfacher Text. Was aber, wenn Sie Textdateien mit
Daten
laden möchten , die aus
Zeilen und Spalten bestehen Oder die Dinge werden etwas kompliziert. Aber hier kommt
Pandas ins Spiel. Sie können
das also wahrscheinlich mit integrierten
Python-Methoden tun , die Sie im Kurs gelernt
haben. Aber um effizienter und viel effizienter
zu sein, benötigen
Sie eine übergeordnete
Bibliothek wie Pandas,
die in der Lage ist, solche Datenstrukturen
automatisch zu erkennen solche Datenstrukturen
automatisch Ich verwende Pandas zum
Laden von
Daten aus Data-Mining-Aktivitäten
wie Web-Scrapping Sie löschen also Daten von
einer Website mit Python und speichern diese Daten dann
in diesen Datenrahmen Sie verwenden also Pandas, um
Datenstrukturen
für Sie in Python bereitzustellen Datenstrukturen
für Sie in Python Und ich verwende Pandas zum Laden von
Daten aus Excel-Dateien
und verwende auch Panels zum
Analysieren dieser Daten, und verwende auch Panels zum anstatt Excel zu verwenden Excel eignet sich gut für die
Analyse einer kleinen
Datentabelle , die auf
Ihren Computerbildschirm passt. Aber für größere Daten möchten
Sie unbedingt Code verwenden. Sie schreiben Python-Code einmal und verwenden ihn dann auch mit
anderen Daten. Und Sie möchten keine
Auswahlen und Ziehungen und viele andere umständliche
Operationen ausführen, die Sie normalerweise in einem grafisch
basierten Programm wie Excel ausführen Code ist also der richtige Weg, wenn Sie
effizient mit Daten umgehen wollen, und Python eignet sich hervorragend
dafür mit Pandas Sie möchten wirklich
einen guten Überblick über Panels haben, und das werden Sie in
diesem Abschnitt lernen und
es auch mit realen
Anwendungen üben , die wir im Laufe des Kurses erstellen werden Lassen Sie uns jetzt in den nächsten Vorlesungen
etwas Code näher beleuchten. Wir sehen uns.
79. 78. Erste Schritte mit Pandas: Großartig. Auch hier
ist Pandas eine Bibliothek, die Datenstrukturen und
Datenanalysetools in Python
bereitstellt Datenanalysetools in Python In dieser Vorlesung werden Sie also
sehen, was ich mit
Datenstrukturen
und Datenanalyse meine Datenstrukturen
und Datenanalyse Sie werden also das
Hauptobjekt von Pandas sehen
, eine Struktur
, die die Daten enthält Und Sie werden sehen, dass wir Daten aus der Struktur
abrufen
und analysieren. Also öffne ich eine
einfache Befehlszeile
und vorerst werden wir
IPython verwenden, und vorerst werden wir
IPython verwenden einfach großartig für Datenanalyse und die
Arbeit mit Aber noch besser ist das
Jupiter Notebook. Jupiter Notebook ist
wie eine Python-Shell. Es ist eigentlich eine Kombination aus
einer Python-Shell und
einem Python-Editor. Und es ist ein browserbasiertes Tool dem Sie Python-Code schreiben können, und es ist sehr effizient, sodass es
Ihre Produktivität wirklich steigert Aber für diesen Vortrag
möchte ich mit einfachen Dingen beginnen, also Schritt für Schritt,
und ich werde Ihnen
Pandas vorstellen, die nur IPython verwenden In der nächsten Vorlesung zeige
ich Ihnen dann, wie Sie
ein Jupiter-Notizbuch einrichten, das früher als iPython-Notizbuch
bekannt war als iPython-Notizbuch
bekannt Sie richten also Jupiter ein
und ich zeige Ihnen, wie
man mit Jupiter arbeitet Lassen Sie uns also vorerst einfache IPython-Konsole
verwenden Pandas importieren. Und normalerweise möchten
Sie als Erstes einige Daten importieren, sagen wir, aus einer CSV-Datei oder
aus TextFile oder
sogar einer Excel-Datei oder JSON oder anderen Formaten, die wir später eingehen werden Es gibt aber auch andere Möglichkeiten, eine Pandas-Datenstruktur zu erstellen Das Erste, was
Sie wissen sollten, ist dass
diese Datenstruktur, von der ich
spreche , Datenrahmen
genannt wird Das ist also ein spezielles Objekt , das die Daten enthält.
Und du kannst eins erstellen. Sie können einen Datenrahmen in
einer Variablen speichern , sagen wir in DF. Mm Pandas Datenrahmen. Also erstelle ich manuell einen
Datenrahmen und übergebe Werte
manuell über Python. Normalerweise möchten Sie
andere Dateien verwenden, wie ich bereits erwähnt habe. Stellen
Sie sich den Datenrahmen jetzt als Tabelle vor. Vielleicht
möchten Sie also eine Liste von
Listen übergeben , wobei jede Liste eine Zeile dieser Tabelle
sein wird. Lassen Sie uns also einige
Daten zwei, vier,
sechs und zehn, 20, 30 übergeben . Sie führen das aus, das war erfolgreich, weil Sie
keinen Fehler erhalten haben. Haben Sie einen, und
hier ist der Datenrahmen. Also 246 ist die erste Reihe, zehn, 20, 30 ist die zweite Reihe. Diese Null, Eins, Zwei sind
die Namen der Spalten, und diese werden als Indizes
bezeichnet Also 01 hier sind
Indizes für die Zeilen, und das hier sind
die Spaltennamen Das Schöne an Panels
ist, dass Sie auch Ihre eigenen
Spaltennamen
haben können , wenn Sie möchten Also rufe ich
diesen Ausdruck erneut auf und möchte hier
einen Parameter namens
columns übergeben , der
eine Liste von Namen erwartet. Dieser muss
die gleiche Anzahl von Elementen mit der Anzahl
der Spalten haben, die Ihr
Datenrahmen hat. Wenn Sie also eine Liste
mit drei Elementen übergeben, möchten
Sie auch hier drei
Spalten übergeben. Nehmen wir an, der Preis ist
zufällig, Alter und Wert. Sie führen das aus und lassen
mich dieses DF erweitern Diesmal sehen Sie, dass Sie dort Ihre eigenen
Spaltennamen haben. In ähnlicher Weise können Sie nun auch benutzerdefinierte Namen für
die Indizes
übergeben, indem Sie den Index als Parameter
übergeben, und dann möchten Sie eine Liste mit zwei Elementen
übergeben weil wir
nur zwei Zeilen haben, sagen wir, erste, zweite, DF, und Sie
haben benutzerdefinierte Indizes Normalerweise müssen Sie jedoch
keine benutzerdefinierten Indizes übergeben. Daten haben normalerweise eine definierte
Anzahl von Spalten, aber in den Zeilen können Sie
Hunderte und Tausende von
Zeilen oder Millionen von Zeilen haben Hunderte und Tausende von
Zeilen oder Millionen von Zeilen Sie möchten also wirklich nicht mit Indexnamen
herumspielen. In besonderen Fällen ist das Feature jedoch
genau das. Es gibt also eine Möglichkeit, einen Panel-Datenrahmen zu
erstellen, und Sie haben auch
andere Möglichkeiten. Die werden nicht sehr
häufig verwendet, aber ich wollte nur wissen
, ob sie da sind. Also nochmal, du übergibst hier eine Liste und dann
könntest du zwei Wörterbücher
innerhalb dieser Liste
übergeben So können Sie die Ähnlichkeit erkennen. Hier haben wir eine Liste von Listen verwendet. Hier
übergeben wir auch ein Listenobjekt, aber es ist eine Liste von Wörterbüchern Und was Sie hier tun könnten,
ist, Werte,
Schlüssel und Werte für ein
Wörterbuch zu übergeben , und hier auch. Sagen wir also, nennen wir
John Jack und führen das DF zwei aus. Und ja, das ist
ein weiterer Datenrahmen. Wenn Sie dort
mehr Spalten haben möchten, z. B. den Nachnamen,
möchten Sie hier
einen weiteren Schlüssel und Wert
für das Wörterbuch hinzufügen . Also so etwas wie
Nachname und jetzt, wenn Sie das und DF zwei ausführen, wird die
Spalte mit dem Nachnamen dort hinzugefügt. Aber für Jack bekommst du
keinen, weil du im
zweiten Wörterbuch keinen Nachnamen eingegeben hast . Wenn Sie also dasselbe für Jack tun, wenn Sie einen Nachnamen angeben,
erhalten Sie den Wert hier. Das sind also zwei grundlegende Methoden
, um Datenrahmen im Handumdrehen zu erstellen. Wie gesagt, normalerweise
stammen
diese Werte aus Dateien von CSV-Dateien, Excel-Dateien usw. Das werde ich in
den nächsten Vorlesungen tun. Und noch etwas
möchte ich, dass Sie wissen, dass es sich um eine Datenstruktur
handelt, und was Datenanalyse bedeutet, ist außerhalb dieser
Datenstruktur, Sie möchten Informationen herausholen. Vielleicht möchten Sie also
zum Beispiel den Durchschnitt all
dieser Werte extrahieren . Also zwei, vier, sechs, zehn, 20, 30. Hier treten wir also in die
Phase der Datenanalyse ein. Und der Ansatz
dafür ist, Sie wissen schon, dieses Datenrahmenobjekt, das Sie vom Typ DF sehen
können. Es ist also ein Datenrahmen von Pandas. An dieses Datenrahmenobjekt sind
nun Methoden angehängt. Wenn Sie DR verwenden und ja, Sie sehen, dass es
eine ganze Reihe von Methoden gibt, die Sie darauf anwenden
können. Lassen Sie uns dort die durchschnittliche
Methode finden. Hier ist gemein. Sie könnten also auf DF eins
zeigen und
dann auf Mittelwert und Klammern zeigen, und Sie erhalten den Mittelwert
aller Spalten. Und wenn Sie den Mittelwert
des gesamten Datenrahmens ermitteln möchten, können
Sie danach erneut die
Mittelwertmethode anwenden. Das bedeutet also,
dass hier die Mittelwertmethode
auf diese Reihe angewendet wird. Bei diesem Typ handelt es sich also um ein Objekt der
Panda-Serie. Serien haben mehr oder
weniger dieselben Methoden , die Sie auf einen Datenrahmen
anwenden werden. Also DF eins und DF ein Punkt Preis, und Sie erhalten die Spalte mit
den Preisreihen. Das ist also auch der Fall, wenn
Sie den Typ überprüfen, das ist auch die Panel-Serie. Der Datenrahmen besteht also aus Serien. Und natürlich können Sie
die Durchschnittsmethode auch
auf den Preis anwenden . In ähnlicher Weise können Sie
auch andere Methoden
anwenden , die dort
verfügbar sind. Also Max und du bekommen
den Maximalwert. Und ja, das ist ungefähr die
Einführung in Pandas. In der nächsten Vorlesung wirst du
etwas über Jupiter erfahren. Es ist sehr angenehm,
mit Jupiter zu arbeiten . Also
lass dir das nicht entgehen. Und dann werden wir weitermachen
und Datenrahmen öffnen, Datenrahmen aus Dateien
erstellen. Dann sehe ich dich später.
80. 79. Das Jupyter-Notebook einrichten +: Nun, in dieser Vorlesung
zeige ich Ihnen, wie Sie
das Jupiter-Notizbuch
oder kurz Jupiter einrichten das Jupiter-Notizbuch
oder kurz Jupiter und auch wie Sie es Bisher haben Sie sowohl mit
Python als auch mit einer
interaktiven E-Python-Shell gearbeitet, aber Sie haben auch mit
einem Editor wie Atom gearbeitet. Manchmal benötigen Sie vielleicht
eine
Mischung aus einer interaktiven Shell und einem Editor, wenn Sie Dinge testen
möchten, aber Sie möchten auch Ihre
Codeblöcke, die Sie
schreiben, speichern , weil eine
interaktive Shell ideal
ist, um
Dinge schnell zu testen, aber Sie können den Code speichern, und der Editor ist gut
zum Speichern des Codes, aber nicht ideal
zum Testen von Dingen. Aber ich kann Ihnen sagen, dass es ein
solches Hybrid-Tool gibt, und das heißt
Jupiter-Notizbuch. Und das ist ein fantastisches Tool , das
Ihre Produktivität steigern wird. Jupiter ist besonders gut
, wenn Sie mit Daten arbeiten. Es ist eine großartige Umgebung,
um Daten zu untersuchen, und Sie werden gleich sehen,
wie nützlich sie sind. Natürlich
möchten Sie immer noch Editoren
wie Atom verwenden , wenn Sie mit mehreren
Python-Skripten
arbeiten , die miteinander interagieren. Dies ist
beispielsweise bei
Webanwendungen der Fall . Wenn Sie Webanwendungen
entwickeln, müssen
Sie sich mit
mehreren Python-Skripten
sowie mit HTML-Dateien,
CSS und anderen Dateien befassen HTML-Dateien, . Erstellen Sie später
im Kurs eine Webanwendung und Sie werden sehen,
wie gut Atom dafür geeignet ist. Aber für Daten verwenden Sie Jupiter. Also Jupiter, lass uns sehen,
wie man es installiert. Nun, Sie können
zur Installation gehen, also installieren Sie und Sie können diese Anweisungen
durchgehen. Aber anstatt das
durchzugehen, würde
ich Ihnen raten Ihre
Befehlszeile zu installieren Jupiter über Ihre
Befehlszeile zu installieren und
PIP install Jupiter einzugeben Also laden wir Jupiter herunter und es wird es
in Ihrem System installieren Um dann
eine Jupiter-Sitzung zu starten, empfiehlt es sich
, in einen Ordner zu wechseln. Sagen wir, Test drei. Und hier können Sie
eine Befehlszeile öffnen und dann
Jupiter No book eingeben. Und das öffnet die
Jupiter-Sitzung im Browser. Das Jupiter-Notizbuch ist also
eigentlich ein Browser-Notizbuch. Der Grund, warum ich das
Jupiter-Notizbuch in
der Befehlszeile geöffnet habe , war, dass
zumindest unter Windows, wenn Sie Shift drücken und dann mit der
rechten Maustaste auf den Ordner klicken, Ihre Eingabeaufforderung
im aktuellen Ordner geöffnet wird ,
also in diesem hier. Und wenn Sie jetzt
eine Notebook-Datei erstellen, wird
jede Datei hier
in diesem Verzeichnis gespeichert. Alternativ können Sie
Ihre Eingabeaufforderung
überall öffnen , wo Sie möchten, und dann eine CD zu und dann eine CD zu
dem Ordner hinzufügen, in dem Sie Ihre Jupiter-Notizbücher
speichern möchten. In Ordnung, jetzt
haben wir hier nichts. Also was Sie tun können, ist ein Notizbuch
zu erstellen. Und wir haben Jupiter
Earth als Python-Bibliothek installiert. Unter Notebooks haben wir also
Python drei verfügbar. Der Kernel wird also Python drei
sein. Wenn Sie hier
andere Sprachen zugeordnet haben, werden
Sie sie hier
unter Notebooks sehen. Das ist also ein leeres Notizbuch. Und das ist der Name eines Notizbuches und Sie können
das ändern , sagen wir,
Testen. Drücken Sie OK. Und wenn Sie zu dem Ordner gehen, werden
Sie sehen, dass die Datei mit dem Testnamen und der
IPython-Notebook-Erweiterung erstellt wurde Das wird also
jedes Mal automatisch erstellt , wenn Sie hier
etwas eingeben, Änderungen vornehmen
oder Lassen Sie mich Ihnen nun zeigen, wie Sie mit dem iPython-Notizbuch
arbeiten können mit dem iPython-Notizbuch
arbeiten Sie können also jede Zelle berücksichtigen. Dies ist eine Zelle, und
Sie können
jede Zelle als Linie in
einer normalen Python-Shell betrachten . Aber hier in dieser Shell können Sie tatsächlich mehrere
Codezeilen schreiben. Nehmen wir an, drucken Sie einen,
und wenn Sie ihn
nicht
sofort ausführen möchten , können Sie die Eingabetaste drücken. Mit Enter geben Sie also eine
neue Zeile in die Zelle ein und drucken
dann zwei und so weiter. Und wenn Sie die Zelle jetzt
ausführen möchten, können
Sie Control Enter drücken
und schon erhalten Sie die Ausgabe. Wenn Sie nun eine neue Zelle
erstellen möchten, würde
Alt Enter das tun. Und hier kannst du
einen weiteren Codeblock schreiben. Mit Enter gehst du zur
nächsten Zeile und so weiter. Und wenn Sie sofort zur
nächsten Zelle gehen möchten. Bevor wir also
Control Enter gedrückt haben, können Sie
jetzt Shift Enter drücken und Sie gehen automatisch zur nächsten
Zelle. Und mit Shift Enter
führen Sie auch die Zelle aus, an der
Sie gearbeitet haben. Sie können mit
Alta Enter neue Zellen erstellen und
sie löschen, indem
Sie zuerst drücken , Escape drücken und dann
zweimal DD erneut DD drücken. Es ist also ziemlich flexibel. Sie sollten
beachten, dass wir grundsätzlich zwei Modi
haben. Wir haben den Befehlsmodus. Wenn Sie sich also
im Befehlsmodus befinden, sehen
Sie ein graues Rechteck
um die Zelle herum. Und wenn Sie in
den Bearbeitungsmodus wechseln möchten, drücken Sie die Eingabetaste. Während Sie sich also
auf die aktuelle Zelle konzentrieren, drücken
Sie die Eingabetaste und bearbeiten
dann die Zelle. also im Bearbeitungsmodus Wenn Sie also im Bearbeitungsmodus etwas eingeben, fügen
Sie
Text in die Zelle ein, Sie fügen
Code in die Zelle ein, Escape- und Befehlsmodus, DD und Sie löschen die Zelle, geben ein und Sie geben eine neue Zelle ein Das sind also die am häufigsten verwendeten
Tastenkombinationen, Tastenkombinationen. Wenn Sie jedoch weitere
Tastenkombinationen benötigen, können
Sie zur Hilfe und
dann zu den Tastenkombinationen wechseln. Und dann siehst du hier eine Liste. Aber diese sind gut
für den Anfang. Wenn Sie
damit fertig sind, können Sie einfach
einen Tab schließen und Sie können hier auch
den Verzeichnisbaum schließen. Beachten Sie also, dass Jupiter tatsächlich in einer lokalen Hostsitzung
geöffnet wird. Und wenn Sie Ihr Notizbuch
erneut öffnen möchten, können
Sie
wieder hierher gehen und das
Befehlsfenster hier
und das Jupiter-Notizbuch öffnen . Und hier ist die Datei, und
sie ist so, wie wir sie hinterlassen haben. Heute eignet sich ein
Jupiter-Notizbuch am besten für Erkundungen und
insbesondere für Datenerkundungen Wenn Sie also beispielsweise
mit Datenanalysen oder
Datenvisualisierungen arbeiten, ist mit Datenanalysen oder
Datenvisualisierungen Jupiter-Notizbuch
perfekt Sie können das
Jupiter-Notebook beispielsweise verwenden, um eine
Datentabelle in die Sitzung zu laden Dafür würdest du Pandas verwenden. Sie importieren also die Bibliothek, drücken die Eingabetaste oder die
UMSCHALTTASTE, um zur nächsten Zelle zu gelangen,
und drücken erneut die EINGABETASTE, um etwas
zu schreiben Nehmen wir an, DF entspricht Pandas
, Dal Fred CSV. Und ich habe
irgendwo in meinem System eine CSV-Datei. Pressezentrum und Whoa. Sie erhalten also eine nette
HTML-Tabelle, die aus der CZ-Datei geladen
wurde, und Sie können auch Grafiken
im Jupiter-Notizbuch zeichnen Das ist also auch etwas, das
du im Kurs lernst. Und damit Datenanalysen
und Visualisierungen möglich sind, können
Sie das
Jupiter-Notizbuch auch für Web-Scrapping verwenden Das ist sehr praktisch, weil Sie diese Codeblöcke
haben und dann
den Code kontinuierlich optimieren müssen kontinuierlich optimieren müssen, sodass Sie hier vielleicht etwas ändern
möchten, und dann erhalten Sie Nicht gerade dieser, weil
das eine verworrene Zeichenfolge ist, sondern bei diesem, zum Beispiel, Sie haben hier einen Schieberegler, sodass Sie
in einem separaten
Fenster nach oben und unten scrollen können , ohne dass
Ihr allgemeines Hauptfenster beeinträchtigt Ich hoffe also, Sie haben
eine gute Vorstellung vom
Jupiter-Regelwerk bekommen eine gute Vorstellung vom
Jupiter-Regelwerk Notieren Sie sich einfach die Tastenkombinationen oder
Tastenkombinationen
zum Ausführen von Code, den Bearbeitungs- und den Befehlsmodus, Sie wissen schon, geben Sie Escape ein und erneut
Enter und so
weiter und so fort Und wenn du
sie nur ein bisschen übst, wirst du dich
sehr schnell an Jupiter gewöhnen . Wir sehen uns
in der nächsten Vorlesung.
81. Laden von CSSV-Dateien in Python: Nun, da Sie ein
grundlegendes Verständnis von
Pandas haben und wissen, wie
man Jupiter-Notizbücher verwendet, können
wir weitermachen und lernen, wie man verschiedene Arten
von Dateien in Python
mit Pandas und Jupiter können
wir weitermachen und lernen, wie man lädt mit Pandas und Ich habe hier also fünf Dateien. Sie enthalten genau
die gleichen Datenseiten. Und dies ist eine Textversion, oder lassen Sie mich die
Excel-Version öffnen, die, wie Sie sehen können, einen schönen Überblick über
die Daten zeigt. Wir haben also sieben
Codezeilen, einschließlich der Kopfzeile, und
wir haben auch sieben Spalten. Es sind also nur einige
Basisdaten von Supermärkten,
die Adresse, die Stadt, der
Staat,
das Land und der Name des Supermarktes
und die Anzahl der Mitarbeiter. Und in ähnlicher Weise haben wir
genau dieselben Daten, aber in unterschiedlichen Formaten. Wir haben also CSV und CSV bedeutet
kommagetrennte Werte. Es ist also im Grunde eine
Textdatei, in der die Werte, die Spalten, durch
Kommas getrennt sind, wie Sie hier sehen können Jede Spalte ist also durch ein Komma
getrennt. Es hat jedoch eine CSV-Erweiterung und kann mit Excel geöffnet werden. Wenn ich das
jetzt öffne, sehen Sie denselben Datensatz,
den
Sie in der ELS-Datei gesehen haben. Wir haben auch dieselben Daten,
getrennt durch halbe Spalten, wie Sie hier sehen können. Und ja, wenn Sie mit Daten
arbeiten, sind
Sie wahrscheinlich
mit dieser Art von Dateien vertraut. So speichert man also Daten. Sie müssen
einige Konventionen haben, und wenn Sie diese Konventionen verwenden, verwenden
Sie andere Programme
wie Python, um diese Daten zu laden. Wenn Sie also eine CS-Datei laden, weiß
Python, dass die
Werte durch
Kommas getrennt werden , und es weiß,
wie man sie trennt Es weiß, wie man Werte extrahiert. Also werden wir sie
alle nacheinander öffnen. Wir haben auch eine JSON-Datei. Das ist ein weiteres
Format zum Speichern von Daten, und es sieht tatsächlich aus wie ein
Python-Wörterbuch. Wir werden also auch lernen
, wie
man sie in den Datenrahmen von Panda konvertiert man sie in den Datenrahmen von Panda All diese werden also in Pandas
Datenrahmen konvertiert. Ja, ich werde weitermachen und das
Jupiter Jupiter Notebook starten .
Hier sind meine Dateien. Ich werde weitermachen und
ein neues Jupiter-Notizbuch
für Python drei erstellen . Bevor ich weitermache und
diese Dateien in Python lade. Es gibt einen Trick, den ich normalerweise mache. Importiere das Betriebssystem und dann
die Punktliste dort, und ich gebe die Eingabetaste ein und führe das aus.
Du gehst zur nächsten Zeile. Und Sie erhalten
eine Liste von Dateien und Ordnern sowie von Dateinamen , die Sie im
aktuellen Verzeichnis haben. Jetzt muss ich nicht mehr in meinen Ordner wechseln , um mir die Namen
anzusehen. Ich habe alles hier drin. Ich kann jetzt weitermachen
und Pandas importieren. Und fangen wir an,
diese Dateien nacheinander zu laden. Sagen wir DF eins,
also Datenrahmen eins, und das wäre
gleich Pandas Ich werde CSV lesen. Und dann müssen Sie
den Namen der Datei übergeben , die Sie öffnen möchten. Supermarkiere das CSV und
gib es einfach ein und vielleicht möchtest du das
ausdrucken. Also DF da. Und ja, was wir hier haben, ist dass wir
zuerst den Datenrahmen geladen ,
dass wir
zuerst den Datenrahmen geladen und ihn dann
ausgedruckt haben. Also haben wir diesen schönen
Tisch da drin. So einfach ist es, Daten aus einer CS-Datei zu
laden. Der Vorteil
der Daten in Python besteht darin, dass Sie, sobald
Sie sie in Python geladen haben, viele,
viele Operationen mit Ihren Daten ausführen können . Sie können Statistiken erstellen
und neue Spalten hinzufügen. Sie können Spalten zusammenführen. Sie können die Zahlen
einer Spalte zu den Zahlen
der anderen Spalten
addieren . Und am Ende können Sie diese Daten wieder
in Formate wie CSV,
Excel usw.
exportieren . Also werden wir das später machen. Aber lassen Sie uns zunächst
im nächsten Video sehen,
wie wir Daten
aus verschiedenen Dateiformaten laden .
82. Excel-Dateien in Python laden (KEIN WASSERZEICHEN): Und lassen Sie uns weitermachen und
die Excel-Datei Excel X laden, eigentlich eine Excel-Datei. Pandas lesen also Excel und Sie geben den Namen
der Excel-Datei Und normalerweise
sollten Sie hier auch
einen anderen Parameter
für Excel-Dateien übergeben , da Excel-Dateien, wissen
Sie, mehrere
Blätter enthalten können . Sie möchten also
den Blattnamen angeben , der
bei Null beginnt, also müssen Sie den
Index tatsächlich übergeben. Wenn Sie das erste Blatt möchten, möchten
Sie Null übergeben. Wenn Sie ein zweites Blatt möchten, möchten
Sie eins übergeben und so eins. Also werde ich dort Null übergeben. Ich hatte nur ein Blatt
in der Excel-Datei. D drei ausführen. Und wir konnten auch die
Excel-Datei
erfolgreich lesen. Also lass uns weitermachen.
83. Textdateien in Python laden: Ja, lass uns
mit der TXT-Datei weitermachen. Es ist also ein Supermarkt, der durch Kommas
getrennt ist. Es ist also eine durch Kommas
getrennte Datenstruktur. Dafür, also für durch Kommas
getrennte TXT-Datei, verwenden Sie
wiederum R CSV. Einfach so, D vier. Und hier ist der Datenrahmen. der CSV-Datei der Supermärkte sagen manche
sogar, dass es sich um eine durch Kommas getrennte Datei handelt, aber um
genauer zu sein, würde man
sagen, dass es sich um durch Zeichen getrennte Werte C steht also für Charakter. Und es könnte dort
verschiedene Charaktere geben. In diesem Fall
müssen Sie, wenn Sie Kommas als Trennzeichen
verwenden, hier keinen
Trennzeichenparameter übergeben Wenn Sie jedoch andere Werte
als Trennzeichen haben ,
müssen Sie diese übergeben Das ist das nächste Szenario. Also DA fünf, rote Pandas, CSV. Wir sprechen also von
Supermärkten, Semikolons,
oder Supermärkten, Semikolons Punkt
TXT Ja, lass mich das SiS jetzt ausprobieren. Wenn ich das also ausführe,
kann
Python
das Semikolon dort nicht erkennen Der Grund dafür ist, dass der Separator-Parameter standardmäßig den Wert
Komma hat Sie möchten
das also in Ihr Trennzeichen ändern, das ein Semikolon ist. Führen Sie
in diesem Fall in diesem Wir haben
dort einen Fehler bekommen, unerwartetes Trennzeichen für
Schlüsselwortargumente Schlüsselwortargumente Es scheint also, als ob Unterstrich
gelesen wurde, CSV hat keinen
separaten Parameter In diesem Fall möchten Sie dies tun,
um um Hilfe zu bitten. Also ja, hier sind die Parameter
, die Sie übergeben möchten. Es ist also tatsächlich ein SAP, und Sie können sehen, dass der
Standardwert von SAP ein Komma ist Schließen Sie das und gehen Sie hierher,
ändern Sie es in SAP, führen Sie es aus, und hier ist der Datenrahmen Großartig. Was bleibt noch zu tun? Ja, wir haben alles konsumiert. Und hier geht es darum, lokale Dateien zu
lesen.
84. 83. Einführung in Numpy ++: Betrachten Sie dieses Graustufenbild. Jetzt besteht dieses Bild
aus Pixeln. Dieses Bild
hat drei mal fünf, also 15 Pixel. Es ist also ein ziemlich kleines Bild. Jetzt hat jedes Pixel einen Wert, und das ist es, was die Intensität
der grauen Farbe
für jedes Pixel
definiert . In Wirklichkeit sind dies Zahlen, aber unser Computerbildschirm
zeigt sie in einem Farbformat an, das für uns Menschen
lesbar ist. Ich versuche zu erreichen, dass Programme Zahlen verwenden,
um Bilder zu speichern. Dann wandelt der Computerbildschirm oder der Bildschirm
diese Zahlen in Farben um. Python kann auch
Bildverarbeitung durchführen, genau wie Photoshop. Wahrscheinlich kann es nicht all die coolen Dinge tun, die
Sie mit Photoshop machen können, aber Sie können
Python verwenden, um Dinge zu automatisieren. Zum Beispiel werden wir
die
Bildverarbeitungsfunktionen von
Python verwenden die
Bildverarbeitungsfunktionen von , um Gesichter aus Fotos anhand von Bildern erkennen
und auch sich bewegende
Objekte in Videos zu erkennen. Videos bestehen also aus Bildern. Es ist also im Grunde
dasselbe. Und Python speichert und liest Bilder mithilfe von Zahlenfeldern Zum Beispiel
könnte dieses Bild, wie Sie wissen, als
eine Liste von drei anderen Listen dargestellt eine Liste von drei anderen Listen Also drei Listen, weil wir dort drei Zeilen mit Pixeln
haben. Dann hättest
du in jeder der Listen etwa fünf Zahlen und so weiter und so
weiter, und die fünfte. Und das Gleiche gilt für die
anderen beiden Listen. Wir haben fünf Zahlen,
weil wir fünf Spalten haben, also fünf Pixel für jede Zeile. Und das ist ein Bild für Python. Und hier kommt
Numpi ins Spiel. Sie können damit zwar
Bilder darstellen, wie wir es hier getan haben, das ist nicht sehr effizient,
da sie bei großen Bildern viel Speicher beanspruchen viel Speicher beanspruchen
und daher die Operationen an ihnen
verlangsamen Dies wird also von
Numpi gelöst, einer Bibliothek, einer Python-Bibliothek, die
ein mehrdimensionales
Array-Objekt
bereitstellt Lassen Sie mich also weitermachen und dieses Array-Objekt
erstellen. Zuallererst müssen
Sie Numbi importieren Und wenn Sie Pandas
installiert haben, hätte
Numpie zusammen mit Pandas installiert werden sollen da
Pandas Wenn Sie noch einen
Numpi installiert haben,
fahren Sie einfach fort und installieren Sie Numpi fahren Und wenn Sie aus irgendeinem Grund Probleme unter Windows
haben,
dann machen Sie einfach weiter, wie ich es Ihnen gezeigt habe, und
suchen Sie die vorkompilierten
Python-Bibliotheken. Gehe auf diese Seite und suche
dann nach Numpi finde heraus, ob du eine 3.5-Version von Python verwendest. Lass uns
einfach diese Version herunterladen Und dann zeigst du
mit
Pip Install und dem
Namen der Datei auf diese Datei Pip Install und dem
Namen der Großartig. Nein, ich habe
Num Pi installiert, also erstelle ich dieses
mehrdimensionale Objekt und speichere es in einer Variablen. Das wäre Numpy Dot A-Bereich. Und sagen wir 27. Führe das aus und drucke es aus , sodass es ein NumPi-Array ist.
So heißt es Dieses spezielle
Array ist nicht gerade ein mehrdimensionales Array , weil es nur eine Dimension
hat. Es ist also ein Flugzeug, es ist wie eine
Ebenenliste, eine Python-Liste, aber es ist immer noch nicht
genau der Typ. Es tut mir leid. Es ist also ein NPi
N-dimensionales Array Es kann
eindimensional, zweidimensional oder dreidimensional sein. Wir haben also eins, zwei, drei, und ich werde all
diese Szenarien zeigen. Das war also das
eindimensionale Array, und wenn Sie
es in einer schönen Form drucken wollen, wäre
das das Array. Nun, ich erstelle hier nur ein
Numpy-Array mit
Zahlen im Handumdrehen, aber normalerweise müsste man einen Strahl aus Bildern
erstellen, und das machen wir gleich. Lassen Sie uns vorerst
einige Arrays manuell erstellen. Lassen Sie uns nun sehen, welche
zweidimensionalen Arrays. V-Form drei mal neun. Wir haben also bereits dieses
eindimensionale Array und
wollen es in ein zweidimensionales Array umwandeln. Wenn Sie das ausführen,
erhalten Sie ein zweidimensionales Array. Das ist also ein
zweidimensionales Array , weil es zwei Dimensionen hat. Stellen Sie sich das so vor, als
würde dieses Bild fallen. Wir haben zwei Dimensionen,
vertikal und horizontal. Nun, was ist ein
dreidimensionales Array? Auch wenn
dreidimensionale Arrays seltener verwendet
werden, ist
es dennoch gut, etwas über sie zu
wissen Lassen Sie mich wie dem auch sei, ein
dreidimensionales Array erstellen. Ich könnte sagen, drei mal drei drei, weil
Sie wissen, dass Sie 27 Elemente haben, also drei mal
drei ergibt Ihnen 27. Ja, das ist ein
dreidimensionales Array. Stellen Sie sich das als einen Würfel vor
, der drei Dimensionen hat. Also drei mal drei mal drei. Und praktisch,
das werden Sie gleich
in dieser Vorlesung sehen . Wo haben wir es mit dreidimensionalen
Arrays zu tun? Also habt Geduld mit mir. Und Sie können die Ähnlichkeiten
zwischen einem Nicht-Pi-Array und einer
einfachen Python-Liste von Listen
erkennen . Das hier wäre also wie
ein zweidimensionales Array, wenn Sie es so
nennen möchten. Die Struktur auf
der unteren Ebene
unterscheidet sich zwischen
Python-Listen- und NPi-Arrays Und mit Nopi-Arrays
können Sie auch effizientere
Operationen durchführen, z.
B. die Iteration zwischen
Array-Elementen usw. Und Sie können auch ein
Nopi-Array aus der Python-Liste erstellen. Zum Beispiel
erhalte ich diese Liste hier
und erstelle ein neues Objekt
und zeige und erstelle ein neues Objekt dann auf Nupi. Um eine Liste
in ein np-Array zu konvertieren, sollten
Sie
eine Array-Methode verwenden Und dann steht zwischen den
Klammern das Objekt, das
Sie konvertieren möchten M und das ist ein Array
, das fast
genau dem hier ist. Und wenn Sie das ausdrucken
würden, könnten Sie den Unterschied nicht
erkennen. Weißt du, sie sehen
genau gleich aus. Aber das sind sie nicht
, weil dies eine Liste ist, und das ist eine Dummheit. Ordnung. Großartig. Lass uns weitermachen. Das ist also Napi und wie
ich bereits erwähnt habe, ist
Napi eine Basisbibliothek für andere Bibliotheken wie
Pandas und auch OpenCV
, , Pandas-Datenrahmen basieren also auf Numpi-Arrays,
und offene CV-Objekte
basieren auf NuPI-Arrays und offene Also Pandas, was Pandas macht
, ist, dass es einfach einige coole Funktionen hinzufügt. Da drin, wie es hinzufügt. Es bietet Funktionen für Tabellenüberschriften und Indizes, die Sie in Numpi nicht haben können weil Numpi einfacher sein
soll und weniger Objekte
speichern und Operationen ausführen Objekte
speichern Deshalb ist Numpi eine Voraussetzung für viele Bibliotheken. Und lassen Sie uns diese Lektion
hier lösen , und in
der nächsten Lektion werden
wir direkt
weitermachen und
ein NumPi-Array aus
unserem Bild hier erstellen ein NumPi-Array aus
unserem Bild Also dieses Bild. Okay,
wir sehen uns dort.
85. 85: Und ja, CV Two ist installiert. Und was ich mit Civ
Two machen kann, unter vielen anderen Dingen, was ich als
allererstes tun kann, ist,
ein Bild in Python
mit CV Two-Methoden zu laden ein Bild in Python
mit CV Two-Methoden Also werde ich das Bild laden, das übrigens ein sehr kleines Bild ist , ich
habe nur 15 Pixel Du weißt schon, ein normales
Bild, mit dem
du Fotos gemacht hast oder mit
deinem Handy oder was auch immer. Es hat etwa 1.000
mal tausend Pixel, was mehr oder weniger 1 Million
Pixeln entspricht. Aber wir sollten
die Dinge einfach halten, damit Sie verstehen, was vor sich geht. Lebenslauf, um das zu importieren und
ja, das war erfolgreich. Weißt du, ich erstelle
eine Variable und nenne IMF-Bild und G für Grau. Sie können es nennen,
wie Sie wollen, und CV, um ein Bild
zu leiten, es in Python zu laden, Sie möchten die Methode
image shared verwenden. Und dann übergibst du den
Namen deines Bildes. Sie finden dieses Bild
im Ressourcenbereich. Also mach einfach weiter
und lade es herunter. Und jetzt ist
das hier im selben Verzeichnis wie
mein Jupiter-Notizbuch, sodass ich weitermachen und auf den Namen
der Datei
zeigen kann , einschließlich der
Erweiterung PNG mit kleinen Punkten. Und hier erwartet die Methode zum
Lesen von Bildern noch ein weiteres
Argument von Ihnen. Das kann entweder Null oder Eins sein. Null bedeutet also, dass Sie das Bild in Graustufen
lesen möchten. Und wenn Sie eins bestehen,
lesen Sie das Bild in BGR, was blau, grün und rot bedeutet Und du wirst verstehen, was die
einzelnen Versionen bedeuten. Also lass uns das zuerst machen. Ja, das drucke ich aus. Und wie, das war es. Also
was wir haben, ist kein Array. Es ist ein zweidimensionales Array, also hat es die Dimensionen
drei mal fünf, was unserem Bild entspricht. Die Zeilen und fünf Spalten. Der Grund, warum wir dort Null
übergeben, also das
als Graustufenbild lesen, ist
, dass als Graustufenbild lesen, ist
, diese PNG-Datei in Wirklichkeit drei Bänder
hat, oder Sie
können sagen, drei Ebenen Und jede Ebene hat eine
bestimmte Menge an Farben. Die erste Schicht hat also eine
bestimmte Menge Blau, die zweite Schicht eine
bestimmte Menge Grün und die letzte Schicht eine
bestimmte Menge Rot. Die Kombination jedes
Pixels ist also eine Kombination aus der Intensität von
Blau, Grün und Rot. Ich weiß, dass sie in anderen
Programmen RGB verwenden im Gegensatz dazu verwenden wir diese BGR, praktisch, diese Datei hier, dieses Bild
ist praktisch ein Graustufenbild Jedes dieser
Pixel hat jedoch seine eigenen Bänder, sodass durch die Kombination dieser
Bänder
in diesem Fall immer die Farben Grau,
Weiß und Schwarz erzeugt in diesem Fall immer die Farben Grau,
Weiß und Schwarz Wenn wir dort jedoch ein
Farbbild hätten, würde es mit
dieser Funktion in ein
Graustufenbild umgewandelt Also nochmal, was wir
hier haben ist, wissen Sie, 187 ist die Wertintensität
für dieses erste Pixel Und dann haben Sie
die andere Zahl, und für Weiß
sehen Sie hier Weiß. Wir haben drei weiße Pixel. Und das sind 255, alle. Alle Farben reichen von Null, Null wäre
Schwarz, Pechschwarz und 255 für Weiß. Und alles zwischen
ihnen ist in der Grauskala. Wenn ich jetzt diese 21 ändere, erhalte
ich das
dreidimensionale Array, wobei dies
die blaue Ebene,
die grüne und die rote Ebene darstellt . Oder du kannst das sogar ausdrucken. Achten Sie jedoch darauf, dass
das ein bisschen transponiert ist. Die Matrizen bestehen hier also aus drei Spalten und
die Zeilen Im Grunde bedeutet das, dass dieses Pixel die
entsprechenden Werte hat Es hat also eine Intensität
von 187 für Blau, 198 für Grün und
zwei von neun für Rot. Und ja, so erstellt
man
Numpi-Arrays aus Bildern Aber wie wäre es
andersherum? Also Bilder
von Numpi-Arrays erstellen. Nun, um das zu tun, machst
du nochmal cv two, cv two, und dann würdest du auf die
Iriz-Methode
zeigen, also Bild Und dann willst du
einen Namen für dein Bild angeben. Nehmen wir an, neues PNG mit
kleinen grauen Punkten, und dann
müssen Sie natürlich Ihr No-Pi weitergeben. Lassen Sie uns das Bild grau übergeben. das ausführen, erhalten Sie zwei, was bedeutet, dass Ihr Sturz jetzt
hätte erstellt werden müssen. Ja, neues kleines Grau. Ja, das ist eine Floskel und ich hoffe , das stärkt dein
Wissen über Nopi Jetzt machen wir weiter und machen hier noch
ein paar Dinge. Und speziell in
der nächsten Vorlesung werden
wir lernen, wie man
Nopi-Arrays indexiert,
aufteilt und iteriert Im Grunde lernen Sie also,
wie Sie auf diese Werte zugreifen können. Wir sehen uns dort in
der nächsten Vorlesung.
86. 85. Indizieren, Slicen und Iterieren von Numpy-Arrays: In Ordnung. Du weißt,
wie man Listen schneidet. Also null zu eins, wir geben dir den ersten Punkt der
Liste und null bis zwei, den ersten und den zweiten
Punkt der Liste und so weiter. Mit Nicht-Pi-Arrays machen Sie
im Grunde dasselbe, außer dass Sie bei Nicht-Pi-Arrays manchmal zwei- oder
mehrdimensionale oder dreidimensionale Arrays haben Lassen Sie mich weitermachen und ich werde erstellen. Ich beginne mit
einem zweidimensionalen Also werde ich das
von der Variablen bekommen. Das ist also das Nonpi-Array
, mit dem wir arbeiten werden. Und ja, wenn du diese Zahl hier,
hier, diese und das
extrahieren hier, diese und Also diese vier Zahlen. Nun, Sie müssten zuerst
den Index der Zeilen festlegen , die Sie in Scheiben schneiden möchten. Das wäre also Null vor zwei, was Ihnen die
ersten beiden Zeilen ergibt. Eigentlich können wir das versuchen. Und du wirst sehen, dass du die ersten beiden Reihen
bekommst. Nun, wenn du nur
diesen Teil hier haben willst, also diese beiden Zahlen
und diese beiden, würdest
du bestehen wollen. Dort ein Komma und dann der
Index für die Spalten. wäre,
weißt du, Null hier,
eins, also zwei, drei,
ja, zwei bis vier, vielleicht Ja. Aber du machst es. Ah, das ist es. Das heißt, Sie
haben dieses Indexsystem Es beginnt also bei Null für Zeilen, und dann
ist die zweite Zeile eins und zwei und so weiter Vier Spalten, das Gleiche. Null, eins, zwei, drei und vier. Und wenn Sie möchten,
können Sie sogar die Form
Ihres N per Array sehen. Es ist also drei mal fünf, was null bis
zwei und null bis vier bedeutet. Großartig. Und natürlich können
Sie die Konvention
der Listenindizierung verwenden, sodass Sie Null und
alles danach
oder einfach so übergeben können alles danach
oder einfach so Sie erhalten also alle Zeilen
und nur die Spalten 2-3. Ebenso können Sie nur
einen Wert abrufen, wenn Sie möchten. Nicht besonders
dieser, weil die
Zahl
Drei für Achse Null zu groß ist. Achse Null ist also eine
horizontale Achse, was besagt, dass es
keine Zeile mit Index drei gibt. Also setzen wir Null, Eins, Zwei. Also lassen Sie uns dort zwei weitergeben. Und Sie erhalten 182, was das allerletzte
Element des Nopi-Arrays Ja, hier geht es um Indexierung. Wie wäre es mit einer Iteration
durch ein Nopi-Array? Nun, es gibt zwei
Möglichkeiten, das zu tun. Die erste Möglichkeit ist,
sagen wir, für I in Ihrem Nopi-Array drucken Sie
I. Damit werden die Zeilen
Ihrer tauben Felder
ausgedruckt die Zeilen
Ihrer tauben Felder
ausgedruckt Also, worauf ich in
deinem Zahlenfeld zugreife, sind die Zeilen. In jeder Iteration erhält
es also die erste
Zeile und druckt
sie in der ersten Iteration aus, dann die zweite
und dann die dritte Und wenn Sie durch Spalten
iterieren möchten, möchten
Sie auf die transponierte Version
Ihres
Numpi-Arrays zugreifen transponierte Version
Ihres
Numpi-Arrays Und so machst du es. Und wenn Sie Wert für Wert
iterieren wollen, würden
Sie für I in Bild
und Punkt Flat Print I sagen und Punkt Flat Print I Diese Eigenschaft ermöglicht
es Ihnen
also, nacheinander
auf Werte Ihres
Numpi-Arrays zuzugreifen Und hier geht es um Indexierung, Aufteilung und Iteration
. Wir sehen uns in
der nächsten Vorlesung.
87. 86. Numpy-Arrays stapeln und teilen: Sie jetzt
wissen, wie man Numpy-Arrays
schneidet und iteriert,
lassen Sie
uns einige spezifischere Operationen ausführen Da Sie jetzt
wissen, wie man Numpy-Arrays
schneidet und iteriert,
lassen Sie
uns einige spezifischere Operationen ausführen. Und das würde bedeuten, NPi-Arrays
auf Lager zu halten,
also Numpy-Arrays miteinander zu verketten und auch ein Numpi-Array in zwei kleinere
Arrays aufzuteilen . Ja, ich habe dieses
Numpy-Array immer noch hier. Beginnen wir also mit dem
Stapeln von zwei Numpy-Arrays. Um das zu tun, möchten Sie vielleicht eine neue Variable
erstellen, in der
Sie Ihr großes Array speichern, und das würde Nupi und
der Methode zum Speichern von
zwei Nicht-Pi-Strahlen
entsprechen .
Eigentlich gibt es zwei Eigentlich Eine ist ein horizontaler
Stapel, also ein H-Stapel. Das setzt voraus, dass
zwei oder mehr Numpy-Arrays übergeben zwei oder mehr Numpy-Arrays , die Sie horizontal
stapeln möchten Lassen Sie mich also OMG
und dann dasselbe Array übergeben , das
ist kein Problem Wenn Sie zwei verschiedene Arrays hätten, könnten
Sie das tun, aber ich
übergebe dort einfach dasselbe Array Wenn Sie das jetzt ausführen, erhalten
Sie eine Fehlermeldung,
und ich möchte, dass Sie diesen Fehler sehen ,
damit Sie ihn verstehen Es heißt also, dass der H-Stack
ein Positionsargument benötigt ,
aber
es wurden zwei angegeben, was bedeutet, dass der H-Stapel
innerhalb der Klammern was bedeutet, dass der H-Stapel
innerhalb der Klammern nur ein Argument erhält,
aber wir übergeben zwei Wie gehen wir also vor, um zwei Nicht-Pi-Arrays
zu verketten? Wir können dort einfach ein
Nicht-Pi-Array übergeben. Die Lösung hier besteht also
darin, ein Tupel zu haben. Von Nopi-Arrays, einfach so. Also ein Umsturz in der Eingabe der
A-Stack-Methode .
Das führst du aus. Und hier ist ein gestapeltes Array. Das ist also das erste Array und das nächste Array,
das in diesem Fall zufällig dasselbe ist, aber wenn Sie möchten, können
Sie mehr hinzufügen und
Sie erhalten ein längeres Array, das so nicht sehr gut
aussieht Sie können es also ausdrucken. Und ja, jetzt
siehst du den Unterschied. Also das erste Array, das
zweite und das dritte. Und wenn Sie vertikal
stapeln möchten, sollten
Sie dort V machen. Oh ja. Wie Sie erwartet haben, werden
dadurch die Arrays
in der vertikalen Position
auf der vertikalen Achse verkettet in der vertikalen Position
auf der vertikalen Achse Beachten Sie, dass beim Versuch, Arrays mit
unterschiedlichen Dimensionen zu
verketten, eine Fehlermeldung angezeigt unterschiedlichen IMC hat also drei Dimensionen, wenn Sie sich das von hier oben merken
können Jetzt lernen Sie, wie man ein Array
verkettet und wie man ein Array in kleinere
Arrays aufteilt Nun, um das zu tun, könnten Sie eine Variable
erstellen und dann numpy Und das setzt ein Numpy-Array voraus und wie viele Arrays Sie daraus erzeugen
möchten Also horizontal, sagen
wir drei. Richtig. Und ja, das besagt, dass die Aufteilung eines Arrays
nicht zu einer gleichen Division führt. Der Grund dafür ist, wissen Sie, wir versuchen, dass dieses Array eine,
zwei, drei, vier, fünf Spalten hat . Sie versuchen also, fünf durch drei zu
teilen. Ein Umpi kann nicht entscheiden,
wie das geht. Also sollte es dir zuerst
ein Pi-Array mit diesen
beiden Spalten geben zuerst
ein Pi-Array mit diesen
beiden Spalten und dann noch einen Schiedsrichter
mit zwei Spalten und dann ein letztes
NPi-Array mit Numpi kann das also nicht tun. Was du tun
solltest, sind vielleicht fünf, und L T m Ich sollte dir
fünf verschiedene Numpy-Arrays geben, was in diesem Fall
zufällig ein Array für Und Sie können
vertikal splitten. Diesmal können wir es mit drei versuchen , weil wir dort neun Reihen haben Und doch haben wir
drei kleine Arrays. Beachten Sie, dass dieses
LSD, also der Split, eine
Python-Liste von Numpy-Arrays erzeugt Es ist also eine einfache Python-Liste. Und von dort aus können Sie auf
jeden der Nub
Roys zugreifen , wenn Sie möchten weißt du. Es
gibt also das erste Array aus. Und ja, hier
geht es darum, Numpi-Strahlen zu verketten
und zu teilen Hoffe ich gebe dir einen guten Überblick über Numpi. Ich versuche, einige praktische
Beispiele wie das Öffnen von Bildern zu machen. Aber das ist noch
im theoretischen Teil. Napi ist also ziemlich theoretisch, und du verstehst es erst ,
wenn du es so benutzt Echte Beispiele wie die
Arbeit mit Pandas, wie wir es zuvor im Kurs getan haben,
und auch die Arbeit mit Bildern Deshalb werden wir uns in den nächsten Vorlesungen
im nächsten Abschnitt mit
Hardcore-Bildverarbeitung nächsten Vorlesungen
im nächsten Abschnitt Und Sie werden sehen, wie nützlich
Num Pi da drin ist. Und ja, ich hoffe, dir
gefällt das und wir sehen uns später.
88. 87. App 1: Web-Karte mit Python und HTML +: Hallo nochmal und willkommen zu diesem neuen Abschnitt des
Kurses. In diesem Abschnitt werden
Sie natürlich die
zweite Anwendung erstellen. Konkret
werden Sie mit Python
diese Webmap erstellen , die Sie hier sehen. Eine Webmap ist eine Karte, die über
einen Browser angezeigt
wird und über das Internet
besucht werden kann Diese Map wurde mit
Python und Volume erstellt. Volume ist eine Python-Bibliothek, und die Map hat drei Ebenen Sie hat eine Basiskartenebene. Die, die Sie
hier mit diesen Namen
auf der Rückseite sehen , und sie
hat eine Polygonebene, die die
Bevölkerung der Länder darstellt Außerdem haben wir hier diese
Punktebene mit diesen Punkten und Sie können diese Ebenen ein- und ausschalten Wir haben auch diese
Popup-Fenster. Das
wirst du bauen. A, lass uns weitermachen und
das machen . Wir sehen uns in
der nächsten Vorlesung.
89. 88. HTML & Python: Eine HTML-Karte mit Python erstellen +: Hallo, ich hoffe, du folgst dem vorherigen Video,
in dem ich
dir die Map vorgestellt habe , die du in diesem Abschnitt erstellen wirst
. Das war eine Webmap, und wie Sie vielleicht feststellen, die
Standard-Python-Installation reicht
die
Standard-Python-Installation
nicht aus, weil
ein Python logischerweise nicht
standardmäßig alle
möglichen Funktionen haben kann , denn wenn es
alle Funktionen hätte, würde Python sehr schwer
werden Daher ist es eine
kluge Wahl,
externe Bibliotheken zu haben , die Sie installieren
können oder Und das ist beim Web-Mapping
der Fall. Um die Webkarte zu erstellen, die ich Ihnen in der
vorherigen Vorlesung
gezeigt habe , benötigen
Sie eine Bibliothek, eine Bibliothek eines Drittanbieters,
die als Volume bezeichnet wird. Wie Sie vielleicht wissen,
müssen Sie diese Bibliothek installieren. Beachten Sie nur, dass ich einige frühere Videos
zu diesem Abschnitt hatte, einige alte Videos, aber
ich musste sie ändern. Ich nehme gerade neue Videos auf. Dies ist ein neues Video, ein
aktualisiertes Video
und die nächsten Videos
dieses Abschnitts, da Volume im Vergleich zu
den vorherigen Versionen einige Änderungen
am Code vorgenommen
hat . Deshalb musste ich die Videos
neu machen. Diesmal
verwende ich einen Mac-Computer, aber das wird keinen Unterschied
machen Wenn Sie Windows,
Linux oder Mac verwenden, funktioniert
alles genauso. Der einzige Unterschied besteht natürlich in der
Art und Weise, wie Sie Atom öffnen. Unter Windows erstellen Sie bitte
einen leeren Ordner, in dem Sie die Dateien
für dieses Projekt aufbewahren
werden. Mein Ordner hier auf dem Mac
wird unter Windows zugeordnet Sie können die Umschalttaste gedrückt halten
und mit der rechten Maustaste klicken. Und dann öffne Atom hier, um Atom
in diesem Ordner zu öffnen. Auf einem Mac können Sie Command Space und
Atom
drücken, dann zu
View Developer wechseln , im
Dev-Modus öffnen und dann
den Ordner suchen und auf Öffnen klicken. Ja, das ist es.
Ich werde das alles schließen, lass mich das Terminal
öffnen und jetzt
weitermachen und Volume installieren. Um das zu tun, müssen Sie install volume
eingeben. Normalerweise müssten
Sie das unter Windows tun. Wenn Sie auf einem Mac zwei
Python-Installationen haben, müssen
Sie möglicherweise PIP drei ausführen Das heißt ausdrücklich, Volume für Python Three zu installieren. Das Volume wurde
erfolgreich installiert. Wenn Sie eine Meldung erhalten, die
besagt, dass Gina Two
für dieses Paket erforderlich ist, dann machen Sie einfach weiter und führen Sie
PIP Three aus, installieren Sie Gina Two Ich gehe jedoch davon aus, dass
Volume Jinja
Two standardmäßig installiert , so wie es bei mir der Fall war, also
sollte es startklar sein Sobald Sie
das getan haben, werde ich Python
öffnen, genau genommen
Python 3. Auf der Map müssen Sie
Python 3 explizit angeben. Was ich jetzt tun werde,
ist,
eine einfache Webmap zu erstellen . Ich werde dafür die interaktive
Python-Shell verwenden dafür die interaktive
Python-Shell , damit ich
Ihnen die Dinge zeige. Versuchen Sie, das Volumen zu importieren. Es liegen keine Fehler vor, das bedeutet, dass das Volume erfolgreich
installiert wurde. Nun, wie funktioniert Volume? Nun, alles dreht sich um
ein sogenanntes Kartenobjekt. Das allererste, was
Sie nach dem Import eines
Volumes tun müssen, ist, ein Kartenobjekt zu erstellen. Ich verwende eine Variable, um
das Kartenobjekt zu speichern , und dann
entspricht es dem Volumenpunkt MAP. Das ist die Klasse, die dieses Objekt
erstellt. Wenn Sie möchten, können Sie das Volume
überprüfen, um
eine Liste der verfügbaren Objekte zu erhalten , die Sie auf dem Volume verwenden können. Hier ist die Karte. Ignoriere
die anderen vorerst, wir werden sie später durchgehen. Sie können jetzt auch um Hilfe bitten, Volume Dot Map, um zu sehen, was Sie
an dieses Kartenobjekt übergeben können. Erstellen Sie eine Karte mit dem Volumen
- und dem Flugblattpunkt Gs. Volume
produziert tatsächlich, Sie verwenden Python,
Sie schreiben Python-Code und
dieser Python-Code wird automatisch
in JavaScript
- und HTML-Code und CSS-Code konvertiert . Weil Sie Javascript,
CSS und HTML benötigen , um Webmps zu erstellen Sie können das nicht direkt mit
Python-Code tun. Der Browser liest HML, CSS und JavaScript und
gibt im Code
dieser drei
Programmiersprachen zwei Elemente wie Text und Linien und
Punkte und Bilder wieder Das ist es, was Volume tut. Das ist wunderbar,
dass man das mit Python über Python machen
kann . Wie auch immer, Sie können hier
unten in den Parametern nachschauen. Sie können hier einen
Standortparameter übergeben. Und Sie können die Breite angeben. Wie dem auch sei, wenn Sie die Breite nicht
angeben, wird
eine Standardbreite von 100% des
Browserbereichs verwendet, Sie müssen nicht auch
Breite und Höhe angeben,
und dann haben Sie Kacheln, und dann haben Sie Kacheln, Standardeinstellung ist Open
Street Map-Kacheln. Kacheln ist ein Hintergrund
der Karte. Das wirst du in einer Minute sehen. Sie haben auch andere
Parameter, die Sie sich, glaube ich,
selbst ansehen können. Ich habe Q gedrückt, um die Hilfe zu beenden und lassen Sie uns weitermachen und das Kartenobjekt
erstellen. Endlich Volume Dot Map. Also Standort, Sie müssen
dort einen Standortparameter
übergeben , damit die Karte
weiß, wo sie geöffnet werden soll. Es kann sich öffnen,
sagen wir in der Nähe von Alaska oder in der Nähe von Grönland
oder Südafrika Wir sprechen von
der ersten Ansicht, aber dann können Sie die Ansicht
vergrößern und verkleinern Lassen Sie mich an einem zufälligen Ort vorbeifahren. Standorte werden übrigens standardmäßig
durch Koordinaten angegeben standardmäßig
durch Koordinaten Sie müssen
geografische Koordinaten angeben
, also Breitengrad und Längengrad. Der Breitengrad reicht von
-90 über Null bis 90. Also lass mich dort 80 bestehen. Übrigens, das steht tatsächlich
in der Liste. 80 ein Komma und dann
der Längengrad, der Längengrad reicht von
Null bis -180 und Null bis Lass mich -100 überschreiten. Und schließ die Klammer.
Sie übergeben eine Liste mit Koordinaten an den Standort. Eigentlich ist das
genug, Sie können ein Kartenobjekt damit ausführen lassen, Sie bekommen keine
Fehlermeldung, das heißt alles funktioniert einwandfrei. Jetzt haben Sie ein Map-Objekt, aber das ist nur ein
Objekt in Python. Sie haben
dieses Objekt noch nicht in
HTML-, CSS- und
JavaScript-Code übersetzt . Als Nächstes müssen Sie auf dieses Kartenobjekt zeigen. Verwenden Sie dann die
Speichermethode und übergeben Sie dann einen Namen für die Kartendatei
, die erstellt wird. Natürlich
werden die Karten im HTML-Format erstellt. HTML enthält
all diese Elemente, die den gesamten Browser
rendern. Text und Bildmaterial und so weiter. Klammer schließen, ausführen. Wie Sie sehen,
wurde hier eine Datei hinzugefügt,
Map-One-Punkt-HTML . Aber lassen Sie mich zum Ordner gehen und darauf
doppelklicken, der in Ihrem Standardbrowser
geöffnet wird . Das ist also nur ein
zufälliger Ort. Ich weiß nicht, was es
ist. Insel Magan Das scheint in Kanada zu sein, sehr nördlich von
Kanada. Das ist es. Das ist die Webkarte.
Wenn Sie die Ansicht vergrößern, werden
Sie mehr Details
auf der Karte sehen. Je mehr Sie heranzoomen, desto
mehr Elemente sehen Sie. Das
wollte ich dir zeigen. Wenn du einen anderen Ort willst, solltest
du die
Koordinaten hier im Standort ändern. Aber wenn du nicht weißt, welche Koordinaten dein
Lieblingsplatz hat, dann gibt es vielleicht verschiedene
Möglichkeiten, das herauszufinden, aber ein schneller Weg ist,
maps.google.com aufzurufen Nehmen wir an, Sie möchten das wissen
, lassen Sie mich hier näher heranzoomen. Sie möchten die
Karte um diesen Ort zentrieren, klicken Sie mit der
rechten Maustaste
darauf und
gehen Sie zu Was ist hier Kopieren Sie diese Koordinaten,
kopieren Sie diese Koordinaten, ?
Kopieren Sie diese Koordinaten,
kopieren Sie diese Koordinaten,
oder wenn Sie sie nicht kopieren können, erinnern Sie sich einfach an sie? 38,58 ungefähr minus 99 mal 09. Dann musst du die Map erneut
speichern, einen Punkt ML zuordnen und das
überschreibt die vorherige Map Gehen Sie hierher, laden Sie neu, Sie sehen, jetzt haben wir einen
anderen Mittelpunkt der Karte Natürlich können Sie auch mit dem Zoom
herumspielen, also können Sie hier einen
Zoom-Parameter hinzufügen Dies wird als Zoom-Start bezeichnet. Setzen wir es auf sechs. Vergiss nicht,
die Klammer hier zu schließen. Führen Sie die obere Pfeiltaste aus, um
eine zuvor ausgeführte
Anweisung wie Map Save aufzurufen . Sie können auch wählen, ob Sie zum Browser
gehen und mit Control
R oder Command R
neu laden möchten. Daraufhin wird
Ihnen die neue Map
mit einem anderen Zoom-Faktor angezeigt mit einem anderen Zoom-Faktor Wie dem auch sei, das war es auch schon. Versuche, ein bisschen
damit
herumzuspielen In der nächsten Lektion zeige
ich Ihnen, wie Sie Punkte zu dieser
Karte
hinzufügen können. Ich werde mir das ansehen
90. HTML und Python Hinzufügen einer Markierung zur Karte (KEIN WASSERZEICHEN): Hallo nochmal und willkommen
zu dieser neuen Vorlesung. In dieser Vorlesung lernst
du, wie du Punkte zu
der Karte hinzufügst , die wir zuvor erstellt haben, und
das ist diese hier. Alles, was wir hier haben, ist eine
Basiskarte, die Hintergrundkarte, bei der es sich um eine Ebene handelt, die
eigentlich aus dem OpenStreet
Map Service
stammt Also Open Street Maps, sie geben dir eine Ebene Tatsächlich wird Volume Ihnen diese Ebene im Hintergrund
über JavaScript zur Verfügung stellen. Sie können aber auch
andere Ebenen hinzufügen, andere Basisebenen und auch Punkte, die Sie
über der Basisebene hinzufügen können. Lassen Sie mich zum Code zurückkehren. Das haben wir in
der vorherigen Vorlesung geschrieben. Eigentlich haben wir es hier
in der interaktiven Shell geschrieben. Aber ich kopiere es einfach und füge
es in die Datei ein, damit wir es
haben und damit wir jetzt
mehr Code hinzufügen können. Wie ich dir schon gesagt habe, kannst
du Help Volume Dot Map machen und du siehst, dass du hier
noch andere Dinge hinzufügen kannst, zum Beispiel hier
hast du Parameter. Sie können Kacheln hinzufügen. Die Standardeinstellung ist offene Straßenkarten Wenn Sie
jedoch eine andere Kachel angeben, z. B. eine helle Kartenbox,
die in Anführungszeichen stehen muss, wie Sie hier sehen können, im Parameter tiles ein String-Objekt erwartet. Standort, zum Beispiel,
erwartet einen Umsturz oder eine Liste, und genau das
übergeben wir an eine Koordinatenliste Die Breite wäre eine Ganzzahl,
eine Ganzzahl , die Als Einzelperson haben Sie auch
andere Optionen, die Sie selbst ausprobieren können. Ich möchte
diesen vorerst nur ausprobieren. Lassen Sie mich eine neue Python-Shell öffnen. Python drei ordnen eins
zu, stellen Sie sicher, dass Sie
Ihr Skript gespeichert haben, führen Sie es aus. Dann können Sie zum Ordner zurückkehren und
die Map öffnen. Lass mich zum Neuladen zu Farfox
Control R oder Command R
gehen und du wirst sehen, dass sich
der Hintergrund geändert hat, sodass wir jetzt eine neue Basiskarte haben Gehen wir jetzt zurück zum Drehbuch. Ich werde nun
einige Punktmarkierungen über der
Grundkarte hinzufügen einige Punktmarkierungen über .
Wie machst du das? Nun, wenn du die Lautstärke machst, kannst du
hier sehen, dass du
einige Objekte hast und das, was wir wollen, ist eine Markierung oder
eine Kreismarkierung. Ich werde sie beide ausprobieren. Aber
ich möchte Ihnen die Logik erklären, wie Sie dem Kartenobjekt
Objekte hinzufügen. Im Portfolio
erstellen wir ein Kartenobjekt, und dann können
Sie zwischen
dem Kartenobjekt und sicheren Methode
des Kartenobjekts der sicheren Methode
des Kartenobjekts
Elementobjekte zu dieser Map hinzufügen. Was ich in
diesem Fall hinzufügen möchte, ist eine Markierung. Also kann ich Map Add Child machen. Wir verwenden die Adil-Methode
, um Kinder hinzuzufügen. Diese Objekte, von denen ich
spreche, werden als Kinder bezeichnet , wenn Sie sie der Karte
hinzufügen Ordnen Sie Adchild zu und dann
möchten Sie auf die Volumenmarkierung zeigen Nun, diese Marker-Methode, erwartet selbst einige
Argumente Sie können helfen,
Volume Dot Marker zu markieren. Erstellen Sie eine einfache Markierung für
Aktienbroschüren auf der Karte. Leaflet ist die
JavaScript-Bibliothek , mit der Sie dies
visualisieren können Das ist die Engine, die
diese Karten im Browser erstellt diese Karten im Browser Python erstellt mithilfe
der Leaflet-Bibliothek einen
JavaScript-Code , und Markern können
Sie Pop-Pops hinzufügen Wenn Sie auf eine
Markierung auf der Karte klicken, können
Sie
Informationen und
Parameter anzeigen . Sie müssen einen Positionsparameter
übergeben Markierung einen Positionsparameter
übergeben
, um sie
zu visualisieren Standort ist also gleich zwei. Es ist eine typische Liste. Sagen wir, 38 Punkt zwei und -90 91 und Sie
können auch bestehen Nach der Liste öffne ich ein
Poometer, das hoch sein könnte. Ich bin ein Marker Ich muss auch
den Icon-Parameter übergeben
, der eigentlich ein anderes
Objekt ist, das aus dem
Volumenpunkt Con stammt .
Sie erwarten , dass ich dort eine Farbe
übergebe, wie, sagen wir, Grün. Im Grunde ist es das. Stellen Sie sicher, dass Ihre Klammern korrekt sind. Ich habe hier drei Klammern, drei schließende Klammern
und eins und zwei und drei öffnende
runde Klammern. Okay. Speichern Sie ein Skript, gehen Sie zum anderen
Terminal und führen Sie es aus. Gehe zum Laden zu Firefox,
und hier ist eine Markierung. Wenn ich klicke, erhalte ich die Popup-Meldung in
einem schönen Fenster hier. So fügen Sie Ihrer Karte
Markierungen hinzu. Ich würde jedoch
vorschlagen, dass Sie einen etwas anderen Ansatz verfolgen
, um Ihrer Karte Kinder hinzuzufügen. Ich würde vorschlagen
, tatsächlich
eine Feature-Gruppe (
Volumendaten, Feature-Gruppe) zu erstellen . Aber du kannst
ihr einen Namen wie meiner Karte geben. Was dann passiert, ist, dass
in dieser Feature-Gruppe die Markierung ein Feature
mit Feature-Gruppen ist Sie können der Feature-Gruppe mehrere Features
hinzufügen. Sie können also eine Markierung hinzufügen, Sie
können Polygone hinzufügen usw. Anstatt Karte zu sagen,
machst du das Feature-Group-Objekt,
die Variable, die ich hier erstellt
habe, ich übergebe sie hier Danach
mappst du das Kind zu. Und Sie geben die
Feature-Gruppe dort weiter. Das ist mehr. Dies dient dazu, Ihren
Code besser zu organisieren, und es hilft Ihnen auch später,
wenn Sie Ihrer Karte eine Ebene hinzufügen möchten, eine
Funktion
zur Ebenenkontrolle , mit der Sie
Ebenen ein- und ausschalten können. Wir werden uns das später ansehen. Speichern Sie dieses Skript
und lassen Sie mich es ausprobieren. Ziemlich tief auf der Seite.
Wir haben also kein Kleingeld. Die Dinge werden genauso funktionieren,
was bedeutet, dass die
Feature-Gruppe einwandfrei funktioniert. Aber wie gesagt, es ist gut den Anruf
organisiert
zu halten, und es hilft Ihnen
auch später, wenn Sie eine Layersteuerungsfunktion
hinzufügen. Das wollte ich dir
vorerst
beibringen und ich werde später mit dir sprechen.
91. 90. HTML & Python: For-loops beim Hinzufügen mehrerer Marker verwenden: Großartig. Wir konnten diese Karte in der
vorherigen Vorlesung
erstellen. Wir haben eine Basiskarte und wir haben hier
eine Markierungsfunktion.
Das ist unser Code. In dieser Vorlesung zeige
ich Ihnen nun, wie Sie Ihrer Karte
mehrere Markierungen hinzufügen können. Das geht unter anderem dadurch , dass Sie diesen Ausdruck
mehrfach
schreiben. Das gefällt mir, und natürlich müssen
Sie die Position
dieser Markierungen ändern. Speichern Sie das Skript und
führen Sie Reload aus, sodass Sie
mehrere Markierungen haben Wie Sie wissen, ist es
nicht möglich,
mehrere Markierungen mit
einer einzigen Methode hinzuzufügen mehrere Markierungen mit
einer einzigen Methode Bei einer einzigen Markierungsmethode müssen
Sie die
Methode mehrmals anwenden. Dies ist jedoch nicht
sehr klug. Das ist das Schöne
am Programmieren. Sie können eine For-Schleife verwenden, um der Map
tatsächlich mehrere
Markierungen hinzuzufügen. Wir sprechen von
Python for Loop, was eines der grundlegenden
Merkmale von Python ist. Die vier Schleifen haben nichts mit Lautstärke
zu tun. Nehmen wir an, für Koordinaten
bräuchten Sie natürlich einige Eingaben mit den Koordinaten. Ich weiß nicht, so. Sagen wir eine Liste von Listen. Wir haben diese beiden Koordinaten.
Lass mich das kopieren. Leg es da hin und
ein anderes Mal und lass mich sie auf neun und sieben
ändern. Dann müssen Sie das
mit vier Leerzeichen einrücken. Ich werde das gleich erklären. Dann
müssten Sie am Standort die Koordinaten übergeben. Bevor ich den
Code erkläre, lassen Sie mich das ausprobieren. Ausführen, neu laden, wir haben immer noch die Markierungen da Natürlich hat sich der Standort gegenüber dem vorherigen
geändert weil ich die
Koordinaten geändert habe und hier. Also, wie funktioniert das?
Nun, ich iteriere mit einer For-Schleife durch
diese Liste von Listen Die Punkte auf der Liste
dieser Hauptliste sind
zwei weitere Listen Die Artikel können alles sein. In diesem Fall
gibt es zwei Listen. Was passiert ist, dass die
Koordinaten variabel sind. In der ersten
Iteration wird das erste Element der Liste abgerufen
und die kleine
Liste eingefügt, also 32,2 Es wird diese Liste hier einfügen. Im Grunde wird
das hier reingestellt. Mehr oder weniger. Das ist die Idee. In der nächsten Iteration werden die
Koordinaten dann diese andere Liste
abrufen und
sie wieder hier einfügen, sodass die Marker-Methode
zweimal ausgeführt wird Beim ersten Mal wird
sie also eine Markierung mit diesen Koordinaten und bei
der zweiten Iteration wird
sie eine Markierung mit
diesen Koordinaten erzeugen diesen Koordinaten und bei
der zweiten Iteration wird
sie eine Markierung mit
diesen Koordinaten erzeugen. Das ist es Wir haben hier jedoch ein
kleines Problem. Das Problem ist, dass
Sie die
Koordinaten in Wirklichkeit nicht einfach in eine Python-Liste eingeben können. Nehmen wir an, Sie haben 1.000 Koordinaten, die Sie
einer Karte zuordnen
müssen , und es ist schwierig, sie
hier einzugeben oder sie sogar zu seitenweise, kopieren und
aus dem Dokument hier einzufügen. Die Lösung dafür ist, dass Ihre Koordinaten
normalerweise im wirklichen Leben
vielleicht als Textdatei geliefert
werden, vielleicht als Textdatei geliefert
werden, z. B. als
kommagetrennte Textdatei, CSV, Excel-Dateien Sie möchten diese
Datei in Python laden und dann
die Werte dieser Datei
zur Marker-Methode hinzufügen . Du kannst das mit einer
For-Schleife machen und wie
machst du das genau? Nun, das werde ich
in der nächsten Vorlesung erklären. Ich gebe Ihnen
eine kommagetrennte Datei mit vielen Koordinaten, und wir werden sie in
diesem Skript verwenden . Ich werde später
mit dir reden
92. 91. HTML und Python: Dateiverarbeitung durch Hinzufügen von Markern aus Dateien: Hallo. In der vorherigen Vorlesung konntest du diese
Karte mit mehreren Markierungen erstellen. Diese Karte hat zufällig nur zwei Markierungen,
aber Sie
haben die Idee verstanden und das
Skript war dieses hier, sodass Sie hier so viele
Koordinatenpaare hinzufügen können , wie
Sie möchten. Aber in dieser Vorlesung
möchte ich Ihnen zeigen, wie Sie Koordinatenpaare
aus einer Textdatei
hinzufügen können, das ist diese hier,
Vulkane punktförmig als TXT Wenn Sie möchten, können Sie
einfach den Namen von
Vulkanen, der
Text Vulkane in CSV umbenennen , dann können Sie es in
einem Programm wie Excel öffnen Wenn Sie möchten, können Sie es in
einer einfachen Textdatei anzeigen , wie
ich es hier mache Python kann sowohl
CSV- als auch Textdateien lesen. Was wir hier haben, sind
einige Daten über Vulkane. Im Grunde haben wir die
Nummer des Vulkans, die eine ID ist, Vulkan 020 Wir haben dann noch eine weitere
Zahl, wie Sie sehen, jede Spalte, wir haben Spalten in dieser Datendatei und jede Spalte
ist durch ein Komma getrennt Das ist der Name
der ersten Spalte, der erste Wert der ersten
Spalte ist dieser hier, dann ist es der Name
der zweiten Spalte Der erste Wert der zweiten
Spalte ist dieser hier, dann
ist der zweite Wert
der zweiten Spalte die Antwort eins, und dann haben wir eine Namensspalte, den Namen des
Vulkans und hier. Entschuldigung, der Name ist hier,
Baker, und dann beginnt das
Komma hier, was bedeutet, dass der Standort dieser hier
ist, USA Washington Dann haben Sie den historischen
Status des ersten Vulkans und dann haben
wir die Höhe, das ist dieser hier. Ich bin mir nicht sicher, ob sie in
Fuß oder Metern
sind , aber das kannst
du herausfinden. Wenn Sie neugierig sind,
können Sie nach
diesem speziellen Vulkan recherchieren und die Höhe vergleichen. Wie auch immer, dann haben wir
eine Art Vulkan. Sie haben einen Zeitrahmen
, der D drei ist, ich bin mir nicht
sicher, was das bedeutet, D vier. Schließlich interessiert
uns das. Wir haben die Spalten Lat
und Long. Das ist spät, das heißt Breitengrad und das ist
Längengrad des Vulkans. Sie benötigen also diese
beiden
numerischen Werte , um die Merkmale, die Vulkane, einer Karte zuzuordnen, in diesem Fall einer Volumenkarte Das sind ungefähr 63, tatsächlich 62 63, einschließlich
der Kopfzeile der Daten Wie laden wir diesen
Herbst in Python? Nun, das zu laden
fällt in Python. Lassen Sie mich das
Terminal leeren und Sie müssten zuerst
eine sehr nützliche Bibliothek
namens Pandas installieren namens Pandas Wir werden diese
Bibliothek später verwenden, daher werde ich Pandas vorerst
nicht im
Detail erklären , da wir
nur eine oder zwei
ihrer Funktionen verwenden werden , die ich
in dieser Vorlesung erläutern werde Fahren Sie fort und installieren Sie Pandas,
falls Sie keine Pandas haben. Installieren Sie Pandas oder
PIP drei installieren Sie Pandas, je nachdem, wie Sie Python konfiguriert
haben, und dann können Sie eine
Python-Sitzung öffnen Pandas importieren. Um eine
Datei mit Pallas zu laden, zeigen Sie auf Pallas ,
die CSV,
Volcanos TXT lesen . Stellen Sie sicher, dass
Ihre Python-Sitzung in
dem Verzeichnis geöffnet
wurde , in dem sich Ihre
Volcan-TH-Datei Meine Sitzung
befindet sich zum Beispiel im Mapping-Ordner
, der hier ist, sodass ich einfach einen Dateinamen übergeben
kann Andernfalls müssen Sie möglicherweise den absoluten Pfad der Datei
übergeben,
der mit einem Schrägstrich usw. beginnt
,
je nachdem, in welchem
Betriebssystem Sie sich befinden, und
das ausführen und Daten aufrufen und Sie bekommen die Daten einfach so
ausgedruckt Panda ist eigentlich
die gelesene CSV-Mathematik, die in der
Lage ist ,
zwischen diesen Kommas zu unterscheiden, wo sich die Kommas
befinden, und es erstellt ein webstrukturiertes
Datenformat Wenn du hier runter gehst, hast du
hier einige Spalten, Spalte, Spalte, Spalte und dann bis zum Ende Dann hast du andere
Spalten, weil Python eigentlich nicht
ausdrucken kann, das Terminal erlaubt dir nicht, alle Spalten in
einer innerhalb dieses Bereichs hier
zu haben ,
weil das zu viel wäre. Wie auch immer, Sie haben
den Status Elevation, geben Timeframe, Lat und Long Das ist ungefähr mit den Daten. Jetzt müssen
Sie herausfinden
, wie Sie durch
diesen Datenrahmen iterieren Dies wird als Datenrahmen bezeichnet. Das Datenobjekt wird Datenrahmen
genannt. Sie können seinen Typ tatsächlich überprüfen. PanascFrame-Datenrahmen. Ich denke daran,
tatsächlich zwei Listen aus
diesen Datenrahmenspalten zu erstellen , um die Breitengradspalte in
eine Python-Liste und die
Längengradspalte in eine
andere Python-Liste
einzufügen eine Python-Liste und die
Längengradspalte in ,
sodass wir ein natives
Python-Objekt haben, dem es sich um eine Liste handelt, und
dann können wir diese Liste
mithilfe der Vierschleife iterieren diese Liste
mithilfe der Vierschleife Lassen Sie mich versuchen, das zu tun
. Importieren Sie Pandas und erstellen Sie
dann das
Datenrahmenobjekt Beim Laden der Daten habe ich
CSV Volcano TXT gelesen, das war's. Wie konvertieren wir eine
Datenrahmenspalte in eine Liste? Nun, der Weg, das zu tun,
ist, sagen wir L oder T egal data und dann
den Namen der Spalte, also LT
, so dass Sie übrigens eine
Liste von Spalten erhalten können,
indem Sie Datenpunktspalten machen Hier sehen Sie, Sie haben eine
breite und eine lange Spalte. Dann machst du das, was bedeutet,
in eckigen Klammern
aufzulisten aufzulisten , es zu schließen Was Sie hier gemacht haben, sind Daten
mit einem einzigen Attribut Wir geben ein seriöses Objekt zurück Aber dieses seriöse Objekt, wir konvertieren es in
eine negative Liste Das wird eine Python-Liste sein. Dies wird auch
als ähnliches Objekt angezeigt. Das ist ein ernstes Objekt. Dies ist eine Liste, aber ich bevorzuge es, an einer Liste zu arbeiten
, weil die Arbeit an Listen schneller ist als die Arbeit
an Datenrahmenreihen. Die Idee ist, hier
zwei Listen zu haben. Das entspricht der Liste auf der
Kopie, die hier eingefügt wurde, das Gleiche gilt
für den Letzte und lange Liste. Wir müssen hier also vorsichtig sein geht,
wie wir
diese beiden Listen durchgehen denn wir haben zwei Listen und jede
davon hat 62 Einträge Sie können das überprüfen, indem
Sie hier, hier unten, dass es
62 Elemente hat und dasselbe gilt
für die Längengradliste Das bedeutet, dass
der erste Eintrag
der Breitengradliste
dem zweiten Punkt
der Breitengradliste entspricht , tut mir leid, der Längengradliste. Die ersten beiden Elemente bilden die erste Position
der ersten Markierung. Das bedeutet, dass
wir in
der ersten Iteration beide Standorte extrahieren müssen Eigentlich wird diese Struktur
nicht mehr angemessen sein. Was Sie tun müssen,
ist, sagen wir, die Variablen Lat
und Loan
durchzugehen . Wenn Sie durch
zwei Listen gleichzeitig iterieren, müssen
Sie die Zip-Funktion verwenden und dann geht es nach oben. Im Grunde funktioniert diese
Funktion wie folgt. Sagen wir für I, J und Zip. Nehmen wir an, die erste Liste ist 123. Die zweite ist 456. Print, ich und J. Das passiert.
Diese Schleife durchläuft diese beiden
Listen gleichzeitig. Was passiert ist, dass ich den ersten Punkt
der ersten Liste
durchgehe , während ich den ersten
Punkt der zweiten Liste
durchgehe . In der ersten Iteration werden eins
und vier extrahiert. Eins hier und vier hier. Und Sie können eine
solche Extraktion mit
der ZIP-Funktion durchführen. Andernfalls können Sie das
nicht tun , wenn Sie
die ZIP-Funktion nicht verwenden. ZIP verteilt
die Artikel also sozusagen nacheinander. Und das Gleiche gilt hier, LT wird den ersten
Punkt dieser Liste bekommen L One wird den ersten
Punkt dieser Liste bekommen. Und dann müssen
Sie hier eine Liste mit LT und
LN erstellen . Ja, das ist es. Speichern Sie das Skript, gehen Sie
zum Terminal, um es auszuführen. Es ist nicht hier, das Terminal. Ich verlasse das einfach. Python drei, kartiere einen Schnittpunkt. Keine Fehler, geh zu
Firefox und lade es neu. Ich habe aus
irgendeinem Grund keine Markierungen, aber ich habe keine Fehlermeldung erhalten Dies ist eines der Szenarien , in denen im Terminal keine
Fehlermeldung angezeigt wird. In diesem Fall müssen Sie Ihren Code sorgfältig
überprüfen . Datenpaneele drei CSV, geschweige denn Daten. Hier ist der Fehler. Was
passiert ist, dass ich Breitengradliste die falsche Spalte
zuweise Lassen Sie mich die
Reihenfolge ändern und es erneut versuchen. Lassen Sie sich also nicht von
Fehlern einschüchtern. Fehler passieren ständig. Sie müssen nur
kaltblütig sein und
die Fehler lesen , wenn Sie hier
einen Fehler erhalten, und den Code
auch genau ansehen Lass mich nachladen. Ich
habe jetzt ein paar Marker Das sind die Standorte
von Vulkanen im Norden der USA, genauer gesagt in den
Vereinigten Staaten Okay. Sie haben auch dieses
Pop-up, das gut funktioniert, aber ich gehe davon aus, dass es Ihnen
nicht besonders
gefällt , weil es keine Informationen
anzeigt. Was wir
hier tun müssen, ist, dieses Pop-up tatsächlich dynamisch zu
gestalten ,
sodass es einige
aktuelle Informationen anzeigt. Ich zeige Ihnen im nächsten
Video, wie Sie
dynamische Popups erstellen . Ich rede dort mit dir.
93. 93: Hallo, nochmal. In diesem Video zeige
ich Ihnen, wie Sie die Höhenwerte
hinzufügen. Diese hier
im Popup-Fenster. Derzeit druckt unser Skript
diese Zeichenfolge
einfach im
Popup-Fenster aus. Das werden wir ändern. Dazu
laden Sie zunächst die Höhendaten in eine Python-Liste. Dann willst
du in der Schleife hier sagen, sagen
wir, L in Z plat
lone Lv so Hier im Pop-Pop-Argument übergeben Sie das L-Attribut Auch hier erstellen wir eine Liste mit
dem Namen F, Variable LV. Das wird eine Liste aller
Höhen sein, und dann gehen wir diese
drei Listen durch LT bekommt den
ersten Gegenstand der Miete, LN bekommt den
ersten Gegenstand der Ausleihe, L bekommt den ersten
Gegenstand von LF und diese Gegenstände werden
in dieser Funktion hier verteilt LT hier drin, LN hier und
L hier, EL hier drin. Nun, ich möchte
das speichern und ausführen, erwarte
aber eine
Fehlermeldung. Ich möchte, dass Sie den Fehler
sehen, damit Sie sich auch mit dem Umgang mit
Fehlern
vertraut machen. Der Fehler tritt
in Zeile 14 auf. Ordnen Sie in dieser Datei einen Punkt Pi zu, das ist unsere Datei, Zeile 14 ist hier. Das ist eine Zeile und dann haben
wir bei Child Pop Up. Es scheint, dass dieser Fehler mit einem Popup-Objekt zu
tun hat. Ich werde sagen, das ist eigentlich keine sehr
gute Fehlermeldung. Es ist schwierig, diesen
Fehler zu lesen und zu beheben. Umfang der Informationen
ist hier nicht sehr gut, aber wir haben trotzdem einige Hinweise. Pop, hier steht Name,
Kindname-Attribut oder NupiFlow 64, Objekt hat kein
Attribut Es scheint, dass Volume versucht,
diese Methode „Name abrufen“ anzuwenden
, eine Methode innerhalb
der Volume-Codebasis, und versucht, sie auf eine
Zahl anzuwenden Ich denke, dass dieses L hier tatsächlich eine Zahl
ist. Ich kann das überprüfen, indem ich
sage print type, save execute the script
again, hier ist ein Typ. Das ist ein Num Pi Float 64. Im Grunde ist es ein Float-Typ. Es ist eigentlich ein spezieller
Float der Numpi-Bibliothek. Aber wie auch immer, du kannst es Float
nennen. Es ist also eine Zahl,
es ist keine Zeichenfolge. Aber wenn Sie sich Hilfe, Entschuldigung,
Hilfe, Lautstärke, Punktmarkierung ansehen, werden
Sie feststellen, dass der
Popup-Parameter eine Zeichenfolge
von Ihnen als Eingabe
erwartet. Stattdessen
übergibst du eine Fließkommazahl. Also willst du das nicht tun. Was Sie tun möchten, ist einfach, Sie konvertieren diese
Flow-Nummer einfach in eine Zeichenfolge. Speichern Sie das Skript. Gehe zum
Terminal. Führen Sie es erneut aus. Gehen Sie zu Firefox, laden Sie es neu und die Höhe
wird korrekt angezeigt Ja, das war's auch schon. vielleicht
möchten Sie auch das, was Sie
anzeigen, stilisieren , um dort
weitere Informationen hinzuzufügen, z. B. zusätzliche Raumzähler Ich füge die Zeichenfolge zu allen Informationen im Popup-Fenster für alle Höhenangaben Wir sprechen von
2.447,0 Metern. Das ist die Höhe
des Vulkans. Ja, das ist die Idee. Ich hoffe, das war klar und
ich werde später mit dir reden.
94. 93. Funktionen verwenden - Eine Farbgenerierungsfunktion für Marker erstellen ++: Hallo nochmal und willkommen
zu dieser neuen Vorlesung. Was wir bisher haben, ist diese
Karte mit diesen 62 Markierungen, von denen
jede
einen Vulkanstandort in
den Vereinigten Staaten darstellt . Diese Karte ist jedoch nicht
sehr intelligent,
die einzige Information, die diese Karte vermittelt, sind die Standorte
der Vulkane Und Sie haben auch eine Basiskarte. Diese Karte hat auch einen guten
Aspekt, weil Sie solche Informationen extrahieren
können
, wenn Sie auf die Symbole klicken. Möglicherweise möchten Sie diese Karte jedoch so
transformieren, dass sie tatsächlich ein Attribut anzeigt und nicht
nur Vulkanstandorte. Die Art und Weise, das zu tun, mag verschiedene Möglichkeiten geben, das hängt von Ihrem Wissen
über Zytografie ab, aber ich könnte dafür sorgen, dass die
Karte hier ein Attribut anzeigt. Ich könnte zum Beispiel die Farben
dieser Markierungen
ändern , um den Höhenbereich tatsächlich
anzuzeigen Nehmen wir an, wir können
diese Markierungen in drei Farben einteilen Nehmen wir an, Grün, Orange und Rot, Grün wäre beispielsweise für Höhen von
0 bis 1 Tausend Metern
oder 2.000 Meter und
Orange für oder 2.000 Meter und 2000 bis
3.000 Meter,
und dann würden rote Markierungen
Vulkane mit einer Höhe
von mehr als 3.000 Metern darstellen Vulkane mit einer Höhe
von Wie machen
wir das also mit der Lautstärke? Kehren wir zum Atom zurück. Hier ist unser Code,
was wir bisher haben. Derzeit
übergeben wir an das Argument icon ein Farbargument
mit dem Wert Grün. Im Grunde müssen wir diese
Dynamik so gestalten, dass sich die Farbe
je nach Höhe ändert. Leider können wir das mit Volumen nicht
machen. Volume verfügt nicht über
native Funktionen zum Erstellen dynamischer Farben
für Ihre Markierungen. Daher müssen wir hier ein bisschen
kreativ sein und dafür
Python-Kernfunktionalitäten
verwenden . Wenn Sie an Dynamik denken, denke
ich an Funktionen. Im Grunde
durchläuft diese Schleife den Breitengrad, Längengrad und
die Höhe und
leitet dann diese drei Werte an diesen Ausdruck hier weiter. Der Farbe wird jedoch immer eine Zeichenfolge
übergeben. Aber wie ändere ich es zum Beispiel
je nach Höhe? Nun, der Weg, das zu tun,
besteht darin, eine Funktion zu erstellen, eine Funktion, die eine Höhe als
Eingabe erhält und
dann einige Aktionen
innerhalb der Funktion ausführt und
dann eine Farbe zurückgibt, die vom Höhenwert
abhängt. Sie können sagen, wenn die Höhe geringer
ist als dieser Wert, geben Sie mir die grüne Farbe, hier
eine grüne Zeichenfolge. Und so weiter und so fort.
Um Ihnen eine Vorstellung davon zu geben, wie
das funktionieren würde, lassen Sie mich die Funktion hier schreiben. Dies wäre ein guter
Ort, um das zu tun, bevor Sie ein Kartenobjekt erstellen. Aber immer müssen
Sie immer
eine Funktion erstellen , weil ich die Funktion hier
aufrufen werde, also müssen Sie ab
hier und aufwärts
die Funktion vor
diesem Ausdruck erstellen . Ich werde das hier erstellen. Nennen wir eine Funktion,
rufen wir einen Produzenten auf. Lassen Sie es uns für eine Weile
einfach halten, nur um Ihnen zu zeigen,
wie das funktionieren würde. Lassen Sie es uns sehr, sehr einfach halten. Sagen wir, wir kehren grün zurück. Wenn Sie dies auf
Color Producer ändern und die Klammern nicht
vergessen, indem Sie Klammern übergeben,
bedeutet das, dass Sie
die Funktion aufrufen. Wenn Sie die Klammern nicht übergeben, bedeutet
das, dass Sie nur
den Funktionsnamen aufrufen und die Funktion
nicht ausführen. Ich lasse es einfach
so
und führe Map One Dot Pi aus. Ordnung.
Wenn du nachlädst, bekommst du dasselbe Denn was passiert, ist das. Dieses Ding hier, diese
Funktion, Kohle
wird dem entsprechen, was auch immer
du hierher zurückgibst. Der Typ dieses Objekts
ist eigentlich eine Zeichenfolge. Es ist genau die grüne Zeichenfolge. Daher können Sie hier jetzt
einige Bedingungen hinzufügen. Im Grunde müssen Sie hier eine Eingabe
übergeben, Höhe, lassen Sie mich eine
beliebige Variable
schreiben, Höhe schreiben und hier müssen
Sie
L. L für Letlon L übergeben, wir haben 62 Zeilen in der Datentabelle und for loop durchläuft die
erste Zeile der Sie ermittelt die Höhe und leitet
sie an diesen Funktionsaufruf weiter. Die Funktion übergibt L in Höhe.
Dann sagen Sie hier, wenn die Höhe weniger als
1.000 beträgt ,
möchten Sie Grün zurückgeben, wenn die Höhe
weniger als 1.000 Meter beträgt. Eine Blatthöhe liegt
zwischen 1.000 Metern, sie ist größer als 1.000 Meter oder weniger als 3.000 Meter. Gib Orange zurück. Sonst, gib Rot zurück. Rot wird zurückgegeben, wenn keine dieser Bedingungen erfüllt
ist,
was bedeutet, dass die Höhe
weder weniger als 1.000 Meter noch
1.000-3.000 Meter beträgt Das bedeutet, dass
mehr als 3.000 Meter übrig sind. In diesem Fall geben
wir Rot zurück. diese
Werte herauszufinden, müssen
Sie tatsächlich ein
wenig Daten untersuchen. Vielleicht möchten Sie sich
die Daten so schnell ansehen ,
um zu sehen, welche Werte Sie haben. Und entscheiden Sie sich dann für den Schwellenwert für die
Kategorie. Sie können aber auch
aussagekräftigere statistische Analysen durchführen Sie können ein Histogramm erstellen und sich
die Datenverteilung ansehen und
dann für diese Werte entscheiden Aber lassen Sie uns die Dinge einfach halten und uns für diese Werte entscheiden Ich löse diesen Check schnell
, wenn alles an
seinem Platz ist. Lass mich den Code ausprobieren.
Geh und lade neu Wir haben hier ein paar verschiedene
Farben. Ja. Das sieht gut aus. Lassen Sie mich die Werte noch einmal überprüfen. Orange liegt zum Beispiel zwischen 1.000 Metern
und 3.000 Metern. Es geht uns gut. Das Rot
liegt über 3.000 Metern. Es scheint, dass es funktioniert.
95. 94. HTML und Python: So fügst du Marker hinzu und stilisierst: Ordnung. Ich hoffe, du
löst die Übung, aber mach dir keine Sorgen, wenn deine Karte ein bisschen anders
aussieht als meine. Wie dem auch sei, hier sind meine Markierungen, eigentlich
Kreismarkierungen. Und ich habe grüne, orange,
rote und orange Markierungen. Du verstehst die Idee.
Und sie haben auch eine Art von Undurchsichtigkeit Also habe ich einen
Opazitätswert von 0,7 festgelegt, was für sie 70% bedeutet Wie Sie sehen, können Sie die sich
unter dieser Markierung befindet, hier
sehen Wie dem auch sei, hier ist ein Code. Lassen Sie mich erklären, was ich gegenüber
dem vorherigen Code gegenüber
dem ursprünglichen Code geändert habe . Ich habe die Markierung
zur Kreismarkierung geändert. Der Standort bleibt derselbe. Auch das Popup-Attribut
bleibt gleich. Und dann habe ich hier einen
Radius von sechs hinzugefügt, was sechs Pixel bedeutet. Das ist die Größe
dieser Kreismarkierungen. Dann habe ich eine Feldfarbe hinzugefügt. Das Feldfarbattribut
bezieht sich auf den inneren Bereich
des Kreises. Sie sehen diesen orangefarbenen Bereich, aber Sie haben hier auch diese äußere
Farbe, die ich
auf Grau gesetzt habe , und das machen Sie
mit dem Farbargument. Die Farbe entspricht Grau
für alle Markierungen. Die Standardfarbe ist Schwarz, was meiner Meinung nach etwas
schwer für das Auge ist Wie dem auch sei, hier ist eine Feldundurchlässigkeit. Aus Gründen der Transparenz habe
ich 0,7 angegeben, und das war's. Ich hoffe, das ist jetzt klar
und ich werde später mit Ihnen sprechen.
96. 95. HTML & Python: Arbeiten mit JSON-Daten: Hallo, willkommen wieder.
In dieser Vorlesung zeige
ich Ihnen, wie Sie dieser Karte
eine weitere Ebene hinzufügen können. Derzeit haben wir zwei Ebenen. Wir haben die Basiskarte, das sind Kartenkacheln pro
Kartenbox, die Sie hier sehen können, und die Daten werden
von OpenStreet Map bereitgestellt und Sie haben auch Ihre
benutzerdefinierte Ebene, die eine Ebene
mit Kreismarkierungen ist In geographischen
GIS-Informationssystemen werden
diese als Ebenen bezeichnet Jetzt möchte ich meiner Karte eine
dritte Ebene hinzufügen, bei der es
sich um eine Polygonebene handeln wird Diese aktuelle Ebene mit Markierungen kann als Punktebene bezeichnet
werden Sie haben auch Linienebenen
und Polygonebenen. Mit Punkten lassen sich
Orte
besser darstellen, und Sie haben Linien. Linien eignen sich am besten für die Darstellung
geografischer Merkmale , die Linien
wie Straßen und Flüssen ähneln Dann haben wir Polygone. Polygone eignen sich am besten
zur Darstellung von Bereichen. In dieser Vorlesung werde ich Ihnen beispielsweise zeigen, wie Sie eine Ebene hinzufügen,
eine Polygonebene, die die
Weltbevölkerung nach Ländern darstellt Weltbevölkerung Länder werden als Gebiete
dargestellt. Und was wir tun werden, ist jedes der Länder
eine bestimmte Farbe hat , die die
Bevölkerung dieses Landes angibt. Punkte für Standorte,
Linien für Linien und Polygone für Flächen Jetzt benötigen Sie natürlich
einige Daten, um
eine Polygonebene zu erstellen Genau wie bei Markierungen
hatten
wir einige Daten im
CSV-Format im Textformat Und dann verwenden wir diese Daten, wir öffnen sie mit Pandas und
dann haben wir
diese Datenzeilen durchgearbeitet diese Datenzeilen durchgearbeitet und die
Markierungen zur Karte hinzugefügt Bei Polygonen können Sie nun Polygone über
Volumen hinzufügen, indem Sie die
GeoJSON-Methode mit Volumenpunkten verwenden Lassen Sie mich hier im Grunde etwas Platz
schaffen, so würde das funktionieren Sie möchten hier eine
Feature-Gruppenvariable hinzufügen, Sie möchten ein
untergeordnetes Objekt hinzufügen, bei dem es sich um
ein Volume-Geo-JSON-Objekt handeln würde . Dies ist hier die Methode
mit Klammern. Dadurch wird ein GeoJSON-Objekt erstellt. Für GeoJSON-Daten verwenden wir
diese World Dot JSON-Datei. Sie finden dies in
der Anlage zu dieser Vorlesung. Lassen Sie mich erklären, was das ist, aber Vorsicht, öffnen Sie es nicht auf Atom, denn wenn Ihr
Computer etwas langsam ist, kann
Ihr Atom abstürzen. Versuchen Sie, es mit einem leichteren
Editor wie Notepad oder CAT auf einem
Linux-Terminal oder Mac zu öffnen oder CAT auf einem
Linux-Terminal oder Mac Wie auch immer, das ist die JSON-Datei. Sie können sie
als JSON oder GeoJSON bezeichnen. Tatsächlich ist GeoJSON ein
Sonderfall von JSON. Im Grunde
ist das Format immer dasselbe. Es beginnt mit
geschweiften Klammern und enthält im Grunde eine Zeichenfolge, die einem Python-Wörterbuch
mit Schlüsseln und Werten ähnelt Schlüssel, Schlüssel und Wert , wo diese geschweifte Klammer irgendwo hier
endet, glaube
ich, wenn ich mich nicht irre Nun, dieser endet hier. Ja. Dann hast du die andere Schlüsselgeometrie.
Was ist Geometrie? Nun, die Art der Geometrie
ist Multipolygon. Im Grunde haben Sie
diese Attribute , die die Daten beschreiben Geben Sie Koordinaten für mehrere Polygone ein. Das fängt jetzt an, die Features,
die Polygone, zu beschreiben Dies sind die Koordinaten
des ersten Polygons, das auf der
Karte angezeigt wird Nehmen wir an, dies ist
ein bestimmtes Land , nämlich Antigua und Ein kleines Land, aber trotzdem. Dies sind die
Koordinaten, die die Position
des Polygons auf Ihrer Karte
bestimmen Im Grunde liest Volume all diese Informationen und
entscheidet, wo die Polygone platziert Dann können Sie auch
andere Attribute
wie die Bevölkerung verwenden , die hier steht. Sie verwenden
diesen Bevölkerungswert, um der Population
eine Farbe zuzuweisen Und so weiter und so fort, Sie haben alle Länder
der Welt in dieser JSON-Datei. Verbringen Sie ein paar Minuten damit, sich diese Datei anzusehen, um
ihre Struktur zu verstehen. In der nächsten Lektion werde
ich die JSON-Datei in
Python laden
und die Polygonebene anzeigen Wir sehen uns dort.
97. 97: Großartig. In der vorherigen Vorlesung habe ich dir gezeigt, wie eine
JSON-Datei aussieht. In dieser Vorlesung werde ich diese
JSON-Datei zum Code hinzufügen. Denken Sie daran, dass ich
Ihnen die JSON-Datei zur Verfügung gestellt habe. In der vorherigen Vorlesung konnten
Sie
es aus den Vorlesungsressourcen herunterladen . Diese GeoJSON-Methode
erhält also ein Datenattribut
, das
dem Dateiobjekt
der JSON-Daten entspricht dem Dateiobjekt
der JSON-Daten Grundsätzlich müssen Sie ein Python-Dateiobjekt
erstellen , das Sie mit open erstellen können. Denken Sie daran, dass Open eine
klassische Python-Methode zum Erstellen von Dateiobjekten ist. Da geht der Pfad
über die Datei. Dies befindet sich zufällig im
selben Verzeichnis
wie mein Map One Dot Py-Skript. Ich bin gerade dabei, World JCO zu bestehen. Ich öffne
es im Grunde im Lesemodus. Ich lasse es
vorerst so, speichern, ausführen. Ich denke, wir werden hier eine Fehlermeldung bekommen. Ja, wir müssen
dort
einen Kodierungsparameter hinzufügen , wie in
der Fehlermeldung vorgeschlagen. Das gehört
zur offenen Methode. Entspricht UTF acht SIG. Sag noch einmal, geh und führe Load aus, und wir haben die Polygone auf der Karte
angezeigt Das war ziemlich einfach zu machen. Sie sollten wissen,
dass Sie auch Punkte über GeoJSO
hinzufügen können Punkte über GeoJSO
hinzufügen In diesem Fall fügen wir Polygone hinzu, aber diese JSON-Datei
könnte auch Linien oder
Punkte in ihren Attributen enthalten In diesem Fall hatten wir also ein
Attribut, das besagte, dass mehrere Polygone
handelt, aber das könnten Punkte oder Linien sein In diesem Fall zeigt
Volume
diese Merkmale in Abhängigkeit von
diesem Typattribut hier an Natürlich hätten Sie auch das Koordinatenattribut mit den Koordinaten der Linie. Die Punkte, an denen
die Linie unterbrochen und abgebogen wird, bei Punkten hätten
Sie hier
Koordinatenpaare. Ich hoffe, du verstehst die Idee.
Es ging um diesen Vortrag. In der nächsten Vorlesung zeige
ich Ihnen, wie Sie eine Choropleth-Karte erstellen. Dabei handelt es sich
um eine Karte
, bei der Flächen farbig dargestellt werden
, um
Merkmale darzustellen In diesem speziellen
Fall werden wir
diese Polygone mit
unterschiedlichen Farben verwenden, um
die Weltbevölkerung für welches werden wir
diese Polygone mit Land darzustellen die Weltbevölkerung werden wir in der
nächsten Vorlesung tun. Wir sehen uns.
98. 97. Python & JSON: Die Bevölkerungsschicht stilisieren: Hallo, nochmal. In diesem Vortrag zeige
ich Ihnen, wie Sie eine Landkarte eines
Landes anhand der Bevölkerungszahl erstellen. Wir werden die Bevölkerung
jedes Landes in
abgestuften Farben anzeigen. Wir werden uns also
eine Reihe von Farben überlegen , um die Bevölkerungszahl
von niedrig bis hoch darzustellen. Wir haben diese Information
in unserer W-Punkt-JSON-Datei, die in diesem
Pop-2005-Attribut gespeichert ist. Pop 2005 bedeutet
Bevölkerungszahl von 2005, was ziemlich alt ist, aber für Bildungszwecke
sollte das kein Problem sein. Kommen wir also zurück zum Code und
der Art und Weise
, wie man die Farbe dieser
Polygone ändert, denn standardmäßig haben
wir diese grüne Es gibt auch Transparenz
auf den Polygonen. Sie können die
Basiskarte im Hintergrund sehen. Um das zu ändern, müssen Sie auf Argument der
Stilfunktion
zugreifen. Aber ich habe
hier etwas aus der vorherigen Vorlesung durcheinander gebracht , was später zu Problemen führen
könnte Das
muss nicht in einer runden Klammer stehen, also lösche auch die hier Wir haben also eine, zwei, drei offene Klammern und
drei schließende Klammern. Jetzt sollte es in Ordnung sein. Wir müssen GeoJSON ein weiteres
Argument hinzufügen Dies ist das erste Argument. Data ist das erste Argument
, das hier endet. Fügen Sie dort ein weiteres
Funktionsargument im Stil hinzu, und Sie können hier tatsächlich die Zeile
umbrechen. Es steht Ihnen in Python frei,
Zeilen zu unterbrechen,
wenn der Ausdruck in eckigen Klammern,
eckigen oder geschweiften Klammern steht oder geschweiften Klammern In diesem Fall
steht dieser Ausdruck in Klammern, sodass wir
ihn umbrechen können , und es ist gut, ihn am Komma zu
unterbrechen Stilfunktion entspricht, jetzt erwartet dies eine
Lambda-Funktion Lambda-Funktionen sind genau wie Funktionen,
normale Funktionen, aber sie sind in
einzelnen Codezeilen geschrieben Nehmen wir zum Beispiel an,
L entspricht Lambda. Dies ist eine Lambda-Funktion
X in einer Zweierpotenz. Oh, tut mir leid, ich hatte da einen Tippfehler,
nicht und Bub, sondern
Lamb A ist hier eine Funktion,
genau wie
eine normale Funktion,
und dann können Sie L aufrufen.
Sie können einen Wert wie
Fünf übergeben und das ergibt fünf als Zweierpotenz Wie Sie sehen,
können Sie die Funktion
in einer einzigen Zeile schreiben . Dies kann auch in anderen Fällen
wie diesem hier
nützlich sein , die
Sie gleich sehen werden. Lambda X. Damit können Sie auch anonyme Funktionen
schreiben Diese Funktion
hat keinen Namen. Wie hier habe ich
dieser Funktion einen Namen zugewiesen , weil ich sie später aufrufen
musste. Aber diese hier
müssen wir nicht später aufrufen, sodass Sie keinen Namen angeben
müssen. Hier wäre die Syntax
korrekt, wenn ich das einfach so machen würde. Lass uns weitermachen und das machen. Füllen Sie die Farbe mit einem
Großbuchstaben C, einem Kleinbuchstaben F und einem
Großbuchstaben. Das
sollte in Sagen wir, gelb. Wenn du willst,
kannst du es so lassen. Speichern Sie das Skript. Beenden Sie
die Python-Shell und führen Sie das Skript aus. Die Ausführung verlief einwandfrei. Lassen Sie mich die Karte überprüfen, neu laden und Sie werden sehen, dass die Farben der Polygone gelb werden
. So können Sie die Attribute
Ihrer
JSON-Datei ändern Attribute
Ihrer
JSON-Datei heißt, Sie fügen im Grunde dieses Attribut hinzu, das
nicht in der JSON-Datei enthalten ist ,
wenn Sie danach suchen. Du wirst unter nichts finden. Jetzt können Sie damit
herumspielen, indem Sie diesem Wörterbuch Bedingungen
hinzufügen, wie zum Beispiel I X Properties Pop 2005 ist weniger als, sagen
wir, 10 Millionen,
zehn, eins, zwei, drei, eins, zwei, drei,
eins, zwei, drei Damit meine ich, dass Gelb auf die
fünfte Farbe gesetzt wird, wenn X
das angrenzende Merkmal darstellt. Wenn die Eigenschaften tatsächlich das Pop 2005-Attribut
dieses Attributs dieses
Attributs sind, das hier ist,
dann dieses Attributs dieses
Attributs sind, das hier ist, ist das Pop 2005. Ich weiß, das ist ein
bisschen kompliziert. Lassen Sie mich einen Software-Wrap machen. Jetzt habe ich alle
Textumbrüche hier in der Ansicht und hier
ist Pop 2005 tatsächlich Teil dieses
Wörterbuches bis hierher. Dieses Wörterbuch, das
sind eine Reihe von Eigenschaften. Dieses Wörterbuch ist der Wert
dieses Schlüssels oder des Eigenschaftenschlüssels. Das bedeutet,
dass wir mit dieser Syntax,
die in Python bekannt ist, auf den Wert des
Propellerschemas zugreifen mit dieser Syntax,
die in Python bekannt ist, auf den Wert des
Propellerschemas in Python bekannt ist, auf den Wert des
Propellerschemas In der Zwischenzeit stehen X-Eigenschaften, was hier X ist,
für Merkmale Sie greifen also von Funktionen aus auf
Eigenschaften zu. Im Hintergrund ist
das ein bisschen wie
eine Blackbox, aber Volumen, was Volumen bewirkt,
ist, dass es
alle Merkmale
aller Polygone durchsucht und prüft, ob der Wert von Pop 2005 weniger
als 10 Millionen ist,
und wenn ja, dann wird es diese Farbe als
Füllfarbattribut
festlegen Das ist mehr oder weniger alles. Ich denke, es ist besser
, das grün zu setzen. Wenn es weniger als 10 Millionen sind, setzen Sie es grün, sonst orange. Wenn zwischen 10 Millionen,
mach hier dasselbe. Eigenschaften, eigentlich
kannst du den Code hier knacken. Also, Properties Pop 2005 lass uns hier 20 Millionen angeben. Das sind nur
willkürliche Zahlen. Sie können alles angeben
, was Sie wollen, aber das wirkt sich darauf aus, wie Ihre Polygone
klassifiziert und gefärbt werden Für eine Bevölkerung von
10000000-20 Millionen erhalten
wir orange Farben Sonst rot. Alles über zehn
wird rot gefärbt. Speichern Sie das und ich hoffe,
das wird funktionieren. Keine Fehler. Erneut laden Wir haben die USA
rot eingefärbt, weil dort mehr
als 20 Millionen Menschen leben Es scheint gut zu funktionieren Ja, Portugal Portugal
hat eine Bevölkerung von etwa 12 oder 15 Millionen
Menschen. Ich bin mir nicht sicher. Es liegt im mittleren Bereich
unseres Klassifizierungsalgorithmus. Ah, das ist mehr
oder weniger alles, und wenn du willst,
kannst du Fragen stellen. Ich helfe dir gerne und spreche später mit
dir. Danke.
99. 98. Python & JSON: Hinzufügen eines Ebenen-Bedienfelds +: Hallo, und willkommen nochmal zu einem
weiteren Vortrag über Web-Mapping mit
Python und Volume. Dies ist die Karte,
für die wir das erstellt haben , und sie enthält
eine Basisebene, eine Polygonebene und eine
Markierungsebene. Das ist unser Code. Nun, was ich in dieser Vorlesung
tun möchte, ist, eine
Funktion zu implementieren, mit der
ich die benutzerdefinierten
Ebenen ein- und ausschalten kann. Mit benutzerdefinierten Ebenen meine ich
die Polygonebene und die Markerebene, weil es auszuschalten zumindest
soweit ich weiß,
nicht möglich ist,
die Basiskarte Es wäre nicht sinnvoll, die Basisebene
auszuschalten. Du willst keine leere Seite. Schauen wir uns also an, wie das geht. Das Hauptmerkmal hier ist Layer-Control-Klasse
des Lautstärkemoduls, die auf diese Weise hinzugefügt werden kann. Sie möchten auf das Kartenobjekt zeigen , dem Sie ein Kind hinzufügen möchten. Die Ebenensteuerung wird als untergeordnetes Objekt
hinzugefügt. Steuerung der Lautstärkeebene. Nun, das wird nicht funktionieren. Aber ich möchte das trotzdem ausführen ,
damit Sie
diesen Fehler später nicht machen. Lass mich die Seite neu laden. Sie sehen hier nur die Basiskarte, überhaupt
keine Ebenen Der Grund, warum das nicht funktioniert
, ist , dass Sie, als Sie der Karte die
Ebenensteuerung hinzugefügt
haben, noch immer nicht
die Feature-Gruppe hinzugefügt haben. Dabei handelt es sich um haben, noch immer nicht
die Feature-Gruppe hinzugefügt haben ein Objekt, das die Jason-Ebene
und die Markerebene
enthält. der
Layerkontrolle
suchen wir also nach der
Feature-Gruppe, die der Karte hinzugefügt wurde,
aber sie
wird zu diesem Zeitpunkt nicht gefunden. Daher sind die Dinge durcheinander. Es ist wichtig
, das Angebot, dass Sie den
Feature-Gruppen-Layer zur Karte
hinzugefügt haben, hier zu platzieren den
Feature-Gruppen-Layer zur Karte
hinzugefügt haben, hier zu Führen Sie es erneut aus. Laden Sie die Karte neu und Sie sehen die Ebenen dort und
Sie werden dieses Feld hier sehen Kartenfeld hell. Es geht um die Basiskarte
und Sie können sie nicht ausschalten. Sie haben auch das Element
Meine Karte hier im
Ebenensteuerungsfeld. Dies ist das
Ebenenkontrollfeld und Sie können diese Ebene ein- und ausschalten. Aber wie Sie sehen, werden
dadurch sowohl die
Polygon- als auch die
Punktebene gleichzeitig aus- und eingeschaltet , was
Sie nicht möchten Wir machen weiter und ändern das. Ich werde erklären, warum das passiert. Das passiert, weil die
Ebenenkontrolle funktioniert, sie sucht nach
Objekten, die der Karte
mit einem Kind wie hier hinzugefügt wurden. Sie haben ein
Kind hinzugefügt und Sie haben dem Kartenobjekt nur ein Kind
hinzugefügt. Daher betrachtet
die
Ebenenkontrolle dieses Objekt als ein einzelnes Element des Ebenensteuerungsfensters. Aber dieses Featuregruppen-Objekt enthält Kreismarkierungen, aber es enthält auch
die GOJ-Summe Ebene. Daher müssen Sie hier Ihre Strategie
ändern. Wie kannst du das machen? Es
kann verschiedene Möglichkeiten geben. Eine Möglichkeit besteht darin, tatsächlich eine
Feature-Gruppe für Vulkane zu
erstellen Nennen wir es Fg V. Sie fügen hier
GV hinzu und dann möchten Sie
eine weitere Featured Group Lass mich diese
Zeile kopieren und hier einfügen. Sie möchten eine weitere
Feature-Gruppe für Population. Nennen wir das Population. Nennen wir das
Vulkane so, ändern wir den Variablennamen FGP,
FGP hier, FV da. Füge ein Alpachild hinzu, das FG P für die Population sein
muss. Jetzt sieht alles gut aus. Mal sehen, ob Layer Control diese
beiden Feature-Gruppen jetzt lesen kann. Geh und lade die
Karte neu, das sieht gut aus. Vulkane funktionieren
gut, die Bevölkerung auch. Alles funktioniert
gut. Das ist eine Landkarte. Wenn du das
so bauen könntest wie ich, dann gute Arbeit. Sie können sich auch dafür entscheiden, Feature-Gruppen tatsächlich nicht zu
verwenden. Sie hätten GeoJSON direkt
zur Karte hinzufügen können. In diesem Fall für Vulkane, in
dem Sie
die at-Child-Methode
mehrmals ausführen, hätten Sie
in diesem Fall jedoch dem Sie
die at-Child-Methode
mehrmals ausführen , eine
Ebene für jeden Sie hätten
Ihrem Kartenobjekt
62 Kinder hinzugefügt, wenn
Sie hier eine Karte ohne
Feature-Gruppe gemacht Das heißt, in diesem
Bedienfeld hätten Sie 62 Einträge,
62 Ebenen, und das ist
nicht das, was Sie wollen. Die Feature-Gruppe ist hier praktisch. Für Vulkane ist es notwendig. Aber für GeoJSON
hättest du hier Map verwenden können und
alles wäre Aus Konsistenzgründen ist
es jedoch gut,
beide zu
bestimmten Feature-Gruppen hinzuzufügen beide zu
bestimmten Feature-Gruppen Vulkane hier und
Bevölkerung hier. Das ist also der Code, und ich hoffe, Ihnen hat
dieses Programm gefallen und Sie können
gerne Fragen stellen Ich werde
später mit dir sprechen. Wir sehen uns.
100. 99. App 2: Englischer Thesaurus +: Hallo und willkommen zu diesem neuen
Abschnitt des Kurses, und in diesem Abschnitt
beginnt das eigentliche Angebot In diesem Abschnitt werden
wir also
die erste Anwendung
des Kurses entwickeln . Bis jetzt hast du dich mit
den Grundlagen von Python befasst. Sie lernen Funktionen, Schleifen, Bedingungen und den Umgang mit
Dateien usw. Jetzt werden wir
all diese Konzepte in die Praxis umsetzen indem wir
echte Programme erstellen, die von Benutzern verwendet
werden können, anstatt uns nur durch triviale
Zeichenketten und Zahlen und so weiter zu
schleifen Also, was werden wir
in diesem Abschnitt bauen? Nun, Sie werden
ein Programm erstellen , in das Sie ein Wort eingeben
können,
ein englisches Wort, und
das Programm gibt die Definition
dieses Wortes auf Englisch zurück . Lassen Sie mich also weitermachen und das Programm
demonstrieren. Ich benutze Python drei.
App Dot P ist ein Skript. Das Programm fordert
Sie also auf, ein Wort einzugeben, für
das Sie die
Definition benötigen. Sagen wir zum Beispiel Mountain. Und so erhalten Sie die
Definition für Berg. Und in diesem Fall gibt
es zufällig zwei Definitionen. Bergberge sind also
ein Merkmal
der Erdoberfläche, das
sich hoch über die Basis erhebt. A, Berg hat eine andere Bedeutung, nämlich eine
große Menge von Dingen, die
nicht auf einem Haufen liegen. Wie dem auch sei, es gibt Wörter, die
nur eine Bedeutung haben , wie
Mathematik. Ich hoffe, ja. Sie erhalten also nur eine
Definition für Mathematik. Aber das Programm hat auch
noch andere Funktionen, zum Beispiel wenn man
AN mit doppeltem N,
also mit einem zusätzlichen N setzt und Enter drückt. Das Programm stürzt nicht ab,
sondern zeigt eine Meldung an Es sagt dir, Habe
ich stattdessen geregnet. Es ist also ein ziemlich
intelligentes Programm , das das Wort erraten kann, an
das der Benutzer
vielleicht gedacht hat,
als er das Wort eingegeben Geben Sie also Y ein, wenn ja, wenn Sie Regen meinten, oder N, wenn nein Oh ja, ich meinte Regen, also warum? Und Sie haben die
Definition für Regen, die zufällig
zwei Definitionen hat. Das ist die erste und
das ist die zweite. Das Programm wird
sagen, wenn Sie
ein sehr zufälliges Wort eingeben ein sehr zufälliges Wort , das keine solche
Bedeutung hat, erhalten
Sie die Meldung, dass das Wort nicht existiert.
Bitte überprüfen Sie es noch einmal, da das Programm kein ähnliches
Wort finden kann. Es kann zuerst kein Wort finden. Außerdem versucht es,
ein ähnliches Wort wie dieses zu finden, aber das tut es nicht,
weil ich nicht glaube es ein passendes Wort dafür
gibt. Also druckt es diese Nachricht aus. Es gibt auch andere
Dinge wie, weißt du, wenn du eine Mischung aus Buchstaben wie
Großbuchstaben R und A
hast, bekommst du dort immer noch die
richtige Eingabe Das ist also ein Programm. Es hat
eine Befehlszeilenschnittstelle, das heißt Sie geben die Eingabe über die Befehlszeile weiter
und Sie erhalten die Eingabe erneut von
der Befehlszeile. Später in den nächsten Abschnitten werde
ich jedoch Ihre Webanwendungen erläutern und erläutern, wie Sie
Webanwendungen mit Python erstellen. Dann kehren Sie hierher zurück
und erstellen tatsächlich
eine Webanwendung mit dem Code , den Sie
in diesem Abschnitt lernen werden. Sie können dieses Programm also
um eine Weboberfläche
erweitern , um es benutzerfreundlicher
zu gestalten . Die Benutzer können die Eingabe
über ein Webformular
eingeben, über eine
Webseite klicken und dann
eine Taste drücken und dann die
Ausgabe auf der Webseite abrufen. Der Code, den
Sie
in diesem Abschnitt lernen werden, ist jedoch sehr wichtig. Es heißt Python. Sie werden also etwas
über Bedingungen und Schleifen lernen. Sie werden also
all das umsetzen, was Sie im vorherigen Abschnitt
gelernt haben indem Sie dieses Programm entwickeln Ich hoffe, dir gefällt das
und ich wünsche dir viel Erfolg. Wir sehen uns in der nächsten Vorlesung.
101. 100. Deinen Datensatz in Python verstehen +: Hey, hallo nochmal.
Im vorherigen Video habe ich das
Programm demonstriert, damit Sie wissen wie das Programm aussieht und welche Ausgabe
das Programm generiert. Auch die Oberfläche
des Programms,
bei der es sich um eine
Befehlszeilenschnittstelle handelt. Sie geben die Daten
über die Schnittstelle ein, der Benutzer gibt die Daten über die
Befehlszeilenschnittstelle ein und Sie erhalten die Ausgabe erneut über
die Befehlszeile. Jetzt habe ich
hier irgendwo einen Ordner angelegt und ihm
einen Namen gegeben. Sie können ihm einen
beliebigen Namen
in diesem Ordner geben in diesem Ordner Ich werde alle
Dateien dieses Projekts ablegen. Wir sprechen über
Datendateien wie Data Dot JSON. Dies ist eine Datei, die
ein Vokabular enthält , das
das Programm extrahiert Wir werden nach einem Wort fragen und diese Datei enthält die
Definition des Wortes. Und auch die Punkt-Pi-Dateien
werden hier eingefügt. Wir kennen die Ausgabe,
jetzt müssen wir herausfinden, wie wir zu dieser Ausgabe
gelangen, und wir werden den Ansatz
Schritt für Schritt verfolgen, was bedeutet, dass wir
zuerst eine einfache
Version des Programms
entwickeln, dem Programm einfach ein Wort geben und das Programm gibt die
Definition dieses Wortes zurück. Aber das wird sehr
einfach sein, weil der Benutzer manchmal ein
Wort weitergibt, das nicht existiert, und als Programmierer müssen
Sie dieses Wort
für dieses nicht existierende Wort zählen. Anstatt das Programm zu
unterbrechen, zu unterbrechen und dem Benutzer einen Fehler
anzuzeigen, müssen
Sie dem Benutzer eine
benutzerfreundlichere Nachricht zeigen benutzerfreundlichere Nachricht Das werde ich in
den nächsten Videos machen. Aber das
allererste, worüber wir nachdenken
müssen, sind die Daten. Also habe ich im
Internet recherchiert und
diesen Datensatz mit Wörtern
und Definitionen gefunden . Das sind jetzt etwa
5 Megabyte an Daten. In Atom dauert das Öffnen
eine Weile,
also habe ich darauf geklickt und
warte immer noch darauf, dass es geöffnet wird.
Jetzt öffnet es sich Wenn Ihr Atom einfriert, können
Sie es mit
einem leichteren Editor
wie Notepad oder Nano
auf dem Mac oder VIM öffnen einem leichteren Editor
wie Notepad oder Nano
auf dem Mac oder VIM Also wie dem auch sei, das ist
eine Punkt-JSON-Datei. Was ist Jon JSON ist
wie eine Sprache. Manche sagen, es ist keine Sprache, es ist nur eine Reihe von Regeln,
wie man einige Daten formatiert. JSON folgt diesem Format. Es beginnt mit einer geschweiften Klammer, dann haben wir nur Schlüssel- und Wertepaare Das ist wie ein
Python-Wörterbuch. Der Schlüssel ist durch
den Wert durch eine Spalte getrennt. diesem speziellen Fall
stehen unsere Werte in eckigen Klammern, was darauf hindeutet, dass Sie
manchmal
mehr als ein Element in
den Klammern haben , zum Beispiel. Lassen Sie mich nach dem Wort
Control F oder Command F suchen. Regen. Das wird uns hierher bringen. Lassen Sie mich zuerst zu View
und Toogle Soft Wrap gehen. Dadurch wird der Text auf meinen Bildschirm
passen Im Moment sehen Sie, dass Niederschlag außerhalb
der Bildschirmverklebungen befindet. Das dauert auch eine Weile , weil wir hier ziemlich
viele Daten haben. Jetzt sehen die Daten besser aus, also lassen Sie mich erneut nach Regen suchen und
herausfinden, dass dies der Schlüsselbegriff für Regen ist , sagen
wir, das Wort Regen und das ist die Definition von Regen. In diesem Fall
haben wir zwei Definitionen, weil
Sie für einige Wörter möglicherweise mehr
als eine Bedeutung haben
oder dass Sie mehr als eine Form haben. Das ist zum Beispiel Regen als Substantiv, es ist ein Niederschlag und das ist
das Verb für Regen. Wenn es regnet, um aus den
Wolken und Wassertropfen zu fallen. Es ist ein Verb und ein Substantiv und
sie sind durch ein Komma getrennt. Das ist also wie
ein Python-Wörterbuch. Jetzt müssen wir herausfinden, wie diese Daten in Python
geladen werden. Denn um auf
Daten aus dieser Datei zuzugreifen, müssen
Sie sie zuerst als einen bestimmten Python-Datentyp in
Python laden als einen bestimmten Python-Datentyp in
Python und dann auf Daten
aus diesem Datentyp zugreifen Denken Sie einen Moment darüber nach, welcher
Python-Datentyp
für diese JSON-Datei
besser geeignet wäre . Denken Sie darüber nach
und ich werde genau
das in der nächsten
Vorlesung zeigen . Wir sehen uns dort.
102. 101. JSON-Daten in Python laden: Ich glaube, es war ziemlich
einfach zu erkennen, dass der beste Weg, diese Daten in
Python zu
laden , ein Python-Wörterbuch ist. Das sieht genauso aus wie
ein Python-Wörterbuch und sobald Sie es in
ein Python-Wörterbuch laden, ist es sehr einfach,
auf einen Wert für einen Schlüssel zuzugreifen. Wie laden wir das also
in ein Python-Wörterbuch? Nun, lassen Sie mich hier eine
Befehlsshell öffnen. Im Moment werde ich nur etwas Schnelles in
einer interaktiven Python-Shell
demonstrieren . Aber zuerst müssen Sie möglicherweise
diese JSON-Datei schließen , da dies Atom
verlangsamt.
Sag nicht die Änderungen Ich habe sowieso keine Änderung vorgenommen. Python drei, das wird mein Python 3.6 0.1
öffnen. Aber selbst wenn
Sie Python 2 haben, funktioniert
dieses Programm genauso. Wie laden wir also JSON
in ein Python-Wörterbuch? Nun, dafür müssen wir die
JSON-Standardbibliothek verwenden. Bei einer Standardbibliothek bedeutet
dies, dass Sie JSON nicht installieren
müssen. Sie müssen es
nur importieren. Sobald Sie das getan haben, gibt es dort eine nette
JSON-Dot-Load-Methode. Diese Lademethode, die
erwartet tatsächlich, ich kann sie so zeigen, Hilfe JSON dot Load. Damit
wird dieses Argument hier angezeigt, das ist ein dateiähnliches Objekt, das
ein JSON-Dokument enthält. Wir sprechen von einem
Dateiobjekt in Python, und wir müssen die Datei erstellen. Der Weg, das zu tun, ist einfach. JSON nochmal laden. Wir erstellen ein Dateiobjekt mit der Methode open. Das weißt du schon. Dann übergibst du den Pfad zur Datei. Da mein Terminal hier
auf diesen Ordner verweist, muss
ich nur noch einen Dateinamen übergeben. Ich muss dort
keinen vollständigen Pfad angeben. Auf diese Weise können Sie entweder die R-Methode
übergeben, die für Lesemodus steht, oder Sie können sie einfach so
belassen und der Lesemodus ist standardmäßig. Achten Sie darauf, die
Klammern zweimal zu schließen. Wir haben hier zwei öffnende
Klammern, zwei schließende Klammern
hier, das ist alles. Was sind nun Daten?
Daten sind ein Wörterbuch. Es ist ein Python-Wörterbuch
und du kannst es ausdrucken. Ja, es sind ziemlich viele Daten. Das hat eine Weile gedauert, aber normalerweise müssen
Sie nicht das gesamte Wörterbuch
ausdrucken. Sie könnten überprüfen, ob Sie
auf ein Wort oder einen Schlüssel
aus dem Wörterbuch zugreifen können. Nehmen wir an, das Schlüsselwort, Sie müssen Klammern,
Entschuldigung, Anführungszeichen für den Schlüssel verwenden . Das ist, was Sie bekommen, legen den Wert für das Wort
für die Schlüsselanordnung fest. Nun, da Sie mehr oder weniger wissen, wie
das funktioniert,
versuchen Sie, eine
Funktion zu entwickeln, die als
Eingabe einen Schlüssel erhält und dann den Wert für
diesen bestimmten Schlüssel
zurückgibt,
und versuchen Sie auch, das Laden von Adjacon Fall einzubeziehen das Laden von Adjacon Fall und auch die Ausgabe auszudrucken Wenn Sie
damit Probleme haben, zeige
ich Ihnen im nächsten Video, wie wir
das machen. Wir sehen uns dort.
103. 102. Die App zur Definition eines Wortes zurückgeben: Ich hoffe, du hast
herausgefunden, wie man
eine Funktion erstellt , die einen Schlüssel,
ein Wort abruft und die
Definition dieses Wortes zurückgibt. Lassen Sie mich das Programm schnell
erstellen. Lassen Sie mich diese App One
Point in Pot Jason nennen. Daten, z. B. siehe JSON, laden, Daten
öffnen, Punkt JS. Das ist es. Definiere die Funktion. Übersetzen, lass mich das übersetzen
nennen. Word, und alles was Sie
tun müssen, ist das Datenwort zurückzugeben. Das ist es. Dann können Sie entweder, sagen wir, entweder
so etwas wie Word Eagle to Arraign machen oder Sie können dies
dynamisch tun , indem Sie den Benutzer um Eingabe
bitten Ein Wort wie dieses drucken, ein Leerzeichen
lassen und dann
müssen Sie nur die Ausgabe
des Wörterbuchs ausdrucken Da Sie dieses
Wörterbuch bis jetzt kennen, es nur eine Zeichenfolge zurück, gibt
es nur eine Zeichenfolge zurück,
aber Sie
drucken keine Ausgabe. Wenn Sie diese
Ausgabe in der Befehlszeile anzeigen möchten, müssen
Sie Translate Word
ausdrucken. Das ist es. Lassen Sie sich jetzt nicht
mit diesen Variablennamen verwechseln. Dies ist eine globale Variable und dies ist auch eine
globale Variable. Wir definieren hier eine Variable
und übergeben sie hier. Dann geht das, was auch immer hier
übergeben wird
, zu diesem hier. Das könnte ein anderes Wort sein, ein anderer Variablenname. Sagen wir W W. Das
ist eine lokale Variable. Sie hat innerhalb
der Funktion eine Bedeutung und
kann alles sein. Wenn du hier W
übergibst, muss es auch hier W sein. Dadurch wird dieser Wert an
diesen Wert hier übergeben. Normalerweise ziehen es Programmierer
vor, hier und da denselben
Namen einzugeben Aber für dich als Anfänger wollte
ich
dir diesen Unterschied zeigen , dass das hier nicht dasselbe
sein muss Speichere das Script,
öffne vielleicht ein anderes Terminal. Python Three App Punkt Pi, Ausführen, Geben Sie ein Wort ein, Rig, und das ist die Ausgabe. Wie wäre es mit diesen Worten? Wir haben da einen schlimmen Fehler. Aber das
willst du
dem Benutzer nicht zeigen, weil es nicht sehr lesbar
ist. Verfolge
den letzten Anruf als letztes Wie zählen wir dieses Szenario in unserem Code?
Das musst du herausfinden. Denk drüber nach.
Auch in der nächsten Lektion werden
wir genau das tun, also
müssen wir berücksichtigen , dass das Wort, das der Benutzer weitergibt, möglicherweise nicht im Schlüsselsatz des
Wörterbuchs enthalten ist. Regen war ein Datenschlüssel im
Jason-Wörterbuch, dieser Name
jedoch nicht, also müssen wir damit rechnen. Das werde ich dir in der
nächsten Vorlesung zeigen. Wir sehen uns.
104. 103.So geht die App mit nicht vorhandenen Wörtern um: Ordnung, lassen Sie uns
weitermachen und dieses Programm benutzerfreundlicher Anstatt
diesen Fehlerblock anzuzeigen, werden
wir
eine Meldung anzeigen, die
besagt, dass das Wort nicht existiert Bitte überprüfe es noch einmal
oder so. Der Weg, das zu tun, ist, lassen Sie mich
zur interaktiven Python-Shell gehen . Sie können so etwas wie
diesen Regen in den Daten überprüfen und Sie erhalten zwei. Wenn Sie das in
Daten tun, erhalten Sie Falschmeldungen. Wir müssen das nutzen
und sagen, wenn Wort in Daten ist, muss
das W sein. Wir
sprechen über diese Variable, also wenn es sich um Daten
handelt, also wenn es sich um Daten
handelt, möchten Sie den Wert zurückgeben. Das ist der Wert, und wenn true zurückgibt, wird er ausgeführt,
s, gib zurück, dass das Wort nicht
existiert, überprüfe es
bitte noch einmal. Wenn dieser Wert falsch ist, wird else ausgeführt. Tatsächlich wird der Ausdruck
unter else ausgeführt, und dieser wird nicht ausgeführt. Wie Sie sehen, ist das durchaus
lesbar, sehr humorvoll. Das ist eigentlich eine gute
der großartigen Funktionen
von Python. Ich kann das jetzt speichern und
hier das Programm ausführen. Regen würde wie zuvor funktionieren. Und das besagt, dass das
Wort nicht existiert Bitte überprüfe
es noch einmal. So einfach ist das. Das Programm nimmt Gestalt an. Sie müssen jedoch
weitere Tests durchführen, um nach
unterschiedlichen Eingaben
zu suchen , um
alle möglichen Eingaben zu
berücksichtigen alle möglichen Eingaben zu
berücksichtigen , die der Benutzer möglicherweise dort eingibt. Nehmen wir an, der Benutzer schreibt Regen in Großbuchstaben und das bedeutet
, dass das Wort nicht existiert Aber tatsächlich
ist Regen das Wort, das in Ihrem Datensatz
existiert Und wie zählen wir nach
verschiedenen Großbuchstaben? Möglicherweise haben Sie auch eine solche Buchstabenmischung
,
und es heißt immer noch, dass das Wort nicht
existiert oder dass es sogar so regnet Das Wort
existiert nicht. Denk nochmal
darüber nach und in
der nächsten Vorlesung werde
ich das umsetzen, was sehr einfach
ist. Wir sehen uns dort.
105. 104. So geht die App mit Wörtern mit Groß- und Kleinschreibung um: Großartig. Wir haben jetzt dieses
Programm, das einen Wert aus
einem Wort
zurückgibt, das wir eingegeben haben. Ich begründe die
Definition dieses Wortes. Es gilt auch für
nicht existierende Wörter in unserem Datensatz,
nämlich Data Dot JS. Um die verschiedenen Groß- und Kleinschreibung
von Buchstaben zu zählen , die wir möglicherweise eingeben, schauen
Sie das liebe STR an das Ihnen die Methoden
zeigt, die
Sie auf eine Zeichenfolge anwenden können. Hier gibt es eine niedrigere Methode. Das bedeutet, wenn
man dort Regen hineinlässt, ist
es so, dass die Methode mit Klammern angewendet
werden sollte. In der unteren
Version des Buchstabens bekommst du Regen. Da unsere Daten in unserem
Datenpunkt JS in der Datei
alle in Kleinbuchstaben geschrieben sind , Sie sobald Sie die
Eingabe hier, die Zeichenfolge, erhalten, können Sie,
sobald Sie die
Eingabe hier, die Zeichenfolge, erhalten,
sie in
Kleinbuchstaben umwandeln und dann
diese Version an den
Wörterbuchachsenausdruck hier übergeben diese Version an den
Wörterbuchachsenausdruck Das wäre
so etwas wie, weißt du, W entspricht einem Punkt niedriger Wir aktualisieren hier
den W-Wert,
die Zeichenfolge, die der Benutzer eingibt, und dann
wird das W hier
als Kleinbuchstabe übergeben , so einfach ist Lassen Sie mich einen kurzen Test machen. Regen und du bekommst die
richtige Definition von Regen. Lassen Sie uns über
weitere mögliche Werte nachdenken , die der Benutzer eingeben könnte. Lassen Sie mich die
Befehlszeile löschen, damit Sie besser sehen. Lass mich das Programm nochmal aufrufen. Das Wetter funktioniert gut. Aber wie wäre es, wenn
der Benutzer, anstatt Regen zu gießen,
ein Extra eingibt. Das Programm sagt, dass das Wort nicht
existiert, was wahr ist. Aber als Programmierer möchten
Sie Ihr Programm
so intelligenter wie möglich machen so intelligenter wie möglich In diesem Fall sollten Sie erwägen, nach Zeichenketten
zu
suchen , die der Benutzereingabe ähneln In müssen Sie
überprüfen, ob es eine Zeichenfolge
gibt , die diesem Wort
ähnlich ist. Anstatt zu sagen, dass das
Wort nicht existiert, möchten
Sie dem Nutzer vorschlagen , dass Sie dieses Wort vielleicht gemeint haben, ähnlich wie bei
einer Suche bei Google. Das ist ein bisschen komplex,
aber nicht so viel. Wie du das
umsetzt, zeige ich dir in der nächsten Vorlesung
Schritt für Schritt. Also da.
106. 105. Die Ähnlichkeit zwischen Wörtern berechnen: Gut. Wie ich bereits
im vorherigen Video erwähnt habe, müssen wir
jetzt
berücksichtigen , wenn der
Benutzer etwas falsch eingibt Stattdessen geben sie dort
ein Extra oder so
etwas In diesem Fall möchten Sie den Benutzer
darüber informieren, dass er
dort etwas falsch eingegeben hat. Wie machen wir das? Nun, wenn Sie keine
Ahnung haben, wie das geht, ist es am besten,
einige Nachforschungen bei Google anzustellen ,
da die Welt der Programmierung sehr breit ist und Sie nicht
unbedingt
jede mögliche Problemumgehung oder
Lösung kennen müssen, um etwas zu tun Im Grunde müssen wir einen Algorithmus finden
, um, sagen
wir, das Arraign mit
N und das eigentliche Wort
Arraign mit einem N zu vergleichen sagen
wir, das Arraign mit , das Ende und zu sagen, ob diese beiden sind, entscheiden, ob
sie sich ähneln oder nicht, aber Sie müssen
das Rad nicht neu erfinden, wenn es schon jemand anderes getan
hat. Deshalb
müssen Sie im
Internet recherchieren und sehen,
ob
das etwas ist , ob es dort eine Bibliothek gibt oder jemand einen
Quellcode, der das tut, eine Funktion oder
etwas Ähnliches. Aber normalerweise findet
man dafür oft eine Bibliothek. Wenn Sie etwas recherchieren, stellen
Sie fest, dass Sie
das mit ein paar Bibliotheken tun können, und eine davon ist
eine Standardbibliothek und sie heißt D Flip. finden Sie übrigens dieser Seite finden Sie übrigens
eine Liste der
Python-Standardbibliotheken. Indexpunkt der Python.org-Bibliothek mit HTML-Code. Das ist der Link. Hier sind alle Standardbibliotheken , die Sie in Python importieren können. Lass mich hierher gehen und Dilip importieren. Dies ist eine Bibliothek
zum Vergleichen von Text. Eine der Methoden
ist Sequence Matcher. Es ist ein langer Name, also können
Sie von
lip aus sagen: Import Sequence Matcher Was es macht, ist
Sequence Matcher. Sie müssen dort keine bestehen. None ist der Wert für
das Argument ist Junk. Das erste
Argument ist ein Argument namens Junk Wenn Sie also zwei Textblöcke
vergleichen, vergleichen wir
in diesem Fall
nur Wörter Wenn Sie
zwei
Textblöcke vergleichen und dort
etwas Junk haben, Sie haben Bruchlinien und Leerzeichen, dann müssen Sie
hier eine Funktion übergeben , die diese Zeilen
ignoriert Dieses Szenario haben wir
vorerst nicht , also lassen Sie es uns einfach
halten Für dieses Argument gehen wir weiter. Dann übergeben Sie die beiden Zeichenketten, Sie möchten das Wort
Regen mit doppeltem N mit
dem eigentlichen Wort Regen vergleichen dem eigentlichen Wort Regen und das wird ein
Sequenz-Matcher-Objekt zurückgeben, was nicht interessant ist, also müssen Sie
die Ratio-Methode darauf anwenden
, um das tatsächliche Verhältnis zu erhalten Dies deutet auf eine
Ähnlichkeit zwischen diesen beiden Zeichenketten
auf einer Skala von 0 bis 1 Sie sagen, dass diese ziemlich ähnlich
sind. Jetzt geht es darum die Ähnlichkeit
zwischen zwei Zeichenketten zu
ermitteln, aber was wir stattdessen brauchen, ist im Grunde eine Liste, eine Abfolge von Zeichenketten. Wir haben diese Wörterbuchschlüssel. Wir haben ein Wörterbuch
mit vielen Schlüsseln
und der Benutzer übergibt ein Wort, sagen
wir Wut mit
N, und Sie
müssen dieses Wort
mit all den Schlüsseln
des Wörterbuchs vergleichen, weil Sie RN mit N
nicht mit einem N in Ihrem Programm vergleichen können, weil
Sie nicht wissen
, ob das dem tatsächlich
ähnlich ist. Ist sozusagen das umgekehrte
Problem. Aber Diflip hat dafür noch ein anderes
Feature und das nennt man enge Matches Sie müssen das
aus DLPGClose-Matches importieren. Aber ich werde diese Funktion in
der nächsten Vorlesung nutzen. Wir sehen uns dort.
107. 106. Aus einer Liste von Wörtern die besten Treffer finden: Also haben wir uns die
Sequence
Matcher-Klasse angesehen , die die
Verhältnismethode dieser Klasse zurückgibt Sie gibt diese Zahl zurück, aber jetzt
müssen wir sehen, wie man das ähnlichste Wort aus
einer Liste oder aus den
Schlüsseln eines Wörterbuchs herausbekommt Konzentrieren wir uns zunächst
auf die Reihenfolge. Eine Liste ist eine Sequenz, und
anhand der Philip-Eingabe erhalten
Sie ähnliche Treffer. Wenn Sie jetzt helfen, suchen Sie
nach engen Übereinstimmungen. Sie können die
Argumente sehen, die Sie an diese Methode
übergeben können . Das erste ist das Wort. Das wird das Wort sein
, das der Benutzer weitergibt, und dann haben Sie eine
Reihe von Möglichkeiten. Wort ist eine Sequenz, für die möglichst genaue Übereinstimmungen gewünscht werden,
typischerweise eine Zeichenfolge. In der Regel handelt es sich dabei um eine Zeichenfolge, die Sie vergleichen
möchten. Possibilities ist eine Liste von Sequenzen oder eine Liste
von Zeichenketten, man könnte sagen, normalerweise ist es eine Liste von Zeichenketten. Dann ist N gleich drei. Dadurch wird die Anzahl der Treffer definiert ,
die die Methode Get Close Matches zurückgeben soll Nehmen wir an, Sie übergeben eine Liste
von Möglichkeiten mit sechs Einträgen und jedes Element hat das Verhältnis 1-0 0-1 und diese Methode gibt die drei
ähnlichsten Treffer zurück, also die Zeichenketten, die dem hier übergebenen Wort am ähnlichsten Sie können diesen
Argumentwert ändern, wenn Sie möchten, und
Sie haben einen Grenzwert Das ist
hier das Verhältnis. Standardmäßig werden nur
die Elemente zurückgegeben, die ein Verhältnis von mindestens
0,6 oder mehr
haben Unter diesem Wert
werden die Treffer nicht berücksichtigt. Frage an die Hilfe und lass
mich versuchen, enge Matches zu finden. Mal sehen, was wir bekommen. Sagen wir Regen, dann haben Sie natürlich
eine Liste in
eckigen Klammern. Sagen wir, hilf
Pyramiden und Regen. Ich lasse das N und den
Cutoff so, wie sie standardmäßig sind. In diesem Fall regnet es also. Der Grund, warum es regnet
, ist, dass Regen einen Grenzwert von
mehr als 0,6 oder
ähnlichem hatte dass Regen einen Grenzwert von
mehr als 0,6 oder
ähnlichem Wenn Sie sich für den Grenzwert
interessieren, können
Sie einen Sequenzabgleich verwenden, aber der spezifische Wert
interessiert uns nicht Und so war Rain der
einzige , der
diese Bedingungen erfüllte Regen bekommen wir hier als Liste. Wir sind in der Lage, die
engste Übereinstimmung aus einer Liste herauszuholen, aber wie holen wir
die Nahübereinstimmung aus unseren Wörterbuchschlüsseln heraus? Nun, wir haben hier immer noch eine
Datenvariable, die ich zuvor
hier in dieser Sitzung geladen Ich lade sie aus der JSON-Datei. Also mit Datenpunktschlüsseln. Es gibt eine Methode für Wörterbücher,
die Schlüssel genannt wird, und damit
können Sie eine Liste
aller Schlüssel des Wörterbuchs abrufen aller Schlüssel des Wir sprechen
nur über die Schlüssel und alle Werte der Dies sind die Wörter und jedem von ihnen ist ein Wert
zugeordnet. Im Grunde können Sie
die Art des Datenpunkt-Kusses überprüfen, nur um zu sehen, um was es sich handelt. Es ist wie ein ausgegrabenes Kuss-Objekt, aber es verhält sich wie eine Liste Alles, was Sie dann tun könnten, ist die G-Matches-Methoden anzuwenden Übergeben Sie den Regen dort an den Datenpunkt
Kuss. Mal sehen, was wir bekommen. Wir haben drei Spiele. Er hat Regen. Zug und Regen Wenn du ein Ende von fünf
erreichst, bekommst du dort mehr Treffer Es ist jedoch wichtig zu beachten
, dass die Liste hier geordnet ist. Das allererste Wort ist das mit
einem höheren
Ähnlichkeitsverhältnis Wir sind nur an diesem ersten Wort
interessiert. Wie bekommt man das? Nun,
Sie werden diese Zahl ignorieren, weil Sie
nur das erste Wort wollen und Sie
dort Null übergeben können, weil das
eine Liste ist und der erste Eintrag einen Index von Null
hat,
also bekommen Sie Regen um Regen, wenn das falsch
getippte Wort Im Grunde
haben wir jetzt die Engine, um das ähnlichste Wort
aus der Sequenz
herauszuholen,
und alles, was wir tun müssen, ist, diese Funktionalität hier
in unserer Funktion zu implementieren Zunächst möchte ich den Benutzer nur durch
eine Nachricht darüber
informieren, dass er ein falsches Wort
eingegeben hat. Ich möchte den Benutzer nur darüber informieren, damit er
das Programm erneut ausführen kann. Beim nächsten Mal geben sie vorerst
ein neues Wort ein, aber später machen wir
etwas Intelligenteres. Denken Sie also vorerst einfach darüber nach und
geben Sie eine Nachricht heraus, in der Sie
Ihren Vorschlag mit
dem richtigen Wort erwähnen Ihren Vorschlag mit
dem richtigen Wort , das der Benutzer
möglicherweise im Sinn hatte. Lass uns das in der
nächsten Vorlesung machen. Wir sehen uns.
108. 107. Aus einer Gruppe von Wörtern das ähnlichste Wort finden: Großartig. Das Programm läuft gut. Ich hoffe, dir gefällt das. Es ist kein großes Programm , also haben wir hier nicht
viel Code. jedoch Dies implementiert jedoch eine ganze Reihe
von Aspekten von Python. Wir laden Daten
in Python in einen Python-Datentyp,
und wir haben Funktionen, wir haben hier Bedingungen, wir haben Benutzereingaben
und später werden
wir auch
vier Schleifen in diesem Code implementieren Wir werden später darüber sprechen,
warum wir vier Schleifen benötigen. Wir haben Bibliotheken,
wir importieren Bibliotheken. Das ist Jason. Wir müssen auch
die Diflp-Bibliothek importieren. Woran wir
gerade arbeiten. Konzentrieren wir uns vorerst auf den Flip. Und das Wort, das wir haben, ist, dass wir
diese Zeichenfolge doppelt übergeben diese Zeichenfolge doppelt und hier haben wir eine
Reihe von Vorschlägen. Die besten Treffer des Wortes in den Schlüsseln
unseres Wörterbuches. Der Benutzer kann aber auch
ein Wort übergeben , das überhaupt nicht
existiert und für
das es keine ähnlichen
Treffer gibt. Im Grunde haben Sie
drei Szenarien. Der Benutzer gibt das genaue Wort wie Regen ein und Sie
geben sofort Daten mit
diesem bestimmten Schlüssel zurück .
Das ist das erste Szenario. Im zweiten Szenario
gibt der Benutzer ein
Wort ein, das einem der Wörter
in Ihrem Wörterbuch sehr
ähnlich ist , z. B. Regen mit einem zusätzlichen N. In diesem Fall möchten Sie das erste Element der Liste zurückgeben, das die
Get-Close-Treffer generiert. Das erste Szenario ist, wenn
Sie eine leere Liste erhalten, was bedeutet, dass es in Ihrer Liste
kein solches Wort gibt , das dem ähnlichen Wort ähnelt. Wir haben drei Szenarien,
was bedeutet, dass wir hier drei Bedingungen im
Bedingungsblock
anwenden müssen hier drei Bedingungen im
Bedingungsblock
anwenden Im Moment haben wir nur zwei. Wir brauchen noch eine, die besagt, meinten Sie dieses Wort, überprüfen
Sie es bitte noch einmal. Vorerst werden wir nur
eine Nachricht weiterleiten und auch etwas
notieren. Möglicherweise möchten Sie
dort auch
einen höheren Grenzwert wie 0,8 übergeben dort auch
einen höheren Grenzwert wie 0,8 Denn manchmal, wenn das ein
niedriger Wert von 0,5 ist und du ein zufälliges Wort
übergibst, schlägt
dir das ein paar Wörter , die du vielleicht nicht willst Vielleicht möchten Sie damit
herumspielen. In diesem Fall
erhalten Sie eine leere Liste. Ich denke, ich werde einen Wert von 0,8 für
den Grenzwert verwenden , wenn ich
ihn hier im Skript implementiere. Gehen wir also zu unserem Code. Als Erstes
müssen wir überprüfen, ob das Wort in Daten
enthalten ist, und
den Wert für dieses Wort zurückgeben. Sie fragen sich vielleicht, was ist, wenn Sie
zuerst nach Ähnlichkeiten
suchen möchten und nicht nach diesem? Nun, ich denke, die erste
Bedingung, die Sie erfüllen
müssen , ist die, von der
Sie glauben, dass sie
häufiger vorkommen wird Wenn Sie glauben, dass
die meisten Benutzer
das richtige Wort eingeben werden, müssen Sie zuerst nach dieser Bedingung
suchen Sie möchten nicht, dass das
Programm Bedingungen durchläuft , bei denen
die Wahrscheinlichkeit
geringer ist, dass sie eintreten. Sie möchten
dies also zuerst durchgehen und dann werden die anderen ignoriert, wenn dies den Wert true zurückgibt. Wenn dies nicht zu true zurückkehrt, wenn es falsch ist, dann sollten Sie nach einer anderen Bedingung
suchen. Wenn Sie nach mehr
als zwei Bedingungen suchen, müssen
Sie
die IF-Anweisung
für mehrere Bedingungen implementieren für mehrere Bedingungen Im Grunde müssen wir
prüfen, ob diese
Liste leer ist oder nicht Wenn sie nicht leer ist, bedeutet
das, dass wir eine
Übereinstimmung im Wörterbuch haben. In diesem Fall
möchten wir dieses Spiel vorschlagen. Wir möchten dieses
Spiel in der Nachricht erwähnen. Das heißt, wenn wir näher kommen. tut mir leid. Lass es mich zuerst importieren. Holen Sie sich aus dem Lib-Import nahe Übereinstimmungen. ALIF erhalten enge Treffer. Das Wort, das in
D steht, klingt so. Das ist ein Listenobjekt. Das ist dasselbe
wie das hier. Dies ist ein Listenobjekt und
Sie möchten überprüfen, ob Länge dieser Liste
dann größer als Null
ist. Wenn ja, möchten Sie zurückkehren. Nachricht, sagen wir, haben Sie hier ein
Zeichenkettenformat verwendet, Prozent. Ich erkläre, was das ist. Benötigst du das stattdessen? Nach der Zeichenfolge, nachdem
Sie Codes geschlossen haben, steht der Prozentoperator, und hier übergeben Sie die
Variable, die diesen Formatierer
innerhalb dieser Zeichenfolge
ersetzt Dies wird durch die
Variable ersetzt, die Sie hier
übergeben In unserem Fall wollen wir
Get Close-Matches für W und
Tasten übergeben und Sie möchten
das erste Element dieser
Liste abrufen und es hier ablegen. Das ist, um es zu verstehen. Nehmen wir an, wir haben eine
Variable, die den Wert eins hat , und Sie sagen: Hey, so, Prozent A und der Prozentsatz S
werden durch eins ersetzt. Das ist das Gleiche, was
wir hier machen. Und das ist alles was wir tun müssen. Wenn das als Fall gewertet wird
und dies auch als falsch ausgewertet
wird,
dann bedeutet das, dass wir es mit einer leeren Liste
zu tun Der Benutzer
hat ein Wort eingegeben, für das es in
unserem Wörterbuch keine Treffer gab, und es gab
kein ähnliches Wort
in unserem Sie möchten das
Wort zurückgeben, das nicht existiert. Lass mich das Skript sagen,
geh zum Terminal. Die angezeigte Pfeiltaste, um
einen zuvor ausgeführten Befehl aufzurufen . Python, drei Apps, ein Punkt,
py, führe Enter word aus. Lassen Sie mich mit
einem richtigen Wort beginnen, Regen, und Sie erhalten andere
Definitionen für Regen. Lassen Sie mich noch einmal ausführen,
Regen mit einem zusätzlichen N wir bekommen diese Nachricht. Meinten Sie stattdessen Regen? Also
wurde der Prozentsatz a durch
den ersten Punkt der Liste ersetzt ,
zurück durch Get Close Matches. Auch hier gilt: Wenn Sie dort eine sehr
zufällige Zeichenfolge übergeben, heißt das, dass das Wort nicht
existiert. Bitte überprüfen Sie es noch einmal. Das ist es. Ich
sehe jedoch immer noch ein Problem damit, wir können das
Programm immer noch benutzerfreundlicher machen. Das Problem ist jetzt, dass, wenn der Benutzer versehentlich einen
Regen betritt, was sagen Sie, Sie dort einfach
eine Nachricht weiterleiten , in der steht, meinten Sie stattdessen Regen? Oh ja, ich meine Regen, aber
wie kann ich Regen eingeben? Warum muss ich
das Programm wieder beenden? Ich denke also eine Lösung, bei
der Sie, anstatt hier nur eine Nachricht zu übergeben und das Programm zu beenden, stattdessen
eine weitere Eingabeanweisung ausführen. Eine weitere Eingabeanweisung und eine
weitere Eingabefunktion
wie diese hier, wo Sie den Benutzer
bitten, sagen wir,
Y einzugeben , wenn er rag meinte, oder N für nein, y für ja und für nein, wenn er nicht rag meinte. ja, dann im Grunde genommen, gibst du den Wert
für das Regenwort zurück. Wenn sie Nein zur
Eingabenachricht weiterleiten, dann entschuldigen Sie sich, wenn das
nicht das Wort ist, das Sie gemeint haben, dann wissen wir nicht,
was Sie vorhaben. Wir sagen also, dass das Wort nicht
existiert Bitte überprüfe es noch einmal.
Das denke ich auch. Ja, denk
darüber nach und ich werde es in der nächsten
Vorlesung
umsetzen. Ich rede dort mit dir.
109. 108. Vom Benutzer eine Bestätigung erhalten: Großartig. Wie ich bereits
im vorherigen Video erwähnt habe, werden wir
jetzt
eine zusätzliche
Benutzereingabemeldung in das Programm implementieren . Anstatt
diese Zeichenfolge zurückzugeben, möchte ich
im Grunde eine Eingabenachricht
zurückgeben. Wenn das Programm herausfindet
, dass der Benutzer ein Wort mit ähnlichen
Wörtern in einem Wörterbuch eingegeben hat, möchten Sie den
Benutzer bitten, Y oder N einzugeben. Wie machen Sie das? Nun, natürlich mit
einer Eingabefunktion. So wie das. Lass uns eine weitere
Nachricht von der Liste hinzufügen. Treten Sie ein. Warum? Ja. Ich, ja. Oder N, ich nein. Was auch immer
der Benutzer eingibt, Sie müssen diese
Eingabe verarbeiten.
Diese Eingabe Y oder N wird grundsätzlich
in einer Variablen gespeichert, aber noch nicht. In dieser Konfiguration
, die wir hier haben, wird
nichts
in der Variablen gespeichert. Es wird nur ein
spontaner Wert sein, also müssen Sie ihn in einer Variablen speichern
. Nehmen wir an, Y N, also für Ja und Nein,
entspricht dem Jetzt
werden also entweder Y oder N in Y und Variable gespeichert. Sie müssen
diese Variable verarbeiten. YN Eagles to, ja,
was müssen wir tun? Wenn der Benutzer Regen sagen wollte, geben wir Daten zurück Hier müssen wir
das richtige Wort eingeben. Das richtige Wort, wir
erhalten das richtige Wort aus diesem Ausdruck. Get close matches gibt
uns die beste Übereinstimmung und wir
müssen diese Übereinstimmung in
das Datenwörterbuch übernehmen, damit wir den Wert der
Definition für Regen erhalten. Wir verwenden diese Übereinstimmung, weil der Benutzer zugestimmt hat , dass Regen die beste Übereinstimmung ist. Dieser Wert wird
durch Regen ersetzt und der Benutzer stimmt dem zu. Ich hoffe, das ist klar.
Bitte stellen Sie Fragen. Wenn das kompliziert ist, antworte
ich Ihnen gerne. Falls ja, dann gib das zurück. Lassen Sie mich das überprüfen und diesen
Zwischenschritt ausführen Entschuldigung, ich habe hier den Gleichheitsoperator verwendet
, der ein Zuweisungsoperator ist.
Sie müssen überprüfen, ob Sie
den Vergleichsoperator verwenden möchten
, der aus
zwei gleichen Operatoren besteht. Speichern Sie das Skript erneut
und geben Sie das Wort Regen ein. Meinten Sie stattdessen Regen? Geben Sie Y ein, wenn ja, oder N, wenn nein. Lassen Sie mich Y eingeben. Die Definitionen für Regen sind korrekt Die Definitionen für Regen Großartig. Vielleicht muss ich die Nachricht hier
verbessern, den Punkt
löschen und dort eine
Spalte und ein Leerzeichen verwenden. Das sollte
besser sein. Wenn du wieder
Regen durchlässt und wenn
du Ja oder Nein bestehst, sagst
du einfach N, bekommst du keins. Weil du die N-Zeichenfolge nicht
berücksichtigst . Sie erhalten nein, weil die Funktion nichts zurückgibt. Was hier passiert ist
, ist, hier rein zu gehen. Wort ist also gleichbedeutend mit Regen. Das Wort wird hier weitergegeben. Y ist gleich Regen,
dann prüfen wir, ob Regen in den Daten nicht auch in den
Daten ist, weil er bei N ist. Das wird nicht ausgeführt. Die Funktion führt diese
Anweisung nicht aus, sie gibt auch nicht die
Definition für Regen zurück, aber sie geht zu dieser Anweisung. Dadurch wird eine Ähnlichkeit gefunden, sodass die
Liste größer als Null ist, und dann wird sie ausgeführt. Deshalb haben wir hier eine weitere
Eingangsnachricht bekommen. Dann machen wir dort weiter. Wenn wir eine
weitere verschachtelte Bedingung haben, ziehen wir
unter L ein,
was kein Problem ist Aber seien Sie vorsichtig, Sie
müssen sie einrücken. Das ist eine Ebene des Einrückens, die tiefer ist
als Hier sind wir. Wenn der Benutzer bestanden hat, warum geben wir diese Aussage zurück? Wenn der Benutzer
alles andere besteht, zählen
Sie nicht für
dieses spezielle Szenario. Daher wird keine
Return-Anweisung ausgeführt, das Programm wird
also hier
beendet und es wird keine zurückgegeben, da
nichts zurückgegeben wurde. Dies wird auch nicht ausgeführt da es sich um eine
Einrückungsebene mit dieser handelt
und da dies ausgeführt wurde, geht
das Programm hier nie
auf diese Ebene. Was wir tun müssen,
ist, andere Benutzereingaben wie N zu zählen andere Benutzereingaben wie N Wenn der
Benutzer
in diesem Fall N eingibt, können wir
nur die
Nachricht zurückgeben, dass das Wort nicht existiert Bitte überprüfen Sie es noch einmal
, es ist dasselbe
wie hier Wir müssen mit
einer anderen Bedingung rechnen. Die Benutzer können N übergeben, aber sie können auch
eine andere zufällige Zeichenfolge übergeben , und Sie möchten
nicht, dass das Programm
keine zurückgibt, Sie möchten, dass das Programm
eine Nachricht zurückgibt. Zum Beispiel haben wir
Ihre Anfrage nicht verstanden. Das ist es. Das ist alles, was du für deinen Eintrag
tun kannst, vielleicht ist das besser.
Das ist ein Programm. Auch hier haben wir ein Szenario, dem der
Benutzer genau Regen eingibt, und das wird in diesem Fall
ausgeführt, und das Szenario, in
dem der Benutzer ein Wort eingibt, das keine Übereinstimmung hat. ASD CAC C, so etwas in der Art. In diesem Fall
wird dies nicht ausgeführt. Den Sitz habe ich. Lass mich das Programm jetzt
testen. Geben Sie ein Wort ein. Regen. Wir haben
die Definitionen für Regen. Geben Sie erneut das Wort ein.
Regen, so was. Meintest du
stattdessen Regen? Geben Sie ein, wenn ja, geben Sie ein, nein, wenn nein. Lassen Sie mich versuchen, ja, und wir bekommen
die richtige Definition. Und geben Sie N für Nein ein. Das Wort existiert nicht,
bitte überprüfen Sie es noch einmal. Das war auch gut.
Das haben wir hinrichten lassen. Das andere Szenario
wäre so. Anstatt Y und N einzugeben,
tippst du einfach etwas und sagst, wir haben deine Eingabe nicht
verstanden. Gut. Das andere Szenario ist
, wenn Sie ein Wort eingeben ,
für das es überhaupt
keine Übereinstimmung In diesem Fall
wird das Wort sofort ausgeführt. Und das ist es. Übrigens, selbst wenn Sie Zahlen eingeben, sagen
wir eins,
existiert das Wort nicht , weil es nicht im Wörterbuch
enthalten ist. Ich denke, unser Programm
ist jetzt ziemlich intelligent. Es berücksichtigt dort
viele Szenarien und es ist ziemlich
benutzerfreundlich, würde ich sagen. Es gibt jedoch
eine letzte Sache, die wir verbessern können, und zwar die Weise, wie das Programm Definitionen
anzeigt. Wenn Sie die Prüfung bestehen, nehmen wir an, drei hat
auch zwei Definitionen. Übergeben wir ein Wort, das
nur eine Definition hat .
Struktur vielleicht. Oh, das hat drei Definitionen. Ordnung. Pyramide. Dies hat auch zwei Definitionen.
Wie dem auch sei, du verstehst die Idee. Ich habe versucht, ein Wort zu finden
, das eine Definition hat. Aber im Grunde genommen erhalten Sie mit einem
solchen Wort, das eine Definition hat ,
immer noch eine Liste ,
die hier endet,
also
kein Komma und
keine anderen Elemente Es ist eine Liste mit einem Element. Wenn Sie ein Wort haben, das mehr als eine Bedeutung
hat, erhalten
Sie diese Liste mit
mehr als einem Element. Sie möchten also nicht, dass
die Benutzerliste in solchen
Klammern angezeigt wird. Das Beste, was Sie
dem Benutzer zeigen können, ist, wenn Sie eine Bedeutung,
eine Definition für das Wort haben , zeigen
Sie einfach diese Definition an,
keine Anführungszeichen, keine
eckigen Klammern, nur eine Definition. Wenn Sie mehr
als eine Definition haben, zeigen
Sie nur
eine Definition pro Zeile an. Im Grunde haben Sie also mehrere
Zeilen mit Definitionen. Ja, das müssen wir auch implementieren
, um endlich zu sagen, dass unser Programm gut ist und von jedem benutzt werden
kann und dass die Ausgabe einfach zu lesen ist. Denk darüber nach. Wir werden es in der
nächsten Vorlesung
implementieren, SU.
110. 109. Den endgültigen Output optimieren +: Großartig. Wir haben jetzt ein funktionierendes Programm und bearbeiten jede
Funktion, die wir wollten. Das einzige Problem
mit dem Programm ist , dass die Ausgabe nicht
sehr benutzerfreundlich ist. Damit meine ich, sagen
wir hier ja. Das ist die Ausgabe und
du bekommst hier eine Liste. Es ist eine Python-Liste. Stattdessen
wollen wir jede
dieser Zeilen in einer separaten
Zeile im Terminal anzeigen . Damit diese Ausgabe für das menschliche Auge besser
lesbar ist. Lass uns weitermachen und das tun. Wie können wir
so etwas umsetzen? Diese Ausgabe
ist jetzt ein Listenobjekt, was bedeutet, dass der Aufruf hier, der Funktionsaufruf, dieses Listenobjekt
erzeugt. Was wir tun können, ist,
dass wir vielleicht
durch dieses Listenobjekt iterieren könnten, so
etwas wie wir das Listenobjekt
in einer Variablen
speichern können , Ausgabe wird diese Liste
zugewiesen Dann können
Sie
vier Elemente in der Ausgabeliste speichern und das Element
ausdrucken Lass uns das speichern und ausprobieren. Wir werden hier
ein Problem haben, aber Schritt für Schritt. Geben Sie Y, Y ein, und das ist es,
was ich haben wollte. Nach der ersten Definition fällt
Niederschlag in Form von flüssigem Wasser in
die erste Zeile und nach
der zweiten Definition fällt Niederschlag aus Wolken und
Wassertropfen in die zweite Zeile. Das ist gut. Wir sollten jedoch bedenken, dass unser Programm
nicht nur Listen erzeugt, sondern manchmal auch
Zeichenketten, wie diese hier. Nein, das habe ich nicht
so gemeint. Wie dem auch sei, das ist es, was
du bekommst und das willst du nicht. Das ist eine Nachricht
, die besagt, dass das Wort nicht existiert. Was das Programm also tut, was Python tut, ist, dass
es durch
alle Arten von Ausgaben iteriert , die die Funktion generiert Eine Funktion generiert eine Liste, manchmal und manchmal generiert
sie eine Zeichenfolge Wie können wir das beheben? Wir
haben eine Liste und eine Zeichenfolge. Denken wir an den Unterschied. Wie können wir
eine Liste von einer Zeichenfolge unterscheiden? Was ist der Unterschied zwischen
einer Liszone und einer Zeichenfolge? Nun, der Unterschied ist
eindeutig ein Datentyp. Eine Liste ist ein Listenobjekt und
eine Zeichenfolge ist ein String-Objekt. Wie wäre es, hier
eine Bedingung zu implementieren? Wir sagen so etwas, wenn es
sich um eine Art der Ausgabe handelt. Ist eine Liste, dann ziehe diese mit vier Leerzeichen ein
und jenes ebenfalls Dieser Look ist jetzt
innerhalb der Bedingung verschachtelt und wird nur ausgeführt, wenn
das Ergebnis wahr ist, nur wenn wir
eine Liste vom Programm zurückerhalten Andernfalls, wenn es keine Liste ist, muss
es eine Zeichenfolge sein In diesem Fall
möchten wir die Ausgabe ausdrucken ohne
sie zu wiederholen. Lass mich nachschauen Und diesmal bekommen wir die
richtige Ausgabe die Meldung, dass das Wort nicht
existiert , bitte überprüfe es noch einmal. Lassen Sie uns ein anderes Mal mit
einem richtigen Wort nachschauen und wir haben die richtigen
Definitionen da drin. Versuchen wir es mit einem anderen
Wort. Mathematik. Dieses Mal hat
das Wort Mathematik nur eine Definition, also haben wir die
Definition hier zusammengefasst. Es ist eine Wissenschaft. Lass uns auch das andere
Szenario ausprobieren, Rag. Meinten Sie Reichweite? Nein. Das Wort existiert nicht,
bitte überprüfe es noch einmal. Wir haben diese Zeile hier ausgeführt. Das ist also der komplette Code. Ich denke, wir können
unser Programm jetzt als abgeschlossen betrachten. Das habe ich mir überlegt, das Programm zu
erweitern. Jetzt ist das Programm ziemlich benutzerfreundlich und
wir erwägen dort
viele Szenarien, in denen der Benutzer in das Programm eingeben
kann. Die Oberfläche ist jedoch immer noch
eine Befehlszeilenschnittstelle, es handelt sich
also nicht um ein
grafisches Desktop-Programm und auch nicht um eine Webanwendung. Die Schnittstelle ist
die Befehlszeile, Sie senden Eingaben über die Befehlszeile und Sie erhalten Ausgabe über die Befehlszeile. Ich versuche damit zu sagen,
dass Sie dieses Programm tatsächlich
erweitern können ,
sodass Sie es in
eine Webanwendung
umwandeln können es in
eine Webanwendung
umwandeln in der der Benutzer, anstatt die
Eingabe
über die Befehlszeile einzugeben, Eingaben
über eine Webseite eingeben kann. Über eine Live-Website können
sie Eingaben vornehmen, eine Taste
drücken und
die Ausgabe dann dynamisch
auf der HTML-Webseite abrufen . Das ist mit Python möglich, aber Sie sind noch nicht
bereit, das zu tun, weil wir noch
einige Abschnitte vor uns haben. Wir haben einige Anwendungen
, in denen ich Ihnen beibringen werde ,
wie man
Webanwendungen mit Python entwickelt. Danach können
Sie zu
diesem Code zurückkehren und ihn erweitern und ein Webinterface
erstellen. zu erstellen eine grafische
Desktop-Benutzeroberfläche Mit dem
Wissen, das Sie in
diesen Abschnitten erwerben, werden
Sie auch in der Lage sein,
eine grafische
Desktop-Benutzeroberfläche , da wir uns in diesem Kurs auch mit grafischen Benutzeroberflächen befassen. Außerdem befassen wir uns auch
mit Datenbanken. Warum erwähne ich Datenbanken? Nun, weil
wir in diesem Programm diese Datei verwenden, um unseren Datensatz zu speichern. Das Problem
dabei ist, dass, wenn vorerst zu groß
wird, es nur 5
Megabyte sind, das ist gut Wenn die Datei jedoch zu groß wird, müssen Sie die Datei jedes Mal, wenn Sie das Skript
ausführen, in
Python
laden . Wie hier
laden wir die Datei
in die Python-Sitzung, wenn
Sie das Skript ausführen. Wenn die Datei nun zu groß ist, wird
das sehr zeitaufwändig
sein. Was Sie stattdessen tun möchten, eine
Datenbank zu verwenden. Vielleicht. Was bei der Datenbank
passiert, ist, dass Sie eine Abfrage an
die Datenbank
stellen und anstatt den gesamten Datensatz zu
erhalten, Sie erhalten tatsächlich
nur die Zeile oder Wert
, nach dem Sie abfragen. Datenbanken sind sehr effizient und werden
später im Kurs Datenbanken behandeln. Nach einigen Abschnitten werde
ich zu diesem Programm zurückkehren. Ich gebe es Ihnen als
Übung, sodass Sie es erweitern
können, indem Sie eine Oberfläche, eine grafische Oberfläche
dafür oder
eine Weboberfläche
erstellen , und ich gebe Ihnen Zugriff auf eine Datenbank, in der
Sie Daten für
dieses Programm abfragen können , sodass es
ein wirklich robustes Programm mit einer sehr
benutzerfreundlichen Oberfläche wird . Ich hoffe, Ihnen gefällt die Idee und ich hoffe, Ihnen
gefällt der Kurs.
Lassen Sie uns mit
einigen weiteren Abschnitten fortfahren. Wir sehen uns später bei
111. 110. So behebst du Syntax-Fehler in Python: Hallo, willkommen zu
dieser neuen Vorlesung. Dies ist die
wichtigste Vorlesung die
Sie bisher
in diesem Kurs gehalten haben. Bitte versuchen Sie,
das Beste daraus zu machen. Das ist eigentlich ein neues Video , das ich dem Kurs hinzufüge. Ich hatte diesen
Vortrag vor ein paar Mal nicht, also habe ich ihn eine ganze
Weile nach der
Veröffentlichung des Kurses hinzugefügt . Und bis jetzt hatte ich dieses Konzept,
also die Fehler, nach und nach in
anderen Vorlesungen
erklärt . Aber ich hatte das Gefühl, dass das nicht genug war, und ich
sah, dass die Schüler immer noch
Schwierigkeiten
hatten, Fehler in Python zu
verstehen und
mit ihnen umzugehen. Ich habe beschlossen, einen
speziellen Vortrag über Fehler in
Python zu halten. Hier sind wir. Ich sagte, das ist die
wichtigste Vorlesung weil wir in den vorherigen Videos etwas über Funktionen, Zeichenketten
und Zahlen gelernt haben . Und das sind individuelle
Konzepte, die du eine Stunde oder später lernst, du lernst Funktionen und
Zeichenketten usw. Aber wenn Sie nicht wissen,
wie man einen Fehler liest, wie man einen
Fehler versteht und damit umgeht, wenn Sie das nicht wissen, werden Sie Probleme
haben,
mit allem umzugehen, mit jedem anderen Objekt
wie Funktionen,
Zeichenketten und Zahlen usw. also sehr wichtig, einen Fehler zu verstehen und zu wissen, wie man damit umgeht, und zu wissen, wie man damit umgeht,
wie man ihn behebt Und selbst die
erfahrensten Programmierer machen Fehler
in ihren Programmen Der Unterschied besteht darin, dass sie wissen wie man diese Fehler liest, wie man sie versteht und behebt. Aber jeder macht Fehler. Wenn in Ihrem
Programm ein Fehler auftritt, geraten Sie nicht in Panik Folgen Sie
einfach den Anweisungen
, die ich Ihnen
in diesem Video
zur Behebung des Fehlers gebe . Darum geht es in diesem
Vortrag. Also, was ist ein Fehler überhaupt? Ein Fehler in einem Programm ist ein Bug, der dazu führt, dass das Programm
nicht richtig funktioniert. In Python gibt es
grundsätzlich zwei Arten von Fehlern. Wir haben Syntaxfehler
und wir haben Ausnahmen. Konzentrieren wir uns zunächst
auf Syntaxfehler und
vergessen wir Ausnahmen. Wir werden zu den Ausnahmen gehen, nachdem
wir die Syntaxfehler erklärt haben. Ich habe diesen Code
hier und das ist eigentlich eine Python-Datei. Dies ist das Symbol, das auf einem Mac
angezeigt wird. Derzeit bin ich auf
einem Mac-Computer, aber das macht nicht den
geringsten Unterschied, egal wo Sie sind, Linux, Windows oder Mac,
alles ist gleich Ich habe das Terminal hier und lasse mich dieses Programm
ausführen Das hat ein paar Fehler.
Lass mich es ihnen zeigen. Auf dem Mac können Sie
Python Three mit dem Befehl
Python three aufrufen . Unter Windows können Sie einfach
Python oder einen beliebigen
Befehl aufrufen , den Sie verwenden. Sie können auch einen beliebigen
Editor verwenden Fehler Punkt Pi ist ein Name, den ich der Ausführung des Skripts
gegeben habe. Das ist jetzt also ein Beispiel
für einen Syntaxfehler. Dies ist der gesamte
Text der Fehlermeldung, und das ist sehr wichtig. Wann immer Sie einen Fehler erhalten, lautet
der erste Rat, den ich
Ihnen gebe, nicht in Panik zu geraten. Konzentrieren Sie sich einfach auf den Fehler, lesen Sie ihn Zeile für Zeile, so als ob Sie
ein Gedicht oder was auch immer lesen würden. Die erste Zeile
des Fehlers zeigt
Ihnen also den Namen einer
Datei, die den Fehler enthält. In diesem Fall ist der Fehler Punkt Pi. Dann haben Sie ein Komma
und nach dem Komma haben
Sie die Zeile, in der
der Fehler aufgetreten ist Es ist Zeile drei und Sie können hier sehen, dass Zeile
drei diese hier ist Sie haben aber auch der Einfachheit halber, Python druckt die
Zeile im Terminal aus. In neun Fällen ist hier der
Fehler und danach haben
Sie die Art des Fehlers. Es ist ein Syntaxfehler. Sie haben auch andere
Arten von Fehlern wie Namensfehler, Typfehler, aber das sind Ausnahmen, und ich werde später erklären, warum
wir sie Ausnahmen nennen. Dies ist eine Art von Syntaxfehler und die anderen sind Ausnahmen. Dies ist ein Typ, und dann haben Sie nach der Spalte
eine Beschreibung. Manchmal ist
die Beschreibung spezifischer und detaillierter. Dieses Mal ist einfach eine
ungültige Syntax. Sie müssen herausfinden,
wo Sie einen Fehler gemacht haben oder wo Sie eine
Syntax Ihres Programms verpasst haben. Außerdem zeigt dieser Pfeil
hier nach oben, und der Pfeil zeigt
entweder auf das Zeichen, dass der Fehler auftritt, oder auf das
Ende des Tokens. Token ist, das ist
in diesem Fall ein Token, neun. Es kann eine Zahl sein, es kann eine Zeichenfolge
sein, alles Mögliche. An dieser Stelle
deutet das auf das Token hin. Aber es könnte auch so
sein 999, speichere das Skript als
niedlich ab, in diesem Fall siehst
du, dass es
dich auf das Ende eines Tokens zeigt. Hier in der Nähe hast
du
jetzt einen Pfeil und ich weiß, dass es sich
tatsächlich
um eine Funktion handelt und Funktionen in Python A benötigen Klammern, also musst du
999 innerhalb solcher
Klammern übergeben und das lässt du. Speichern und erneut ausführen. Ordnung. Sie
haben einen weiteren Fehler, aber geraten Sie nicht wieder in Panik. Das ist immer mein Rat. Stattdessen habe ich
den Fehler gelesen, es heißt Dateifehler Zeile fünf, diesmal
Zeile fünf. Es ist nicht mehr Zeile drei, was bedeutet, dass Zeile
drei repariert wurde. Python
durchläuft alle Zeilen nacheinander
von oben nach unten. Es überprüft die erste Zeile und
sagt, es ist in Ordnung. Kein Fehler da, geht
zur nächsten Zeile, kein Fehler, geht zur dritten
Zeile, diesmal kein Fehler. Die vierte Zeile ist auch in Ordnung. In der fünften Zeile ist ein Fehler aufgetreten. Auch hier handelt es sich um einen Syntaxfehler, und dieser wird
genauer beschrieben. Fehlende Klammern
im Druckaufruf. Beachten Sie, dass Sie diesen
Fehler nur erhalten , wenn
Sie Python drei verwenden. Wenn Sie Python zwei verwenden, dies kein Pfeil,
da Python zwei, print eine Anweisung
und keine Funktion war. Bei Anweisungen wie return
oder print in Python Two müssen
Sie keine Klammern übergeben. Die Syntax wäre korrekt. Auch hier zeigt dieser Pfeil
auf das Token, wir fügen dort nur Klammern hinzu. Drücken Sie S, um das
Skript zu speichern und erneut auszuführen. Diesmal
erhalten wir keinen Fehler, das Skript wurde einwandfrei ausgeführt und die Ausgabe wurde
hier
ausgedruckt, eins, zwei, drei. Wir hatten drei Druckfunktionen, das
Ausdrucken der Ausgabe. Das gibt keine Ausgabe zurück , weil wir nichts
drucken. Dies ruft nur die
Funktionseingabe und erzeugt eine Ausgabe, aber das druckt nichts. Wenn Sie
es drucken möchten, möchten Sie dort
die
Funktion print statement übergeben . Es kann auch andere
Arten von Syntaxfehlern geben,
z. B. wenn Sie
diese einen, zwei und drei definieren möchten. Aber anstatt es
mit einer eckigen Klammer zu schließen, verwenden
Sie
stattdessen eine runde Klammer.
Speichern Sie das Skript und führen Sie es aus. Sie sehen, dass Sie in Zeile fünf
einen Syntaxfehler (ungültige
Syntax) erhalten haben , und das ist dieser hier. Auch hier zeigt
Ihnen der Pfeil auf das Token, Sie müssen
also herausfinden, wie diese runde Klammer
hier reparieren können, und das wissen Sie. Sie müssen es
mit einer eckigen Klammer schließen, das sollte das Problem beheben. Es geht um Syntaxfehler. Sie sind sehr einfach zu beheben. In der nächsten Vorlesung werde ich Ausnahmen
erläutern.
Ich sehe dich dort.
112. 111. So behebst du Laufzeitfehler in Python: Hallo, nochmal, willkommen
zu dieser neuen Vorlesung. In der vorherigen
Vorlesung haben wir
über Fehler im Allgemeinen gesprochen über Fehler im Allgemeinen und ich habe mich auf Syntaxfehler konzentriert
, eine der beiden Arten von Fehlern, die man in Python hat. Sie haben Syntaxfehler
und Sie haben Ausnahmen. Jetzt werden wir
über Ausnahmen in Python sprechen. Jede andere Art von
Fehler, die kein Syntaxfehler ist, ist eine Ausnahme. Oft werden alle
Fehler, Syntaxfehler und Ausnahmen als Fehler bezeichnet. Also wirst du
das überall hören. Jetzt habe ich
hier ein neues Drehbuch , das ich
für diese Vorlesung erstellt habe. Versuche zu erraten, was ich als Ausgabe
erhalte, wenn ich dieses
Skript ausführe. Ich habe A gleich eins, B entspricht Zeichen zwei, drucke 2,5 und drucke A plus B. Ratet mal, was ich für einen
Moment bekommen werde Lassen Sie mich jetzt das Skript ausführen, Python drei, Fehler Punkt Pie. Fehler in der Datei Pi, Zeile vier, was die letzte Zeile
ist. In diesem Fall erhalten wir einen
Syntaxfehler. Ungültige Syntax. Das kann
für Sie jetzt sehr verwirrend sein, weil Sie sich den Ausdruck „
A plus B“
ansehen, aber dort
keinen Pfeil sehen. Für einen Anfänger kann das ziemlich frustrierend
sein, aber versuchen Sie, hier auf die
linke Seite des Pfeils zurückzuschauen Denken Sie an den Pfeil, dass
der Pfeil auf das Token zeigt und das Token
im Skript nicht korrekt geschrieben
wurde In diesem Fall besteht das Problem
darin, dass diese Zeile hier eine offene Klammer, eine runde Klammer und
dann die Funktion int hat, dann
hat die Funktion int ihre eigene Klammer, die innerhalb ihrer Eingabe eingeschlossen
ist. Das sind die Klammern
der in-Funktion, aber die Print-Funktion hat
keine schließende Klammer. Was du stattdessen getan hast,
was ich tatsächlich getan habe. Was ich getan habe, ist, dass ich,
anstatt dort eine Klammer
anzubringen, eine weitere Druckfunktion geschrieben habe. Python hatte eine
schließende Klammer erwartet, aber ich habe eine Druckfunktion eingegeben Deshalb heißt das,
dass sich diese Druckfunktion nicht an der richtigen
Position
befindet. Das ist die Idee. Immer, wenn du diesen Pfeil siehst, sieh dir
zuerst diese Linie an, dann
aber
davor. Das tut mir leid. Immer, wenn Sie
diesen Pfeil hier sehen, schauen Sie sich
zuerst diese Zeile hier an, aber vergessen Sie auch nicht, dass das Problem auch
vor dieser Zeile liegen könnte. Es ging um den Syntaxfehler. Ich werde hier erklären, warum ich
über diesen Syntaxfehler gesprochen habe. Lassen Sie mich das noch einmal ausführen. Der Syntaxfehler wurde jetzt behoben, aber wir haben immer noch einen weiteren Fehler Der Grund, warum ich
einen Syntaxfehler in meinen Code aufgenommen habe ,
war, Ihnen zu zeigen, dass Python tatsächlich zuerst
nach Syntaxfehlern sucht. Im Grunde analysiert es den Code. Es sucht nach Syntaxfehlern. Es führt den Code noch nicht aus. Als ich Python Three
Errors Dot Pi hier ausgeführt habe, wurde
der Code nicht ausgeführt, sondern der Interpreter
sucht nur nach Syntaxfehlern Es sucht noch nicht nach
Ausnahmen. Zuerst müssen Sie
die Syntaxfehler beheben, und genau das haben wir hier getan. Wir haben diese Klammer hinzugefügt und
wir beheben die Syntaxfehler. Jetzt wirft Python eine Ausnahme
aus. Und hier habe ich den Code
ausgeführt und
sehen uns die nächste Zeile Dort haben
wir Nummer zwei, die aus der
Ausgabe dieser Zeile hier stammt. Ab Zeile drei haben wir
die Ausgabe korrekt erhalten. Im Grunde führt Python wieder ein Skript von oben nach unten aus. Wenn es keine
Syntaxfehler findet, wenn es Syntaxfehler findet, es nichts aus. To wird ausgedruckt, und dann
erhalten Sie diese
Rückverfolgung des Fehlers zurück. Was dort beginnt
und hier endet. Das ist ein Block des Fehlers. Manchmal kann es sich bei den Fehlern mehr als einen Fehlertyp handeln. In diesem Fall haben wir
nur einen Fehlertyp,
nämlich einen Typfehler, aber Sie können hier mehrere
Blöcke haben. Der
wichtigste Fehler, auf den Sie sich konzentrieren
müssen, ist jedoch die
letzte Zeile des Fehlers, der letzte Block des Fehlers. In diesem Fall
haben wir nur einen Block, auf den
wir uns konzentrieren. Zeile vier, das ist
diese hier drin. Das ist eine Linie. Auch hier wird
die Zeile ausgedruckt, genau wie im
Fall eines Syntaxfehlers. Hier haben Sie hier eine Art
des Fehlers, dem es sich um einen Typfehler handelt. Was ist ein
Typfehler? Ein Typfehler bedeutet,
dass
mit einem Ihrer
Objekttypen in Ihrem Skript etwas nicht stimmt . Sie haben die Beschreibung hier. Ich habe den
Operandentyp vier plus unterstützt. Das bedeutet also, dass der Plus-Operator
einen Typ hat, der nicht unterstützt wird, der Plus-Operator, mit anderen
Worten, unterstützt
keinen
der Typen, die Sie ihm gegeben
haben,
es ist entweder der Typ der Variablen A oder der
Typ der Variablen B. Es heißt Int und String Es wird nicht ausdrücklich angegeben, ob Int oder String
ein Objekt ist, einer Zeichenfolge verwenden aber es besagt, dass Sie keinen Plus-Operator
mit einer Ganzzahl und können, die logisch
falsch ist , weil Sie einem Text keine Zahl
hinzufügen können. Das versteht Python
nicht und es löst einen Typfehler Ausnahmen sind logische Fehler und Sie müssen jetzt Ihre Logik
verwenden um den Fehler zu beheben, und
unsere Logik verwenden , indem Sie
den Fehler sorgfältig untersuchen,
und genau das haben wir getan Was wir tun wollen,
wir wollen das beheben. Jetzt liegt es an mir, ob
ich
diese beiden Objekte verketten oder
eine mathematische
Additionsoperation durchführen wollte diese beiden Objekte verketten oder
eine mathematische
Additionsoperation durchführen eine mathematische Nehmen wir an, wenn ich beabsichtige, eine Addition zwischen
diesen beiden Zahlen vorzunehmen, müsste ich
B in eine Gleitkommazahl oder eine Ganzzahl umwandeln Sag das. Hinrichten. A, in diesem
Fall bekommst du keinen Fehler, du bekommst zwei ausgedruckt aus der dritten Zeile und 3,0 aus der letzten Zeile, die
wir gerade repariert haben. Wenn ich jedoch beabsichtige, die Verkettung
zwischen diesen beiden Zeichenketten auszudrucken , anstatt
B in einen Flow umzuwandeln, müsste
ich A
in eine Zeichenfolge konvertieren In diesem Fall erhalte ich den
Text eins und zwei, eins und zwei. Das wäre ein
String-Objekt, keine Zahl. Auch wenn es hier als Zahl
angezeigt
wird, ist es nur so, wie das
Terminal sie ausdruckt. Auch hier handelt es sich um Fehler
, die während der Laufzeit auftreten, sodass das Skript ausgeführt wird Syntaxfehler sind
Analysefehler, daher
versucht der Interpreter zu verstehen ob das Skript
syntaktisch korrekt ist, ob Sie voll sind und ob Sie die
Python-Syntaxregeln
befolgt haben die
Python-Syntaxregeln
befolgt Sie benötigen Klammer, schließende Klammer für öffnende
Klammer. Sie benötigen ein abschließendes Zitat nach dem ersten
Zitat und so weiter. Jetzt gibt es auch andere
Arten von Ausnahmen. Nicht nur ein Tippfehler, möglicherweise liegt auch ein Namensfehler vor. Nehmen wir an,
anstatt auszudrucken, dass wir C
ausdrucken, speichern, ausführen. Hier ist ein Traceback. Auch hier wurden zwei aus der dritten Zeile
ausgedruckt. Im Traceback steht Zeile vier bei Druck C. Der Name des
Fehlernamens C ist nicht definiert Auch hier handelt es sich nicht um
einen Syntaxfehler , da Sie bei der Syntax
keine Fehler gemacht haben Sie haben diesen
Variablennamen, der korrekt ist. Sie haben Klammern, die
runde Klammern öffnen und runde Klammern
schließen. Syntaktisch ist alles korrekt, aber dieses C-Objekt,
Python, weiß das nicht Sie haben
diese C-Variable nicht definiert, Python weiß nicht,
was ausgedruckt werden soll Python ist in der Lage,
A auszudrucken, weil es weiß, dass A sich auf Ganzzahl
eins bezieht , und
druckt daher Ganzzahl eins aus, aber C hat nichts. Sie erhalten diesen Namensfehler. Und wann immer Sie
Ihren Namensfehler bekommen, wissen
Sie, dass dieser Name hier
nicht von Ihnen definiert wurde. Um dies zu beheben, möchten Sie
C
vielleicht so definieren und ausführen, und
Sie erhalten keine Fehlermeldung. Möglicherweise haben Sie auch andere
Arten von Fehlern, z.
B. C geteilt durch Null,
sehen Sie, was Sie bekommen. Zero-Divisionsfehler,
Division durch Null. Das ist die Beschreibung
dieses Fehlers. Eine Division durch Null ist
mathematisch
weder möglich noch sinnvoll Da Python
auf Mathematik basiert, gibt es einen Fehler
aus, den Sie beheben müssen.
Sie müssen den
Ausdruck entfernen, der durch Null dividiert Wie dem auch sei, hier geht es um
Fehler in Python.
Ich hoffe, Sie haben
viel
von dieser Vorlesung und der
vorherigen Vorlesung verstanden von dieser Vorlesung und der
vorherigen Vorlesung verstanden Es ist relativ einfach, Fehler zu
beheben, aber
manchmal gibt es
Fehler, bei denen Sie möglicherweise Schwierigkeiten
haben, sie
zu verstehen und zu beheben. Später werden
wir uns zum Beispiel mit Bibliotheken und
manchmal mit Bibliotheken befassen , da sie verschiedene
Arten von Fehlern aufweisen. müssen sich jedoch keine
Sorgen machen, denn es
gibt andere Dinge , die Sie für einen Fehler tun können
, den Sie nicht verstehen. Darüber werde ich in
der nächsten Vorlesung sprechen . Ich werde dich dort
sehen, siehst du.
113. 112. So behebst du schwierige Fehler: Großartig. Willkommen wieder
zu diesem neuen Video. Dies ist das dritte
Video über Fehler. Wir haben über Syntaxfehler gesprochen, wir haben über Ausnahmen gesprochen, und jetzt werden
wir darüber sprechen, wie Sie einen Fehler
beheben können, wenn Sie die Nachricht nicht
verstehen. Konzentrieren wir uns auf diesen Fehler. Ein Divisionsfehler von Null. Falls Sie
gut in Mathematik wären, könnten
Sie diese Fehler leicht
beheben. Sie werden
verstehen können, dass man eine Zahl nicht durch Null teilen kann. Sie würden dies beheben, indem Sie
diesen Ausdruck hier entfernen. Wenn Sie jedoch nicht
so gut in Mathematik wären, Ihnen möglicherweise
schwer, dies zu verstehen. In diesem Fall können Sie diesen Fehler am
schnellsten beheben, indem Sie diese Zeile
hierher
kopieren, Control C.
Wählen Sie sie aus, kopieren Sie sie mit Control C oder
klicken Sie mit der rechten Maustaste und kopieren Sie sie dorthin und gehen Sie dann zu Google. Fügen Sie es einfach ein. Jetzt, bei Google, haben
diese rund
100.000 Ergebnisse erzielt. Python ist sehr beliebt
und du wirst
für fast jedes Problem
, das du mit Python hast, eine Lösung bekommen. Bevor Sie sich die Dokumentation ansehen oder irgendwo eine Frage stellen, ist
es sehr wahrscheinlich, dass
jemand anderes Ihr Problem
hatte, bevor er eine Frage dazu gestellt
hat Ihr Problem
hatte, bevor , und auch dafür gibt es eine Lösung
. Eine sehr gute Website für Fragen und Antworten ist
stockoverflow.com Fast immer, wenn Sie bei Google nach einem Fehler
suchen, werden
die ersten Ergebnisse von Suck Overflow stammen Jemand hat eine
Frage mit diesem Titel gestellt. Ich habe einen Fehler, wenn ich
das Programm mit Python ausführe. Es ist genau derselbe
Fehler wie du das magst. So vermeiden Sie diesen Fehler. Es geht auch um
die gewünschte Ausgabe. Auf diese Frage gibt es zwei Antworten
. Die Antwort mit dieser
grünen Markierung hier ist akzeptierte Antwort und
hat die meisten Stimmen. 11 und dafür gibt es zwei
negative Stimmen, minus zwei. Tatsächlich ist der Unterschied
zwischen Plus- und
Minus-Stimmen zugunsten von Nein-Stimmen. Dies sind zwei verschiedene
Antworten, die Sie sich ansehen können. Normalerweise möchten Sie sich
die akzeptierte Antwort ansehen , die die Lösung enthält. In diesem Fall hat
dies jedoch auch die Erklärung. Es heißt, du kannst nicht durch Null
teilen. Dies führt dazu
, dass Python einen Fehler ausgibt. Das ist immer noch eine gute
Antwort, und ich denke, sie hat
dieses Stimmengleichgewicht nicht verdient. Aber dieser gibt eine Lösung für
den Umgang mit einem Fehler , die uns zu einem
anderen Konzept führt , nämlich dem
Umgang mit Fehlern in Python. Nehmen wir an, Sie haben ein Programm, Sie haben eine Funktion, die
zwei Eingabewerte erhält und diese
beiden Eingabewerte
dann dividiert Manchmal kann der Benutzer jedoch Null als zweite Eingabe
übergeben. In diesem Fall würde Ihr Programm
abstürzen, wenn Sie sagen, der erste Wert wäre zwei und der zweite Wert wäre Null, würde
Ihr Programm
abstürzen, und wenn Sie möchten, können
Sie die
Ausnahmebehandlung verwenden , um zu verhindern
, dass das Programm abstürzt Das können Sie mit
Try-and-Accept-Anweisungen tun. Wie dem auch sei, wir werden das in
den nächsten Vorlesungen
in diesem Abschnitt behandeln . Es ging darum, bei Google nach
einem Fehler zu suchen Google nach
einem Fehler zu und Sie können leicht
die Lösung dafür finden. Wie du siehst. Das sind
sehr klare Fragen. Es ist eine große Community
und jeder kann positiv und negativ abstimmen
und Kommentare abgeben. Im Grunde
sind die Antworten sehr genau. Sie
finden jedoch nicht immer eine Antwort bei Google. In diesem Fall ist es an der Zeit
, Ihre eigene Frage zu stellen. Als Erstes überprüfen
Sie erneut, ob Sie
den Fehler verstanden haben , und beheben ihn,
wenn Sie ihn verstehen. Die zweite Sache ist, dass
Sie bei
Google suchen . Wenn die ersten beiden Ihr Problem
nicht lösen,
ist es an der Zeit, eine
Frage zu stellen. Sie können
entweder innerhalb des Kurses eine Frage stellen. Während Sie sich ein Video ansehen, können
Sie unter Q&A (
Frage und Antwort) stöbern und eine Schnellsuche durchführen, wenn Sie hier eine Antwort
auf Ihre Frage finden Falls Sie
sie nicht finden können, können Sie
eine Frage stellen oder Sie können eine
Frage auf Stock Overflow Du kannst diese Schaltfläche hier verwenden, eine
Frage stellen und ich helfe
dir
gerne hier auf der
Kursoberfläche, Bereich
Fragen und Antworten, oder andere Leute können dir auch
auf Stock Overflow weiterhelfen. Es ist jedoch
sehr wichtig, etwas zu wissen. Die Struktur
Ihrer Frage ist sehr wichtig,
um eine gute Antwort zu erhalten. Manchmal gibt es sehr
schlechte Fragen wie, sagen
wir, mein Code
funktioniert nicht, wie behebe ich das? Das ist alles. Mit diesen
wenigen Informationen ist
es sehr schwierig, eine gute Antwort zu
bekommen. Es ist sehr wichtig, eine gute
Frage zu stellen und ich werde dir in der nächsten Vorlesung zeigen, wie man eine gute
Programmierfrage stellt. Das ist auch eine sehr wichtige
Vorlesung. Das siehst du dort.
114. 113. So stellst du eine gute Programmierfrage: Hallo, nochmal und willkommen
zu einem weiteren Vortrag. In dieser Vorlesung zeige
ich dir, wie
man eine gute
Programmierfrage stellt. Wie ich in der
vorherigen Vorlesung erwähnt habe, ist es sehr
wichtig, eine gute
Programmierfrage zu stellen, um eine gute Antwort zu erhalten. Lassen Sie mich Ihnen zunächst zeigen, was
eine Frage zur Bettprogrammierung ist. Ich
klicke zum Beispiel auf Frage
stellen und hier ist
der Titel der Frage. Eine Frage zur Bt-Programmierung hätte einen sehr
allgemeinen Titel wie diesen. Hier ist der Hauptteil der Frage , in dem Sie
Ihre Frage ausführlich beschreiben müssen. Manche Leute sagen einfach,
ich habe einen Fehler bekommen, als ich
versucht habe, zwei Zahlen einzugeben. Ich
unterbreche die Frage einfach. Eine bessere Frage wäre, den Code, den
Sie so ausgeführt haben, dort
einzufügen. Dies reicht jedoch auch nicht aus , da Sie auch die Fehlermeldung
anzeigen müssen. Lassen Sie mich das löschen und eine gute
Programmierfrage
wäre , wenn Sie
über Fragen sprechen ,
die einen Fehler enthalten,
Fragen, die über
einen Fehler sprechen , den Sie in Ihrem Code
haben. Das ist dein Code.
Ein guter Titel wäre es, die Fehlermeldung aufzunehmen. Dieser würde gut passen. Wenn es sich um eine sehr lange Nachricht
handelt, können Sie festlegen dass nur der Name
des Fehlers
enthalten ist. Und dann wäre eine gute
Frage, hallo. Ich habe den folgenden Code ausgeführt
und erwartet, dass im letzten
Print-Main eine
Division angezeigt wird, aber ich habe einen Fehler bekommen . Hier ist mein Code. Also hast du den Code dort eingegeben,
das gesamte Skript. Sie sich keine Sorgen, wenn Ihre
Frage lang ist Es ist besser, lang zu sein
als unvollständig zu sein. Hier ist der Fehler. Sie hier sicher, dass Sie auch
Ihren gesamten Fehler-Traceback
einschließlich der Ausgabe angeben Von dieser Zeile der
Befehlszeile bis zur nächsten Zeile. Diese ganze Sache geht
auf deine Frage zurück. Kopiere es einfach.
Mach dir keine Sorgen, wenn es lang ist. Kannst du helfen? Das wäre
eine gute Programmierfrage. Nun, hier fehlt noch
etwas sehr Wichtiges, und das ist die
Hervorhebung des Codes. Sie müssen den Code auswählen
und hier auf dieses Symbol klicken. Der Fehler auch. Lassen Sie
mich die Frage stellen. Externe Links müssen
kostenlose Bildungsinhalte enthalten Klicken Sie
einfach auf Weiter. Hier ist eine Frage, hier
sieht es aus wie am anderen Ende. Diese Frage hat vier gute Elemente, die
sie zu einer guten Frage machen. Das erste Element besteht darin, dass
der Autor erwähnt was er oder sie als
Ausgabe des Skripts
, das er gerade ausgeführt hat,
erwartet hat. Es heißt also, dass ich erwartet
hatte, die Aufteilung in der
letzten gedruckten Erklärung zu bekommen, das ist diese hier,
aber ich habe einen Fehler bekommen. Als Erstes müssen Sie die erwartete Ausgabe angeben. Sie müssen erklären, was Sie erwartet
haben,
denn andernfalls, wenn Sie nicht erklären,
was Sie
erwarten , weiß die andere
Person, die
Ihnen helfen möchte , das Ziel
Ihres Codes oder
Ihrer Frage nicht und weiß
daher nicht, wie sie
Ihnen helfen kann, dieses Ziel zu erreichen. Das Erste, was erwartet wird, ist
das Erste. Zweitens müssen Sie Ihren gesamten Code
einbeziehen. Und stellen Sie sicher, dass Sie
Ihren Code als Text einfügen. Es ist besser, Text als
Bildschirm anstelle von
Screenshots zu verwenden , da Text, die Person, die Ihnen helfen
möchte,
Ihren Code kopieren und auf
ihrem Python-Interpreter ausführen kann Ihren Code kopieren und auf
ihrem Python-Interpreter ausführen Wenn Sie jedoch Screenshots hinzufügen, handelt es sich um Bilder,
und es ist für
andere Personen schwierig , Ihren Code
auszuprobieren Wenn du das bei
Stack Overflow stellst, würde
deine Frage
geschlossen werden, denn wenn du sie mit einem Screenshot
statt mit der Textversion
deines Codes stellst, würde
die Frage
nahe kommen, weil sehr strenge Regeln Stack Overflow eine qualitativ hochwertige Frage
- und Antwortseite Das ist das zweite Element.
Das dritte Element ist, dass Sie
Ihren gesamten
Bildschirm mit einbeziehen müssen , tut mir leid Von Anfang
bis Ende, das war
das dritte Element
und das letzte Element,
das vierte Element ist, dass Sie Ihren Code hervorheben
müssen Auf diese Weise
sehen Sie, dass dies viel
sichtbarer ist und für
andere einfacher zu beheben ist. Die Kursoberfläche bietet die Funktion, dass Sie Ihren Code hervorheben
können. Bei Stock Overflow
haben Sie auch diese Möglichkeit. Stellen Sie
einfach eine Frage,
schreiben Sie Ihren Werdegang
und markieren Sie ihn und verwenden Sie
dann diese geschweifte Klammer Ja, das ist es. Wenn Sie gute Fragen stellen, stehen
die Chancen gut,
dass Sie auch eine gute
Antwort bekommen. Ich hoffe, das macht Sinn
und ich hoffe, ich habe dir
etwas gezeigt , das du nicht
wusstest, und ich werde später mit dir sprechen. Wir sehen uns.
115. 114. Den Code selbst mit Fehlern umgehen lassen: Hallo, nochmal. Lassen Sie uns noch
einen Vortrag über
Fehler in Python halten. In dieser speziellen Vorlesung geht
es um den Umgang mit Fehlern. Umgang mit Fehlern kann vorerst
ein fortgeschrittenes Konzept sein, das es
zu verdauen gilt, da Sie immer noch
die Grundlagen von
Python durcharbeiten und noch
keine echte Anwendung gesehen Aber später werden wir die
Fehlerbehandlung verwenden , wenn wir reale
Anwendungen erstellen Sie werden also später die
Fehlerbehandlung besser verstehen . Konzentrieren wir uns zunächst auf die Syntax und versuchen, so viel wie möglich zu
verstehen. Ich werde hier ein Beispiel machen, das ich bereits erwähnt habe.
Nehmen wir an, wir haben eine Funktion , die auf diese Weise eine Division zwischen
zwei gegebenen Zahlen durchführt. Gib A geteilt durch B zurück. Dann rufst du die Funktion auf. Teile eins, zwei. In diesem Fall versucht
die Funktion, eins durch zwei
zu teilen. Lassen Sie mich
die Ausgabe ausdrucken, damit wir sie auf dem Terminal sehen können. Gehe zum
Terminal und führe das Skript aus, du erhältst 0,5. Nun, das ist gut. Wenn der Benutzer dort jedoch
, sagen wir, Null eingibt, führen Sie die Ausführung aus und Ihr
Programm stürzt ab, sodass ein Fehler angezeigt wird. Nun, dieser hier
ist ein Beispiel für
eine längere Fehlermeldung, die
ich bereits in
den vorherigen Videos erwähnt habe und die besagt
, dass Sie möglicherweise mehr als einen Fehler
in Ihrem Trace-Back
haben könnten . Hier steht zum Beispiel
Dateizeile vier, diese Zeile hier. In dieser Zeile hat Python den Fehler zuerst
erfasst. Im Grunde
versuchte Python, diese Zeile auszuführen, konnte es
aber nicht. Es hat das nicht geschafft
, weil diese Zeile versucht hat, die Informationen von
dieser Funktion
abzurufen , und diese
Funktion versuchte,
diese mathematische
Operation mit Null nach der Division auszuführen. Das ist also nicht möglich und Python weist hier
darauf hin. Das ist der Hauptfehler in der
Zeile in diesem Ausdruck. Darauf sollten Sie sich konzentrieren. Wenn Sie jedoch Fragen stellen, sollten
Sie, wie
bereits erwähnt, die
gesamte Fehlermeldung
in Ihre Frage aufnehmen . Zurück zur Behandlung von Fehlern Ich versuche
hier zu sagen, dass Python ausgeführt werden soll, wenn Sie hier
andere Funktionen und andere Codezeilen haben hier
andere Funktionen und andere Codezeilen , die
Sie ausführen möchten. Aber wenn der Benutzer hier
diese Nullzahl übergeben würde, würden
die anderen Zeilen
nicht ausgeführt werden. Ihr Programm würde abstürzen
und das wollen Sie nicht. Um dies zu vermeiden, verwenden Sie Try and Accept. Im Grunde versuchen Sie, die Ausnahme zu
erfassen. Um die Ausnahme zu behandeln. Der Weg, das zu tun,
ist ziemlich einfach. Versuch, du sagst Versuch und gib A B zurück. Das muss so
eingerückt sein Try ist eingerückt, weil es sich unter der
Funktionsdefinition befindet, und Return wird
eingerückt, weil es sich unter dem Dann müssen Sie außer Execute. Dies muss sich auf derselben
Einrückungsebene wie tr befinden. Sie sind derselbe Block. Außer wenn es eine Ausnahme gibt, ist
das, was Sie tun möchten,
Prio, Sie teilen durch Null oder es ist bedeutungslos Lass mich das jetzt versuchen. Und du verstehst, dass
Zero-Division bedeutungslos ist. Entschuldigung, ich wollte
hier zurückschicken, nicht drucken. Ich erkläre dir
, warum du da keine findest. Sie haben keine
als Ausgabe erhalten, weil die Funktion
versucht hat, diesen Ausdruck auszuführen, aber sie hat einen Fehler bekommen, also ignoriert
sie diese Zeile, aber sie hat einen Fehler bekommen, also ignoriert
sie diese Zeile, führt
sie nicht aus und geht
dann zur nächsten Zeile Diese Zeile wird ausgeführt, wenn sie
nicht ausgeführt wird. Es ist also bedeutungslos, die
Nulldivision auszudrucken, aber es wurde auch keine ausgedruckt denn wenn Sie
eine Funktion ausführen , die keine
Rückgabeanweisung hat, wie in diesem Fall,
hatten wir hier eine Print-Anweisung, Print-Funktion, keine
Return-Anweisung In diesem Fall kann die Funktion
, wenn
sie nichts zurückgibt, auch eine Druckfunktion
oder eine andere Funktion haben Wenn es jedoch keine
Rückmeldung gibt, wird keine ausgedruckt. Im Grunde führt es die anderen Verfahren
wie die Druckanweisung aus und druckt die Aussage aus Aber wenn es keine
Rückmeldung gibt, druckt es
keine aus Wie dem auch sei,
wiederholen Sie die Ausführung und in diesem Fall erhalten
Sie nur, dass die Nulldivision bedeutungslos
ist Im Grunde genommen, wenn Sie hier
andere Codezeilen
wie diese hätten , würden diese auch ausgeführt
werden Das geschieht mithilfe des
Try-and-Accept-Blocks
, der sicherstellt, dass
der Codefluss fortgesetzt wird. Eine weitere wichtige
Sache, die Sie beachten ,
ist, dass es
ratsam ist , hier den genauen Namen
des Fehlers zu verwenden , den
Sie akzeptieren möchten. Also Null Divisionsfehler. Wie Sie sehen,
wurde dies blau dargestellt,
was bedeutet, dass
dies tatsächlich ein Python-Schlüsselwort ist, das von Python
erkannt wird. In diesem Fall erhalten
Sie, wenn
Sie das ausführen , dieselbe
Ausgabe wie diese. Oder wenn du dort eine Zahl
übergibst , aus der es möglich ist,
eine Division zu erhalten, bekommst
du diese. Das mit dem Backslash tut mir leid. Ich habe das versehentlich
wieder in
meinem internen Execute eingegeben , also verstehst du Was ich über
Zero Division Error sagen will
, ist , dass
manchmal andere Arten von
Fehlern in Ihrem Code auftreten können manchmal andere Arten von
Fehlern in Ihrem Code Andere Arten von Ausnahmen. Nehmen wir an, Sie haben dort
einen Namensfehler
und sagen , dass Sie mit Ausnahme aller Fehler, die
Sie nicht bestehen, im Grunde
alle Arten von Fehlern dort mit einbeziehen. Das ist ein bisschen gefährlich für Ihren Code, weil Sie möglicherweise
Probleme haben , die Sie nicht bemerken und die
Sie im Grunde ignorieren,
aber das sollten Sie nicht Du solltest
da explizit so spezifisch sein. Wenn es andere Arten von
Fehlern gibt, wie z. B. einen Namensfehler
, wird dieser Namensfehler
Ihr Programm zum Absturz bringen . Sie
wissen, was
vor sich geht , und Sie müssen genau sein. Wenn Sie auch
diesen Fehler behandeln möchten, können
Sie
hier
eine weitere Ausnahme hinzufügen, mit Ausnahme von beispielsweise einem
Namensfehler. Ja, hier geht es um die
Behandlung von Fehlern in Python. Ich hoffe, das macht
Sinn. Ich hoffe, ich erkläre das gut über Fehler. Ich werde in den
nächsten Vorlesungen mit dir sprechen.
116. 115. Einführung in das Computer Vision mit Python +: Hallo, willkommen in
diesem neuen Bereich. Und in den
Vorlesungen dieses Abschnitts werden
Sie
Computer Vision mit Python lernen. Ich werde Computer
Vision in einer Minute erklären. Das werden
wir also in diesem Abschnitt lernen. Und dann werden wir im
nächsten Abschnitt eine Anwendung
erstellen, die bewegte Objekte
von der Computer-Webcam aus
erkennt
und die Zeiten speichert und visualisiert , zu denen die Objekte
den Videoframe
betreten und verlassen haben Das ist also ein
Anwendungsbereich von Computer Vision. Nun, vielleicht haben Sie eine Vorstellung
davon, was Computer Vision ist, aber wenn nicht, werde ich es jetzt erklären. Computer Vision
ist also der Bereich, sich mit der Erfassung
und Verarbeitung von Bildern befasst und Entscheidungen
auf der Grundlage dieser oder der Bilder trifft. Sie geben also ein Bild
an den Computer weiter, und der Computer versucht, es
zu verstehen, und er kann bestimmte
Dinge tun, zum Beispiel
kann er Ihnen sagen, wie viele
Phasen das Bild hat und welche Farbe das Bild
dominiert, und so weiter Ich weiß, Computer sind Müll. Ich meine, du musst
ihnen genau sagen, was sie tun sollen. Und hier kommt
Python ins Spiel. Wir werden Python verwenden, um
Bilder zu laden und zu verarbeiten und Dinge wie Gesichts
- und Bewegungserkennung durchzuführen. Heute umfasst Vision
sowohl Bilder als auch
Videos, da es sich bei Videos
einfach um Stapel von Bildern handelt , die sehr schnell angezeigt Computer und damit
Python verwenden also dieselben Befehle, um Bilder und Videos zu lesen. Und Sie können Computer Vision
mit Python mit OpenCV machen. OpenCV steht für Open
Source Computer Vision. Und die Ise-Bibliothek wird
nicht nur in Python, sondern
auch
in anderen
Programmiersprachen verwendet in anderen
Programmiersprachen , um
Computer-Vision-Aufgaben zu erledigen. In diesem Abschnitt werde
ich Ihnen OpenCV vorstellen und Sie
werden
lernen, wie Sie es verwenden können, indem Sie Gesichter anhand von
Bildern erkennen Im nächsten Abschnitt werden
wir dann tiefer eintauchen und Videos mit
OpenCV
verarbeiten und einige sich bewegende Objekte
in Echtzeit per Webcam-Video erkennen in Echtzeit Also, ja, das ist
über diese Vorlesung, und lassen Sie uns weitermachen und OpenCV in
der nächsten Lektion schnell einrichten danach damit arbeiten Also ja, danke und wir
sehen uns in der nächsten Vorlesung.
117. 116. Laden, Anzeigen, Größenänderung und Erstellen von Bild ++s mit OpenCV: Großartig. Lassen Sie uns also
weitermachen und ein bisschen mit OpenCV
herumspielen In
dieser Vorlesung lernen Sie insbesondere, wie Sie Bilder mit OpenCV in
Python laden,
und Sie lernen, wie Sie sie
anzeigen, ihre Größe ändern
und dann die
Größenänderungsbilder in neuen Bilddateien speichern Laden Sie also Bilder, zeigen Sie sie an, ändern Sie ihre Größe
und schreiben Sie sie. Und ich habe ein schönes Bild von der Galaxie, also werde ich damit
herumspielen Das erste, was Sie
tun möchten, ist die Bibliothek zu importieren. Die zweite Sache ist, dass
Sie das Bild in Python laden möchten. Das Bild würde also der REIT-Methode cv
two dot image entsprechen. Die Methode erwartet jetzt also den Pfad zu dem Bild, das
Sie in Python laden möchten. Und das wäre
Galaxy Dot JPG. Also mein Skript, eine
Punkt-Pi-Datei, befindet sich
im selben Verzeichnis
wie Galaxy Dot JPG. Also muss ich hier nur
den Dateinamen übergeben. Und dann gibt es noch
einen weiteren Parameter für das Bild für ihn bei method. Und dann
benötigt dieser Parameter drei Argumente. Dieser Parameter gibt nun an, wie Sie
das Bild in Python lesen möchten. Möchten Sie
es also als RBG-Bild lesen,
was bedeutet, dass Sie
drei Bänder in Ihrem Bild haben möchten Sie möchten also ein
Farbbild mit einem roten, blauen und einem grünen Band Wenn Sie also das
Bild so lesen möchten, wie es mit den Farben ist, sollten
Sie es hier weitergeben. Wenn Sie das Bild
als
Schwarzweißbild in einer Graustufe lesen möchten, sollten
Sie Null übergeben. Und wenn Sie ein Graustufenbild haben,
bedeutet das, dass
Ihr Bild ein Band Und ich komme zurück zu den Bands und erkläre sie gleich Wir haben also auch minus eins. Das bedeutet ein Farbbild, aber Sie haben auch
einen Alphakanal, was bedeutet, dass
Ihr Bild Transparenzfunktionen hat. Wenn Sie also Operationen anwenden,
die Transparenz erfordern, können
Sie dies beim
Laden des Bilds mit einem Argument
minus eins hier nachlesen . Okay, also ich würde
gerne Null ausprobieren. Großartig. Bevor
ich das Bild zeige, bevor ich das
Bild auf dem Bildschirm zeige, möchte
ich, dass Sie verstehen, worum diesem Bildobjekt geht. Also würde ich den
Typ davon einfach so ausdrucken wollen. Führe das Skript aus. Skript eins. Ja. Ja, und versuche es erneut. Das ist also das
dimensionale Array von NumPin. Und wenn du willst,
kannst du das ausdrucken. Und Sie werden das
tatsächliche Num-Pi-Array sehen. Das ist also ein zweidimensionales
Array mit Werten auf der horizontalen Achse und auch auf
der vertikalen Achse. Denken Sie jetzt an das Bild, und das wäre
der allererste, also der obere linke
Intensitätswert eines ersten Pixels. 14
wäre also zum Beispiel der
Intensitätswert in der Graustufe. Für das erste Pixel
des Bildes, also für das obere linke
Pixel des Bildes. Und dann das zweite
Pixel und so weiter, und dann haben Sie diese Punkte, was bedeutet, dass Python
die Liste
nicht anzeigen kann, die lange Liste hier drin,
weil Sie
ein paar tausend
Werte in der ersten Zeile haben , und dann haben Sie die
zweite Pixelreihe im Bild und die
dritte und so weiter. Und das ergibt die Matrix
der Pixel des Bildes. Und wenn Sie
wissen möchten, wie viele Zahlen, wie viele Werte Sie in horizontaler Richtung und wie viele Werte Sie in vertikaler Richtung haben, können
Sie
die Bildform
drucken. Okay. Nehmen wir an, die
Bildauflösung beträgt 14 85 mal 990. Python speichert das Bild also
als Schiedsrichterarray als Zahlenmatrix
, so einfach ist das Wenn Sie
das dimensionale
Array Ihres Bildes überprüfen möchten , können
Sie das mit
diesem Ausdruck tun Und Sie sehen, dass Sie zwei Dimensionen
haben. Nun, wenn das ein Farbbild wäre, also mit drei Fledermäusen rot, blau und grün, würden
sich die Dinge ein wenig ändern. Also hast du drei Dimensionen. Und Sie sehen auch, dass das neue
Array ein bisschen anders ist. Hier haben Sie also Werte für jedes der Bänder für Grün, für Rot bis Grün und Blau. Also möchte ich
bei dem grauen Bild bleiben. Und was ich jetzt tun kann ist, dass ich das
Bild auf dem Bildschirm anzeigen kann. Und dafür
willst du das Bild verwenden, also zeige ich die Methode. Dadurch wird
ein Fenster angezeigt und Sie
möchten dem Fenster einen Namen geben, also möchten Sie
diesem Fenster einen Titel geben. Sagen wir Galaxie. Und was Sie hier übergeben,
ist das Bildobjekt. Also dieser. Großartig. Und dann möchten
Sie eine Zeit
angeben, zu der
Ihr Fenster geschlossen
werden soll , weil dadurch das Fenster angezeigt
wird, aber Sie möchten auch
einige Funktionen definieren , damit der Benutzer das Fenster schließen kann. Wenn Sie hier Null eingeben und der Benutzer eine beliebige
Taste drückt, wird das Fenster geschlossen. Lassen Sie mich das auf Cb zwei ändern. Wenn Sie also Null eingeben,
kann der Benutzer das Fenster
durch Drücken einer beliebigen Taste schließen. Wenn Sie eine Zeit eingeben möchten, könnten
Sie 2000 sagen und das
bedeutet 2000 Millisekunden Das bedeutet also 2 Sekunden. Also haben wir gesagt, wie der Benutzer das Fenster schließen
möchte, und dann möchten Sie
angeben, was zu tun ist, wenn der Benutzer eine Taste drückt
oder 2 Sekunden wartet Sie möchten also alle Fenster
zerstören. Das ist eine Methode, die das Fenster
schließt. Gut. Mal sehen,
was passieren wird. Okay, wir haben das
Bild angezeigt bekommen und es hat zwei
Sagen gewartet und dann ist es geschlossen Wenn Sie es auf Null setzen, bleibt das
Bild dort. Und wenn Sie die
Taste drücken, wird es geschlossen. Lass mich das Bild noch einmal zeigen. Der Grund dafür,
dass
das Bild nicht auf meinen
Bildschirm passt, ist, dass das Bild, wie Sie hier in diesen
Werten sehen, 1485 Pixel hoch ist Also die Höhe, das
ist die Höhe, und sie ist 990 Pixel breit Meine Bildschirmauflösung
ist also auf 1.280 mal 720 eingestellt. Das bedeutet, dass dieses Bild
mit dieser Größe nicht auf meinen Bildschirm
passt, weil mein
Bildschirm dafür zu klein ist Lassen Sie mich das in diesem Fall schließen. Was Sie tun können, ist
,
die Größe des Bildes zu ändern und dann das präzise Bild
anzuzeigen Also laden wir das Bild
und bevor wir es zeigen bevor wir es an
die I'm Show-Methode übergeben, möchten
wir sagen, die Größe ändern Bild. Das wäre gleich. CV Two ändert die Größe, und das würde
zwei Parameter erhalten Das erste ist natürlich ein Bildobjekt, dessen Größe
Sie ändern möchten Also IMG ist unsere Variable, und dann möchten Sie
ein Tupel mit den neuen Dimensionen angeben , ich würde sagen 1.000 mal 500 Und dann willst du das neue Bild hier
übergeben. Was hier passiert, ist, dass Python tatsächlich die
Größe des Num-Pi-Arrays ändert. Es wird also das Array mit dieser
Anzahl von Werten in Pixeln verwenden und ein Array
mit diesen neuen Dimensionen erstellen. Was
dort also passieren wird, ist, dass Python
diese Werte interpoliert Es hat hier also ziemlich
viele Werte,
aber dann geht es
von hier zu diesem Wenn es also sieht, sagen wir, es hat vier für einen Wert und dann sechs
für den Nachbarwert. Und was Python tun wird
, ist, dass es
im Grunde vier und sechs bekommt und
daraus einfach einen Wert macht. Sagen wir also fünf. Das ist
im Grunde die Idee. Also interpoliert es die Werte und zeigt dann das
interpolierte Bild auf dem Was in unseren Augen ziemlich
gut aussieht. Okay, lass uns das sehen. Und das ist das Bild. Und Sie sehen, dass das ein bisschen weit
gedehnt ist. Es war also ein großes Bild, aber jetzt ist es ziemlich breit. Und weil das
eigentlich die Breite des
Bildes ist und das ist die Höhe. Also, wenn du willst,
kannst du 501.000 sagen. Also nochmal, und jetzt siehst du mehr oder weniger das
Zweier-Verhältnis des Bildes Wenn Sie jedoch
das Bildverhältnis beibehalten möchten, sollten
Sie hier etwas
weiter gehen. Nehmen wir also an, wir möchten eine Größe
anzeigen, die halb so groß ist, dass das Verhältnis
des Bilds beibehalten wird. Was wir also tun können, ist,
Zugang zu diesen Werten zu benötigen. Und wir können diese
Werte aus der Shape-Methode abrufen. Das erzeugt also ein Werkzeug
mit diesen beiden Werten, und dann gehen wir hierher
und sagen, Bild, Form Und das wäre dieser Wert, also 990, der
einen Index von eins hat Und dann haben wir
wieder Bild und Form mit dem Index
Null für diese Zahl. Und dann wollen wir das durch zwei
teilen. Okay. Und ich rechne damit, dass ich einen Fehler bekomme,
aber was ist S. Also ja, wir haben einen Fehler. Es ist ein Typfehler.
Das erwartete Integer-Argument hat Float. Aber was wir
hier tun, ist, dass wir, wenn wir diese Zahl durch
zwei
teilen, eine Gleitkommazahl erhalten. Also würden wir so
etwas wie 742,5 bekommen. In diesem Fall
wollen wir das in eine Ganzzahl umwandeln Aus 742,5 wird also 742. Okay. Und lassen Sie uns die
Konsistenz auch hier in Ganzzahlen beibehalten. Lass uns sehen Wir haben hier eine ungültige
Syntax, also zeigt sie uns auf Zeile 11, irgendwo am
Anfang, was ziemlich irreführend sein
kann Sie möchten also vor
dieser Zeile sehen, die hier ist. Und Sie können sehen, dass diese
Klammer hier hier geschlossen wird. Wir brauchen also eine weitere Klammer, die hier in der
ersten Klammer schließt. Also spar dir das. Versuch es nochmal. Und dieses Mal sieht das
Bild gut aus. Sie lernen also, wie man
ein Bild in Python lädt, und Sie lernen, wie
man die Größe eines Bildes ändert wie man ein Bild
auf dem Bildschirm anzeigt Und jetzt schreiben wir das
Bild zur Größenänderung in eine neue Datei Dafür sollten Sie die IM-Schreibmethode
verwenden. Also Bildblatt. Und Sie möchten dem neuen Bild einen Namen
geben, Galaxy, sagen
wir, geändertes Punkt-JPG Und dann übergeben Sie
das Bildobjekt, das Sie in dieser Datei speichern
möchten Das Komma wird hier also salzig, und das Bild, das Sie
speichern möchten, ist ein präzises Bild. Das ist es. Hinrichten. Und wir haben die alte
Bildgröße im Handumdrehen geändert. Python erhält also das Numpy-Array. Ich füge es ein,
sodass es seine Größe ändert, und dann zeigt es
es auf dem Also das ist Galaxy,
das hier, und dann können wir das schließen Und hier haben wir
unser neues Image. Also die Größe der Galaxie ändern. Wenn Sie also zu dem Ordner gehen,
in dem sich diese Dateien befinden, werden
Sie feststellen, dass dieses
Bild neue Dimensionen hat Also 495 mal 742. Und das wollte ich dir in dieser Vorlesung
beibringen. Ich hoffe, es hat Ihnen gefallen
und wir sprechen später mit Ihnen.
118. 117. Erklärung der vorherigen Übung: Nun, ich hoffe, Sie
lösen die Übung, und ich glaube, sie war
nicht schwierig. Mein Ziel dort war es,
Sie an OpenCV-Code zu gewöhnen. Warum nicht eine
For-Schleife üben? Wie Sie sich vorstellen können, würde
diese Übung mit einer For-Schleife
verkauft werden. Lassen Sie mich also schnell den
Code Zeile für Zeile durchgehen. Wir haben also zwei wichtige OpenCV, SL CV zwei und die
Globe-Bibliothek Wenn Sie sich daran erinnern können, findet Globe anhand eines bestimmten Musters die Pfadnamen einiger Dateien In diesem Fall
habe ich zum Beispiel diese JPG-Dateien hier, also ein, zwei, drei,
vier, fünf Bilder. Und ich sagte, okay, erstelle
eine Liste von Dateinamen, die alles
im ersten Teil
und dann JPG als Erweiterung
enthalten . Das erzeugt also
eine Liste wie sagen wir C und dann den Pfad hier
und dann Galax C, das GPG Und dann der andere Bildpfad und so weiter, du hast die Idee Und dann müssen wir
diese Liste
für jeden Bildpfad in
der Liste in dieser Liste durchgehen für jeden Bildpfad in
der Liste in dieser Liste Wir werden diese Operationen
für jedes der Listenelemente durchführen. Also lesen wir zuerst
diesen Bildpfad. Okay, diese Bilddatei hat
tatsächlich ein
Schwarzweißbild. Null ist also ein Flag-Argument, was eigentlich eine Bildrate
von Schwarz-Weiß in der
Graustufe impliziert . Dann erstellen wir eine Variable, in wir die Bilder zur Größenänderung speichern Das Bild ist also 100 mal 100. Ich übergebe hier das
Originalbild und die Größe, die neue Größe, die
das Bild erhalten wird. Dann wollen wir das
Bild nur zur Demonstration zeigen. Das ist nicht wirklich wichtig, aber Sie können
sich damit die Bilder ansehen ,
deren Größe geändert wird. Und das ist der
Name des Fensters. Und dann übergebe ich hier
eine Wet-Key-Methode, und 500 bedeutet 500 Millisekunden Also wird jedes Bild
angezeigt und es wird eine halbe Sekunde,
500 Millisekunden
warten Und dann, nach dieser
halben Sekunde, geht
Python zur
nächsten Zeile und dann zur nächsten und dann geht es zum nächsten Punkt
der Liste und so weiter. Warten Sie also 500 Millisekunden, und dann haben wir nach Ablauf
dieser
Zeit alle Fenster zerstört nach Ablauf
dieser
Zeit alle Fenster Und dann schreiben wir
das verkleinerte Bild. RE war also eine Variable, die das Bildobjekt, das in
der Größe geänderte Bildobjekt,
enthält der Größe geänderte Und das hier, alles ist
ein neuer Name der Datei. Also, was wir
hier bekommen, ist, dass wir am Anfang
des Bildes
einen präzisen Namen haben werden am Anfang
des Bildes
einen präzisen Namen haben Und dann, gleich danach, haben
wir einen Namen für
das Originalbild Also
hätten wir zum Beispiel für Galaxy ReciseGalaxy Das Bild hier wäre hier Galaxy Dot JPG, was dieses hier
ist Und hier, weil sich
das Skript in diesem Ordner befindet, würde diese
Liste tatsächlich so aussehen wie Galaxy Dot JPG,
dann Kangaroos, weißt du,
Australien, Punkt GBG und Das ruft also die relativen
Pfade der Dateien ab. Wir bekommen nicht den vollständigen Pfad. Okay, ich hoffe, das ist klar. Wenn wir die Größe von Galaxy geändert haben, könnten wir einen Unterstrich
hinzufügen, damit wir das präzise Wort vom Namen
des anderen Bildes unterscheiden . Großartig Lassen Sie mich dieses
Python-Skript ausführen. Also Alpha-Sekunde,
Alpha-Sekunde und, ja, es ist geschafft. Und lass uns die Bilder überprüfen. Ab hier sind es also
die Originalbilder und das sind die
Bildprodukte. Sie können hier also sehen, dass
all diese 100 mal 100 sind. Und sie sind in einer Graustufe. Okay, das ist es. Wir sehen uns
in der nächsten Vorlesung.
119. 118. Gesichter in Bildern mit OpenCv und Python erkennen: Hallo, willkommen zu
dieser neuen Vorlesung. Und hier
lernst du, Gesichter zu erkennen. Und wir werden OpenCV mit
Python verwenden , um ein oder
mehrere Gesichter aus einem Bild zu erkennen Also, wie funktioniert die
Gesichtserkennung im Grunde genommen? Nun, die Idee ist, dass jemand einige Kaskaden erstellt
hat, denen es sich im Grunde um einige
XML-Dateien wie diese Diese EML-Datei enthält
Informationen über die Merkmale, die ein
Bild eines Gesichts Wir sprechen also über das Verhältnis
der Schatten von Augen,
Nase und Lippen und
all diese Merkmale.
Diese Pixelintensitätszahlen werden in dieser XML-Datei
gespeichert,
die erstellt wurde, indem einige Bilder mit Gesichtern
als Trainingsmuster Im Grunde
sagen Sie Ihren Computern:
Okay, das sind alles Gesichter, und dann verwenden Sie Software wie OpenCV, um solche XML-Dateien zu erstellen Diese werden also
harte Kaskaden genannt, und das ist eine harte Kaskade
für ein Objekt mit frontalem Gesicht Und wenn Sie andere Objekte möchten, finden
Sie sie
in diesem Sie haben also Ganzkörper, linkes Auge und
Unterkörper und so weiter. Alternativ können Sie
einen Abschnitt mit Ressourcen in
dieser Vorlesung verwenden . Sie können es in
einer Zip-Datei mit
allen vorhandenen XML-Hard-Kaskaden herunterladen allen vorhandenen XML-Hard-Kaskaden Aber in dieser Vorlesung werden wir uns auf das
Front-of-Face konzentrieren. Also werden wir diese
Kaskade verwenden, um einen Pass zu erkennen. Jetzt funktioniert es so , dass wir
das Bild in Python laden
und
Python dann mitteilen, dass dies
ein Modell ist , nach dem Sie im Bild
suchen möchten und dass
Sie dieses Modell finden möchten, also das XML-Modell im Bild. Und was Python
mit Hilfe von OpenCV machen wird,
ist, dass es anfängt,
das gesamte Bild über ein Fenster zu durchsuchen Und dann wird es die
Größe des Bildes ändern, es wird die Bildgröße verringern und bei Verwendung desselben Fensters wird
es nach
kleineren Durchgängen suchen und Wir werden
das Schritt für Schritt durchgehen. Schreiben wir also das Skript
, das Gesichter erkennt. Impulsivität ist das Erste
, was Sie tun möchten. Und als
Nächstes
möchten Sie die Kaskade in Python lesen Nennen wir also die
variable Phasenkaskade. CV zwei, und wir haben eine Methode
namens Cascade Classifier. Dadurch wird also ein
Phasenkaskadenobjekt in Python erstellt, und alles, was wir hier übergeben müssen ist der Pfad der
Herzkaskade Das ist es. Und das wird ein
kaskadiertes Klassifikatorobjekt erzeugen. Und jetzt können Sie dieses
kaskadierte Klassifikatorobjekt
der Pace-Funktion verwenden , um nach einer Phase in Ihrem Bild zu
suchen Als Nächstes möchten
Sie vielleicht das Bild in Python laden, das Bild, nach dem Sie suchen
möchten, Gesicht. Nehmen wir an, Bild ist gleich. Sie wissen also, dass wir Bilder in
Python über die
Bildlesemethode des geöffneten CV laden
können , und Sie können hier einfach den PG-Namen für die
Fotosuche übergeben. Ich übergebe den
Dateipfad dieses Bildes. Also übergebe ich hier keinen
zweiten Parameter. Das heißt, ich lese das
Bild als Farbbild. ist jedoch eine gute Idee, bei der
Suche nach einem Gesicht
Graustufenbilder zu verwenden bei der
Suche nach einem Gesicht
Graustufenbilder Also habe ich das Bild hier geladen, aber ich werde
die Graustufenversion
des Bildes verwenden die Graustufenversion
des , wenn ich nach einem Gesicht in diesem Bild
suche Es wird angenommen, dass dies zu höheren Genauigkeit bei der
Suche nach Gesichtern führt, da Sie
möglicherweise
feststellen, dass
OpenCV bei stark frequentierten Bildern
mit vielen Funktionen da Sie
möglicherweise
feststellen, dass
OpenCV bei stark frequentierten Bildern
mit vielen Funktionen nicht
zu Sie erhalten also möglicherweise Gesichter, die
OpenCV übersieht, oder Sie erhalten Merkmale, die als Gesichter klassifiziert
werden Die Verwendung des Graustufenbilds erhöht
jedoch die Genauigkeit. Ich könnte hier weitermachen und eine Nullkennzeichnung angeben, sodass ich dieses Bild
als Graustufe lesen
könnte, aber ich möchte das Originalbild tatsächlich
als Farbversion
behalten , weil ich die
Farbversion am Ende zeigen
möchte,
aber das Graubild verwenden Geben Sie es an die Methoden weiter, mit denen wir nach dem Gesicht suchen werden. Also erstelle ich hier eine Graubildvariable, in ich die
Graustufenversion des Bildes sortiere. Also Lebenslauf zwei, und wir haben eine
Methode namens CVT-Farbe, und die verwendet als Argument natürlich
das Originalbild und eine Flagge Also ein Argument. Es heißt Cv,
zweifarbig, BGR, zweigrau Das bedeutet also, dass das BGR-Bild,
also blaue, grüne, rote Bänder, umgewandelt wird und
es in
ein Graustufenbild umgewandelt wird Lass uns sehen. Wenn du also schnell dieses Graubild
zeigen willst,
wenn du willst, zeigt Civ Two
dort ein graues Bild Wir geben dem Fenster einen Namen, grau und das Bild, das
Sie anzeigen möchten, dann müssen Sie hier den Parameter
Weight Key übergeben Sagen wir Null, also
drücken wir Aiki und das Fenster wird
geschlossen CV zwei zerstört alle Fenster. Sie haben diese Methoden also
in den vorangegangenen Vorlesungen gelernt. Lassen Sie mich das ausführen. Das ist also eine
Graustufenversion des Bildes. Komm. Jetzt werden wir eine Methode
namens Detect Multi Scale verwenden. Und was diese Methode tun
wird, sie wird nach dem
Kaskadenklassifikator suchen Es wird also in unserem Bild nach
dieser
XML-Datei für das Frontalgesicht suchen in unserem Bild nach
dieser
XML-Datei für das Frontalgesicht und
die Koordinaten
des Tempos im Bild zurückgeben des Tempos im Das ist zum Beispiel das Bild,
und was diese Methode
zurückgibt, ist, dass und was diese Methode
zurückgibt, ist, sie das Gesicht findet
und es sagt. Es gibt
dir also die Nummer
der Zeile und die Spalte
des oberen linken
Punktes des Gesichts. Es wird also hier beginnen und
dir auch die Höhe des Gesichts und
die Breite des Gesichts angeben. Also bekommen wir ein Rechteck. Und dann werden wir dieses
Rechteck in das Bild zeichnen. Das ist also im Grunde so, aber
du wirst es besser verstehen. Also müssen wir, sagen
wir, eine
Pass-Objektvariable erstellen . Wo werden diese X-,
Y-, Breiten- und Höhenwerte gespeichert ? Also lasst uns das schnell schnappen. Also müssen wir uns auf das
Cascade Classifier Objekt beziehen, das hier ist Und was wir
mit diesem Objekt machen wollen, ist Multi Scale zu
erkennen, und Sie wollen
das Graubild erkennen Und dann möchten Sie den
Skalierungsfaktor dort eingeben. Sie wissen, wenn
Sie viele
Parameter haben und es
zu viele gibt, um in eine Zeile zu passen, können Sie
nach dem Koma
einfach die Eingabetaste drücken und Python liest Ihre Zeile so, als wäre
es eine einzige Zeile. Sie werden also sicher sein, dass sie nach dem Koma einfach die Eingabetaste
drücken. Also haben wir den Skalierungsfaktor. Und ein guter Wert, den man
dafür angeben könnte, wäre 0,5. Nun, was
bedeutet das? Wie auch immer? Nun, lassen Sie uns dieses Bild betrachten. Python wird der
Originalgröße des Bildes beginnen und suchen. Ich werde
ein Fenster erstellen , das nach Gesichtern im Bild
sucht. Suchen Sie also in diesem Bereich in
diesem Bereich in diesem Bereich. Sobald dies der Fall ist und
Sie einen
Skalierungsfaktor von 1,05 angeben, weisen
Sie
Python an, die Skala für die Suche in
der nächsten Phase um 5% zu verringern die Skala für die Suche in
der nächsten Phase um 5% Python wird das Bild also um 5% verkleinern Und es wird nach
größeren Gesichtern im Bild suchen. Suchen Sie also erneut, suchen Sie erneut und verkleinern Sie dann
das Bild erneut um 5% und
suchen Sie nach größeren Gesichtern usw., bis
die endgültige Größe erreicht ist. Das bedeutet also, dass ein kleinerer
Wert eine höhere Genauigkeit bedeutet. Wenn Sie zum Beispiel
0,5 Python angeben, verringern Sie
die Skala um 50% Es wird also mit
der Originalgröße beginnen
und dann um 50% höher
werden, und dann um 50% höher
werden sodass Sie damit nicht
viel Genauigkeit erzielen Der Vorteil bei dieser Zahl ist, dass das Skript schneller ausgeführt wird. Sie müssen also weniger Durchgänge
zum Bild machen, wenn Sie nach einem Gesicht suchen. 0,5 ist gut. Okay. Und dann haben Sie einen weiteren Parameter namens
minimale Nachbarn. Dieser Wert ist normalerweise auf fünf festgelegt. Und das
ist im Grunde, dass es
Python mitteilt , wie viele Nachbarn rund um das Fenster
gesucht werden sollen. Vielleicht möchten Sie ein
wenig
mit diesen Zahlen experimentieren und herausfinden, welche die
besseren Ergebnisse erzielt. Aber diese beiden Zahlen sind gut
akzeptierte Zahlen. Also lass uns jetzt etwas tun. Lass uns Gesichter ausdrucken und
schauen, worum es geht. Also, was für ein Objekt das ist. Und ich könnte die
Art von Gesichtern auch einfach so drucken. Also führe ich das Skript jetzt aus
und was das Skript
tun wird , es wird diese XML-Datei lesen
und das Bild laden, es wird die
Graustufenversion des Bildes erstellen Und dann erkennt es
die Koordinaten
der oberen linken Ecke
des Gesichts im Bild und
die Breite
und Höhe des Rechtecks,
das
das Gesicht im Bild definiert Und dann
druckt es den Typ
der Gesichter aus und es druckt
die Gesichter, das eigentliche Gesichtsobjekt. Drücken Sie also darauf, um das Ganze zu beenden. Also Pace ist ein NumPi-Array, N-dimensionales Array-Objekt Und es ist ein Array
mit vier Werten. Wir haben also
unser Gesicht erkannt. Dies sind Werte, die im Grunde
die Phase im Bild definieren. Im Grunde haben
wir hier
also 155, was die 155 . Spalte sein
sollte Das ist also das X.
Also
sollte das Rechteck irgendwo
hier in der Stirn beginnen Und das sollte 83 sein. Also die Zeile 83, Spalte 155, und dann haben wir die Breite, die 382 ist, und die
Höhe, die dieselbe ist. Und so haben wir ein
Rechteck im Gesicht. Lassen Sie uns nun das Rechteck im Gesicht
auf dem Bild
zeichnen. Also haben wir das Faces-Array erstellt. Und dann wollen wir auf all diese
Werte dieses Arrays zugreifen. Um das zu tun, können wir eine Vierschleife
verwenden. Also vier X, Y, Breite und Höhe in Gesichtern. Also, Bild. Also aktualisieren wir das Bildobjekt, das
wir hier gelesen haben, wir haben es hier geladen,
also aktualisieren wir es indem wir ein Rechteck
in das Bild zeichnen. Und wieder müssen Sie
das Bildobjekt hier übergeben, und dann müssen Sie
vier weitere Argumente übergeben. Das erste Argument
wäre der Startpunkt
des Rechtecks. Das wären also X und Y. Also diese Koordinaten
der Phasenanordnung. Großartig Und dann ist der nächste
Parameter ein weiteres Tupel das die Koordinaten
der anderen Ecke des Bildes
definiert der anderen Ecke des Bildes Also haben wir hier die obere
linke Ecke und wir haben die unterste
rechte Ecke hier unten. Also das wäre
X plus die Breite. Und Y plus die Höhe. Das ist es.
Noch ein Parameter. Dies wäre die Farbe , die Sie diesem Rechteck geben
möchten. Das kommt also als BGR-Format. Sie möchten also einen Wert
für die blaue Farbe übergeben. Sagen wir also Null für Blau und wir haben ein
grünes Rechteck. 255 für Grün. Also haben wir dort ein
volles Grün und dann Null für Rot. Sie können auch
einen anderen Parameter übergeben
, nämlich die
Breite des Rechtecks. Sagen wir drei. Okay. Und wenn Sie das getan haben, also nachdem Sie Ihr Bild
aktualisiert haben, möchten
Sie vielleicht Ihr
Bildfenster jetzt auf dem Bildschirm anzeigen. Wir verwenden also die Methode zum Anzeigen von Bildern, aber hier haben wir ein graues Bild, also wollen wir ein
aktualisiertes Bildobjekt übergeben. Und wir sollten startklar sein. Speichern Sie das Skript, gehen Sie
und versuchen Sie es auszuführen. Und mein System ist nicht in der
Lage , das Gesicht zu finden. Ja, ich habe hier
etwas mit einem Namen durcheinander gebracht, also lass mich
diesen Punkt ändern, Py, Enter Also hat das nichts
mit dem Drehbuch zu tun. Und lass es mich noch einmal versuchen. Großartig. Ich hoffe also, dass Sie
das erwartet haben. Also das Rechteck beginnt hier und hat eine
Breite und eine Höhe, und es endet hier. Manchmal haben Sie jedoch, wie
Sie vielleicht bereits wissen, Bilder, die größer als Ihre
Bildschirmauflösung
sind. In diesem Fall
würde Ihr Bild nicht auf Ihren
Bildschirm passen. Sie
könnten also Größe des Bildes ändern,
bevor Sie es anzeigen Lassen Sie mich hier also eine Variable
mit veränderter Größe erstellen, und das wäre gleich
cv two resize, und Sie möchten das Bild übergeben, das das
Rechteck dort enthält, und Sie möchten die Größe des
Bildes auf Sie müssen also hier die
Auflösung des Bildes einstellen. Und wie Sie wissen, können
Sie hier einfach
einige Werte eingeben, sagen
wir, 500 mal 500. Diese Werte könnten Ihr Bild jedoch
ausdehnen Eine bessere Lösung wäre
also , auf die Form
des Bildes zuzugreifen. Oder die Auflösung des Bildes, und das sollte die
Breite Ihres Bildes sein. weißt du also
schon. Ich erkläre das. Ich gehe das kurz
durch, und um sicherzugehen, dass du eine passende Größe
bekommst, könntest
du sie durch drei teilen. Und dann wiederum, in Form, erhältst
du die Höhe, die der erste Wert
des Tupels ist , und dividierst
sie wieder durch drei Und Sie möchten
diese beiden Ganzzahlen auch konvertieren , weil
Sie möglicherweise Fließkommazahlen erhalten,
und Python wird sagen, und Python wird sagen dass es die Größe eines
Bildes nicht auf Fließkommazahlen Das sollte also okay sein.
Dann möchten Sie das verkleinerte Bild anzeigen.
Testen Sie es schnell Mir fehlt hier die Klammer, also sollte das alles ein
Umkippen sein, aber hier
fange ich nicht als Umsturz Also Klammer hier und Schluss hier drin
. Das sollte jetzt funktionieren. Ja. Also, das war mein Bild, aber versuchen wir es jetzt mit einem
anspruchsvolleren Bild. Das hier. Wir haben also zwei Gesichter
, die nicht sehr klar sind. Das ist keine echte
Frontalphase. Dieser Typ hier hat seine Augen geschlossen und sein Kinn
ist nicht sichtbar. Und wir haben auch diese beiden Gesichter hier
in den Zeitungen, ich
das
Originalbild von hier aus öffnen konnte. Sie haben im Grunde eine
sehr niedrige Auflösung, und ich denke, Python wird diese beiden Gesichter
nicht erkennen können. Lassen Sie mich das überprüfen. Hier ist unser Gesichtsdetektor, und wir wollen den
Namen der neuen Bilddatei weitergeben. Speichern Sie das Skript und
fahren Sie fort und führen Sie es aus. Wir haben hier also etwas, das zur Realität
zurückkehrt. Und wie Sie dieses Mal sehen, waren
Python und OpenCV in der
Lage, diese Phase zu erkennen, obwohl sie sich nicht in
einer sehr frontalen Und offensichtlich war es auch in der Lage , die Hand dieses Typen zu erkennen Python liest es also als Phase. Und was Sie in diesem Fall tun können ist, diese Werte hier zu optimieren, also den Skalierungsfaktor und
die minimalen Nachbarn Etwas, das Sie vielleicht auch interessieren
könnte, ist, dass das Phasen-Array hier in diesem Fall
zwei Listen enthält Das ist also die erste Phase, die Koordinaten
der ersten Phase und dann die zweite Phase. Was in diesem Fall zufällig von der Hand ist, aber Sie haben die Idee trotzdem. also vielleicht eine Skala von 1,1
verwenden, können
Sie diese Hand vielleicht
loswerden. Also ja, das ist es. Du kannst auch versuchen, das Tempo dieses Typen zu
erkennen, aber ich glaube nicht, dass du es schaffen
wirst. Damit du weißt,
dass diese Techniken ihre Grenzen
haben.
Also ist es ein Computer. Es ist kein Mensch, also wird es immer einige
Nachteile in der Genauigkeit haben Ich hoffe, Sie fanden das so niedrig, und wir sehen uns in
der nächsten Vorlesung
120. 119. Videos aufnehmen mit OpenCv und Python: Hallo, willkommen zu
dieser neuen Vorlesung. Und in dieser Vorlesung werden
wir
OpenCV verwenden, um Videos
von der Computer-Webcam aufzunehmen Sie benötigen also OpenCV und importieren es als CV Two,
wie Sie importieren es als CV Two,
wie OpenCV verwenden wir für die
Bildverarbeitung und natürlich für die Videoverarbeitung,
weil Video aus Bildern besteht Wir haben also viele Bilder und sie werden als Frames bezeichnet Und diese Frames,
diese Bilder werden nacheinander in hoher Geschwindigkeit
angezeigt, und dann können wir
diese Bilder als Video sehen. Und du wirst
diesen Vortrag entweder hassen oder lieben. Was wir tun werden,
ist, dass wir hier bei der ein wirklich niedriges Niveau
der Videoverarbeitung auf
ein wirklich niedriges Niveau
der
Bildverarbeitung setzen werden. Wir werden die Frames
nacheinander lesen , also
Bilder eins nach dem anderen. Und Sie werden sehen, wie wir Loops in Python
verwenden, um
diese Bilder anzuzeigen und tatsächlich
ein Fenster
zu erstellen , in dem Bilder schnell angezeigt
werden, und Sie können es als Video sehen. Wenn Sie also einen Laptop haben, haben
Sie wahrscheinlich
eine Gebäudekamera. Wenn Sie einen Desktop
ohne Kamera haben, benötigen
Sie eine externe Kamera,
um mir in diesem Vortrag zu folgen. Und jetzt
möchten Sie vielleicht als Erstes ein Video lesen. Sobald Sie ein Video gelesen haben, können Sie ein Video entweder
von der Webcam oder
aus einer Videodatei lesen . Und sobald Sie das Video gelesen haben, können Sie
andere Funktionen anwenden z. B. das Video ausgrauen oder dem Video Text
hinzufügen
oder Objekte
im Video erkennen usw. Als Erstes möchten
Sie also ein Objekt erstellen, sagen
wir ein Video, und das
entspricht der Videoaufnahme mit Bildpunkten Das ist also die Methode, die ein Videoaufnahmeobjekt
auslöst. Und dafür gibt es hier ein Argument, das entweder eine
Zahl wie Null,
Eins, Zwei, Drei oder
der Pfad der Videodatei sein kann. Wenn Sie also eine Zahl eingeben, bedeutet
das, dass Sie ein Video von einer Kamera
aufnehmen. Nehmen wir an, ich habe eine eingebaute Kamera
in meinem Computer, habe
aber auch eine
externe Kamera. In diesem Fall hat eine meiner Kameras
einen Index von Null, die andere Kamera einen Index von eins,
und wenn ich eine dritte Kamera
habe , hat
sie einen Index
von zwei und so weiter. Das ist es also. Wenn du
eine Videodatei hättest, könntest
du einfach Movie
Dot MP Four oder so
etwas sagen . Das hängt von Ihrem
Videodateinamen ab, und Sie müssten diese Datei irgendwo
auf Ihrem Computer haben. Aber in diesem Vortrag sprechen
wir über das Aufnehmen von Videos
von der Webcam. Ich habe also nur eine
Webcam in meinem Computer, also gebe ich hier Null ein. Das ist es. Sobald Sie das getan haben, möchten Sie sicherstellen
, dass Sie veröffentlichen. Die Kamera. Wenn Sie also
auf Ihr Objekt zugreifen möchten, ist
Video Dot Release die Methode. Und dann müssen Sie dort keine Argumente
übergeben. Schauen wir uns also an, was wir
haben, wenn wir das ausführen. Diese Python-Datei.
Python, Capture Dot Pi ist der Name meiner Datei. Und offensichtlich passiert nichts. Aber auf meiner Seite bemerkte ich,
dass meine Kamera für eine Sekunde oder
für einen Bruchteil einer Sekunde
eingeschaltet war . Also wurde das Licht der Kamera eingeschaltet und
dann geschlossen. Es wurde sofort ausgeschaltet. Was passiert, ist, dass wir hier tatsächlich
die Kamera auslösen, die Webcam, aber dann lassen wir die Kamera
sofort los. Python
wird also die Kamera öffnen und in einer Millisekunde
die Kamera freigeben Lass es mich nochmal versuchen. Manchmal kann es vorkommen , dass Sie überhaupt kein Licht
sehen. Sie sehen es also nicht, weil der Vorgang sehr schnell abläuft. Ihr Computer benötigt also wahrscheinlich einige Sekunden, um das Licht
Ihrer Kamera tatsächlich einzuschalten. Und wir können ihm
ein paar Sekunden geben, also. Um das zu tun, möchten Sie
die eingebaute Zeitbibliothek importieren. Die Zeitbibliothek bietet einige Operationen im Zusammenhang mit der Zeit. In unserem Fall werden
wir es zum Beispiel verwenden, um
das Skript 3 Sekunden lang zu halten. Das bedeutet also, dass Python versucht,
das Skript Zeile für Zeile auszuführen, sodass es
CV Two pünktlich importiert und dann die Kamera
auslöst. Und bevor wir die Kamera
loslassen, lassen
wir das Skript 3 Sekunden
warten. Das wird also ausgeführt. Warten Sie 3 Sekunden und führen Sie dann
die andere Methode aus. Das ist es. Lassen Sie mich das jetzt noch einmal
ausführen. Okay, das Licht ist an.
Eins, zwei, drei, aus. Jep. Und das Video ist veröffentlicht Jetzt denkst du vielleicht,
warum sehen wir nicht, dass dein Gesicht dort in der
Videokamera im Fenster auftaucht? Nun, der Grund ist
folgender:
Siehst du hier eine Zeile, dass
ich ein Fenster zeige? Nein. Also warum erwartest du, dass
mein Gesicht dort zu sehen ist? Und das machen wir, indem zuerst ein Frame-Objekt erstellen, das die Bilder
dieses Videoaufnahmeobjekts liest. Und lassen Sie mich das
zuerst tun, bevor ich auf
weitere Erklärungen eingehe. Lassen Sie mich also Check Frame sagen. Das wäre genauso wie
Videopunkt ROT, einfach so. Was wir hier lesen, ist, dass
wir hier einen booleschen Datentyp und ein
Umpire-Array haben Lassen Sie mich das ausdrucken,
damit Sie es besser verstehen. Also zuerst überprüfen und
dann den Rahmen ausdrucken. Okay? Führe das Skript aus. Warten Sie 3 Sekunden und schließen Sie es. Also, was wir hier haben,
ist, ich werde das erweitern. Also haben wir
die Prüfvariable gefunden. Und wir haben das Numpi-Array, das das Bild darstellt Dieses Bild ist eigentlich das erste Bild, das
das Video aufnimmt In diesem Jahr können
wir das Goldbarren für
verschiedene Zwecke verwenden, z.
B. um zu überprüfen, ob das
Video läuft oder nicht Möglicherweise müssen Sie das also überprüfen,
während Sie Ihre Programme ausführen. Und der Rahmen ist der
wichtigste weil wir
das Frame-Objekt verwenden werden, also verwenden wir dieses Schiedsrichter-Array, das ein
dreidimensionales Array ist weil es ein Farbbild ist, also drei Bänder hat Und das weißt du aus
den vorherigen Vorlesungen in denen wir Bildverarbeitung gemacht haben Okay. Und wir werden diesen Frame durchgehen und ihn mit
der Image-Show-Methode zeigen. Also zeige ich die
Image-Show-Methode der CV Two-Bibliothek. Wir werden also rekursiv
jedes aufgenommene
Videobild anzeigen jedes aufgenommene
Videobild Ich hoffe also, dass das Sinn macht. Bevor wir
das rekursiv machen, möchte
ich hier unten
ein Fenster zeigen Also Lebenslauf zwei, ich zeige es, und lassen Sie uns einen Namen für
die Fensteraufnahme eingeben und
das Frame-Objekt dort übergeben Und denken Sie auch daran, dass Sie, wenn Sie eine Methode zum Anzeigen von Bildern
übergeben , sicherstellen möchten, dass
das Fenster geschlossen ist, wenn
Sie
also ein Fenster anzeigen. Und das tun Sie mit der
Cv-Gewichtstastenmethode, und Sie können
Null übergeben , sodass
Sie eine beliebige Taste drücken
und das Fenster schließen können. Und Sie wollen, dass
CV zwei alle Fenster zerstört. Wenn also diese Taste gedrückt wird, zerstörst
du alle Fenster. Und eigentlich
willst du das hier platzieren, damit das Video nicht veröffentlicht wird,
bevor du diese Taste drückst. Was passiert, ist, dass
Python diese Zeilen ausführt
und dann darauf wartet, dass
Sie die Taste drücken, und dann gibt es das Video frei
und zerstört dann
das eigentliche Fenster, und zerstört dann das
Sie auf dem Bildschirm sehen Okay, mal sehen, was jetzt passieren
wird. Überraschung, ich habe
nur zwei Zähne. Das wusstest du nicht. Okay,
ich mache Witze. Ich habe noch mehr Aber was Python hier
getan hat, ist, dass es die Kamera
ausgelöst hat. Also hat es hier die Kamera ausgelöst und dann das
erste Bild des Videos gelesen. Das allererste Bild,
sobald die Kamera ausgelöst wird, liest
sie das erste Bild
und dann haben wir dieses Bild
ausgedruckt und es ist hier irgendwo in
der Befehlszeile, und dann hat das Skript 3 Sekunden lang
geschlafen, also hat es nichts gemacht Es hat 3 Sekunden gewartet und dann CV 2 mit
der AmShow-Methode erstellt.
Es hat ein Fenster erstellt, in dem das
erste
Bild des Videos Das Bild, das Sie gerade
gesehen haben, ist also das erste
Bild des Videos Und dann der eigentliche Frame, das Fenster ist immer noch geöffnet, also wartet es auf eine
Taste, die wir drücken müssen. Wenn ich jetzt also eine Taste drücke, werden
diese letzten beiden Zeilen ausgeführt. Das bedeutet also, dass das Video
veröffentlicht wird und dieses
Fenster zerstört wird. Also drücken Sie die Taste und
ja, das ist passiert. Python verarbeitet also einen Videoframe genauso
wie einfache Bilder. Das heißt, Sie können auch Methoden
wie cv two dot, CVT color
anwenden wie cv two dot, CVT color Und Sie können diesen Frame hier übergeben und ihn dann
in der Farbe BGR
Gray speichern Farbe BGR
Gray Speichern Sie es in einer grauen Variablen. Ich konvertiere also den Rahmen,
also den Farbrahmen, in ein graues Bild. Und eigentlich muss ich
das hier oben machen. Und dann kann ich die
Graustufenversion des Bildes hier
zeigen. Okay, lass es mich nochmal versuchen. Das ist also eine
Graustufenversion, die mit der
Imshow-Methode
angezeigt wird . Das ist also die Idee Wie wäre es nun,
ein echtes Video zu zeigen, kein einziges Bild dort? Nun, die Antwort ist, dass wir hier eine Wildschleife verwenden
müssen. Der Grund, warum wir
das tun müssen, ist, dass eine
While-Schleife einige Anweisungen unendlich ausführt einige Anweisungen unendlich bis Sie die
Schleife an einem bestimmten Punkt mit Anweisungen
wie beispielsweise break unterbrechen Die Idee ist also, dass
wir den
gesamten Code hierher stellen müssen den
gesamten Code hierher Also müssen wir es in
eine Zeitschleife bringen , und genau das mache
ich. Sie können also je nach
Tastatur entweder
eine Tastenkombination auf
Ihrer Tastatur verwenden je nach
Tastatur entweder
eine Tastenkombination auf
Ihrer Tastatur oder zu Zeilen
bearbeiten gehen und dann Einrücken wählen,
um diese Zeilen einzuziehen Also hier ist eine Abkürzung. Aber wie dem auch sei, dann
willst du schreiben, solange es wahr ist. Und dann geht alles in die Wild-Schleife, so einfach ist das. Aber wir sind noch nicht fertig. Wir haben hier noch ein paar
Dinge zu erledigen. Aber zuerst möchte ich sichergehen, dass du den Wil-Loop
verstehst. Lassen Sie mich hier schnell die
Python-Konsole auslösen. Also, was Wil Loop macht, ist, sagen
wir, obwohl es wahr ist, drucken. Sagen wir eins. Wenn Sie das jetzt ausführen, wird
einer unendlich gedruckt Meine Konsole ist hier also
sehr ausgelastet, und ich kann
das mit einer
Tastaturunterbrechung unterbrechen , also Control C oder
das kontrollieren, wenn das nicht funktioniert Also, Wilby sagt, obwohl es wahr ist, was immer wahr sein wird,
führe diese Zeilen aus Aber wenn ich versuche,
das jetzt auszuführen , wird
Python
die Videoaufnahme auslösen die Videoaufnahme und das Fenster anzeigen, aber es ist nur ein Fenster. Also nur ein Bild ist das
erste Bild des Videos. Denn was passiert,
ist, dass die
Drahtschleife anfängt, aber sie geht. Es erzeugt einen Frame, den ersten Frame des Videos. Also das aktuelle Bild, das ist das allererste Bild,
in dem das Video beginnt, dann konvertiert es das Bild
in ein Graustufenbild. Und dann rutscht es
für 3 Sekunden, okay? Dann zeigt es das Bild. Und dann, was der
i-Loop hier macht, wartet
er darauf, dass du eine Taste drückst Wenn Sie dann eine
Taste drücken, stoppt der Vorgang. In diesem
Fall können Sie also einen anderen eingeben. Lassen Sie mich dort etwas Platz schaffen. Also musst du diesen
Wert hier ändern, also die Argumente. Wenn wir Null eingeben, bedeutet das, dass jede Taste, die Sie auf der Tastatur
drücken, das Fenster schließt. Wenn Sie jedoch beispielsweise 2000
eingeben, bedeutet
das, dass das Skript 2000 Millisekunden
wartet, was 2 Sekunden entspricht Und mal sehen, was hier passieren
wird. Also zeigt es zuerst mein Gesicht, dann wartet es hier
3 Sekunden. Dann wartet es
weitere 2 Sekunden. Dann zeigt es den anderen Frame. Es ist also sehr langsam,
einfach so. Okay. Nun, wenn du eine Taste drückst, passiert
nichts, weil du die Null von hier
entfernst . In diesem Fall werde ich das Skript hier zwangsweise
beenden, Control C. Wir brauchen
diesen Zeitzettel nicht mehr, und wir brauchen hier auch eine
Bedingung. Und bevor wir das tun, speichern
wir diese Aktion
in einer Schlüsselvariablen Und dann sagen wir, dass die Taste
gleich oder der Methode ist, und dann übergibst du eine
Taste von der Tastatur. Wenn also Q gleich ist, dann unterbrechen Sie die While-Schleife Und setzen wir es
diesmal auf 1.000. Okay. Also, das wird das Video aufnehmen,
ich starte das Video und dann wird es
durch all diese Zeilen iterieren Es erstellt also einen Frame, konvertiert ihn in Grau und
zeigt den Frame hier an, und dann
wartet es 1 Sekunde Und wenn Sie die
Taste auf der Tastatur drücken, wird die Drahtschleife unterbrochen. Und wenn es dann kaputt geht und das Video, das
veröffentlicht wird,
ausgeführt wird das Video gestoppt und
das Fenster wird zerstört. Wenn Sie jedoch keine Taste drücken, wird
dies 1 Sekunde warten, dann wird
das nächste Bild angezeigt. Und dann, nach 1 Sekunde, wird das nächste
Bild angezeigt und so weiter. Also, speichere das Skript, führe es aus. Also verbessert sich das Video. Ja, sieht jetzt gut aus. Ja, wenn du
Q drückst, hörst du auf. Okay, lass es uns weiter verbessern. Warum nicht eine Millisekunde? Hey, wie geht's uns?
Also, es funktioniert gut. Und Sie können hier auch sehen
, dass der Scheckbarren, der NumPirea, bei jeder Iteration
gedruckt wird Und wir können das jetzt beenden, wenn
wir Q drücken, einfach so. Wenn Sie nun
wissen möchten, wie viele Frames dort generiert
werden,
gibt es einen netten
Trick, den wir machen könnten. Wir könnten eine
Variable erstellen, sagen wir, A entspricht einer Variablen
außerhalb der Y-Schleife Und dann sagst du hier,
A entspricht A plus eins. Dann, nachdem die Schleife
hier unterbrochen wurde, möchten Sie A drucken. Also,
wenn Sie das Skript ausführen, erhält
A den Wert Eins und wenn
dann die
Wandschleife zu laufen beginnt, durchläuft sie
die erste Iteration und erhöht den
A-Wert um A entspricht also eins plus eins. Also werden es zwei sein. Also
wird A auf zwei aktualisiert. Dann wird es bis
zum Ende gehen und dann wird
es wieder anfangen. Diesmal wird es also wieder A sein, entspricht zwei plus eins Also wird A bei
der zweiten Iteration drei sein, und so weiter, oder du kannst
das Ganze auf eins setzen Wenn wir also zwei Iterationen haben, bedeutet
das, dass A zwei sein wird, und wenn wir drei haben, sind es
drei und so weiter Und dann drucken wir A hier
außerhalb der Schleife, okay? Und lass uns sehen, was
wir haben. Ich lasse das Video 3 Sekunden laufen
und wir werden sehen, wie viele
Wiederholungen wir haben werden Nehmen Sie also eins, zwei,
drei auf und hören Sie auf. Also der letzte Wert, der hier
ausgedruckt wurde, ist ein Wert. Das heißt, wir hatten 51
Iterationen in etwa 3 Sekunden, was, sagen wir, ungefähr
20 Bildern pro Sekunde entspricht Also unsere Kamera, meine Kamera, nimmt
20 Bilder pro Sekunde Lassen Sie mich das
noch einmal ausführen, das letzte Mal. Wenn ich also meinen Finger
hier in die Kamera lege, also habe ich das
Bild geschwärzt und du wirst sehen, dass
das Numpy-Array
jetzt Null, Null, Null ist Weil die Einzelbilder des Bildes nur Nullwerte haben Das Bild hat also keine
Intensität. Oh. Okay, das wollte
ich dir
in diesem Vortrag zeigen. Also, wie gesagt, sobald Sie diese Rahmen
haben, können
Sie
Operationen auf sie anwenden, sodass Sie dort
Rechtecke zeichnen, Bilder
erkennen und so weiter Das machen wir, also bauen wir
unsere reale Anwendung. Indem wir eine
Bewegungserkennung in unseren Bildern implementieren
und dann die Zeiten erfassen, wir eine
Bewegungserkennung in unseren Bildern implementieren
und dann die Zeiten erfassen denen ein Objekt in unseren Frame
oder unser Video eindringt , und wir haben
eine Liste dieser Zeiten. Ich hoffe, du liebst diesen Vortrag, ihn
nicht gehasst, und wir
sehen uns beim nächsten
121. 120. App 3: Webcam-Bewegungsmelder-App: Willkommen zu dieser neuen
Vorlesung, und sie ist etwas ganz Besonderes. Ich stehe zufällig vor der Kamera,
weil Sie in dieser Vorlesung ein Programm
entwickeln werden,
das bewegte Objekte
vor einer Computer-Webcam
erkennt. Und dann zeichnet es
die Zeit auf, zu der das Objekt
in die Webcam eingedrungen ist. Also der Videoframe und der
Zeitpunkt, zu dem das Objekt
den Videoframe verlassen hat Jetzt gibt es also ein sich bewegendes Objekt. Im Bild und wenn ich weggehe, siehst
du, dass es im Video jetzt kein grünes
Rechteck mehr gibt. Und jetzt tauche ich wieder auf, gehe wieder raus und so weiter. Also werden wir diese Anwendung mit Python von
Grund auf neu erstellen. Ja, wir müssen noch
viel lernen, wie Bild - und Videoverarbeitung
und so weiter. Und zu guter Letzt, was wir tun,
wenn Sie Q für Beenden drücken, erhalten Sie ein Diagramm. Und wie gesagt, das
Diagramm zeigt die Zeiten, zu denen
das
Objekt in den Frame eingedrungen ist. Wir haben es hier also mit einer
interaktiven Grafik zu tun. Und ja, das sind die
Zeiten , in denen das Objekt
in die Webcam eingedrungen ist, wie hier, und hier hält es länger an. Also, das kann
eine großartige Anwendung sein , wenn Sie Objekte erkennen
möchten. Sie können diese Anwendung
dieses Python-Programms
zum Beispiel auf dem Raspberry-Server
ablegen dieses Python-Programms
zum Beispiel auf dem Raspberry-Server , der ein kleiner Server
ist, und Sie können sie irgendwo ablegen vielleicht möchten Sie Tiere
entdecken. Vielleicht möchten Sie wissen,
wann das Tier das
Bild betritt und wann es wieder
herauskommt , oder ob es mit Menschen zusammen ist, falls das der Fall ist Also ja, das ist ein Programm, und ich hoffe, es gefällt euch Wir müssen eine
Menge Code schreiben, also fangen wir an, und ich werde
in der nächsten Vorlesung mit Ihnen sprechen.
122. 121. Bewegliche Objekte aus dem Webcamp mit Python erkennen: Hey, da sind wir wieder. Und in diesem Vortrag
werden wir
unser
Bewegungserkennungsprogramm für die reale Welt weiter ausbauen . Bevor ich den Code schreibe, möchte
ich Ihnen zunächst
die Architektur des Programms erklären , das wir erstellen werden. Also, wie dieses Programm Bewegungen im Video erkennen
kann. Und ich gehe davon aus, dass Sie bereits wissen,
wie man dieses Skript erstellt. Also haben wir das in
den vorherigen Vorlesungen gebaut. Und was dieses Drehbuch
macht, ist, falls du es verpasst hast, Hey. Also, es
löst das Video aus, so wie du es tust. Von der Computer-Webcam. Also verarbeiten wir Frames hier in dieser Wile-Schleife und so weiter Also weißt du das. Ich werde sie jetzt nicht
durchgehen. Als Nächstes müssen wir also die Frames
verarbeiten, die in
dieser Wile-Schleife
iteriert werden in
dieser Wile-Schleife
iteriert Und ich habe hier ein paar
Bilder, um meine
Ideen, meine Konzepte zu veranschaulichen Lassen Sie mich zu dem Verzeichnis gehen
, in dem sie sich befinden. Dieses
Bewegungserkennungsprogramm
wird also die Webcam auslösen , genau wie unser
aktuelles Skript. Und eine Voraussetzung dafür, dass
das Programm
gut funktioniert , ist, dass, sobald Sie die Webcam
ausgelöst haben, erste Frame
des Videos
der statische Hintergrund sein sollte. Wenn Sie also planen, dieses Programm
zu verwenden, nehmen wir an, Sie richten eine Webcam auf einem Laptop oder einem Raspberry-Pie-Server
ein. Nehmen wir an, Sie möchten
die Bewegung eines bestimmten
Tieres in einem Gebiet erkennen . Sie
möchten also zuerst die Kamera auslösen, möchten also zuerst die Kamera auslösen während der
Hintergrund statisch ist, und dann möchten Sie diesen Hintergrund
als Basisbild
verwenden , damit Sie die anderen Bilder vergleichen
können. Und dann kann Python
erkennen, ob es eine Änderung zwischen dem ersten
Frame und den nächsten Frames gibt. Das ist also eine Sache, die
du tun musst. Das ist also ein
Beispiel für einen Hintergrund. Und dann etwas, das Tier wird
auf deiner Kamera erscheinen. Dann musst du in
dein Script im
Programm zuerst schreiben , wir würden dieses Bild
ausgrauen wollen, also das Hintergrundbild und den aktuellen Frame der Kamera. Sie speichern das erste Bild
der Videoaufnahme in einer Variablen und
konvertieren dieses Bild dann in
ein Graustufenbild Dann durchläuft der iLoop die aktuellen Frames und Sie machen dasselbe mit
dem aktuellen Frame, also konvertieren Sie sie in Graustufen und dann,
was Sie mit diesen beiden Graustufenbildern
der aktuellen
Iteration der Schleife machen diesen beiden Graustufenbildern , wenden
Sie den wenden
Sie Das ist der Unterschied, ein Beispiel für
Differenzframe oder Delta-Frame, wenn man das so sagen kann Auf diesem speziellen Bild werden
Sie feststellen,
dass hinter mir eine Zimmerlampe steht. Normalerweise
kann man die Lampe nicht sehen,
aber Python macht tatsächlich den Unterschied zwischen
dem Rahmen, in dem ich erschienen bin und dem Hintergrundrahmen,
in dem die Lampe sichtbar ist. Es entsteht also dieses graue Bild, bei dem jedes
Pixel einen bestimmten Wert hat. Es hat also einige
Intensitätswerte. In Ordnung. Also das bedeutet zum Beispiel, dass die hohen Intensitätswerte
wie dieser hier, wo ich
bin, bedeuten, dass es in diesem Bereich eine mögliche
Bewegung gibt. Die schwarzen Bereiche
deuten zwar darauf hin, dass es keine Bewegung gibt. Aber Sie sehen hier auch einige helle, schwarze Pixel, denn
wenn ich vor der Kamera
auftauche, ist
hinter mir Schatten und so weiter. Aber wir werden später
etwas anderes anwenden, das als Schwellenwert bezeichnet wird. Also sagen wir im Grunde,
wenn Sie
in dem Bild, das ich Ihnen gerade gezeigt habe, einen Unterschied im
Delta-Frame sehen, wenn Sie einen Unterschied von
mehr als 100 Intensitäten sehen, rechnen Sie diese Pixel in weiße Pixel
um, okay? Und für Pixel, die
unter dem Schwellenwert liegen, konvertieren Sie sie in Schwarz. Okay. Sie denken
sich also den Umriss des Objekts aus, das sich
in der Kamera im Bild bewegt. Also führen wir all diese
Prozesse innerhalb der Wile-Schleife durch. Und wenn wir dann
den Schwellenwert
innerhalb der Schleife berechnet haben , werden wir mit dem
aktuellen Frame die Konturen der weißen
Objekte im Frame ermitteln Okay. Für dieses
spezielle Bild hätten
wir also Konturen
um dieses Objekt herum und
die Konturen um dieses Objekt
herum und auch um dieses herum. Dann schreiben wir eine
Vierer-Schleife, die alle Konturen des aktuellen Frames
durchläuft Es wird zu dieser Kontur gehen, zu
dieser, zu dieser und zu dieser. Und dann werden wir innerhalb dieser Schleife den Bereich der Konturen überprüfen. Das
hat zum Beispiel eine Fläche von, sagen
wir, 500 Pixeln. Wenn also die Fläche der Kontur
beispielsweise mehr als 500 Pixel
beträgt, betrachten Sie
dies als ein sich bewegendes Objekt. Wenn die Fläche,
sagen wir, weniger als 500 beträgt, also dieser hier
wahrscheinlich 20 Pixel, sagen
wir, das wird nicht
als bewegtes Objekt betrachtet. Ich hoffe, das ergibt Sinn. Als Nächstes zeichnen wir
ein Rechteck um die Konturen, die größer als
die Mindestfläche
waren. Dadurch werden diese Rechtecke
im Originalbild angezeigt. Also in der Farbversion
des aktuellen Rahmens. Das heißt, wir werden ein Rechteck
im Video
sehen , während
das Video abgespielt wird, wir werden ein Rechteck
um das Objekt herum sehen. Später werden wir
die Zeiten ermitteln, zu denen das Objekt, das sich bewegende Objekt, in
den Videoframe eingedrungen ist, zu dem Zeitpunkt, zu dem das Objekt den Hintergrund
verlassen hat Aber jetzt
konzentrieren wir uns einfach darauf, das Objekt, das sich bewegende Objekt im Video,
zu erkennen sich bewegende Objekt im Video Okay, und lass uns zum Drehbuch
zurückkehren. Schließ das und das und das. Okay. Und lassen Sie uns hier einige
unnötige Zeilen entfernen. Wir hatten hier also eine Variable, die wir erstellt haben, weil
wir sehen wollten, wie viele Frames wir im Video
hatten. Also brauchen wir das nicht mehr
und wir brauchen nicht, dass das Skript
für 3 Sekunden stoppt. Also entferne ich den
Zeitzettel und den, den ich gesehen habe. Okay. Und jetzt hier, der erste Teil ist der
kniffligste. Wir müssen einen Weg finden, den aktuellen
Frame des Videos
zu speichern Sobald das Video startet, möchten
wir
das Numpy-Array
in einer Variablen speichern und
diese Variable statisch haben, sodass wir
den Wert dieser Variablen nicht ändern wollen,
während die Schleife im Skript
ausgeführt wird Und das geht so, dass
wir zuerst einen variablen Frame
für den ersten Frame
erstellen müssten einen variablen Frame
für den ersten Frame
erstellen Also müssen wir ihm einen Wert zuweisen
, der keinen Wert hat. Keiner ist also ein spezieller
Python-Datentyp , mit dem Sie
eine Variable erstellen und ihr
nichts zuweisen können, aber Sie haben die Variable dort. Wenn Sie diese
Variable also später aufrufen, sagt
Python nicht, dass die
Variable nicht definiert ist. Okay, wenn du es nicht
verstehst, warte bitte und du
wirst es in einer Weile verstehen. Und was Sie jetzt
tun müssen, ist eine
Bedingung zu schreiben und dort eine
fortlaufende Anweisung anzuwenden. Lassen Sie mich zuerst die
Bedingung schreiben und dann erkläre ich
Ihnen, was das bewirkt. Also wollen wir überprüfen,
ob der erste Frame
nicht ist Und wenn er bekannt ist, werden
wir den ersten
Frame zuweisen, den grauen Frame. Das bedeutet also, dass
das Skript ausgeführt wird und das Video ausgelöst wird. Dann beginnt der Wire Loop
zu laufen und er erhält das
erste Bild oder Video und speichert es in
dieser Frame-Variablen. Diese Frame-Variable wird in einen grauen Rahmen
umgewandelt. Und dann sagen wir, wenn der
erste Frame bekannt ist, was in
der ersten Iteration der Schleife
der Fall ist, ist das wahr Der erste Frame ist also eigentlich kein, weil wir hier keinen zuweisen Weist den NumPi
dem ersten Frame zu. Beim ersten Bild
erhalten Sie also das Graustufenbild, das den
allerersten Frame des Videos darstellt Das passiert also in der allerersten Iteration
des Loops, okay? Aber dann wird
Python diese anderen
Codezeilen
ausführen
und dann zur zweiten Schleife übergehen. Und was Python tun
wird, ist , den zweiten Videoframe aufzunehmen. Okay? Nehmen wir an, das erste
Bild war ein Hintergrundbild, und dann
erscheint plötzlich ein Objekt in der Kamera vor der Kamera. Python schnappt sich also ein Schiedsrichter-Array, das dieses Objekt
enthält Also werden der zweite Frame und dieser Frame in Grau
umgewandelt Dann sagen wir hier, das
erste Bild ist keins, das erste Bild ist variabel, wir erhalten das erste
Bild des Videos. Und sobald wir
den ersten Frame aufgenommen haben, wollen
wir nicht, dass diese anderen
Codezeilen ausgeführt werden Denn hier werden wir den Unterschied
zwischen den Frames
anwenden und die Frames
verwischen und so weiter Wir wollen also nicht, dass
diese ausgeführt werden. Stattdessen möchten wir, dass Python
zum Anfang
der Schleife geht und
mit dem zweiten Frame fortfährt. Um das zu tun,
müssen wir hier weitermachen. Das heißt also
, fahren Sie bis zum Anfang
der Schleife fort und
führen Sie nicht den Rest des Codes aus. Okay. Also das erste
Bild ist keins. Das erste Bild erhält den Wert des ersten Bildes des Videos und geht
dann zur nächsten Iteration In der nächsten Iteration nehmen wir
das zweite Bild des Videos und dann wird
die graue
Version dieses Frames Videos und dann wird
die berechnet Und dann geht es wieder
zur Bedingung über. Und ist in diesem Fall
der erste Frame keiner? Nein, das liegt nicht daran, dass das
erste Bild in der ersten
Iteration
der While-Schleife den Wert des grauen Bildes erhalten hat in der ersten
Iteration
der While-Schleife den Wert des grauen Bildes Also werden diese Zeilen hier nicht bei der zweiten
Iteration der Schleife
ausgeführt, okay? Großartig. Das heißt, wir können jetzt Delta-Frame
anwenden, sodass wir
den Unterschied
zwischen dem ersten Frame
und dem aktuellen
Frame des Bildes berechnen können zwischen dem ersten Frame . Der erste Frame ist also die
erste Frame-Variable und der aktuelle Frame
ist eine graue Variable. Aber vorher
möchten wir etwas mit dem
aktuellen Frame des Bildes machen. Wir möchten eine Gaußsche
Unschärfe auf das Bild anwenden. Und ein Punkt hier. Der Grund, warum wir
Gaußsche Unschärfe anwenden wollen , ist, dass wir das Bild verwischen
wollen, also wollen wir es verschwommen machen,
also es glätten, weil dadurch
Rauschen entfernt und die Genauigkeit
bei der Differenzberechnung erhöht bei Das ergibt als Parameter das Bild,
das Sie verwischen möchten Und dann übergeben wir hier
das Graubild
und speichern die verschwommene Version des
Bildes wieder im Graubild Und dann haben wir
einen weiteren Parameter , der als Tupel dargestellt wird, und hier müssen wir
die Breite und Höhe
des Gaußschen Kernels übergeben die Breite und Höhe
des Gaußschen Kernels also im Grunde die
Parameter für die Unschärfe,
aber 21 wären aber 21 Und du brauchst auch
noch einen verlorenen Parameter. Das wäre also die
Standardabweichung und ich übergebe Null. Null wird hier auch häufig verwendet. Wenn Sie mehr über sie erfahren möchten, können
Sie
die Dokumentation durchgehen, aber diese Werte wären gut. Also machen wir das
graue Bild hier verschwommen. Dann hier unten müssen
wir den
ersten Frame des Bildes,
also den Hintergrund, mit
dem aktuellen Frame vergleichen also den Hintergrund, mit
dem aktuellen Frame Nennen wir das den Frame, und das würde dem Unterschied zwischen
CV Dot Apps entsprechen. Also absoluter Unterschied zwischen dem ersten Frame und dem
aktuellen Frame, der grau ist. Beachten Sie, dass der erste Frame auch eine graue Version sein
wird, eine verschwommene
Grauversion sogar Wir vergleichen hier also mit
verschwommenen Graustufenbildern. Okay? Und was
uns das geben wird, ist ein anderes Bild, okay? Und eigentlich würde ich
das Bild gerne hier auf dem Bildschirm zeigen . CB zwei Bilder zeigen. Delta-Rahmen. Mal sehen, was wir
davon haben werden. Und bevor ich das Skript
ausführe, werde ich
zuerst aus der Ansicht verschwinden und dann werden wir erscheinen. Lassen Sie uns noch einmal sehen. Okay, nichts ist passiert, weil ich vergessen habe, den Namen des Fensters
einzugeben. Nennen wir das Delta. Rahmen. Und sagen wir mal grauen Rahmen dafür.
Lassen Sie mich es jetzt noch einmal ausführen. Und hier bin ich. Also das ist eine verschwommene Graustufenversion , die hier läuft, und wir
haben den Unterschied Okay. Damit du die Lampe hinter mir
im Delta-Rahmen
sehen kannst. Großartig. Drücken Sie auf Qiki
und beenden Sie das Video Wenn ich jetzt drucken möchte,
nur um den Delta-Frame zu überprüfen Dadurch können wir
den Unterschied zwischen den
Intensitäten der
entsprechenden Pixel erkennen Intensitäten der
entsprechenden Also lass mich sehen. Und wenn ich
jetzt damit aufhöre. Und los geht's. Also, was wir hier fünf haben,
bedeutet, dass es keinen Unterschied gibt. Also in diesem Bereich
gibt es
wahrscheinlich keine Bewegung, aber dann haben Sie
174, was ziemlich weiß ist. Das bedeutet also, dass Python dies als Bewegung
klassifizieren wird. Okay, das war nur, um dir die Werte
des Datenrahmens zu zeigen Was wir jetzt tun müssen, ist diese Werte zu
klassifizieren. Nehmen wir an, wir
möchten einen Schwellenwert zuweisen. Nehmen wir an, wir haben
Werte, die über 30 liegen Wenn
also der Unterschied zwischen
dem ersten Bild und dem
aktuellen Bild mehr als 30 beträgt, klassifizieren
wir das als weiß Wir werden also sagen, dass in diesen Pixeln wahrscheinlich
Bewegung ist. In diesen Pixeln befindet
sich also ein Objekt. Und wenn der Unterschied weniger als 30
ist, weisen
wir ihm ein schwarzes Pixel zu. Okay? Also können wir das machen. Also sind wir hier. Wir
können das mit der Threshold-Methode
der CV-Two-Bibliothek tun. Nehmen wir an, frisches Delta
entspricht CV Two, dem Schwellenwert. Und was das erwartet,
ist das Bild. Das möchten Sie als Schwellenwert festlegen, und dann möchten Sie einen Schwellenwert
angeben. Also 30 wir bei 30. Und welche Farbe möchten Sie den Werten
zuweisen
, die mehr als 30 sind? Nun, Sie möchten
eine weiße Farbe zuweisen, die dem Wert 255 entspricht. Okay. Und Sie benötigen hier noch
ein weiteres Argument, nämlich die Schwellenwertmethode. Es gibt eine ganze
Reihe von Methoden, aber wir verwenden
diese Methode hier. Also binärer Schwellenwert. Sie können mit
anderen experimentieren, wenn Sie möchten. Großartig. Und jetzt wollen wir sehen, wie dieser Fresh
Delta-Rahmen aussehen wird. Lebenslauf zwei zeigt Thresh Frame, okay. Frisches Delta. Großartig. Lass uns sehen. Offenbar habe ich den falschen Delta-Frame geschrieben ,
nicht den Frame-Delta. Und noch ein Tippfehler in Zeile 19
, hier CV zwei Okay, hoffen wir, dass es
diesmal klappt. Und noch ein Fehler. Diesmal habe ich hier
etwas verpasst. Okay. Diese Methode hier, also die Schwellenwertmethode, gibt
tatsächlich
ein Tupel mit zwei Werten zurück ein Tupel mit zwei Werten Und der erste Wert wird benötigt, wenn Sie
andere Schwellenwertmethoden verwenden Das erste Element des Umsturzes schlägt also
im Grunde einen Wert für den Schwellenwert vor, wenn
Sie andere Methoden verwenden Bei binären Schwellenwerten müssen
Sie jedoch nur auf das
zweite Element des Tupels zugreifen,
das ist der eigentliche
Frame, der zurückgegeben Aus der Threshold-Methode. Sie möchten also auf das
zweite Element des Tupels zugreifen. Okay, ich verspreche, das
ist ein Verlustfehler. Großartig. Endlich, und das
ist der Schwellenrahmen. Siehst du, du kannst dort
meinen Umriss sehen, aber du siehst
hier auch
einige weiße Bereiche wegen der Schatten. Ich werde also
als Objekt erkannt, aber auch meine Schatten
werden als Objekte erkannt. Okay? Also verstehst du die Idee. können wir sofort loslegen und diesen Thresh Delta Frame benutzen
, den ich Thresh Delta genannt habe Ich sollte ihn
Thresh Frame nennen, weißt
du, nur aus Gründen Also können wir
jetzt weitermachen und
Konturen der weißen
Objekte im Thresh Frame erstellen Konturen der weißen
Objekte im Thresh Frame Aber vorher würde ich
gerne etwas anderes machen. Ich würde diese Bereiche gerne verzögern. Also möchte ich
die schwarzen Löcher aus diesen
großen weißen Bereichen im Bild entfernen . Im Grunde möchte ich also meinen Schwellenrahmen
glätten. Und um das zu tun, müssen Sie
die verzögerte Methode
der CV Two-Bibliothek verwenden . Nehmen wir an, wir wollen den Threshold-Frame,
CV Two, DLD,
ändern . Auch hier möchten
Sie einen
Threshold-Frame übergeben Wenn Sie nun ein Kernel-Array haben und möchten, dass dieser Prozess
sehr ausgefeilt ist, würden
Sie dieses Array hier übergeben Wir haben keins und
wir brauchen keins, also müssen Sie
für diesen Parameter keines übergeben. Und hier gibt es noch einen weiteren
Parameter, Iterationen. Sagen wir zwei. Das definiert also,
wie oft Sie das Bild durchgehen
möchten,
um die Sohlen zu entfernen Je größer diese Zahl ist, desto glatter wird das Bild sein Okay. Lass es mich schnell überprüfen. Oh ja, ich habe
den Namen vorhin geändert, aber ich habe ihn hier
in der I'm Shaw-Methode nicht geändert. Frischer Rahmen. Okay. Sie können also wahrscheinlich
feststellen, dass die Bereiche, die weißen Bereiche, jetzt glatter
sind Wenn ich also weggehe, werden
Sie aufgrund meines Schattens nur einige Bereiche bemerken , die
da sind Also, soweit scheint es zu
funktionieren. Lass es uns jetzt erstellen.
Großartig. Also haben wir diese drei Frames. Was kommt als Nächstes? Nun, als Nächstes
müssen wir
die Konturen dieses
erweiterten Schwellenrahmens finden die Konturen dieses
erweiterten Schwellenrahmens In Bezug auf die
Konturerkennung mit OpenCV haben
Sie zwei Methoden Sie haben also eine Methode zum Finden von Konturen
und eine zum Zeichnen von Konturen. Und mit der Methode „
Konturen finden finden Sie die Konturen in Ihrem Bild und
speichern sie in einem Tupel Andererseits
zeichnet die Methode „Konturen
zeichnen “ Konturen in einem Bild In diesem Fall
wollen wir also die Konturen finden und dann
den Bereich der Konturen überprüfen. Nehmen wir an, Sie haben eine
Kontur wie einen Kreis und möchten daher den Bereich finden, den diese Kontur definiert. Sie möchten
diese Konturen also in einem Tupel speichern. Sie möchten also CNTs
C und einen weiteren Unterstrich schreiben. Okay. Das wäre gleich. Lebenslauf zwei, finde Konturen. Und dann
möchten Sie den Frame übergeben , für den Sie
die Konturen finden möchten. Und es ist gut, tatsächlich eine Kopie des Frames zu
verwenden, sodass Sie den
Schwellenrahmen nicht
ändern möchten . Verwenden Sie hier also „Kopieren“. Dies ist jedoch
der erste Parameter,
der Rahmen, aus dem Sie die
Konturen finden möchten, und dann
müssen Sie die Methode
abrufen. Extern. Sie möchten also
die externen Kontraste
oder die Objekte zeichnen , die Sie im Bild finden werden Und Sie haben noch eine weitere
Argumentkette, ein Prox-Symbol. Das ist also eine
Näherungsmethode, die
OpenCV für
das Abrufen der Steuerelemente anwendet Großartig. Was wir also haben, ist dass wir
den aktuellen Frame durcharbeiten Also verwischen wir es und
konvertieren es in
Graustufen, finden den Delta-Frame
und wenden den Also das Schwarz-Weiß-Bild. Dann finden wir alle Konturen
der Objekte der verschiedenen
Objekte in diesem Bild. Wenn Sie also zwei weiße
durchgehende Bereiche in Ihrem Bild haben , jedoch unterscheiden, erhalten
Sie zwei Konturen. Also eine Kontur für
jeden der Bereiche. Diese Konturen werden
in dieser CNTs-Variablen gespeichert. Wir sprechen also über
das aktuelle X, was wir tun
wollen, ist, diese
Kondore herauszufiltern Wir wollen also überprüfen
, ob wir nur
die Kondore behalten wollen, die, sagen
wir, eine Fläche haben, die größer
als 1.000 Pixel ist Dazu müssen Sie, sagen wir,
für Konturen in CNTs
iterieren für Konturen in Und wenn die Kontur den
Bereich der Kontur durchläuft. also die Kontur, durch die
wir iterieren, Wenn also die Kontur, durch die
wir iterieren, weniger als
1.000 ist, geht es wieder bis zum Anfang
der vier Schleifen weiter Das bedeutet also, sagen
wir, Python hat
drei Kondore gefunden und es wird den ersten
durchqueren und das Gebiet dieses Konors Wir verwenden also den Conor-Bereich
der CB-Two-Bibliothek. Wenn der Bereich weniger
als 1.000 Pixel hat, fahren Sie mit dem nächsten Zähler fort. Gehen Sie also zum zweiten Conor und überprüfen Sie es
immer wieder Andernfalls, wenn die Fläche
größer oder gleich 1.000 ist, werden
die nächsten Zeilen hier nach den
vier Schleifen ausgeführt Was möchten Sie also tun, wenn eine Kontur größer
als 1.000 Pixel ist? Nun, wir wollen das
Rechteck, das diese Kontur
umgibt,
auf den aktuellen Rahmen zeichnen. Stellen Sie also sicher, dass Sie sich
innerhalb der vier Schleifen befinden. Wir iterieren also immer noch und
das sind also die Parameter, die das Rechteck
definieren, das dem CV-Rechteck mit
zwei Punkten
oder der aktuellen Kontur entsprechen würde CV-Rechteck mit
zwei Punkten
oder der aktuellen Kontur Wenn die Kontur also gleich oder
größer als 1.000 Pixel ist, also wenn sie eine Fläche
von gleich oder mehr
als 1.000 Pixeln hat , wird
dies ausgeführt Wir erstellen also ein Rechteck, und dann wollen wir
dieses Rechteck auf unseren Rahmen
in unseren aktuellen Rahmen zeichnen . Also CV zwei Rechtecke. Deshalb verwenden wir
diese Methode bereits in unseren Vorlesungen
zur Phasendetektion. Und hier würden wir den
Farbrahmen verabschieden wollen. Okay. Das ist also der Rahmen, und Sie möchten X und Y angeben. Das sind
also die Koordinaten
der oberen linken Ecke
des Rechtecks, X Y, und Sie möchten auch
die Koordinaten der
rechten unteren Ecke
des Rechtecks angeben die Koordinaten der
rechten unteren Ecke auch
die Koordinaten der
rechten unteren Ecke
des Rechtecks Also X W einfach so. Und auch die Farbe
deines Rechtecks, mal sehen. Grün und Breite. Sagen wir drei. Was wir also in diesen beiden Zeilen
gemacht haben , ist, dass wir dieses Tupel
mit diesen vier Koordinaten erzeugt haben Und diese Werte
werden automatisch zugewiesen. X und Y
erhalten also den Wert aus dem Rechteck,
das
diese aktuelle Steuerung der vier Regelkreise miteinander verbindet. Und dann
werden diese Werte verwendet, um
ein Rechteck
im Rahmen des aktuellen Rahmens zu zeichnen . Und dann wollen wir
den aktuellen Frame zeigen. Also lass es mich
hier hinzufügen. Bild zeigen. Nennen wir das „
Frame“ und „Frame“. Eigentlich ist diese Methode
hier Bonding, richtig. In Ordnung, lassen Sie mich
das Skript jetzt ausprobieren. Ein Lebenslauf zwei hat kein
Attribut „Konturen finden“. Also hier habe ich ein U, das nicht da sein
sollte.
Lass es uns nochmal versuchen. Ja, das ist lustig. Ich neige dazu, dieses
Wort Konturbereich falsch zu tippen. Zeile 24, entferne das U und sollte auch
hier Kontur sein Okay. Die Kontur ist
nicht wieder definiert. Ich habe noch einen hier. Also hab Geduld mit mir. Versuch es noch einmal. Äh, ja, dieses Mal
scheint es zu funktionieren. Also keine Objekte. Objekte. Keine Objekte. Objekte. Großartig. Großartig. Das wollte ich Ihnen
in dieser Vorlesung beibringen, und wir werden mit
den nächsten Vorlesungen weitermachen , denn
was wir bisher gemacht haben ,
ist, dass wir dieses Objekt erkennen und
ein Rechteck um dieses Objekt zeichnen können . Aber das ist nicht sehr praktisch. Ich meine, in der realen Welt reicht
es nicht aus, nur ein Rechteck
um Ihr Objekt zu zeichnen, und das war's dann. In
der nächsten Vorlesung werden wir also die Zeiten speichern , zu denen
das Objekt in
den Frame eintritt , wenn das
Objekt den Frame verlässt Wir müssen diesem Code also noch ein paar
Zeilen hinzufügen. Und ich weiß, dass dieser Code hier ziemlich viel zu konsumieren
war, aber ich hoffe, das ist jetzt klar. Wenn Sie Fragen haben, können
Sie sie gerne stellen, und wir sehen uns in
der nächsten Vorlesung.
123. 122. Zeitstempel zur Objekterkennung in einer CSV-Datei speichern ++: Ordnung, ich habe hier mein
Bewegungserkennungsprogramm im Griff. Und wie Sie sehen, fängt mich
das gerade in
Bewegung Wenn ich weggehe, kann man dort nur ein paar Schatten
sehen. Also, das ist großartig,
aber wie gesagt, aber wie gesagt, vielleicht möchten
Sie die
Zeiten speichern, zu denen ein Objekt in den Rahmen eintritt
, damit Sie am Ende so
etwas erhalten. Das ist also der erste Eingang. Als Startzeit
ist dies die Stelle, an der das Objekt den Frame
verlassen hat und dann der zweite Eingang
des Objekts und so weiter In dieser Vorlesung werde
ich Ihnen also zeigen, wie Sie diese Tabelle mit diesem Skript erstellen Also werden wir hier etwas
mehr Code hinzufügen. Und der Weg,
damit zu beginnen, besteht darin zuerst den Punkt herauszufinden, die Zeile im Skript, an
der sich der Status von, sagen
wir, Bewegung zu Nichtbewegung ändert . Wir haben hier also keine Bewegung. Also, sobald die Webcam ausgelöst wird, sagen
wir, ist der Status Null. Also nur ein Symbol, das
ich auswähle, um anzuzeigen , dass es
im aktuellen Bild keine Bewegung Dann erhalten Sie
das erste Bild, das den Status Null hat,
und dann graden Sie aus, und dann überprüfen Sie, ob
das erste Bild keines ist, und dann setzen Sie
die Schleife wieder fort und dann nehmen Sie
das zweite Bild Der Status ist also immer noch Null, dann wenden Sie die Differenz an,
den Schwellenwert, und erweitern Und dann rasieren Sie durch die Konturen. Wenn Sie also einen Bereich finden, der kleiner
ist, als ich das zuvor
geändert
habe, gebe ich 10.000 an Ich wollte also
größere Objekte erkennen , weil ich näher an der Kamera
war, also wollte ich sie anpassen. Je nachdem, welche Objekte
Sie aufnehmen möchten, möchten
Sie
diese Pixel hier anpassen. 10.000 ist also so etwas wie ein Fenster mit
100 mal 100 Pixeln. Wir prüfen also, ob Sie kein Fenster
finden, das
größer als 10.000 ist, dann mit dem Anfang
der Schleife fort , bis Sie
ein Steuerelement mit dieser
Größe finden , das größer ist. Wenn Python das
Steuerelement mit dieser Größe findet, wollen
wir
den Status auf eins ändern Okay. Und lassen Sie uns jetzt diese Statusvariable
ausdrucken. Sie möchten sie also am Ende
Ihrer Schleife
ausdrucken, also den Status. Und lassen Sie mich
diese Numpy-Arrays löschen, die gedruckt werden. Die brauchen wir nicht und
machen hier Platz. Das ist also innerhalb der Schleife, und ich erwarte jetzt, dass der
Status Eins oder Null
ausgedruckt wird, je nachdem, ob ein Objekt
im Rahmen
befindet oder nicht. Wenn das funktioniert, bedeutet
das, dass wir jetzt den
aktuellen Status des Frames haben und wir diese 10 für
andere Dinge verwenden können. Also lass uns sehen. Okay,
im Moment gibt es nichts. Lass mich das minimieren, damit
wir die Konsole sehen können, das auch. Großartig. Also Null wird ausgedruckt, und wenn etwas
auftaucht, siehst du jetzt eins. Nochmals, eins, null, eins,
eins, null. Großartig. Wir können jetzt einfach
eine Datums- und Uhrzeitmethode anwenden, weißt
du, wie es die
Datumszeit jetzt tut. Und das würde
die Uhrzeit jedes Frames aufzeichnen. Also genau das wollen wir nicht. Wir wollen die Methode „Daytime
Do Now“ verwenden, aber nicht so, weil das die
Zeiten für jeden Frame aufzeichnen würde. Stattdessen wollen wir wissen, wann
sich
der Status auf 0-1 ändert,
was darauf hindeutet, dass
ein Objekt in den Frame eindringt Also wollen wir diese Zeit aufzeichnen. Und wir wollen auch das andere Mal
aufnehmen wenn sich der Status auf 1:0 ändert, sodass das Objekt den Frame verlässt Sagen wir eine Statusliste, das wäre gleichbedeutend mit leeren
Klammern, einer leeren Und dann möchte ich den Status
des Objekts an diese Liste
anhängen des Objekts an diese Liste
anhängen Nachdem diese Schleife
beendet ist, die hier ist, möchte ich hier auf
derselben Ebene wie die Schleife sein, also möchte ich
etwas außerhalb der Schleife anwenden Also Statusliste, ich
möchte den aktuellen Status
der Liste hier in
dieser Statusliste anhängen der Liste hier in
dieser Statusliste Großartig. Und zur Veranschaulichung, um Ihnen zu zeigen, worum es in dieser
Statusliste geht, würde
ich sie gerne ausdrucken
. Und ich möchte eine Liste außerhalb
der Drahtschleife
ausdrucken , also möchte ich sie nicht
jedes Mal ausdrucken , wenn die Schleife wiederholt wird Also Bewegung hier. Und kündige. Das sind also die Status
für jeden der Frames. Also Null, Null,
Null, keine Bewegung, und dann ist etwas
in den Frame eingedrungen Und dieses Etwas ist
eingedrungen, sagen wir, 30 Frames, und dann verlässt das
Objekt den Frame Und das ist es. Was wir jetzt tun wollen, ist festzuhalten, was als Nächstes kommt. Als Nächstes wollen wir also die Zeit erfassen
, in der wir 0-1 und auch 1-0 wechseln Im Grunde geht es uns also
darum, die letzten beiden
Elemente der Statusliste zu erfassen Nehmen wir an, wir
haben den Status Null. Wir beginnen also mit einer leeren Liste, und das erste Element
, das
an die Statusliste angehängt wird , ist Null Und dann wird das zweite Element, sagen
wir, Null sein oder sagen
wir, es wird eins sein Deshalb wollen wir eine
Bedingung anwenden, um zu überprüfen , ob sich die letzten beiden Elemente
der Liste ändern. Ich weiß, das mag verwirrend sein, aber sobald ich diese
vier Codezeilen hier geschrieben habe, wirst
du es verstehen und es
wird sehr viel Sinn machen. Also wollen wir überprüfen,
ob die Statusliste da ist. Also das letzte Element
der Statusliste, das einen Index von minus
eins hat, denken Sie an die Listenindizierung, wenn das gleich eins ist, und die Statusliste mit dem
Index minus zwei Das Element, das zuerst hinzugefügt
wurde,
das Element, das an
zweiter Stelle hinzugefügt wurde, ist also gleich Null Wir möchten den Tag
dieses Ereignisses in einer Liste festhalten. Lassen Sie uns hier also eine Liste erstellen, sagen wir mal ist leer Und dann gehen wir hierher
und sagen, Zeiten anhängen,
Tageszeit, Punkt jetzt, Sie
kennen diese Funktion Also wollen wir den aktuellen Zeitstempel anhängen, zu dem
diese Änderung eingetreten ist Das heißt also, wir
müssen das oder von Datum, Uhrzeit, Datum und
Uhrzeit importieren Also Tagesunterricht aus
der Datetime-Bibliothek. Wir zeichnen also im Grunde die Zeit auf, zu der sich der
Status auf eins geändert hat Und wir wollen auch
die Zeit aufzeichnen, zu der sich der
Status auf 1:0 ändert Wir hätten also eine
ähnliche Bedingung, aber diese wäre Null und
das wäre eins. Okay. Also, was hier passiert ist, gehen
wir zurück zum
Anfang der Schleife. Also hat Python
das erste Bild aufgenommen, und er
konvertiert es in Grau und verwischt es
und wendet
dort eine Gaußsche Unschärfe auf das erste Bild an Und dann speichern wir
den ersten Frame in der ersten Frame-Variablen, und dann machen wir
weiter und berechnen die Differenz zwischen
dem ersten Frame und dem aktuellen
Frame, finden Konturen, und wenn dieser Tiefpunkt
Konturen über 10.000 findet, ändert sich
die Statusvariable von Null, also hat sie bei Null angefangen, also ändert sie sich hier bei eins. Und das bedeutet, dass diese
leere Statusliste einen anderen Wert
erhält. Aber der erste Wert
ist immer Null, also
beginnt die Liste mit Null. Du weißt schon, wie hier. Also der
allererste Wert ist Null. Nehmen wir also an, für
die nächsten zehn Frames wird
es Null,
Null, Null sein und so weiter. Und wenn dann ein Objekt
in den Frame eindringt und der Status dann auf eins
wechselt. Wir haben also Null, Null, Null, Null und dann Eins. Und dann vergleichen
wir hier die letzten beiden
Punkte der Liste. Okay. Und hier möchte ich die Zeitliste
ausdrucken , damit
du siehst, was vor sich geht. Und ich erwarte hier bei
der ersten Ausführung einen Fehler hier bei
der ersten Ausführung weil wir
noch etwas zu tun haben, aber mal sehen. Also, ja, es heißt, der
Listenindex liegt außerhalb des zulässigen Bereichs. Das bedeutet, dass Python
Probleme hat, auf
das zweite Element
der Liste zuzugreifen das zweite Element
der , weil die
Liste hier keine Elemente enthält, also keine Elemente enthält. Und dann fügen wir ein Element hinzu, also fügen wir den Status hinzu. Und dann versucht Python, das zweite Element zu
finden, aber es gibt kein zweites Element. Also müssen wir hier einen Trick machen. Wir müssen zwei Artikel hinzufügen. Okay. Sagen wir, keiner und keiner. Lassen Sie uns
das Skript jetzt erneut ausführen. Im Moment ist
dort also kein Objekt. Jetzt erscheint ein Objekt, es geht
zweimal wieder raus und noch einmal. Also drei Eingänge.
Und ich habe damit aufgehört Lassen Sie mich jetzt
diese Liste durchgehen. Das ist unsere Zeitliste. Das ist also die Zeit. Also hier der Monat, der Tag und wie Minuten und Sekunden,
und dann Mikrosekunden hier drin. Das ist also die Startzeit , zu der ein Objekt den
Frame zum ersten Mal betrat Und dann ist dies eine Zeit, in
der das Objekt den Rahmen verlässt. Also blieb ich 2 Sekunden dort, also 51 bis 53. Das nächste Objekt kommt in den Rahmen. Also von dieser Sekunde bis zu dieser, also für zwei weitere Sekunden, und dann noch ein drittes
Mal 0-1 für 1 Sekunde Also haben wir drei
Eingänge im Rahmen. Also hoffe ich, dass das Sinn macht. Das ist gut, aber
manchmal kann es passieren, dass, wenn Sie das Skript
ausführen, sodass Sie einen Hintergrund haben, das Objekt angezeigt
wird und das Objekt
verschwindet und wieder angezeigt wird. Und wenn Sie
das Programm zu diesem
Zeitpunkt beenden , lassen Sie es mich beenden. Sie werden sehen, dass Sie
hier eine Startzeit für den ersten Eingang
haben , dann die Endzeit und dann haben Sie
hier
eine weitere Startzeit für den zweiten Eingang. Aber dann hast du keine
Ausgangszeit. Vielleicht möchten Sie also
die Endzeit
des Austritts Ihres letzten Objekts hinzufügen , dem Zeitpunkt, zu
dem das Fenster geschlossen wurde. Sie möchten also am Ende
hierher gehen und das Skript
wartet auf einen Schlüssel. Wenn Sie hier also auf Quit drücken, wird
die While-Schleife unterbrochen. Aber vorher sollten
Sie vielleicht den Status überprüfen. Wenn der Status also eins ist, und in diesem Fall würden Sie
dieses Szenario hier haben. Wenn der Status also eins ist Sie die Taste auf
der Tastatur drücken, möchten
Sie Ihrer Zeitliste ein weiteres
Element hinzufügen. Also Tageszeiten angehängt
, das ist jetzt, großartig. Also das sollte jetzt
anders funktionieren. Also lass uns das Skript ausführen. Kein Objekt. Objekt. Kein Objekt, Objekt im Frame, beenden. Und jetzt sollten wir
vier Tage hier sein. Viermal, eins, zwei, drei und vier. Das hier wurde also in
diesem Ausdruck hier aufgezeichnet. Großartig. Und das nächste, was wir jetzt tun
wollen, ist,
diese Liste in einen
Pandas-Datenrahmen
und dann in eine CSV-Datei zu werfen diese Liste in einen
Pandas-Datenrahmen . Wir werden also eine Start
- und eine Endspalte haben. Und in der Startspalte hätten
wir zum Beispiel diesen Wert und in
der Endspalte hätten
wir die anderen Werte. Also dieser hier und
der letzte. Okay. Zuallererst brauchen wir einen leeren Datenrahmen,
Pandas-Datenrahmen Also werden wir natürlich Pandas verwenden , um
Datenrahmen zu erstellen Also lass mich Pandas hier importieren. Und nehmen wir an, der Datenrahmen
DF entspricht Pandas DataFrame, wobei die Spalten so einfach beginnen und enden Dadurch wird für uns eine
Datenrahmenstruktur erstellt, die keine Werte hat, aber zwei Spalten hat Und dann
ist das nächste
, was Sie tun möchten, außerhalb des Regelkreises. Sobald Sie also
Ihre Zeitliste erstellt
haben , möchten
Sie diese Liste durchgehen und diese Werte
dann an
den Pandas-Datenrahmen anhängen diese Werte
dann an
den Pandas-Datenrahmen anhängen Sie benötigen also eine Schleife, sagen wir, für I Also müssten Sie hier mit einem Zweierschritt
iterieren. Und Sie würden so
oft
iterieren wollen, wie Werte in der Liste enthalten sind Also fängst du bei Null an und landest
dann bei wie vielen Werten
du in der Liste hast Nun, Sie können das
mit der Längenmethode herausfinden, also Länge mal mit
einem Zweierschritt. Toll. Das heißt, bei
jeder Iteration DF-Solid-Datenrahmen
sich selbst gleich Punkt anhängen. Sie
aktualisieren also den Datenrahmen, und hier müssen Sie ein Wörterbuch
übergeben Für die Startspalte müssten
Sie also die Zeiten
I und für die Endspalte eingeben. Die Schlüssel des Wörterbuchs
hier sind also Start und Ende, und Sie sollten die Zahlen I plus eins anhängen Und Sie möchten den Index ignorieren. Also gleich T. Großartig. Also, sagen wir, für mich in Reichweite wäre das, sagen wir, wir haben eine
Liste mit sechs Einträgen. Wir haben also drei Sterne
und drei Mal. Das würde also einen Bereich von Null
bis Sechs mit einem Schritt von zwei bedeuten. Für Null würden wir das also tun. Also fangen wir in der Schleife bei
Null und greifen zeitweise auf das Objekt
mit einem Null-Index zu, was zufällig zum Beispiel dieses
Element ist. Also der erste Gegenstand. Und dann hängen wir dieses Element an die erste Zeile
der Startspalte an Und dann greifen wir auf das
Element Null plus eins zu, das zufällig
ein Element mit Index eins ist, was dieses
Element sein sollte, also das zweite Element Und wir hängen dieses Element an die letzte Spalte für dieselbe Zeile Das ist es also. Dann gehen wir zum nächsten Punkt. Diesmal würden wir also mit Index drei
beginnen, also drei hier, also drei hier, fügen es der Startspalte hinzu
und dann vier fügen es
der Startspalte zur Endspalte hinzu, tut mir leid und so weiter. Und schließlich
hätten wir einen Datenrahmen. Und was Sie dann vielleicht tun
möchten, ist DF zwei CSV. Sagen wir mal CSV. Also exportieren wir den
Datenrahmen in eine CSV-Datei. Großartig. Mal sehen,
wie das ausgehen wird. Es wird ziemlich dunkel hier. Okay. Und noch einmal. Frame, hör auf. Und wie Sie sehen,
wurde die CSV manchmal in meinem Dateisystem erstellt. Und das sind die Zeiten. Ich kann es auch mit Excel öffnen. Das sind also die
Start- und Endzeiten. Wenn Sie möchten, können Sie
sie hier formatieren, Zellen formatieren, und Sie können die Daten jetzt sehen. Großartig. Großartig. Damit ist dieser Vortrag beendet,
und ich hoffe, er hat Ihnen gefallen. Wir haben jetzt ein ziemlich gutes Drehbuch, und um es schöner zu machen, würden
wir
diese Zeiten grafisch darstellen wollen. So verwandeln Sie Ihre
Daten in echte Informationen. Und das werden wir in
den nächsten Vorlesungen tun. Aber vorher möchte ich
Ihnen die Bouquet-Bibliothek vorstellen , eine Bibliothek
für interaktive Visualisierungen im Bitte folgen Sie den Vorlesungen
in der richtigen Reihenfolge, und ich bin mir sicher, dass Sie
viel lernen werden Wir sprechen später mit dir.
124. 123. Einführung in die Bokeh-Bibliothek +: Hallo, und natürlich willkommen in diesem neuen und sehr aufregenden
Bereich Und in diesem Abschnitt, also in den
Vorlesungen dieses Abschnitts, werden
Sie lernen,
wie Sie mit
Python Visualisierungen im
Browser generieren mit
Python Visualisierungen im
Browser Wir sprechen also von
interaktiven Visualisierungen, und dafür werden wir die
Bouquet-Python-Bibliothek verwenden Boke ist also eine Python-Bibliothek,
und sie ist ziemlich neu. Und mit Bouque
können Sie Daten aus
verschiedenen Datenquellen,
Datendateiformaten wie CSV,
Python-Liste,
JSON-Dateien usw. abrufen Datendateiformaten wie CSV, Python-Liste,
JSON-Dateien usw. Und Sie können wunderschöne
Visualisierungen im Browser erstellen Visualisierungen Ich war ein Benutzer von
Math Plus Lib und Seaborn. Also zwei weitere
Python-Bibliotheken, die verwendet werden, um Visualisierungen
mit Python
durchzuführen Aber ich würde sagen,
Boke ist moderner. Und sobald ich es Ihnen vorgestellt habe, bin
ich mir sicher, dass Sie es für
Ihre
Datenvisualisierungsprojekte verwenden werden Ihre
Datenvisualisierungsprojekte In diesem Abschnitt werde
ich Ihnen zeigen,
wie Sie Linien- und
Streudiagramme erstellen und wie Sie
verschiedene Diagramme zu
einem Diagramm und
Zeitreihendiagrammen kombinieren
können verschiedene Diagramme zu einem Diagramm und
Zeitreihendiagrammen Und wir werden den Code
in das Jupiter-Notizbuch schreiben, das früher als
IPython-Notizbuch bekannt war Und das Jupiter-Notizbuch ist wie eine Kombination
aus Python-Konsole, sodass Sie interaktiven Code schreiben, aber Sie können auch das von Ihnen geschriebene
Skript speichern. Das Jupiter-Notizbuch sieht
ungefähr so aus. Okay. Und ich zeige Ihnen in der nächsten Vorlesung, wie
Sie das Jupiter-Notebook installieren. Daher eignet sich Jupiter hervorragend für
Datenanalysen und Visualisierungen sowie für Web-Scrapping
und andere Also ich bin mir sicher, dass du es lieben wirst.
Und hier, lass uns mit der nächsten Vorlesung weitermachen.
125. 124. Erstelle deinen ersten Bokeh-Plot: Großartig. Jetzt weißt du, was Boke ist, weil ich das
in der vorherigen Vorlesung erklärt habe In dieser Vorlesung
zeige ich Ihnen, wie Sie
ein sehr einfaches Buchdiagramm erstellen ein sehr einfaches Buchdiagramm Ja, also fangen wir bei
Null an und werden das Diagramm Schritt für Schritt verbessern. Ja, nehmen wir an, das
ist dein erstes
Buchdiagramm oder vielleicht hast du schon einmal Buchgrafiken
erstellt. Also, bevor du diesen Kurs
belegst, weißt du, schon ein paar Dinge. Dennoch würde ich vorschlagen, dass Sie hier beginnen , weil ich Ihnen Schritt für Schritt
die richtige Logik zur
Erstellung von Diagrammen zeigen werde . Ah, lass uns weitermachen
und das machen. Mm. Ich verwende manchmal Jupiter-Notizbuch,
um Python-Code zu schreiben, und manchmal verwende
ich den Atom-Editor. Das Jupiter-Notizbuch
ist also eigentlich ein guter
Anfang, weil es uns ermöglicht, interaktiven Code zu
schreiben. Wir können einfach eine einzelne Codezeile
schreiben und sehen, was sie macht. Das ist also großartig, um mit einer Bibliothek zu
beginnen, damit Sie die Bibliothek erkunden
können, indem Sie kleine Codeteile
probieren. Und wenn Sie die Umschalttaste drücken und mit der rechten
Maustaste auf Windows über dem Ordner klicken ,
können
Sie hier das Befehlsfenster öffnen. Dadurch wird eine Eingabeaufforderung
im aktuellen Ordner geöffnet. Auf einem Macro-Linux können
Sie also vielleicht so etwas
wie das Terminal hier öffnen oder Sie können
ein Terminal normal und dann den
Pfad zu Ihrem Arbeitspfad auf CD speichern. Also werde ich den
Code in dieses Verzeichnis schreiben. Und um Jupiter zu installieren, würdest
du sagen, PIP installiere
Jupiter Notebook Und diese
Anforderung ist bereits erfüllt, da ich Jupiter Notebook bereits
installiert habe Jupiter Notebook bereits
installiert Wenn Sie das nicht getan haben, können Sie
einfach weitermachen
und, Sie wissen schon, es
wird für Sie installiert. Und um Jupiter Notebook zu starten, würdest
du einfach Jupiter
Notebook sagen. Und das öffnet ein
Jupiter-Notebook auf dem lokalen Host. Es ist also wie ein
servicebasiertes Notebook. Und ja, wenn du jetzt etwas erstellst, erstellst du ein
Python-kostenloses Notizbuch. Und nenne es. Einfach so ein einfaches
Diagramm. Und im Demo-Ordner haben
Sie diesen einfachen
Grafikpunkt IPYNB, der für IPython-Notebook steht
, aber jetzt wird das
iPython-Notizbuch in Jupiter Notebook umbenannt Aber die Erweiterung bleibt immer noch dieselbe. Und Sie haben auch
diese Checkpoints, bei
denen es sich um Dateien handelt, die automatisch reduziert werden, wenn Jupiter Ihre Sitzungen
speichert Jetzt sollten Sie Ihre
Befehlsfront offen lassen, und dann schreiben
Sie hier den Code Wissen Sie, wenn Sie Jupiter-Bücher nicht
bevorzugen, können
Sie Ihren
Lieblingseditor verwenden. Das wäre also Atom oder Vim oder die
Standard-Python-IDE und so weiter Es spielt keine große Rolle. Und ich werde Kommentare verwenden,
um meinen Code zu kommentieren, und das wird dir helfen, meinen
Code leichter zu lesen und zu verstehen, weil , weißt
du, ich werde hier etwas Code schreiben und etwas Code und später so. Und ich werde
den Code erklären, während ich ihn eintippe. Aber manchmal
vergisst du, was ich
hier eingegeben habe , und du hast Mühe, es
zu verstehen, aber wenn ich hier einige
Befehle habe, sagen
wir, die X- und Y-Werte grafisch darzustellen Und wenn ich
diesen Kommentar hier schreibe, liest
Python ihn nicht als
Code, also ignoriert es ihn, aber du kannst ihn lesen
und du wirst davon ausgehen , dass ich diesen
Kommentar für den nächsten Block schreibe. Also schreibe ich den Befehl, lasse kein Leerzeichen und
tippe den Code dort ein. Und dann lasse ich dort
ein Leerzeichen und gebe dort
einen anderen Code ein. Es ist also ein weiterer Block, nichts
mit diesem Befehl zu tun hat. In diesem Kommentar wird es also um
diesen Codeblock gehen. Manchmal möchte ich vielleicht spezifische
Kommentare zu bestimmten Zeilen hinzufügen. Zum Beispiel dieser hier. In diesem Fall schreibe ich
den Befehl einfach dort. Also sagen wir für die X-Werte hier oder
so ähnlich. Großartig. Und der erste Kommentar bezieht sich
normalerweise auf das Drehbuch. Wir werden also ein einfaches BOE-Diagramm
erstellen. Das wird ein
Liniendiagramm sein. Großartig. Und ich lasse dort ein Leerzeichen
und hier starte ich den Code. Also zuerst werde ich Boke
importieren. Ich werde das später
erklären, aber Bouquet hat ein
paar Schnittstellen Und die erste Schnittstelle
ist das Plotten von Blumensträußen. Es wird also die Oberfläche zum
Plotten von Blumensträußen genannt. Und ich werde
die Schnittstellen später durchgehen. Konzentrieren wir uns zunächst
darauf, wie ein Diagramm aussieht
und wie der Code aussieht,
um ein Booger-Diagramm zu erstellen Aus dem Import von Bouquet-Plots
importieren Sie also das Figurobjekt, das
wichtigste Objekt in Bouquet, weil quasi einen Container
enthält, in
dem Sie Punkte und Linien hinzufügen, und
Sie hatten
Beschriftungen für die Punkte, und Sie hatten Noten für die
Handlung, Legenden Sie fügen also alles
zu diesem Figurobjekt hinzu. Das ist es. Und dann benötigen
Sie einige hilfreiche Tools von
Bokeh, die von der
Booke Dot IO-Schnittstelle stammen Von dort aus möchten Sie die Ausgabedatei
importieren und anzeigen. Ja, das ist im Grunde das
, was wir brauchen. Sie werden gleich sehen
, was das alles ist, und dann müssen wir einige Daten
erstellen. Lassen Sie uns dort also einige
gefälschte Daten erstellen. Bereite einige Daten vor. Ich werde Listen verwenden. Sagen wir, eins, zwei,
drei, vier und fünf. Das ist also für die X-Achse. Im Diagramm
werden
diese Werte also entlang der X-Achse abgebildet Und dann haben wir dort
die Y-Achse. Sagen wir, sechs, sieben,
acht, neun, zehn. Beachten Sie, dass diese Listen dieselbe Länge haben müssen, um sie
in Bukit grafisch Andernfalls gibt Bouquet
einen Fehler aus. Ich werde sagen, dass Sie wissen, Bouquet anfangen wird, Paare aus dieser Liste zu
nehmen. Es braucht also eins und sechs, und es wird diese entlang
der X- und Y-Achse abbilden. Es wird also ein Punkt
mit den Koordinaten eins
und sechs, dann zwei und
sieben usw. erstellt . Ich mache fünf und zehn durch. Wenn Sie dann hier eine
Zeilennummer hinzufügen, sagen wir sieben oder was auch immer, wird
Python sagen:
Oh, ich habe kein Paar
für sieben auf der Y-Achse gefunden. Sie erhalten also eine Fehlermeldung. Großartig. Also haben wir die Daten. Bereiten Sie die Ausgabedatei vor. Hier verwenden Sie also
die Ausgabedateifunktion. Und dort übergibst du den Namen der HTML-Datei, die erstellt
wird Sie können also
jeden gewünschten Namen wählen. Und als Nächstes
möchten
Sie eine Figurenobjektinstanz erstellen. Sie haben dort die Figurenklasse. Sie haben es eingegeben
und können es
jetzt einfach so verwenden jetzt einfach so Ich speichere das
in der Variablen F. Lassen Sie mich das kommentieren.
Figurobjekt erstellen. Und dann endlich ein Liniendiagramm
erstellen. Und um
das Liniendiagramm zu erstellen verweisen Sie auf das
Figurobjekt, das Sie erstellt haben, und wenden dann
die Linienmethode wenn Sie eine Linie erstellen möchten. Und die Linie erwartet
von Ihnen, dass Sie
das X-Array mit Daten
und das Y-Array ebenfalls übergeben . Ich weiß also, dass alles, was
ich hier gebe,
die Mindestanforderungen sind , um ein Grundstück zu bauen. Aber es gibt viele
Funktionen, die Sie später
hier im Code hinzufügen
werden
, sodass wir unsere Plots
mit Funktionen
wie Legenden und Beschriftungen, Farben
und
Transparenz usw. bereichern wie Legenden und Beschriftungen . Aber das ist sozusagen das
Rückgrat. Und wenn Sie einmal eine Linie
erstellt haben, müssen Sie nur noch
die Show-Methode verwenden , um
Ihr Figurobjekt anzuzeigen. Und um das in Jupiter auszuführen, können
Sie einfach
Control und Enter drücken. Warte eine Sekunde. Und ich
habe dort einen Fehler bekommen. Oh, aber es sollte eine
Ausgabedatei sein. Tut mir leid. Führen Sie es erneut aus und hier
ist das Liniendiagramm. Wie dem auch sei, wenn Sie sich das ansehen, sehen
Sie, dass der erste Punkt der Linie an
der ersten Koordinate liegt Das ist also die X-Achse, eine für die X-Sechs für das Y. Wenn Sie hier hinschauen, sind es eins
und sechs, und dann haben Sie
zwei und sieben und so eins bis zum letzten Punkt
, der fünf bis zehn ist Fünf und zehn. Ja. Also das ist eine Grafik. Und das ist kein Bilddiagramm. Wie Sie sehen können, kann ich das
verschieben und Sie haben hier auch
ein paar Tools. Diese werden also Tools genannt. Und was Sie
damit machen können, sagen
wir, das ist ein Stift, und Sie sehen hier diese
vertikale blaue Linie,
das bedeutet, dass das
Stiftwerkzeug bereits aktiviert ist. Und wenn ich meinen
Cursor so bewege, schiebe ich mit dem Stift um das Diagramm herum. Wenn Sie,
sagen wir, auf das Zoomrad klicken, werden
Sie sehen, dass sowohl Pan als auch Radzoom jetzt
aktiviert sind, und ich kann das Mausrad verwenden, um die Ansicht zu vergrößern und zu verkleinern. Denken Sie jetzt daran, dass ich Ihnen gesagt habe, Bouquet interaktive
Grafiken erzeugt. Also hier ist es. Dies ist jedoch nur
eine grundlegende Funktionalität der Interaktivität, da ich Ihnen später, wie ich Ihnen bereits sagte, hier
Widgets hinzufügen werde, die sehr stark mit einem
Diagramm
interagieren Wie dem auch sei, im Grunde haben Sie
auch dieses Feld Zoom, mit dem Sie einen
bestimmten Bereich Ihres Diagramms vergrößern können Dort hast du auch dieses
Reset, wodurch das
Diagramm tatsächlich auf seine Standardansicht zurückgesetzt Und was noch übrig ist, wir
haben diese Hilfe-Schaltfläche, die Sie zur
Bouquet-Dokumentation gelangen, und ich werde die
Bouquet-Dokumentation später durchgehen, die für
Sie sehr hilfreich ist, um Hilfe zu erhalten Und es ist auch eine sichere
Schaltfläche hier, mit der
Sie Ihre Diagramme
in PNG-Grafiken und Bildern speichern können. Wenn Sie also Ihr Diagramm jemals in Bilder konvertieren
möchten , können
Sie diese Schaltfläche verwenden. Und a, es geht darum
, ein einfaches Diagramm zu
erstellen, und ich möchte dir ein
paar Übungsaufgaben
geben , weißt du. Weißt du, hier habe ich ein Liniendiagramm
verwendet, aber du kannst auch andere
Arten von Glyphen verwenden So werden diese
Geometrien in
Boha genannt und Sie können sich ein Bild
davon machen, welche Glyphen Sie verwenden können. Sie können sie auf Ihre
Figur anwenden, indem
Sie D und F ausführen, was die Objektinstanz Ihres
Figurobjekts ist Du wirst es hier sehen,
lass uns die Linie finden. Hier ist die Linie. Das ist also der,
den du benutzt hast. Aber ich möchte Sie bitten, Ihre eigenen Grafiken
mit
dem Dreieck
zuerst Alana Circle zu erstellen mit
dem Dreieck
zuerst Alana Circle Das wäre also sehr einfach. Anstatt der Warteschlange, reichen Sie
diese Dinge einfach hier weiter und
sehen Sie, was Sie bekommen. Aber versuche,
das Diagramm von Grund auf neu zu erstellen ,
anstatt meins zu kopieren. Und lassen Sie mich das kommentieren.
Ich habe vergessen zu kommentieren. Sie können auch mit
einigen anderen Daten herumspielen , um zu
sehen, wie das funktioniert. Und ja, das wird
sicherstellen, dass Sie verstehen, wie man ein
sehr einfaches Bouquet-Plot erstellt. Und in der nächsten Vorlesung werde
ich Ihnen zeigen, wie Sie
realere Daten verwenden können. Wir verwenden sie also hier, aber
in der nächsten Vorlesung werden
wir CSV-Dateien verwenden. also aus einer CSV-Datei zeichnen, werden
wir dasselbe
Diagramm erstellen. Wir sehen uns dort
126. 125. Bokeh mit Pandas verwenden +: Gut. Wir konnten mit diesem Code ein Liniendiagramm
erstellen, und ich hoffe, Sie haben ein wenig mit
diesem Code
herumgespielt und sich damit vertraut gemacht. Nun, Sie sehen hier, dass wir zwei Listen als Ausgabe
haben. In dieser Vorlesung werde ich Ihnen
beibringen, wie Sie CSV-Dateien
verwenden, um
Ihre Boket-Diagramme Und ich werde diesen
Code als Referenz verwenden. Also werde ich einfach, du weißt schon, du musst Escape drücken. Wenn Sie
Escape drücken, können Sie
Tastenkombinationen und
Tastenkombinationen auf Ihre Zellen anwenden . Und Sie können hier eine Liste von
Tastenkombinationen sehen . Und
was ich
jetzt zum Beispiel tun möchte, ist, dass ich eine Zelle mit C
kopieren und dann
einfügen möchte ich die Zelle darunter mit
V einfügen. Aber zuerst müssen
Sie sich im Befehlsmodus befinden. Um also in den Befehlsmodus zu wechseln, müssen
Sie Escape drücken, wie es im Hilfeskript steht. Und ja, stellen Sie sicher, dass Escape
und dann C und dann, und Sie bekommen eine weitere
Zelle hier drin. Außerdem möchte ich diesen Header
hier tatsächlich
entfernen und zu View,
Togle Header und dann auch
TogleToLbr gehen Togle Header und dann auch
TogleToLbr gehen Also habe ich hier mehr
Platz für dich. Also das ist der Code, mit dem
ich arbeiten werde. Geben Sie ein und ja, ich werde vorerst an diesem Code
arbeiten. Und lass mich hierher gehen. Das ist ein Arbeitsverzeichnis. Ich werde einfach weitermachen und eine CSV-Datei
erstellen. Sagen wir Dot Dot CSV. Ja, und ich werde es einfach mit Nopats bearbeiten. Sie können Excel verwenden, wenn Sie möchten. Also werde ich hier nur
zwei Spalten haben. Das ist die Kopfzeile und
dann eine für X, sechs, für Y, zwei und sieben und
drei und acht und vier und neun und noch eine weitere, zehn. Spar dir das. Schließ es. Beachten Sie also, dass sich der
Datenpunkt CSV im
selben Verzeichnis wie der grundlegende Grafikpunkt IPYNB befindet,
und gehen Sie zu Ihrem Skript Jetzt importieren wir Boca hier, aber ich werde auch
Panels importieren Lassen Sie uns das
hier und Pandas erwähnen. Lassen Sie mich den Kleinbuchstaben
B verwenden und Pandas importieren. Ja, bereite ein paar Daten vor. Hmm. Also, ich nehme an,
du kennst Pandas Also im Grunde ist der
Datenrahmen das Hauptobjekt, und Sie möchten
einen Datenrahmen aus dem
CSV-Herbst erstellen , der
Datenpunkt CSV ist, einfach so Und dann lassen Sie uns hier
zwei Variablen erstellen. Die X-Variable
wird also gleich DF sein. Eckige Klammern, die X-Spalte. Verwechseln Sie also nicht die
X-Spalte mit der X-Variablen. Sie haben einfach zufällig
den gleichen Namen. Okay. Und auch das Y-Array, das F.Y? Okay. Ja. Ja, das sollte reichen. Lass mich das umbenennen.
Aus CSV. Ausführen. Und Sie erhalten genau
die gleiche Zeile wie zuvor, mit
der einfachen Liste hier drin. Und, ah, das ist
im Grunde die Art und Weise, wie Sie
Ihre Buchmacher-Plots mit
Pandas DataFrame-Arrays füttern Ihre Buchmacher-Plots mit
Pandas DataFrame-Arrays Also nochmal, ähm, nur um die Dinge zu verdeutlichen,
das ist der Er hat zwei Spalten, und Sie
haben dann die X-Spalte. Das wurde also gespeichert. Eigentlich ist das die
Indexspalte, diese hier. Das sind die tatsächlichen
Daten dieser Spalte. Und Sie haben dort auch
die Y-Spalte. Also, das ist es. Wie Sie sehen, ist
Bouquet in der Lage, Playlisten zu
lesen, also Pythleis wie diese hier, und aktuelle Playlisten und auch
Datenrahmen oder Serien Das nennt man also seriös. kannst du überprüfen.
Ja, ein ernster. Und ja, das ist es.
DD, um eine Zelle zu löschen. Und ja, wir werden dort mit ein paar weiteren
Vorträgen
weitermachen , wir sehen uns.
127. 126. Einen Zeitreihen-Plot erstellen +: Ordnung. In dieser Vorlesung lernen
Sie,
Zeitreihendiagramme zu erstellen. Wir sprechen von Daten,
bei denen sich eine der Achsen befindet. Normalerweise
besteht die X-Achse aus Daten oder Uhrzeiten. Nehmen wir an, wir haben
Temperaturbeobachtungen für mehrere Daten, und wir
müssen diese Werte
entlang der X- und Y-Achse aufzeichnen . Ich habe hier ein paar nette
Daten, die wir diesem Link
entnehmen werden. Es ist also eine CSE-Datei. Sie müssen
die CSV-Datei eigentlich nicht herunterladen, da wir sie
als Link direkt an
die CSV-Methode übergeben als Link direkt an
die CSV-Methode Was wir hier haben, ist eine Datumsspalte und einige
andere Attribute. Vielleicht möchten Sie
die Daten also entlang der X-Achse zeichnen. Und dann möchten
Sie auf der Y-Achse eines dieser Features zeigen. Nehmen wir dieses Attribut an, schließen wir. Also werde ich
das schließen. Ich brauche diese
Datei nicht, weil ich
einen direkten Link verwende und
mich eine neue Zelle erstellen lasse. Also werde ich hier wieder
die
Zeichenoberfläche von Bouquet verwenden hier wieder
die
Zeichenoberfläche von Bouquet Und importiere auch Pandas. Der Schlüssel hier ist, dass
wir einen
Pandas-Datenrahmen verwenden und dann diese Datenzeitspalte
als
Daten analysieren , sodass Python sie als
Daten liest und sie tatsächlich
auf der X-Achse zeichnen kann Und dann werden wir eine
Linienglyphe verwenden, um diese Daten zu plotten. Eine Linienglyphe
wäre also, weißt du, du kannst Kreise, Dreiecke usw. verwenden, aber
du kannst auch Linien Sie würden hier also eine Linie übergeben, aber dann macht die Größe keinen
Sinn, weil Sie vielleicht Line with für die Linie übergeben
möchten with für die Linie übergeben
möchten Also nicht Größe, sondern Linie mit. Und weißt du, wenn du
das ausführst , siehst du keine
Kreise mehr, also ist es jetzt kein Streudiagramm, sondern ein Liniendiagramm Also verwenden wir dasselbe Konzept
für die Erstellung dieses
Tageszeitdiagramms, des Zeitreihendiagramms Als Erstes möchten Sie also die CSV-Daten in Python
laden. Das Panel liest also CSV, und Sie können
den Link, diesen Link, direkt
an die CSV-Methode übergeben . Also, wie praktisch ist das? Und dann möchten Sie den
Parse-Datums-Parameter year übergeben
und
den Namen der Spalte angeben, und
den Namen der Spalte angeben in der
sich diese Daten befinden Und der Name dieser
Spalte war Datum. Wenn Sie sich
an die CSV-Datei erinnern , die ich zuvor geöffnet habe, war
das Datum. Sobald Sie also
das Datenrahmenobjekt geladen
haben, möchten Sie
ein Figurobjekt erstellen. Nehmen wir an, die Breite
entspricht 500 und wir kämpfen. Sagen wir vorerst 500, dann schauen wir, wie es läuft, und können es später ändern Wir haben hier also den
Typparameter der X-Achse. Damit sollten
Sie also Ihre Achse, Ihre X-Achse,
räumlich gestalten wollen , sodass Datentypen mit Datum und Uhrzeit gelesen werden
können. Um also zu deklarieren
, dass Sie Daytis haben, müssen
Sie dort ein
Tagesargument als Zeichenfolge übergeben Das ist es also. Und
dann möchten Sie das
Linienobjekt dort anwenden. Ähnlich wie jetzt müssen Sie die
X-Achse und die Y-Achse passieren. Die X-Achse hier
sollte also das DF-Datum sein. Und die andere Achse ist, sagen
wir, nah, also
die geschlossene Spalte. Und lassen Sie uns die Linie
orange machen. Und was sonst? Vielleicht eine Transparenz von 0,5. Und geben Sie an, wo Sie das speichern
möchten. Also unter welchem Namen HTML
Time Series Dot HTML. Und zum Schluss zeigen Sie die
Handlung. Und lass uns sehen. Und etwas funktioniert nicht, also kann
Python die Daten dort nicht abrufen. Oh, ich muss die Daten
hier eigentlich als Liste übergeben. Also ja, es sieht besser aus, aber es sieht auch
ein bisschen zusammengedrückt Also, was Sie hier tun können, ist, dass
Sie das auf, sagen
wir, 250 ändern können und Sie
erhalten dort ein besseres Diagramm Wenn Sie es nun auf
die gesamte Seite ausdehnen möchten , können Sie dort
etwas tun. Sie können
das Responsive tatsächlich weitergeben und es
auf true setzen. Nun, lass uns sehen. Also bekommst du dort eine größere Grafik. Und natürlich können Sie dort
hineinzoomen, um einige Details zu sehen. Für den 8. Mai haben
Sie also einen Wert von einer Unze. Sie verstehen die Idee. Damit
ist dieser Vortrag und wir sehen uns
in der nächsten.
128. 127. Weitere Visualisierungsbeispiele mit Bokeh: In Ordnung, lassen Sie es uns jetzt zusammenfassen. Also waren wir in der Lage, Graphen zu
generieren, und Sie haben gesehen, dass
wir bis zum Gesetz einzelne Graphen generiert haben. Hier sehen
Sie zum Beispiel ein Liniendiagramm. Wenn Sie nun
mehrere Glyphen in einem Diagramm kombinieren möchten, wäre
das sehr einfach Nehmen wir an, Sie
haben zwei Grundstücke. Sie werden dort ein
Streudiagramm hinzufügen. Sie müssen also eine
Kreisglyphe hinzufügen. Also direkt unter dieser Linienglyphe oder darüber spielt das keine Rolle Also Kreise mit diesen Koordinaten
oder wir können sie ändern. Lassen Sie uns also die X-Achse
verdoppeln. Acht mal zwei für mich in dieser
Liste, die hier endet. Und dann
sollte das die Größe sein, sagen
wir acht und oliv. So erhalten Sie also
mehrere Glyphen in einem Diagramm. Das war sehr einfach.
Und so glaube ich, gebe ich Ihnen eine gute Einführung in
die Bouquet-Bibliothek. Und ich glaube, Sie
sehen ihr Potenzial, also ist es großartig,
Bouquet tatsächlich für die Generierung von
Visualisierungen zu verwenden Bouquet tatsächlich für die Generierung von
Visualisierungen Wenn Sie nun
tiefer in Bouquet einsteigen möchten, also möglicherweise verschiedene Arten von Diagrammen
zeichnen müssen , weisen wir Sie zunächst
auf diese Ressource
hin Das ist also Dokumentation,
die Bouquet-Dokumentation. Und hier geht es ums
Plotten mit Glyphen. Was Sie hier haben, sind verschiedene
Beispiele. Wir verwenden tatsächlich diesen und auch
andere, Linien. Und Sie können auch Patches plotten. Im Grunde übergibst du hier die
Koordinaten
der einzelnen Punkte des Polygons und Bouquet zeichnet
das Polygon Das sind also die grundlegenden Dinge. Und hier möchte ich ein bisschen
aufhören. Also das hier nennt man
eigentlich
ein quadratisches Grundstück hier nennt man
eigentlich
ein quadratisches Anstatt also
einen Linienkreis zu passieren , passieren
Sie ein Quad Und woraus das
besteht, ist die Spitze. Also die obere Grenze
deines Quadranten. So hat zum Beispiel der
erste Quadront hier einen oberen Rand von zwei
und einen unteren von einem Es ist also die Grenze zwischen eins und zwei. Und dann
wäre links eins und rechts, 1.2, also eins links und 1.2 rechts. Und dann haben Sie
den nächsten Quadranten, das ist auch dieser hier mit
seinen Koordinaten, und hier sind die Farben sodass Sie
CSS-Farbcodes verwenden können, wenn Sie möchten, zusätzlich zu Farbketten wie Rot und Orange
und Gelb und so weiter Der Grund, warum ich
diesen Plot eingestellt habe , ist, dass wir diesen Plot verwenden
werden , um die
Zeiten für unser Videoprogramm zu visualisieren Also die Zeiten, zu denen
ein Objekt in
den Videoframe eintritt und wann das Objekt
den Videoframe verlässt Es wäre toll, wenn Sie
jetzt darüber
nachdenken würden, wie Sie die CS-Datei, die wir
zuvor im Videoprogramm
generiert haben,
verwenden und diese Datei
in einem ähnlichen Diagramm
wie diesem plotten in einem ähnlichen Diagramm
wie diesem Da gibt es einige
Tricks, und ich erwarte
nicht, dass Sie das
vollständig lösen, aber es ist gut, darüber
nachzudenken. Sie haben auch diese Galerie
hier, die Bouquet-Galerie. Hier haben wir einige
wunderschöne Grundstücke. Sie haben das Histogramm. Wenn du auf eines davon klickst, so werde
ich zum Beispiel diese Karte erstellen Sie können
diesen Code einfach kopieren und in
Ihr Skript einfügen und ausführen, und Sie erhalten dieselbe Map. Das wollte ich Ihnen über Bouquet
beibringen, und wir werden
es später, wie gesagt, verwenden,
um diese
Zeiten zu visualisieren, in denen sich ein Objekt in
unserem Videoframe vor
unserer Webcam bewegt unserem Videoframe vor
unserer . Also werde ich später
mit dir reden
129. 128. Zeitintervalle aus den von der Webcam-App generierten Daten zeichnen: Hallo und willkommen zu
dieser neuen Vorlesung. Also werde ich
hier unserem
Bewegungserkennungsprogramm
den letzten Schliff geben . Konkret werde ich mithilfe
der Bouquet-Bibliothek ein Diagramm
erstellen, in dem ich die Zeiten visualisiere
, zu denen das
Objekt in den Frame,
den Videoframe, eintritt und Frame,
den Videoframe, Und die endgültige Ausgabe wird ungefähr so
aussehen. Was wir hier haben, ist
ein Diagramm mit einer X-Achse. Das ist die Darstellung der Tageszeit, während die Y-Achse eigentlich
keinen Sinn Also nur eine vertikale Verlängerung
der Balken, die hier ist. Also was wir
hier haben ist, sagen wir, ich habe die Kamera an diesem
Tag gestartet, also am 17. März. Also diese erste
Aufnahme hier ist, Sie können sehen, dass sie an
diesem Tag angefangen hat und
nach 4 Sekunden beendet wurde. Dieses Objekt trat also am Startdatum in den
Frame und blieb dort für 4
Sekunden und verließ
dann den Videoframe In ähnlicher Weise haben wir
dieses andere Objekt. Also immer noch am 17. März. Und dann haben wir
diesen anderen hier. Und dann fängt
neulich hier an. Also der 18. März, und das sind die Stunden
zwischen diesen Tagen. Also 4:00 Uhr acht, 12, 16 und Zelt. Und Sie können auch sehen
, dass ich hier
Hover-Funktionen hinzugefügt habe , sodass ich diese Informationen erhalte, wenn ich
mit der Maus über diese Balken fahre Und Sie können hier auch hineinzoomen. Wenn Sie also mehr
Informationen dazu wünschen, können
Sie sich die
Informationen hier übersichtlich ansehen. Das ist also das Produkt. Das Skript
erzeugt im Moment
die Start- und
Endzeit
des Objekts, das in
den Frame eintritt, in einer CSV-Datei. Konkret löst das Programm
das Video von der Webcam aus Und dann hast du da ein paar
Gegenstände drin. Drücken Sie Cue zum Beenden. Also, was Sie bekommen,
ist mal die CSV-Datei. Wobei jede Zeile die
Startzeit und dann die Uhrzeit darstellt. Okay, das weißt du schon. Also im Moment haben wir hier auch
eine Liste mit dem Status
des aktuellen Frames. Das hat also,
sagen wir, 100 Elemente,
das heißt, wir hatten 100 Frames
in diesem 7-Sekunden-Video. Nun, das Erste, was
Sie vielleicht tun möchten, ist hier sehr schnell
eine kleine Verbesserung. Diese Liste, wenn Sie mit einer Webcam
ein langes Video aufnehmen lassen. Wenn Sie
sie also viele Stunden lang laufen lassen, wird diese Liste möglicherweise zu umfangreich Um Speicherprobleme zu vermeiden, Sie hier nachlesen. Hier überprüfen Sie also
das letzte Element
der Liste und das Element
vor dem letzten Element. Also die letzten beiden Artikel,
das bedeutet, dass wir diese anderen Artikel nicht
benötigen. Wir müssen also nur
zwei verlorene Gegenstände behalten. Das heißt, gleich nachdem wir den
neuen Status hier angehängt haben, sagen
wir, dass die Statusliste der Statusliste
entspricht, aber nur mit den
letzten beiden Elementen Wenn ich das jetzt ausführe, erhalte
ich nur
die letzten beiden Status des Videoframes, die als Liste
ausgedruckt Also die Liste wird hier gedruckt. Also das ist eine Verbesserung
, der Erinnerung zuliebe. Also, wie umgehen wir es, ein Grundstück mit Blumensträußen zu
bauen? Also müssen wir zuerst über
die Struktur unserer Skripte nachdenken . Also dieses
Plotobjekt, das wir mit einem Quadranten erstellen
werden, also wird davon ausgegangen, dass ein
Datenrahmen als Eingabe gesendet wird Wir haben hier also tatsächlich
einen Datenrahmen. Und wir senden
den Datenrahmen an die Zeit der CSV-Datei. Ich werde hier eine weitere Datei
erstellen, ein
Python-Skript, sagen wir, Punkt Pi
plotten Und hier
schreibe ich das Skript, den Code
zum Plotten der Daten In diesem Fall
bedeutet das, dass wir
den Datenrahmen dieses
Bewegungsmelderprogramms in dieses Skript übernehmen müssen den Datenrahmen dieses
Bewegungsmelderprogramms in dieses Skript übernehmen müssen Was Sie also tun können, ist
, aus
Bewegung, Detektor, DF importieren zu wollen Bewegung, Detektor, DF importieren Dadurch wird
der DF-Datenrahmen verfügbar gemacht, der in diesem
Bewegungsmelderprogramm generiert
wird , was bedeutet, dass Sie, wenn Sie das Programm später ausführen
möchten, den
Plotpunkt Pi mit Python ausführen werden Wenn Sie also Plotin Punkt Pi
ausführen, wird
Plotting Dot Pi die
Ausführung dieses Punkt-Py-Skripts für den
Bewegungsmelder aufrufen Ausführung dieses Punkt-Py-Skripts für den
Bewegungsmelder Das Video von einer Webcam wird also gestartet, und wenn
diese Schleifen enden, wird
dieser Datenrahmen generiert Das heißt, danach das Skript, der Code
des Plotpunkts Pi
ausgeführt Also hier
bekommst du den Datenrahmen und plottest ihn und so weiter Ich hoffe, das ist klar. Lassen Sie uns jetzt weitermachen und
die Plotschnittstelle von Boke importieren die Plotschnittstelle von Boke Aus BokePloting
wird also nicht die gesamte Plotschnittstelle importiert Wir benötigen nur die Abbildung
und die Ausgabedatei. Lassen wir es dabei eng angehen. Lassen Sie uns dann weitermachen und das Figurenobjekt
erstellen. Und X ist Typ und wird
vom Typ Datum und Uhrzeit sein. Stellen wir eine Höhe von
100 und eine Breite von 500 ein. Und lassen Sie uns es responsiv machen. Titel des Graph
Motion Graph. Okay. Sobald wir dort eine Zahl haben, wollen
wir eine
Glyphe in diese Figur einzeichnen Diese Glyphe
wäre in diesem Fall ein Quadrant, also ein Quadrat Ein Quadrant wäre also besser geeignet, um diese
Zeitintervalle dort darzustellen Der Trick, mit
dieser Quad-Glyphe Ihr Datum und
Ihre Uhrzeit entlang dieser X-Achse zu
visualisieren, besteht also dieser Quad-Glyphe Ihr Datum und
Ihre Uhrzeit entlang dieser X-Achse zu
visualisieren darin, Parameter von links nach rechts,
unten und oben zu übergeben unten und oben Für links würdest du also die Startzeit
ausgeben wollen, also links neben der Box mit den
Boxen, die du hier siehst Der linke Rand wäre also die Startzeit und
der rechte Rand. DF wäre also die Endzeit. Also hier ist unsere CSV-Datei, die wir nicht verwenden, aber das ist eine
Struktur der Daten. Also die Startzeit links
und dann die Endzeit, die rechts an das Rechteck
des Quadranten grenzt die rechts an das Rechteck
des Quadranten Und dann ist hier ein Trick, den
wir für unten machen können. Wir würden einen festen Wert behalten wollen. Also Null für jeden Quadranten und dann auch eins für jeden
Quadranten Das ist es. Farbe
ist kein Problem. Sagen wir grün. Und ich
würde das vorerst gerne versuchen. Also werde ich eine Datei ablegen. Das wäre Graph Dot HTML. Zeig die Pi-Figur. Und lass uns sehen, was bis jetzt passieren
wird. Also Python, wir wollen jetzt keinen Bewegungsmelder
ausführen, aber wir wollen das
Plotten dieses Pi ausführen Das ist also unser Hauptskript
, mit dem wir anfangen. Und ich habe
hier einen
dummen Syntaxfehler von Book a
plotting figure.
Ich wette, du wusstest es, dass ich das Schlüsselwort Import hier übersehen
habe Also aus Bokeploting die Abbildung
importieren, Datei anzeigen, speichern und erneut versuchen. Und hier ist das Webca-Objekt. Schon wieder Objekt. Ein anderes Mal. Kündigen. Und lass uns sehen
, was jetzt passieren wird. Und noch ein
Fehler, responsiv. Gut. Das tut mir leid. Versuch es nochmal. Erstes Objekt und
dort zweites Objekt und noch eins? Beenden. Und wir sollten die Grafik
sehen. Ja. Ja, es sieht gut aus. Ja, ich kann es hier sehen und
Sie können auch feststellen, dass wir hier eine ziemlich
unnötige Granularität haben Wir brauchen hier also nicht alle
Aufkleber. Außerdem können Sie hier sehen,
dass dies 19 Sekunden sind, was bedeutet, dass es 19
Sekunden nach der letzten Minute ist. Also wenn es, sagen wir, 15 Minuten und 19 Sekunden wären. Also 20 Sekunden der
15 Minuten und so weiter. Sie
sehen also nicht wirklich das große Ganze in nur 10 Sekunden Video, aber um es
informativer zu machen, würde
ich
dieser Leiste ein Hover-Tool hinzufügen , sodass, wenn ich
die Maus hier bewege , wie Sie wissen,
Sie die Start- und
Endzeit sehen sollten, sodass Sie dort
die komplette Zeit sehen können ,
falls die Beschriftungen hier nicht
ausreichen Aber zuerst entfernen wir hier
die Aufkleber. Also gehen wir zurück zum Drehbuch
und lassen mich das aufschreiben. Der Weg, das zu tun, wäre, das
Figurobjekt zu modifizieren, also die P-Variable. Also arbeiten wir an
der Y-Achse, also Yaxs. Wir greifen also auf das
Y-Achsenobjekt des Figurobjekts zu, dann auf die Farbe der kleinen Häkchen und wollen sie auf „Keine“ setzen Also das tickt hier. Sie können auch sehen, dass
wir auch ein Grid haben. Wir wollen diese
Zwischenzeilen hier also nicht haben, und das können wir tun, indem wir
auf das Grid-Objekt zugreifen, das ist list, also müssen Sie auf das
erste Element der Liste zugreifen. Da gibt es also einen ziemlichen Trick, aber damit muss man
Frieden schließen. Also, Ticker sagen erwünscht. Anzahl der Zecken. Das ist also die Methode
und setze sie auf eins. Schauen wir uns also an, wie sich das Diagramm diesmal ändern
wird. Und es ist eine gute Idee,
dem Diagramm einen anderen Namen zu geben , damit
wir die beiden Grafiken vergleichen können. Also grafiere eins dafür. Und lass uns sehen. Hier. Und kündige. Und ich habe ein Attribut mit der Farbe des
kleinen Häkchens. Ich neige dazu, das falsch auszudrücken. Das Gute ist, dass Bouquet eine ziemlich gute Fehlerbehandlung
hat, also ähnliche Attribute
oder eine geringfügige Farbe der Hilfsstriche hat Es ist also tatsächlich in der Lage zu lesen,
was Sie dort eingeben, und es schlägt Ihnen vor, was Sie eingeben sollen, wenn die Linienfarbe
so klein ist. Also haben wir hier eine Zeile. Also versuche es nochmal. Mal sehen,
was wir diesmal bekommen. Jetzt sieht es sauberer aus,
wie Sie sehen können. Hier ist unsere vorherige Grafik. Dies ist das neue,
also haben
wir hier keine horizontalen Rasterlinien
und Häkchen. Und ich dachte daran,
diesen Vortrag zu diesem Zeitpunkt zu beenden. Und in der anderen Vorlesung werde
ich Ihnen zeigen, wie Sie diese
Hover-Fähigkeiten zu Ihrem Diagramm
hinzufügen Also werde ich
in der nächsten Vorlesung mit Ihnen sprechen.
130. 129. Eine Hover-Funktion implementieren: Großartig. Wir haben ein
Diagramm, das die Zeitintervalle visualisiert, in denen das Objekt in
den Videoframe eingetreten Lassen Sie uns nun
unseren Code so ändern, dass
wir ein Fenster hinzufügen.
Ein Fenster wird
hier angezeigt, wenn der Benutzer
mit der Maus über
diese Quadranten fährt unseren Code so ändern, dass
wir ein Fenster hinzufügen.
Ein Fenster wird
hier angezeigt, wenn der Benutzer
mit der Maus über
diese Lass uns das machen. Und das Boke-Tool zur Implementierung der Hover-Funktionalität
wird Hover-Tool genannt Und darauf wird über die untergeordnete
Oberfläche zugegriffen ,
die als Modelle bezeichnet wird,
also Boket-Dot-Modelle also Boket-Dot-Modelle Sie möchten also das
Hover-Tool importieren. Lassen Sie uns nun sehen, wie wir das in unserem Skript verwenden Und im Grunde ist dies
eine Methode, die
von Ihnen einige
Datenfelder erwartet , sodass die Hover-Tool-Methode sie
anzeigt, wenn der Benutzer die Maus
auf diesen
Quadranten Wenn sich der Cursor also auf
diesem bestimmten Quadranten befindet
, werden die Daten
für diesen Quadranten im
Popup-Fenster angezeigt also Nachdem Sie Ihre Figur
erstellt haben, möchten
Sie ein Hover-Objekt erstellen,
das dem Hover-Werkzeug entspricht Welches hat dort einen
Parameter mit zwei Tipps, und dieser wird als
Argument eine Liste von Tupeln erhalten,
und in jedem Tupel und in jedem Tupel möchten
Sie die
Zeilen des Popup-Fensters angeben Nehmen wir an,
Sie möchten in der ersten
Zeile Ihres Popup-Fensters eine Startzeichenfolge haben, und neben dieser Startzeichenfolge möchten
Sie das
Array mit Ihren Daten haben Das hat diesen
Raumdekorateur hier. In unserem Fall wäre das also die Startspalte
aus dem Datenrahmen Wir wollen also die Startzeit und dann auch die Uhrzeit. Also für die Zeichenfolge und und
für den Namen einer Spalte. Also das sollte fast reichen. Aber wir müssen dieses Tool
mit der at tools-Methode hinzufügen. Also das Hover-Objekt, wir müssen es
zu den Werkzeugmenüs hinzufügen Das sollte also ein
Punkt sein. Und das ist es. Und wir werden hier noch mehr hinzufügen
müssen, aber mal sehen, was
wir bis hierher bekommen. Also Python plottet Punkt Py. Hier ist ein Objekt, noch eins ein drittes
und dann hör auf Also ja, hier ist ein Diagramm, und wir sind fast
da, aber noch nicht. Wie Sie sehen, hat
Python aus irgendeinem Grund Probleme beim Abrufen der Werte der
Start- und Endspalte Und Sie stellen auch fest, dass wir hier
zwei Spalten für jede
dieser Zeilen Das erste, was Sie tun
möchten, ist diese Spalte zu entfernen. Sie benötigen das nicht
, da Bouquet es standardmäßig hinzufügt. Das ist es also. Und um nun
das andere Problem zu lösen, besteht
das Hauptproblem
der Fragezeichen darin, die
Spaltendatenquellenmethode hinzuzufügen. Das kommt von der Low-Level-Schnittstelle des gebuchten
Modells. Spaltendatenquelle ist also eine standardisierte Methode, um Daten
für ein Buchdiagramm bereitzustellen. Wenn Sie also Datenrahmen,
Listen oder andere Objekte haben , müssen
Sie diese
für einige Funktionen
in einem Buch in ein
Spaltendatenquellenobjekt konvertieren. Was eigentlich sehr einfach ist. Und lass es mich hier machen. Also nehmen wir hier den Datenrahmen
und sagen wir dann, die
Spaltendatenquelle, CDS, das wäre gleich
der Spaltendatenquelle. Also die Methoden und die Daten, die
Sie an ihn übergeben möchten. In diesem Fall haben wir also einen
Datenrahmen. Und wenn Sie das getan haben, müssen
Sie das hier anpassen, nicht das Figurenobjekt, weil wir hier keine Daten übergeben. Wir konstruieren gerade die
Umgebung für die Handlung, aber Sie müssen
das Quad modifizieren. Konkret möchten Sie hier den Quellparameter
übergeben, dem Datenquellenobjekt der
Spalte entsprechen sollte. Also CDS in unserem Fall,
dieses hier. Also sagen Sie
Bocket, diese Daten zu verwenden, und dann brauchen Sie nicht auf den Datenrahmen zu
zeigen Also geben Sie dort einfach die Namen
Ihrer Spalten ein. Also lass uns sehen, was
wir dieses Mal haben. Objekt, noch einer hat gekündigt. Hier ist eine Grafik. Und
ja, fast da. Aber das Problem ist dass wir
dieses Mal
die Tage nicht im richtigen Format bekommen . Der Grund dafür ist
die Hotol-Methode. Also hier, wir sind hier. Die Hovertol-Methode
ist nicht in der Lage, Datentypen für Tageszeiten
abzurufen Aber das ist kein Grund zur
Sorge , denn
wir können die Datenzeiten in
Zeichenketten im Datenrahmen
konvertieren Bevor wir also
den Datenrahmen an die Methode des
Spaltendatenquellenobjekts übergeben , konvertieren
wir die Start- und Endspalten in
Zeichenkettendatentypen Sie wissen also bereits, wie
man mit Daytis arbeitet. In diesem Fall werden wir also
einige Formatierungen für den Tag vornehmen. Wir könnten also eine
weitere erstellen, also eine neue Spalte, sagen
wir, eine Startzeichenfolge. Also die String-Version
der Startspalte, die
der vorhandenen Startspalte entsprechen sollte. Punkt DT, mit dem Sie die Tagesformatierung
und die STR-Uhrzeit formatieren können. Und so definieren Sie jetzt, wie
Ihr Datum angezeigt werden soll. Sie möchten also zuerst das Jahr
anzeigen, dann den Monat, einen Gedankenstrich und den Tag danach und vielleicht ein Leerzeichen dort, eine Stunde, Minuten und Sekunden. Und das Gleiche gilt
für die letzte Spalte. Also Zeichenfolge und hier
und dasselbe hier. Und wie Sie jetzt davon ausgehen können, müssen
wir
diese Änderungen hier berücksichtigen. Das sollte also die Startzeichenfolge sein und das sollte
die Endzeichenfolge sein. Also zeigen wir
diese Zeichenketten jetzt im Popup-Fenster an. Und mal sehen, wie
das diesmal läuft. Das erste Objekt geht dorthin, zweite und das letzte
und noch eins. Beenden. Und ich schätze, wir haben
hier ein Problem. Ich habe die
Werte hier nicht geändert. Ich habe also völlig
das Falsche getan. Ich hätte die
Tage in diesem Quadrantenobjekt nicht ändern weil es sich um Datetimes handelt , weil wir hier
die Tagesachse definiert haben Dieser Express-Tag ist also. Also hier sollte
die ursprüngliche Startspalte beginnen
und hier die Endspalte Also habe ich aus Versehen
diese Werte dort eingegeben. Also fange die Zeichenfolge hier an
und die Zeichenfolge hier. Also das sollte
diesmal reichen. Lassen Sie uns das noch einmal überprüfen. Alles sieht
gut aus. Und lass uns sehen. Los geht's. Ja, wir
konnten uns die Daten schnappen. Lass uns sehen. Ja,
das sieht gut aus. Jetzt glaube ich, dass diese
Grafik gut lesbar ist, und ich glaube, dass Sie einige Informationen aus dieser Grafik
herausziehen können . So können Sie sehen, wie
lange ein Objekt im Videoframe
verblieben ist
und wann Sie den Frame gestartet haben und
wann es den Frame verlassen Und ich hoffe, Sie finden
das manchmal nützlich. Wie ich bereits sagte, können Sie einen Raspberry Pie Server
verwenden. Wir haben also nur einen kleinen Computer und hosten diese Anwendung
auf diesem Server. Und natürlich können Sie eine Kamera
bauen und natürlich können
Sie sie
in diesen Server einbauen und
sie Videos
für Ihre Bedürfnisse aufnehmen lassen. Vor allem hoffe ich, dass Sie aus dieser
Übungsaktivität
gelernt haben, und ich weiß, dass es
ziemlich viel zu konsumieren war. Wenn Sie jedoch
Fragen haben, beantworte
ich sie gerne. Also zögern Sie nicht,
sie im Diskussionsforum zu stellen. Und ich werde später
in den nächsten
Vorlesungen mit Ihnen sprechen . Wir sehen uns.
131. 130. App 4 Teil 1 - Datenanalyse und Visualisierungen mit Pandas und Matplotlib +++: Hallo und willkommen zu einem der wichtigsten
Projekte
des Kurses, dem Datenanalyse- und
Visualisierungsprojekt Wie Sie vielleicht wissen, ist
Python zweifellos die beste
Programmiersprache für Datenanalyse und Visualisierung. Python konnte
Sprachen, die in der
Datenanalyse verwendet werden, wie R, überholen , und das Geheimnis von Python ist eine Vielzahl von Bibliotheken, die Sie mit Python verwenden
können Und das bedeutet, dass Sie
Ihre Datenanalyseberichte und
-diagramme, die Sie mit
Python erstellen, mit anderen
Python-Bibliotheken kombinieren können Ihre Datenanalyseberichte und
-diagramme, die Sie mit
Python erstellen , mit anderen
Python-Bibliotheken komplette Anwendungen wie ,
komplette Anwendungen wie
Web-Apps oder sogar Desktop-Apps , Dinge
automatisieren usw. Python ist also definitiv das richtige Tool für
die Datenanalyse.
Es ist sehr mächtig. In diesem Abschnitt werde
ich Ihnen nicht nur
den Code zeigen, der diese und jene
Operation ausführt, sondern ich werde Ihnen auch die
Logik hinter der Datenanalyse zeigen, was Sie tun sollten, wenn Sie ein Datenanalyseprojekt
haben. Da ich einen Abschluss in
Geodatenanalyse habe, werde
ich Ihnen einige
meiner Fachkenntnisse auf diesem Gebiet vorstellen Ich gebe Ihnen einen Datensatz
mit 45.000 Datensätzen, und wir werden
diese Daten in Informationen umwandeln Genau darum geht es bei der Datenanalyse
und -visualisierung Daten
in Informationen umzuwandeln Wir werden zum Beispiel Fragen
beantworten wie An
welchem Wochentag sind die Menschen am glücklichsten Und dafür werden wir
unsere Daten verwenden. Die Daten sind einfach Daten, aber den glücklichsten Tag
der Woche zu kennen ,
das Ein wichtiger Teil
dieses Abschnitts ist nun die
Datenvisualisierung Lassen Sie mich Ihnen einige
der Handlungen zeigen, die wir in dieser
Videoserie
erstellen werden in dieser
Videoserie
erstellen , nur um
Ihnen einen Anreiz,
eine Motivation zu geben eine Motivation zu sich diese
Videoserie
tatsächlich anzusehen. All diese Grafiken
sind interaktiv. Um Ihnen eine Vorstellung davon zu geben wie diese Grafiken aussehen werden, finden Sie hier einige Diagramme
, die wir erstellen werden. In diesem speziellen Diagramm wird die
durchschnittliche Bewertung für jeden Tag angezeigt, sodass das Datum auf der X-Achse und die durchschnittliche Bewertung auf der Y-Achse
liegt. Dann werden wir
Kreisdiagramme wie dieses erstellen. Und auch andere interessante
Arten von Diagrammen. Tatsächlich werde ich
Ihnen zeigen, wie Sie
jede Art von Diagramm erstellen können , das
Ihren Daten und Ihren Bedürfnissen entspricht. Und das wird eigentlich
ganz einfach sein, weil ich Ihnen
den Trick, die
Logik dahinter erklären werde . Und die gute Nachricht
bei diesen Diagrammen ist, dass Sie nicht viel
konfigurieren
müssen , weil sie sofort einsatzbereit
sind, und das wird durch
die Bibliothek ermöglicht , die
wir verwenden werden. Machen Sie sich also bereit und ich werde
im nächsten Video mit Ihnen sprechen.
132. 131. Den Datensatz mit Python und Pandas erkunden +: Willkommen zurück. Wenn Sie Datenanalysen
durchführen, möchten
Sie sich zunächst mit Ihren
Daten
vertraut machen, indem Sie das Tool verwenden,
das Datenanalyse-Tool, das Sie für Ihr
spezielles Projekt
ausgewählt haben . In diesem Fall handelt es sich bei dem
Tool um Python. In
diesem Video werden wir also die Daten mit einem Jupiter-Notizbuch in
Python laden . Schauen Sie sich dann diese
Daten an und extrahieren einige sehr grundlegende Informationen
über die Daten, z. B. schauen Sie sich an, welche
Spaltennamen wir haben ,
wie viele Zeilen wir haben und andere einfache
Attribute unserer Daten. Lass uns das machen. Ich
möchte Sie darüber informieren, dass ich einen leeren
Ordner mit dem Namen review
erstellt habe. Underscore Analysis und ich lege die Bewertungen in dieser
CSV-Datei in diesen Ordner Sie finden diese Rezensionen CSV-Datei
, die dieser Vorlesung
beigefügt ist, also als Vorlesungsressource das bitte herunter und legen Sie es in einen Ordner,
genau wie ich es getan habe. Und dann sollten Sie in der Lage
sein
, diesen Ordner auf der
Jupiter-Homepage zu finden , der mit
8888 Schrägstrich drei lokalisiert ist Also habe ich diesen Ordner
direkt im Ordner meines Benutzers erstellt,
also das ist der Ordner also das ist der Ich kann darauf klicken und hier sind
die Bewertungen in dieser CSV-Datei. In Ihrem Fall können Sie es
erstellen, wo immer Sie möchten und es dann mithilfe
dieses Verzeichnisbaums hier suchen. Während ich in diesem
Ordner von Jupiter bin, kann
ich zur neuen
Drop-down-Liste gehen und zu Python
Drei gehen, um ein neues
Jupiter-Notizbuch zu erstellen. Das Jupiter-Notizbuch
wurde also erstellt. Ich kann es in etwas anderes umbenennen, den Namen des
Jupiter-Notizbuches. Machen wir es uns einfach
und sagen Bewertungen. Umbenennen und das wird mit
der IPYNB-Erweiterung angezeigt. Lassen Sie mich
hier etwas mehr Platz schaffen , damit Sie mehr Code sehen Ich werde
den Header ausschalten. Und jetzt fangen wir an zu codieren. Das allererste, was wir tun
wollen,
ist natürlich Pandas zu importieren, die Bibliothek, die zur
Datenanalyse
mit Python verwendet wird Datenanalyse
mit Python Und dann wollen wir eine
Variable erstellen, die die Daten enthält, die den von Pandas gelesenen Daten
entsprechen Da wir
mit einer CSV-Datei arbeiten, die Methode, die wir aus
der
Pandas-Bibliothek heraus verwenden möchten ist
die Methode, die wir aus
der
Pandas-Bibliothek heraus verwenden möchten, Read In Klammern
wollen wir einfache oder doppelte
Anführungszeichen angeben, wo immer Der Pfad zur CSV-Datei. Wenn Sie den Namen jetzt nicht korrekt eingeben
, erhalten
Sie eine Fehlermeldung. Lassen Sie mich also versuchen, diese Zelle
mit Control Enter
auszuführen , wenn Sie unter Windows
arbeiten , oder Command
Enter, wenn Sie auf einem Mac sind. Wie ich dich gewarnt
habe, habe ich einen Fehler bekommen. Es heißt, keine solche
Datei oder kein solches Verzeichnis , weil ich die Datei falsch eingegeben Also Bewertungen. Dieses Mal erhalte ich bei der Ausführung keine Fehlermeldung,
was bedeutet, dass die Daten erfolgreich
geladen wurden. Ich kann Escape, B,
Enter drücken
und die Datenvariable
und die Strg-Eingabetaste erneut aufrufen ,
um den Datenrahmen zu sehen. Wir können also sehen, dass wir eine, zwei, drei, vier Spalten haben. Und wir haben hier auch diese
Indexspalte von Pandas automatisch
hinzugefügt wurde Im Grunde handelt es sich um einen
Zahlenbereich, der bei Null beginnt. Das ist also die erste Zeile
unserer Daten, diese hier drin. Das hat diesen Index von Null. Und es endet in der letzten Reihe. Sie können sehen, dass dies
die erste Reihe, zweite, dritte, vierte, fünf Reihen
ist, und dann zeigt Jupiter
die Zeile nach der fünften Reihe nicht an, weil
es viele Zeilen gibt
und es unpraktisch wäre, sie hier
zu sehen Sie können jedoch
die letzten fünf Zeilen
des Datenrahmens sehen die letzten fünf Zeilen
des Datenrahmens Und das gibt Ihnen einen
Überblick über den Datenrahmen. Stattdessen drucke ich jedoch
gerne den Kopf
des Datenrahmens aus, also nur
die ersten Zeilen. Also die ersten fünf Zeilen, das gibt Ihnen eine
kompaktere Ansicht. Es gibt Ihnen eine Vorstellung davon, welche
Spalten Sie haben und welche Art von Zeilen Sie auch haben. Es ist also gut, wenn hier der Kopf
des Datenrahmens
angezeigt wird. Dann können wir Escape drücken. B und erstelle hier eine neue Zelle. Geben Sie ein, um einen anderen Code zu schreiben. Sie können die Form des Datenrahmens ermitteln, indem Sie auf
die Shape-Eigenschaft zugreifen. Das ist also eine Methode
mit Klammern. Das ist eine Immobilie. Das braucht keine Klammern. Und dann kommen Sie zur
Form des Datenrahmens,
die im Grunde der Anzahl der
Zeilen und der Anzahl der Sie sehen eine, zwei,
drei, vier Spalten. Möglicherweise möchten Sie auch eingeben und die Spalten
anzeigen, die
Ihr Datenrahmen enthält. Obwohl wir sie dort haben, ist
dies eine weitere
Möglichkeit, die Namen
der Spalten zu sehen , indem Sie auf
die Spalteneigenschaft zugreifen. Wenn Sie mit Daten
arbeiten, haben
Sie als Nächstes in der Regel einige spezifische Spalten , die Sie interessieren kann es
sich um eine oder mehrere
Spalten handeln. In diesem Fall könnte es für uns von Interesse
sein, einen Überblick über die Spalte zu
erhalten, um zu sehen , was
die Mindest - und Höchstbewertung ist und wie
diese Bewertungen verteilt sind, und
sie hier als Diagramm darzustellen, damit wir unsere Daten besser
verstehen können . Also mache ich Escape, B, Enter und Data Dot Hit. Also das wird ein Histogramm sein. Klammern sind wir
daran interessiert, die
Verteilung der Bewertungen zu sehen Deshalb gebe ich hier die
Bewertungsspalte ein, sage Zeichenfolge, führe aus und wir erhalten dieses Diagramm Lassen Sie mich Ihnen erklären,
was diese Grafik bedeutet. Das bedeutet, dass wir zum Beispiel
von rechts beginnen. Diese Bar hier, diese erste Bar
bedeutet, dass wir rund
24.005 Sternekritiken und Bewertungen haben 24.005 Sternekritiken und Bewertungen Sie sehen, wir haben
zum Beispiel eine Bewertung von 5,0 Sternen. Wir haben also rund 24.005 Sternebewertungen
im gesamten Datenrahmen Und insgesamt haben wir
45.000 Zeilen. Dann die nächste Bar hier, das sind 4,5-Sterne-Bewertungen, wie die da drin Und davon haben
wir, sagen wir, 7.000 Dann haben wir hier vier Sterne, etwa 9.000, vielleicht
3,5 Sterne Das sind Drei-Sterne-Bewertungen. Es sind ungefähr 2000. Dann haben wir 2,5 Sterne-Bewertungen. Dieser hier drin,
zwei Sterne-Bewertungen. 1,5 Sterne-Bewertungen. Das ist die niedrigste Zahl
unter allen Bewertungen. Die Leute geben also nicht
viele 1,5-Sterne-Bewertungen ab. Und wir haben auch diese
Ein-Sterne-Bewertungen hier drin. Es ist nicht das Bassdiagramm. Ich persönlich mag es nicht, aber es ist ein schneller Weg, damit Sie wissen, wie Ihre Daten verteilt
sind. Sie wissen, dass, okay, wir haben die Daten 1-5 und fünf ist der am häufigsten vorkommende
Wert in Ihren Daten. Und das ist ungefähr dieser Vortrag. So können Sie sich einen
Überblick über Ihren Datenrahmen verschaffen. In der nächsten Vorlesung
werden wir in
unseren Datenrahmen hineinzoomen , um
tatsächlich bestimmte Zeilen oder
bestimmte Abschnitte
unseres Datenrahmens
auswählen zu können bestimmte Zeilen oder
bestimmte Abschnitte
unseres Datenrahmens
auswählen bestimmte Abschnitte
unseres Datenrahmens um einzelne Werte zu sehen. Mit anderen Worten,
wir werden
Python verwenden , um
durch unsere Daten zu navigieren und bestimmte Abschnitte
der Daten auszuwählen und anzuzeigen. Also wir sehen uns
im nächsten Video.
133. 132. Daten mit Python auswählen: Hallo, willkommen zurück. In diesem Video werden
wir Daten in
unseren Datenrahmen
vergrößern , indem wir
bestimmte Spalten
des Datenrahmens auswählen , bestimmte Zeilen,
mehrere Spalten, mehrere Zeilen, bestimmte
Regale im Datenrahmen.
Wir werden
lernen, wie man
Bedingungen anwendet , sodass Sie Daten auf der Grundlage verschiedener
Filter
extrahieren können usw. Fangen wir also an. Ich
werde Jupiter öffnen. Und ich werde zur Bewertungsanalyse gehen. Ordner und klicken Sie auf die
Jupiter Notebook-Datei. Nun, Sie sollten wissen,
dass, wenn ich
hier eine neue Zelle öffne und versuche, auf
die Datenvariable zuzugreifen, dieser Namensfehler angezeigt wird. Daten sind nicht definiert, denn wenn Sie einfach
ein Jupiter-Notizbuch öffnen, werden
die Zellen nicht
automatisch ausgeführt. Das ist also
noch keine Variable im Namensraum dieser
interaktiven Python-Sitzung. Daher sollten Sie die Zellen entweder
ausführen, indem Sie zur ersten Zelle gehen
und Shift Enter drücken und
dann Shift Enter drücken, um
die andere Zelle auszuführen Shift Enter, Shift Enter, oder Sie
können zu dieser Schaltfläche gehen. Um alle Zellen auszuführen. Drücken Sie also darauf, starten Sie neu
und starten Sie alle Zellen. Und dann erhalten Sie so
Zugriff auf die
Delta-Variable. Richtig, also ich wollte nur
sichergehen , dass Sie wissen,
dass Sie sich des spezifischen
Verhaltens von Jupiter bewusst sind . Nun, ich möchte hier ein paar
Überschriften einfügen, etwas Text. Zum Beispiel
möchte ich den Titel dieses ersten Abschnitts angeben, den wir im vorherigen Video
gemacht haben Ich möchte das etwas nennen. Also möchte ich eine
Zelle über dieser Zelle hinzufügen. Deshalb stelle ich zunächst sicher, dass
ich mich
nicht in einem bestimmten Modus befinde, also drücke ich dafür die Esc-Taste. Dann drücke ich A auf der Tastatur und die neue Zelle
wird hinzugefügt. Dann drücke ich, ohne die Zelle zu
betreten. Stellen Sie also
sicher, dass Sie ohne Eingabe die Escape-Taste drücken. Ohne die
Zelle zu betreten, drücken wir M, und dadurch wird die
Zelle in eine Markdown-Zelle umgewandelt,
was bedeutet, dass die Zelle jetzt
keinen Python-Code erwartet Es erwartet Markdown-Text
, der im Grunde eine
Art Sprache ist Wenn wir zum Beispiel
zwei dieser Hash-Symbole schreiben, haben wir den Datenrahmen genau im
Blick Und dann drücken wir Command Enter, das
wird in
einen Titel, in eine Überschrift umgewandelt . Im Grunde H zur Überschrift. Wenn Sie noch eine hinzufügen, erhalten
Sie
kleinere Schriften und so weiter. Also zwei sind in Ordnung. Und dann füge ich hier hinzu, also konvertiere das mit Escape in
Markdown und wähle dann genau hier Daten
aus
dem Datenrahmen Und dann B, um
die neue Codezelle einzugeben, also das ist eine Codezelle
, die eine Markdown-Zelle ist Lassen Sie mich Ihnen zeigen, wie Sie eine Spalte
des Datenrahmens
auswählen können eine Spalte
des Datenrahmens
auswählen Entkomme. Wählen Sie eine Spalte aus. Drücken Sie die Eingabetaste. B, Geben Sie
die Eingabetaste ein, um eine Spalte auszuwählen Sie können diese Syntax verwenden
und dann ausführen. Und das ist eine Spalte.
Nun könnten Sie fragen, warum müssen wir eine Spalte
auswählen? Welches Interesse steckt dahinter? Nun, die Antwort ist, dass
dies der erste Schritt
einer weiteren Analyse ist . Wenn Sie beispielsweise den Mittelwert, den Durchschnitt
der
Bewertungsspalte, extrahieren möchten , müssten wir zuerst
die Spalte extrahieren und dann diesen Mittelwert
anwenden Die Methode Mittelwert wird ausgeführt, und das gibt Ihnen die durchschnittliche Bewertung
aller Kurse für
den gesamten Datenrahmen Also die Bewertung aller
45.000 Zeilen. Das ist also ein Beispiel, warum wir eine Spalte auswählen
müssten Aber lassen Sie mich jetzt den Mittelwert löschen. So
wählt man also eine Spalte aus. Escape B jetzt, Enter. Wählen Sie mehrere Spalten aus. Ausführen, B, Enter. Um mehrere Spalten auszuwählen, würden
Sie mehr oder
weniger dieselbe Syntax verwenden. Aber anstatt
hier
eine einzelne Spalte einzufügen , wie wir es bei der Bewertung von Zeichenketten gemacht haben , würden wir
in diesem Fall
eine Liste mit mehreren Spalten einfügen Nehmen wir an, wir wollen den Kursnamen. Also eine Zeichenfolge,
ein Komma neben der Zeichenfolge, eine weitere Zeichenfolge, Bewertung
und dann ausführen Dadurch erhalten Sie im Grunde einen Datenrahmen, der
nur diese beiden Spalten enthält Nun, es gibt einen
grundlegenden Unterschied zwischen dieser und jener Ausgabe. Sie können auch sehen, dass dies
mit Linien anders
formatiert ist , sodass es wie eine Tabelle aussieht da es sich
tatsächlich um einen Datenrahmen handelt Wenn Sie also den Typ dieses
Ausdrucks anwenden. Das ist also ein Ausdruck. Wir haben benutzt. Wenn Sie das ausführen, werden
Sie feststellen, dass dies ein Datenrahmen-Datenrahmen
ist. Aber wenn wir uns den Typ dieses
anderen Ausdrucks ansehen, werden
Sie feststellen,
dass es sich um eine Serie handelt. Eine Serie ist also ein anderer Datentyp von
Pandas, genau wie wir Im Datenrahmen haben wir Reihen, und Reihen werden verwendet, um einzelne Spalten
darzustellen,
wie diese hier. Also nur die Bewertungsspalte. Aber wenn wir mehr
als eine Spalte haben, verwendet
Pandas einen
Datenrahmen wie diesen Das war also nur eine
Information, die man sich merken sollte. Es ändert nicht viel daran, wie Sie die
Statistiken später erstellen, aber es ist einfach gut zu
wissen, wie Pandas funktioniert Mal sehen, wie man ARO auswählt. Bei Zeilen ist das ein bisschen anders. Natürlich
müssen Sie zuerst auf
die Datenvariable
und dann auf I lock verweisen . Und dann brauchst du
eckige Klammern. In diese eckigen Klammern sollten
Sie den Index
der Zeile setzen, auf die Sie zugreifen möchten. Nehmen wir zum Beispiel an, wir wollen diese Zeile hier haben oder lassen Sie uns besser darauf
verweisen. Also der Python-Mega-Fluch
mit einer Bewertung von fünf
, der einen Index von drei hat. Mal sehen, ob
wir diese Reihe bekommen. Führt aus. Also ja, es scheint dass das der Python-Megakurs ist und er eine Bewertung von fünf hatte. Der Zeitstempel
steht hier, also 333. Sehen wir uns den gesamten Datenrahmen an. Also 333, der hier drin. Diese Reihe ist das. Der Typ dieses Objekts
ist wieder eine Serie. Pandas verwendet Serien also auch
für Zeilen, für einzelne Zeilen. Lassen Sie mich diesen Typ löschen und erneut
ausführen. Das
ist die Ausgabe. Als Nächstes. Mehrere Rosen auswählen. B Geben Sie Daten ein. Auch hier verwenden wir iloc. Und dieses Mal wollen wir, da wir mit mehreren Zeilen
arbeiten, ein Slice eingeben Nehmen wir an, wir wollen von
Index eins zu Index drei, diese Zeilen, und wir erhalten dieses
Mal diesen Datenrahmen, der nicht so schwerwiegend ist. Wir haben also die Zeile mit Index eins und die
Zeile mit Index zwei weil der obere Index nicht im Slice enthalten
ist , wie es bei Python fast
immer
der Fall ist. Also mal 512, Zeitstempel, 511. 512, fünf, Index eins, Index zwei. Ja. So bekommt
man also mehrere Zeilen. Als Nächstes. Auswahl eines Abschnitts. Was ich damit meine, ist
im Grunde ein Querschnitt. Spalten und
bestimmte Zeilen geben uns also bestimmte Zeilen geben uns im Grunde einen Teil
des Datenrahmens. Zum Beispiel möchten wir bestimmte Spalten
auswählen. Auch hier verwenden wir dieselbe
Syntax wie zuvor. Sie sehen also hier oben, wenn wir mehrere Spalten
ausgewählt haben, also die Bewertung des Kursnamens
in einer Liste. Kursname Bewertung. Das wird uns also im Grunde das
geben. Und dann wenden wir aus diesem Datenrahmen
Alok an, wenden wir weil das ein
Datenrahmenobjekt ist, oder? Das war auch ein
Datenrahmenobjekt. Und da wir
Alok auf diesen Datenrahmen anwenden könnten, können
wir Ioc auch
auf diesen Datenrahmen anwenden Es ist derselbe Objekttyp. Daraus ergibt sich zum Beispiel von Zeile mit Index eins
bis Zeile mit Index drei,
ohne drei, und wir erhalten diesen
Abschnitt des Datenrahmens, wiederum ein
Datenrahmen ist, Objekttyp. Also nur die Spalten für Kursname und Bewertung und
nur diese beiden Zeilen. Und zuletzt die Auswahl einer Zelle. Wir folgen derselben
Syntax, derselben Logik. Nehmen wir an, wir möchten diese Zelle hier
auswählen. Also die Zelle, die
den Querschnitt der Zeile mit Index zwei und
der Zeitstempelspalte darstellt, die da drin,
Zeitstempel, Index zwei, richtig Zunächst extrahieren
wir die Spalte mit derselben Syntax, mit der wir
eine Spalte ausgewählt haben, nämlich
diese hier, Delta. Diesmal mit dem Zeitstempel der Bewertungsdaten. Das
gibt uns also im Grunde eine Spalte, aber davon ausgehend können wir auch eine
Sperre für eine Reihe anwenden Das ist also eine Serie,
kein Datenrahmen,
aber eine Reihe könnte auch
diese Log-Eigenschaft verwenden und dann
den Index zwei daraus ziehen, und das gibt uns den Wert
, der eine Typzeichenfolge ist. Wenn Sie also stattdessen eine Bewertung wünschen würden, würden
Sie einen Float bekommen, weil die
Bewertungen Float sind, 4,0, die da drin ist. Und so bekommt man eine Zelle. Nun, diese Methode ist
sehr konsistent, da sie dieselbe Syntax
wie die anderen Methoden verwendet. Sie ist also konsistent mit den anderen Methoden zur Datenauswahl, aber es gibt eine schnellere Möglichkeit,
dasselbe mithilfe von
Daten zu tun , nämlich die at-Eigenschaft. Und zuerst übergeben Sie den
Index der Zeile und dann nur den Namen der
Spalte, zum Beispiel die Bewertung. Und das sollte
dir den gleichen Wert geben. Es wird daher empfohlen, dies zu verwenden , wenn Sie eine Zelle
auswählen. Das ist also über diese Vorlesung. In der nächsten Vorlesung werden wir
weiter auf die
Auswahl von Daten eingehen , dabei aber Bedingungen
verwenden. Geben Sie mir zum Beispiel alle Bewertungen, die größer als vier
sind. Also Filterung basierend auf den Bedingungen
im nächsten Video. Siehst du.
134. 133. Den Datensatz filtern: Hallo, willkommen zurück. In diesem Video erfahren
Sie, wie Sie Daten aus
Ihrem Datenrahmen
filtern. Damit meine ich das Extrahieren bestimmter Datengruppen auf der
Grundlage
verschiedener Bedingungen Nehmen wir zum Beispiel an,
wir haben
in unserem Datenrahmen unterschiedliche Kurse, obwohl Sie hier nur
die Python-Megacurs sehen , weil wir nur
die
ersten fünf Zeilen sehen Wir haben andere Kurse
mit Bewertungen. Wenn du also zum Beispiel nur die durchschnittliche Bewertung
für einen bestimmten Kurs wissen möchtest, musst du
die Daten filtern , indem du
einige Bedingungen anwendest. Durch Filtern können
Sie also Analysen eine bestimmte Gruppe Ihrer Daten durchführen. Lass uns das machen. Zuerst weise ich jeder
der Hauptüberschriften eine Zahl zu Das war also ein Überblick. In der zweiten Vorlesung ging es um
Auswahl, das ist also Nummer zwei. Dieses Mal werden wir bei Nummer drei sein und Daten
anhand von Bedingungen
filtern. Richtig. Wenden wir zuerst
eine Bedingung an. Also werde ich
eine Markdown-Zelle erstellen und eine Bedingung angeben Wenden wir eine Bedingung an
, die uns
den Datenrahmen liefert , bei dem die
Bewertungen größer als vier sind Um das zu tun,
müssten Sie dieser Syntax folgen. Sie nun zunächst sicher,
dass sich Ihre
Datenvariable im Namensraum befindet, indem Sie diese erste Zelle
ausführen. Drücken Sie die Eingabetaste, um diese Zelle
auszuführen. Jetzt sind wir sicher, dass
sich die Daten im Namensraum befinden. Dies sind die eckigen Klammern der
Syntaxdaten und hier die Bedingung, also haben wir gesagt, dass wir den Datenrahmen
wollen, in
dem die Bewertung größer als vier ist. Daher sagen wir, dass die
Spaltenbewertung höher ist. Lassen wir etwas Platz,
mehr als vier. Wenn wir das ausführen,
erhalten wir einen Datenrahmen und alle diese Zeilen haben eine
Bewertung von 4,5 oder mehr, nicht vier, weil sie größer ist, sie ist nicht größer oder gleich. Wenn es größer oder gleich ist, erhalten
wir auch die
vier Bewertungen, 4,0. Aber das ist hier nicht der Fall, also bekommen wir das. Sie sehen beispielsweise, dass
Zeilen mit dem Index 012 nicht in den Datenrahmen des Ausgabedatenrahmens
aufgenommen wurden , und Sie können die
Länge dieser Zeilen mithilfe einer
Python-Längenfunktion einer Funktion Wir erhalten 29.758 Zeilen einer Bewertung von
mehr als vier Eine andere Möglichkeit, wenn
Sie keine native Python-Funktion
verwenden möchten , ist die Verwendung von count. Das ist also das
Datenrahmenobjekt, und die Datenrahmenobjekte
haben eine Zählmethode. Und Sie erhalten diese Ausgabe, die im Grunde
besagt, dass wir
diese Menge an Werten
im Kursnamen haben , diese Menge an
Werten im Zeitstempel, diese Menge an Bewertungen
und Kommentaren Da Kommentare
diese Nichtwerte haben,
ist das im Grunde genommen ein nicht existierender
Wert, er existiert nicht Daher haben wir 4.927 Bewertungen mit Kommentaren, in denen Leute tatsächlich Also der Rest, dieses
Minus, das uns
eine Reihe von unnützen Kommentaren beschert. Natürlich können Sie jetzt verschiedene Arten
von Statistiken darauf
anwenden . Das ist zum Beispiel
ein Datenrahmen, richtig. Wie extrahieren wir
nur die Spalte? Wie wählen wir nur
die Spaltenbewertung aus? Nun, Sie könnten hier einen
Blick darauf werfen und eine Spalte auswählen. So wählen Sie also
eine Datenbewertung für Spalten aus. Nun, das ist der Datenrahmen. Daher wenden Sie eine Bewertung und Sie erhalten Bewertungen mit
einem Wert von 4,5 oder mehr. Um das zu
verstehen, nehmen wir an, D zwei
ist der Datenrahmen, den wir aufgrund dieser Bedingung
erhalten. Es ist also ein Datenrahmen.
Dieser Datenrahmen hat eine Bewertungsspalte. Das ist es also, was wir bekommen. Das ist das Gleiche
, was wir hier gemacht haben, Datenbewertung, D-zu-Rating. Ich hoffe, das ist klar. Damit können Sie auch
Funktionen wie Mean anwenden. Sie erhalten den Mittelwert der
Bewertungen von mehr als vier. Ich werde es so lassen, wie
es war, dann gibt es mehrere Bedingungen. Nehmen wir an, wir möchten
den Datenrahmen filtern , in dem die Bewertung größer als vier
ist und der Kursname dem vollständigen Python-Kurs entspricht , in
dem zehn professionelle OP-Apps
erstellt wurden. Richtig. Also dieser Kurs hier. Lassen Sie mich die Zeichenfolge kopieren, damit
ich keine Tippfehler mache. So macht man diese Filterung
, doppelte Filterung.
Damit fängst du an. Und dann, anstatt
eine Bedingung zu setzen , wie wir es hier getan haben, würden
wir zwei
Bedingungen angeben, die in Klammern getrennt
wären Klammern getrennt
wären Also die erste Bedingung da und die zweite Bedingung da drin Als erste Bedingung würden
wir also dasselbe angeben. Also die Delta-Bewertung
ist größer als vier. Sie sehen also, dass die
Bedingung in
der Klammer steht . Das ist
die erste Bedingung Die zweite Bedingung
ist, dass Delta, wir sagten, der Kursname ist
gleich zwei, die Zeichenfolge, der komplette Python-Kurs, Spalte hat zehn
professionelle OP-Apps gebaut, richtig, ausführen, und wir erhalten den Datenrahmen basierend
auf dieser Filterung. Da dies also ein
Datenrahmen ist, dieser Datenrahmen, können
wir eine Bewertung daraus extrahieren und dann den Mittelwert
der Bewertungsspalte ermitteln, und das ergibt
uns diese Zahl. Also die durchschnittliche Bewertung
der Bewertungen über
vier für diesen Kurs. Und das ist wieder der
Filter-Datenrahmen. Und das ist ungefähr diese Vorlesung. In der nächsten Vorlesung
werden wir uns mit dem
Filtern von Daten nach Zeiten befassen . So können Sie also Teile
Ihres Datenrahmens für
einen bestimmten Zeitraum
extrahieren . Sie sehen also, wir haben hier diese
Zeitstempelspalte, und sie reicht von 2018 Sehen wir uns im nächsten Video an, wie Sie
das machen.
135. 134. Zeitbasierte Filterung: Hallo, willkommen zurück.
Im vorherigen Video haben
wir einige Filter auf der
Grundlage von Bedingungen durchgeführt. Also haben wir hier eine Bedingung und
hier mehrere
Bedingungen angewendet , zwei, um genau zu sein. Aber wir können mehr als
zwei mit derselben Syntax anwenden. Ordnung, also hier haben wir die Bedingung
angewendet,
indem wir Zahlen verglichen haben. Also haben wir mit Zahlentypen gearbeitet, die
Bewertungsspalte
hatte Zahlendatentypen und die Spalte mit dem Kursnamen,
in der wir sagten, dass wir nur die Datensätze haben wollen, bei denen der Kursname dieser Zeichenfolge
entspricht. Also diese Namensspalten, Zeichenketten-Datentypen. Also Zeichenkettendatentypen,
Zahlendatentypen. Aber wie vergleichen wir? Wie filtern wir Daten
anhand der Datenzeiten? Es ist nicht so einfach, aber es ist auch nicht schwer. Also lass uns das machen. Lassen
Sie uns einen neuen Hauptbereich hinzufügen. Sagen wir also dieses Mal eine
zeitbasierte Filterung. Richtig. Lassen Sie uns also
die Bewertungen extrahieren, die der
zweiten Hälfte des Jahres 2020 hinterlassen
wurden. Versuchen wir,
dieselbe Syntax wie dort anzuwenden. Also beginnen wir mit dem
Datenrahmen und den eckigen Klammern. Diesmal benötigen wir
zwei Bedingungen. Warum? Nun, weil
wir in der
ersten Bedingung Delta sagen würden. Zeitstempel ist größer
als der erste Juli 2020 und der andere ist der
Delta-Zeitstempel. Ist weniger als der 31. Dezember. Ein Wert größer als der erste
Juli bedeutet also den zweiten Juli, den
dritten Juli, den vierten
Juli usw. Also wollen wir diese Daten
für diesen Zeitraum. Wir wollen aber auch die
andere Bedingung, dass die Daten nicht höher
als der 31. Dezember sein sollten Deshalb verwenden wir diesen Wert für weniger
als den 31. Dezember
, also den 30. Dezember, den 29. Dezember usw. Aber wie schreiben wir hier den 1. Juli? Nun, dafür benötigen wir
ein Datetime-Objekt. Wir können nicht einfach eine Zeichenfolge
schreiben, schreiben wie die ersten sieben, 20, 20 Python ist nicht so intelligent. Es ist eine Programmiersprache. Nun, es ist möglich, dass
die Python-Entwickler etwas
schreiben könnten , um diese Art von Zeichenfolge zu lesen, aber es wäre fehleranfällig. Weißt du, jemand
schreibt es anders, jemand schreibt es so. Und so weiter, Sie
möchten explizit sein, um unerwünschte Fehler vermeiden zu
können. Und mit expliziten Mitteln müssen wir einen richtigen
Datetime-Objekttyp
verwenden Also werde ich von
Daytime importieren, Datetime importieren. Also importieren wir das Tagesobjekt aus der Daytime-Bibliothek Vergessen Sie nicht, diese
Zelle auszuführen und hier runterzugehen und das Datetime-Objekt zu
verwenden , das wir gerade
aus der Tagesbibliothek importiert 2027 wäre also
Juli und erster Das würde uns also den 1. Juli
im richtigen Datentyp geben. Wir können dasselbe
für diese Datumszeit tun, 2020, das wäre 12 für
den 31. Dezember Richtig. Nun, ich denke, es ist sinnvoller,
mehr oder gleich zu sagen als am ersten Juli
und auch weniger oder gleich. Sie kommen also auf die Idee, auch
diese Daten
in den Zeitraum einzubeziehen . Lassen Sie uns das jetzt ausführen.
Und wir bekommen einen Fehler. Gehen wir hier runter, um es zu lesen. Es ist ein Typfehler, was bedeutet, dass irgendwie der falsche
Typ verwendet wurde. Aber lasst uns mehr lesen, um zu
verstehen, was es ist. Diese Operation, dieser
Vergleichsoperator, wird also zwischen den Instanzen von
string und datet mit Datum und Uhrzeit nicht unterstützt string und datet mit Datum und Uhrzeit Es scheint also
, als ob dieser Operator an diesem Tag zwischen einer Zeichenfolge
und einem Tag
angewendet wurde . Stimmt das? Also, welche ist die
Saite hier? Der erste. Der Datenzeitstempel ist also eine
Spalte, die Zeichenketten enthält. Der Zeitstempel enthält also Zeichenketten. Das sind alles Zeichenketten. Sie sehen zwar nach
Datum aus, sind aber keine Datteln. Die Idee hier ist also , dass Python Datums- und
Uhrzeitangaben nicht
mit diesen Zeichenketten
vergleichen kann . Daher müssen wir
Python anweisen, diese als
Datums- und Uhrzeitobjekte als Tagesobjekte zu behandeln , sodass Python dann in der Lage ist, zwei Tagesobjekte zu
vergleichen, was aussagekräftiger ist als der Vergleich einer
Zeichenfolge am Tag Um Python zu erstellen und
diese als Tageszeiten zu lesen, müssen
wir zum
Anfang unseres Skripts gehen. Und wenn wir den
Datenrahmen mit der CSV-Methode lesen, müssen
wir ein weiteres Argument hinzufügen, nämlich das Analysedatum Durch dieses Argument teilen wir Python durch die eckigen
Klammern , welche Spalten als Datums- und Uhrzeitangaben
behandelt werden sollen. Also Zeitstempel, Parsen von Datumsangaben, in eckigen
Klammern
entsprechen Vergiss nicht, diese
Zelle auszuführen und dann hier runter zu gehen, die Zelle erneut
auszuführen Diesmal erhalten wir
wieder einen Fehler , einen Typfehler. Es heißt, ein Vergleich
zwischen dem und dem ist ungültig. Diesmal siehst du also,
dass es dafür ist. Also das ist eine Datetime-UTC. Und dieser Tag ist dieser. Python versucht also, diese beiden
zu vergleichen
, obwohl sie Tagesobjekte
sind,
beide Tagesobjekte sind.
Python ist immer noch nicht in der
Lage, sie zu vergleichen weil eines von ihnen,
das hier
ist, ein naives Tagesobjekt ist, was bedeutet, dass das Tagesobjekt nichts über
sein Zeitsystem weiß Deshalb, Python, um
auf Nummer sicher zu gehen, sagt
es dir: Okay,
ich weiß nicht, was ich mit
diesen beiden Tageszeiten anfangen soll,
weil ich
sie nicht vergleichen kann, da ich nicht weiß, um diesen beiden Tageszeiten anfangen soll,
weil ich
sie nicht vergleichen kann welches Zeitsystem es sich handelt. Auch wenn sie vielleicht so aussehen, als wäre dieses
kleiner als das, könnte
dieses
tatsächlich größer sein als das andere, weil es ein anderes Zeitsystem sein
könnte, das
wir vergrößern sollten. Um zu verstehen, wie wichtig Explizität bei
der Programmierung ist, stellen Sie sich einen
Flugsicherungsturm Sie haben diese Anwendung
, die Signale
von zwei Flugzeugen empfängt ,
die gleichzeitig an diesem Turm
vorbeifliegen Ein Flugzeug kommt aus den USA, ein Flugzeug kommt
aus Indonesien Der Antrag muss
die von
diesen beiden Flugzeugen gesendete Zeit verarbeiten . Und bei diesem Signal muss die Anwendung
neben
der Uhrzeit auch
das Zeitsystem jeder
dieser beiden Datums- und Uhrzeitangaben kennen . Andernfalls, wenn in diesen
beiden Tälern nur
6:00 Uhr Amerika
und 7:00 Uhr Indonesien stehen würden , würde
das Programm annehmen, dass es einen Unterschied von 1 Stunde
gibt. würde
das Programm annehmen, dass es einen Unterschied von 1 Stunde
gibt Dann könnte es eine
Kette anderer Prozesse durcheinander bringen, und das könnte gefährlich sein Also explizit ist besser. Kurz gesagt, um explizit zu sein, müssen
wir ein
Zeitsystem für diese Datums- und Uhrzeitangabe deklarieren, genau wie dieses
ein Zeitsystem hat , und das können
Sie sehen. Fügen wir hier eine weitere Zelle hinzu, und wenn Sie Daten,
Zeit, Stempel, Ausführen sagen , erhalten
Sie die Serie. Aber auch hier unten siehst
du Datum und Uhrzeit 64, es ist UTC, UTC. Also lasst uns
Datetime auch als UTC deklarieren. Verwenden Sie dazu TZ
Info, dieses Argument, das einen Wert für
einen Objekttyp,
einen UTC-Objekttyp, erhält , der importiert werden muss Es ist ein bestimmtes
Zeitsystemobjekt. Gehen Sie also zu den Importen und
sagen Sie von PY TZ Import, UTC, vergessen Sie
nicht, diese Zelle
auszuführen, gehen Sie hier runter und machen Sie dasselbe
für die andere Datenzeit. Also ein anderes Argument Ts, dessen
Info UTC entspricht, ausführen. Und dieses Mal
haben wir endlich den gefilterten Datenrahmen. Sie sehen die Daten hier. 20 2012, 30. Dezember. Und auch hier unten sehen
wir den 1. Juli. Leider mit einer ziemlich niedrigen Bewertung. Wie auch immer, so können Sie Daten anhand von Zeitstempeln
filtern Danke fürs Folgen.
Ich werde später mit dir reden.
136. 135. Daten in Informationen verwandeln: Hallo und willkommen
zu diesem neuen Video, das sich ein bisschen von den anderen
unterscheiden wird. In den vorherigen Videos habe ich Ihnen einige Techniken zum
Herausfiltern
von Daten aus einem Datenrahmen
gezeigt . Und das war im Grunde der Zugriff auf Spalten, Zeilen
und Zellen sowie Anwenden von Bedingungen
beim Zugriff auf diese Spalten, Zeilen oder
Zellen eines Datenrahmens. Bisher
haben wir jedoch
nur Daten aus Daten extrahiert Dies ist immer noch keine
Datenanalyse, da das Ziel der Datenanalyse darin besteht,
Daten in Informationen umzuwandeln Darum geht es bei der
Datenanalyse, aber das sind immer noch
keine Informationen. Nehmen wir zum Beispiel an, wir
wollen Bewertungen über vier und wir haben diesen Datenrahmen, aber es ist immer noch ein Datenrahmen. Es ist nicht menschenfreundlich. Es sind keine Informationen. Informationen wären, wenn wir stattdessen den Durchschnitt
der Bewertungen über vier erhalten würden. Am Ende hätten wir also
eine einzige Zahl. Das sind Informationen, weil
sie für Menschen lesbar sind. Das sagt uns etwas, oder vielleicht könnten wir ein Diagramm erstellen,
ein Diagramm, in dem wir
die Bewertungen im Laufe der Zeit sehen könnten. Wir sehen das Diagramm und
wir können einen Trend erkennen und aus diesem Diagramm einige
Informationen lernen. Daten in Informationen
umwandeln Als Nächstes werden wir Daten in Informationen
umwandeln, und für dieses spezielle Video werden
wir
eine Reihe von Fragen beantworten. Mit anderen Worten, wir werden
einige Informationen extrahieren, z. B. werden wir die durchschnittliche Bewertung, die durchschnittliche Bewertung für einen
bestimmten Kurs usw. ermitteln. Jetzt sollten Sie in der
Lage sein,
den Code tatsächlich vor mir zu schreiben ,
weil Sie
zum Beispiel bereits wissen, wie man die Bewertungsspalte
extrahiert. Und ich habe Ihnen auch einige
Hinweise gegeben, dass Sie
eine Mittelwertmethode verwenden könnten , um die
durchschnittliche Bewertung dieser Spalte Fangen wir also mit
den ersten Informationen an. Die durchschnittliche Bewertung für alle
Kurse für alle Zeiten. Das wäre die Datenbewertung als Mittelwert. Und das ist die durchschnittliche Bewertung. Also genau wie hier bei der Auswahl einer Spalte,
Delta-Bewertung. Das machen wir auch hier. Das gibt uns also eine Spalte
und das gibt uns eine Bewertung. Richtig, als nächstes die Durchschnittsbewertung
für einen bestimmten Kurs. Diesmal müssen wir
eine Bedingung anwenden, die Name des
Delta-Kurses identisch ist. Der Operator mit
doppelter Zuweisung entspricht also einem der Kurse. Nehmen wir an, der Python-Megakurs hat zehn
reale Anwendungen entwickelt. Wenn Sie nun einen einzigen
Buchstaben in der Zeichenfolge verpassen, werden
Sie nicht
das erwartete Ergebnis erzielen. Nehmen wir an, Sie haben statt des Großbuchstabens
A ein kleines A geschrieben und Sie erhalten einen leeren Datenrahmen Wenn ich den Kleinbuchstaben
A in Großbuchstaben ändere, erhalten wir den
gefilterten Datenrahmen, aus dem wir die Bewertungsspalte ziehen
wollen Das sind also die Bewertungen
für die Python-Mega-Cs, und der Mittelwert ist
der Durchschnitt der Python-Megacurs
die Durchschnittsbewertung, die etwas höher ist als die Durchschnittsbewertung
aller Kurse Richtig, Durchschnittsbewertung
für einen bestimmten Zeitraum. Data, ich
kopiere das einfach und gebe es hier weiter. Wir haben also diese erste Bedingung,
diese zweite Bedingung. Wir sprechen also
über diesen Zeitraum. Sie können das für
einen anderen Zeitraum ändern, sagen wir, das gesamte Jahr 2020 vom ersten Januar bis zum
31. Dezember Jetzt können Sie diesen
Ausdruck aufteilen und trotzdem dieselbe Ausgabe eingeben indem Sie
nach dem Operator t die Eingabetaste drücken Und Sie erhalten immer noch den
Filter-Datenrahmen , aus
dem wir
Bewertungen und daraus den Mittelwert erhalten. Das ist der Mittelwert für 2020. Als nächstes die Durchschnittsbewertung für einen bestimmten Zeitraum für
einen bestimmten Kurs. Ich kopiere das,
indem ich CC drücke und dann
hier klicke und V drücke. Und dann,
nach dieser Bedingung, also eine Klammer, zwei Klammern, füge ich den Operator end
hinzu Und drücken Sie die Eingabetaste,
drücken Sie erneut die Eingabetaste. Und hier
füge ich die andere Bedingung hinzu
, nämlich diese hier. Der Kurs entspricht
dieser bestimmten Zeichenfolge, dem Python Mega Core. Ausführen. Wir haben eine
Diskrepanz zwischen den Klammern Sie sehen, dass diese eckige
Klammer rot hervorgehoben ist. Das heißt, wir sollten es entfernen. Führen Sie es erneut aus und
das ist eine Bewertung. Für den
Python-Megakurs für 2020. So holen Sie
Informationen aus Ihren Daten heraus. Lassen Sie uns mit dem Durchschnitt
der unkommentierten Bewertungen weitermachen. Also unkommentierte Bewertungen. Wissen Sie, lassen mich der Einfachheit halber den Kopf
des Datenrahmens
hier platzieren Einfachheit halber den Kopf
des Datenrahmens
hier Sie wissen also, dass wir hier
eine Kommentarspalte haben, die ein NaN sein könnte, was bedeutet, notieren Sie sich eine Zahl, also ist es ein Nullwert, oder
es könnte eine Zeichenfolge sein,
etwas, das ein Student
als Bewertung für einen
bestimmten Kurs geschrieben hat . Wir wollen den Durchschnitt der Bewertungen ermitteln, für
die es
keine Befehle gibt. zu tun, sagen Sie,
Daten, die Bedingung, Datenkommentar, ist Null. Das ist eigentlich eine Methode, und sie gibt uns einen
gefilterten Datenrahmen mit nur den Zeilen, die
den Kommentarwert NaN haben. Das Gegenteil
davon ist nicht Null. Dann bekommst du die
Zeilen mit Kommentar. Was wir wollen, ist dieses
Mal Null und daraus wollen
wir die
Bewertungsspalte und den Mittelwert. Das ist der Mittelwert. Das
Gegenteil davon wäre natürlich nicht Null. Und wir sehen, dass die
durchschnittliche Bewertung für Bewertungen mit Kommentaren höher ist als die durchschnittliche Bewertung
ohne Kommentar, was ich für normal halte. Leute, denen der
Kurs gefällt, neigen vielleicht dazu, auch etwas zu
schreiben, um
ihre Dankbarkeit auszudrücken , oder ich weiß nicht, aber das sagt
uns etwas. Richtig, Anzahl der
unkommentierten Bewertungen. Nun, es ist einfach, kopiere das, füge eine Träne hinzu und
statt zu meinen, sagst du zählen Und das ist die Zählung.
Das Gegenteil davon wäre nicht Null. Bewertungen mit Kommentar zählen also. Und das zusammen
ergibt, da bin ich mir sicher, 45.000, was einer
Gesamtzahl von Bewertungsreihen entspricht Also Bewertungen ohne Kommentar,
Bewertungen mit Kommentar. Als nächstes die Anzahl der Kommentare
, die bestimmte Wörter enthalten. Nehmen wir an,
im Datenrahmen des Kommentars sprechen
einige Schüler über den
Akzent des Dozenten. Was ist der Durchschnitt der
Bewertungen, die Akzente enthalten? Beschweren sich die Leute
über den Akzent und wie viele Personen beschweren sich über den Akzent
des Dozenten Holen wir uns diese Informationen. Auch hier
ist die Bedingung, dass der Delta-Kommentar, die Zeichenfolge dieses Kommentars das Wort Akzent
enthält. Was wir bekommen, ist ein Fehler. Das Problem ist
, dass Python nicht mit einem nicht-booleschen Array
maskieren kann , das
Nullwerte enthält Python kann also nicht in
diesen Nullwerten im Kommentar suchen, kann
in diesen Datentypen nicht nach einer Zeichenfolge suchen. Also wollen wir Python
über das
NA-Argument set to fold mitteilen . In diesem Fall
ignoriert Python diese neuen Werte und sucht nur nach Akzenten in den Kommentaren mit einer
Zeichenfolge mit einem Wert. Und das ist ein
gefilterter Datenrahmen. all diesen Kommentaren wird also tatsächlich
das Wort Akzent erwähnt. Wie viele von ihnen? Das
sind nur die Bewertungen. Die Anzahl der Bewertungen beträgt 77. Also 77 von
insgesamt 45.000, der Durchschnitt
wäre natürlich einfach
das, aber man würde diese Zahl in einen Mittelwert ändern Und es ist eine niedrige Bewertung,
wie ich erwartet hatte. Da die Kurse von Studierenden aus
verschiedenen Ländern angeboten werden , kann es sein, dass
einige von ihnen den Akzent des
Dozenten als unangenehm empfinden. Vielleicht hinterlassen sie also einen negativen Kommentar und eine negative Bewertung
zusammen mit dem Kommentar. Und damit ist unser Vortrag hier abgeschlossen. Danke fürs Folgen. In den nächsten Videos werden
wir etwas planen, was meiner Meinung nach sehr viel
Spaß macht
und es ist eine wunderschöne
Art, Informationen der
Öffentlichkeit gegenüber dem Benutzer darzustellen Informationen der
Öffentlichkeit gegenüber dem Benutzer Danke, und ich werde später
mit dir sprechen.
137. 136. Durchschnittliche Bewertungen pro Tag aggregieren und aufzeichnen: Hallo. In diesem Video zeige ich
Ihnen, wie Sie ein Diagramm mit durchschnittlichen Tagesbewertungen erstellen. Unsere Grafik zeigt also die
durchschnittliche Bewertung für jeden Tag. Um das zu tun,
werde ich nicht an
der vorherigen Jupiter-Datei arbeiten der vorherigen Jupiter-Datei , weil ich die Dinge gerne getrennt
halte. Für den Visualisierungsteil werde
ich also ein neues Notizbuch erstellen. Ich würde vorschlagen, dass Sie dasselbe tun. Zuallererst müssen
wir den Datenrahmen laden. Also
kopiere ich einfach die Zelle aus
dem vorherigen
Notizbuch und kopiere sie dorthin und drucke schnell den Kopf
der Daten aus, nur um zu überprüfen, ob
alles stimmt. Ja, das ist also das
Delta, das rohe Delta. Drücken Sie dann Escape und drücken Sie B auf Ihrer Tastatur, um eine neue Zelle zu
erstellen. Drücken Sie die
Eingabetaste, um die neue Zelle aufzurufen, und lassen Sie uns das Diagramm erstellen. Aber bevor wir das Diagramm erstellen, müssen
wir eine Art
Datenaggregation durchführen Richtig, wir verwandeln
Daten in Informationen, aber unsere Daten sind ziemlich roh Sie sehen, dass
wir für einen Tag mehrere Bewertungen
von verschiedenen Schülern abgegeben haben. Zum Beispiel haben
wir für die Sekunde
einer Prill-Sekunde eines Prills diese Bewertung, wir haben das und das und das und so weiter Wir wollen
diese Zahlen zu
einer Durchschnittsbewertung zusammenfassen diese Zahlen zu
einer Durchschnittsbewertung Wie machen wir das? Das machen wir. Das können wir mit
der Pandas-Gruppe-B-Methode tun, die einen neuen Datenrahmen erzeugt Es wird also
ein neuer Datenrahmen sein, aber mit aggregierten Also einige neue Daten, die
Durchschnittswerte des Rohdatenrahmens sind Durchschnittswerte des Rohdatenrahmens Lassen Sie mich Ihnen zeigen,
wie Gruppe B funktioniert. Ich sagte also, dass Gruppe B einen neuen Datenrahmen
erzeugt. Deshalb werde ich eine neue Variable
erstellen, in der der neue Datenrahmen gespeichert werden
soll. Der Tagesdurchschnitt ist also
meine neue Variable, und das würde Daten entsprechen. Also die Datenrahmengruppe B.
Ich mag diese Methode wirklich. Sie ist sehr intuitiv. Sie gruppieren
diese Daten also. Nach was wollen wir gruppieren? Nun, nach Zeitstempel. Mal sehen, was uns das gibt. Also werde ich hier den Durchschnitt
ausdrucken, den Kopf des Durchschnitts ausführen und mal sehen, was wir haben. Wir haben im Grunde den
gleichen Datenrahmen. Das liegt daran, dass die
Gruppe die Daten nicht
nach Zeitstempel gruppieren konnte , weil Gruppe B so
arbeitet, dass Gruppe B versucht, identische Werte
in der angegebenen Spalte zu finden In diesem Fall hat der
Zeitstempel keine identischen Werte, da
jeder Wert einzigartig ist Sie können sehen, es ist derselbe Tag, aber diese Bewertung wurde zu diesem Zeitpunkt
abgegeben Die andere Bewertung wurde zu diesem
Zeitpunkt abgegeben und so weiter. Jeder Wert ist also anders. Bevor
wir Gruppe B anwenden, müssen
wir daher hier einige
Bearbeitungen vornehmen. Wir müssen dem Datenrahmen eine neue Spalte
hinzufügen. Ich werde diese
Spalte D mit Großbuchstaben D benennen . Ich versuche nur, mit
den Namen der Spalten konsistent zu sein. Da diese mit
Großbuchstaben geschrieben sind, beginnen
sie später mit einem Großbuchstaben. Ich werde diese neue
Spalte mit einem Großbuchstaben später erstellen. Also der Datentag
entspricht dem Datenzeitstempel. Dieses DT DT ist eine
Eigenschaft, die uns
Zugriff auf eine Reihe von
Datenzeitattributen wie Datum, Entschuldigung, Datum, Sie können Monat angeben Und so weiter. Vorerst brauchen
wir das Datum. Lassen Sie mich das auskommentieren, also
wähle ich sie aus und drücke Strg-Schrägstrich oder
Befehls-Schrägstrich, um sie auszukommentieren Und ich werde
Ihnen den neuen Datenrahmen zeigen. Das ist also der Datenrahmen. Also, was ich gerade getan habe, ist, dass ich aus diesem Zeitstempel extrahiert
habe, ich habe nur das Datum extrahiert Also
habe ich für jeden Zeitstempel das Datum bekommen Für diesen Zeitstempel ist
es also der zweite April, der
zweite April und so weiter Auf diese Weise haben wir also
einige identische Daten erhalten. Weißt du, wenn du den Monat haben willst, würdest
du die Zahl
des Monats bekommen. Also vier, vier, vier und so eins. Aber wir brauchen ein Datum, also
werde ich mich dort an das Datum halten. Jetzt können wir
das ungewöhnlich machen und lassen uns
Data Dot Heat löschen , weil wir es
nicht mehr benötigen. Und jetzt können wir es
noch einmal mit
dieser Gruppe nach Methode versuchen , aber seien Sie vorsichtig. Diesmal brauchen wir einen Tag hier. Wie gesagt, wir wollen
nach Tagen gruppieren. Lass uns ausführen und
sehen, was wir bekommen. Vielleicht ist es nicht das Ergebnis, auf das
wir gewartet haben. Sie sehen also, dass der Tag noch nicht
aggregiert ist , weil wir hier einen weiteren Befehl
geben müssen Wir müssen Pandas die
Methode der Aggregation mitteilen. Willst du also auf der Grundlage des
Mittelwerts oder der Anzahl
aggregieren In diesem Fall ist es der Mittelwert. Also würden wir sagen, Punkt, Methode, Execute, und dieses
Mal haben wir das bekommen. Also das ist nur der Kopf. Aber wenn Sie
den gesamten Datenrahmen ausdrucken, sehen
Sie, dass das bis zu diesem Datum so
funktioniert. also für jede Zeile Wir haben also für jede Zeile einen Tag, ersten Januar, den
zweiten Januar, dritten Januar und so weiter. Das ist also die durchschnittliche Bewertung
aller Kurse für diesen Tag. Jetzt müssen Sie dieses Produkt
verstehen. Das ist, wie ich Ihnen gesagt habe
, ein Datenrahmentyp. Also Pandas Datenrahmen,
aber dieser hat eine Spalte. Das ist also keine Spalte. Der Tag ist keine Spalte. Tag ist eigentlich der Index. Sie sehen, wenn Sie sagen,
dass der
Tagesdurchschnitt dieser Spalten die einzige Spalte ist. Und wenn Sie auf die
Bewertung zugreifen möchten, gefällt Ihnen das. Bewerte, und du bekommst diese Serie. Also, was ist das?
Das ist der Index. Wenn Sie also
auf die Tagesspalte zugreifen möchten, tun
Sie das nicht so,
da dies eine Syntax für
den Zugriff auf Spalten ist. Wenn Sie auf
diese spezielle Spalte zugreifen möchten, also auf diese Indexspalte, möchten
Sie Punktindex sagen. Und dann bekommen wir diese Serie
, die vom Typ Index ist. Sie können es aber leicht in eine Liste
umwandeln. Zum Beispiel, wenn Sie sie plotten
möchten. Genau wie Spaltenindizes, wie dieser, sind
auch Indizes listenähnliche Typen Also Datenanordnungen. Lassen Sie uns jetzt das Plotten machen. Für das Plotten
benötigen
wir die MT Plot Leap Library Also werde ich es hier
eingeben. Also importiere MT Plot lib PyPlot. Wir benötigen dieses Modul
der Bibliothek, und es
ist eine gute Praxis, SPLT zu verwenden Sie werden also im Internet sehen
, dass jeder PLT verwendet. Wenn Sie also konsistent
mit anderen Programmierern sein möchten, sollten
Sie das als PLT importieren Das erleichtert Ihnen auch die
Arbeit, weil Sie das
nicht abtippen müssen, sondern einfach PLT sagen können, wie wir es hier tun werden PLT-Punktdiagramm ist also die Methode, und diese Methode
hat im Grunde zwei Argumente, das X und das Y. Wir erstellen also ein Diagramm
mit einer X- und einer Entlang der X-Achse werden
wir die Tage haben Das heißt, wir wollen den
durchschnittlichen Punktindex. Also das Array da. Und neben Y wollen wir die Spalte mit der
durchschnittlichen Bewertung. Ausführen. Ich habe eine Fehlermeldung erhalten, PLT ist nicht definiert, weil
ich vergessen habe,
diese Zelle auszuführen , damit
der Import gültig ist Jetzt kann ich das erneut ausführen, und das ist ein Produkt Entlang der Y-Achse haben
wir die Daten, denen ich weiß, dass sie
etwas unsichtbar sind, aber das werden wir korrigieren Entlang der Y-Achse
haben wir die Bewertungsspalte. Sie sehen, dass sie hier irgendwo bei
3,8 beginnt und bis zu fünf reicht. Jetzt wählt Matplot Leap diesen
Bereich automatisch aus, indem es sich die Daten
ansieht Wenn
Sie sich unsere Bewertungsspalte ansehen, sagen
Sie die durchschnittliche Bewertung Wenn Sie den Höchstwert,
den Höchstwert, extrahieren , werden Sie
feststellen, dass er 5,0 ist. Und wenn Sie den Minimalwert sehen, sehen
Sie, dass er bei etwa 3,8 liegt. Eines Tages gaben Schüler eine
Durchschnittsbewertung von 5,0 ab, also alle. An einem anderen Tag verließen sie 3,8. Matplot Lip setzt also
diese beiden als Grenzen
der Y-Achse, anstatt die Achse von Null bis fünf zu
beginnen, und das würde den
Plot weniger lesbar machen Das ist also eine gute
Sache von MT Plot Lip. Das Schlimme ist,
wie Sie sehen können, dieses Diagramm nicht interaktiv ist, es ist
also nur eine Bilddatei. gibt keine
Popup-Funktionen, sodass Sie einige Werte
sehen könnten , wenn Sie irgendwo mit der Maus
über die Maus fahren. Matplot Lip kann das also nicht. Wir können dies jedoch
ein wenig verbessern, indem wir
ein Figurobjekt deklarieren und ihm ein
Argument mit fester Größe von sagen wir 253 geben Das ist die Breite
und das ist die
Höhe des Grundstücks Jetzt können Sie sehen, dass wir
eine längere X-Achse und
eine kürzere Y-Achse haben . Wenn Sie mit dieser Grafik nicht
einverstanden sind,
wenn Sie der Meinung sind, dass sie immer noch nicht lesbar
ist, sagt
sie Ihnen nicht
viel über den Trend aus. Wenn das Rating also im Laufe der Zeit
gestiegen ist oder nicht, dann
könnten wir die Daten herunterrechnen Anstatt
tägliche Durchschnittswerte zu extrahieren, könnten
wir wöchentliche
Durchschnittswerte extrahieren, sodass könnten
wir wöchentliche
Durchschnittswerte extrahieren, wir weniger Punkte auf
der X-Achse und eine glattere Linie hätten der X-Achse und eine glattere Meiner Meinung nach
sind das also zu viele Daten. Es ist unlesbar,
es ist nicht nützlich. Lassen Sie uns sie im nächsten Video mit
einer besseren Grafik
herunterspielen nächsten Video mit
einer besseren Grafik
herunterspielen Das
haben Sie also in diesem Video gelernt. Sie haben gelernt, Daten zu gruppieren und Sie haben
gelernt, sie grafisch darzustellen. Lassen Sie mich nun eine
kleine Überarbeitung
der Gruppierung nach Methode vornehmen , falls
Sie immer noch verwirrt sind. Lassen Sie mich das in
einer anderen Zelle hier entfernen und lassen Sie mich den Kopf des
aggregierten Datenrahmens
ausdrucken den Kopf des
aggregierten Datenrahmens
ausdrucken Sie sehen also, wir haben hier eine Bewertung
und einen Tagesindex. Was ist mit dem Kursnamen passiert? Mit dieser Kolumne? Was ist
mit der Kommentarspalte passiert? Was ist mit
der Zeitstempelspalte passiert? Nun, sie sind verschwunden,
weil diese Mittelwertmethode nur mit Spalten
funktioniert, die Zahlenwerte
wie Bewertung
haben Ich kann keinen
Durchschnitt für diese Spalte, diesen
Kommentar, den
Kursnamen oder den Zeitstempel berechnen Kommentar, den
Kursnamen oder den Zeitstempel Daher werden Spalten wie allgemeine Zeitangaben
und Kursnamen dieser Methode
automatisch
gelöscht und nur diese
Spalten bleiben erhalten In ähnlicher Weise könnten Sie stattdessen
eine Zählung durchführen. In diesem Fall würden Sie
einen anderen Datenrahmen erhalten. Sie sehen also, dass wir
die Anzahl der Kursnamen haben, was bedeutet, dass für dieses Datum 46 Zeilen erstellt
wurden. Mit anderen Worten, 46 Bewertungen. Wir haben also 46 Bewertungen, wie
auch immer Sie es nennen möchten. Wir haben hier sieben
, weil Pandas Nichtwerte
wie diesen und jenen und
so weiter nicht
berücksichtigt Nichtwerte
wie diesen und jenen und
so weiter nicht
berücksichtigt wie diesen und jenen und
so weiter Deshalb könnten wir dieses Zähldiagramm
haben. Also zeigen wir, wie viele
Bewertungen wir jeden Tag hatten. Und genau das wollte
ich dir in diesem Video beibringen. Vielen Dank. Ich
rede später mit dir.
138. 137. Downsampling und Plotten von durchschnittlichen Bewertungen pro Woche: Ich komme zurück.
Im vorherigen Video haben wir ein Diagramm entwickelt, das die
täglichen Durchschnittswerte der Bewertungen, aber auch die tägliche
Anzahl der Bewertungen zeigt. In diesem Video wollen wir dieses Diagramm
neu erstellen, jedoch
auf wöchentlicher Basis. Lass uns das machen. Lassen Sie uns diesen Datenrahmen also ein wenig
organisieren. Ich klicke hier,
drücke A, Enter, M, Enter und gebe diesem Abschnitt einen Durchschnitt der Titelbewertung
pro Tag, da wir
sowohl Durchschnittswerte als auch Zählungen erstellt haben. Führe diese Zelle aus. Jetzt brauchen
wir hier eine neue Zelle, Durchschnittswert
B pro Woche. Stellen Sie auch hier sicher, dass Sie
Zugriff auf die Datenvariable haben. Das ist also mein Datenrahmen. Andernfalls
müssen Sie
zuerst diese Zelle ausführen und dann
die nächsten Operationen ausführen. Also das Erste, was wir tun
wollen, ist , dass ich diese Zeile kopiere. Und was wir daran ändern
wollen, ist zunächst, wir angeben müssen, um
eine neue Spalte im
Datenrahmen zu erstellen . Nennen wir es also schwach. Und wir extrahieren aus dem
Zeitstempel und machen den T-Punkt. Sollte es schwach sein?
Lass uns das ausprobieren. Oder drucken Sie einfach den gesamten
Datenrahmen aus. In Ordnung Wir bekommen eine Warnung. Ignorieren wir das für eine Weile. Und wir bekommen die Wochenkolumne. Wir sehen also, dass dies die 13. Woche ist. Das ist die erste Woche. Lass uns sehen. Was ist eigentlich
das Maximum dieser Spalte. Es ist also 53. Was ist das Minimum? Ich nehme an, es ist einer. Hmm. Das heißt, wir
haben nur 53 Wochen. Pandas aggregiert also die
Wochen verschiedener Jahre,
was bedeutet, dass
es die
Bewertungen von, bedeutet, dass
es sagen wir, der ersten Woche des Jahres 2019
mit
den Bewertungen der ersten Woche des Jahres 2019
und
den Bewertungen der ersten Woche des Jahres 2020 aggregiert Jahres 2019
mit
den Bewertungen der ersten Woche des Jahres 2019
und
den Bewertungen der ersten Woche des Jahres 2020 und All diese drei Wochen
werden also zu einer
zusammengefasst,
und das wird
Woche eins sein und das wird Dann bekommen wir Woche zwei für
die zweite Woche von 2019, 2019 und 2020 und so weiter Insgesamt hatten wir 53 Wochen ,
denn so
viele Wochen hat ein Jahr. Nun, normalerweise hat es 52
Wochen, soweit ich weiß, aber vielleicht ist es eines dieser Jahre,
es ist wahrscheinlich ein Schaltjahr, es hat 53 Wochen, schätze ich. Wie dem auch sei, du verstehst die Idee. Das ist nicht das, was wir brauchen. Lass uns versuchen, was die Warnung
vorschlägt DT, also Kalender. dieser Woche. Hm. Es scheint, dass
das Maximum wieder 53 ist. Wir haben also immer noch
aggregierte Wochen. Daher besteht die Lösung
hier darin, SDR f time zu verwenden,
was eine Zeichenfolge aus der Zeit bedeutet Und das bekommt als Argument einige Datums- und Uhrzeitcodes
wie Prozentsatz Y, vielleicht einen Gedankenstrich oder so oder ein
Leerzeichen, das liegt ganz bei Ihnen Das ist optional. Aber das ist der Code, den Sie verwenden
müssen , wenn Sie das Jahr extrahieren
möchten. Und dann extrahieren wir
die Wochennummer. Mal sehen, was wir diesmal bekommen. Jetzt reden wir. Also dieses Mal bekommen wir das
Jahr und wir bekommen die Woche. Daher können wir
zwischen verschiedenen Zeilen unterscheiden. Woche 13 des Jahres 2021 steht
jetzt also unter diesem Namen. Es ist nicht nur 13. Daher werden wir wieder
20 haben, 2013, 2019, 13 und so weiter. Wir haben also seit Wochen eindeutige
Namen. Und das hat uns geholfen, dieses Datetime-Format zu erstellen Sie könnten andere Codes verwenden. Wenn du also einen Monat willst, würdest
du einen niedrigeren nehmen. Und dann würden wir
die Zahl des Monats bekommen, April hier und die Woche,
die Zahl der Woche. Wie ich dir schon sagte, das ist optional. also anstelle des Bindestrichs Sie könnten also anstelle des Bindestrichs ein Leerzeichen verwenden, und Sie erhalten den Abstand zwischen
dem Monat und der Woche. Wo findest du diese Codes? Nun, Sie können einfach
Python-Codes für das Datetime-Format googeln und Sie werden eine Liste sehen, eine große Liste dessen, was Sie verwenden können Lassen Sie uns hier also den Bindestrich und die
Wochennummer verwenden. Was kommt dann als Nächstes? Nun, als Nächstes werden die Daten gruppiert. Nehmen wir also an, ein schwacher
Durchschnitt eines neuen Datenrahmens entspricht dem Datenpunkt Gruppe für Woche. Also diese Spalte. Und daraus wollen wir
das Mittel herausholen. Mal sehen, was wir bekommen.
Es scheint also zu funktionieren. Siehst du? Nun, okay, Python erwägt
die erste Woche, Null, Null, aber
das spielt keine Rolle. Ich denke, es ist okay. Und so haben
wir den Durchschnitt
für jede Woche. Nochmals, vergiss das nicht. Die Wochenspalte ist
eigentlich der Index. Das ist also die erste Woche, die
zweite Woche und so weiter. Und die Bewertung ist die Kolumne. Lassen Sie uns jetzt die Handlung planen. PLT-Punktdiagramm. Wir müssen also ein X und ein Y angeben. Das X wird diesmal ein schwacher durchschnittlicher Punktindex
sein, sodass die Wochenspalte und die
Datenbewertung Ich habe diesen Fehler bekommen. X und Y müssen dieselbe erste Dimension
haben, aber diese und jene Formen haben. Es scheint also, als würde ich Spalten aus
verschiedenen Datenrahmen
verwenden. Das ist also ein
wöchentlicher durchschnittlicher Datenrahmen 173 Zeilen, und dies ist der andere
Datenrahmen mit 45.000 Zeilen Ich meinte also Tag,
tut mir leid, Wochendurchschnitt. Warte, und das ist die Grafik. Auch hier gilt: Wenn Sie eine bestimmte Größe
anwenden möchten, möchten
Sie diese kopieren
und hier einfügen. Das verändert im Grunde
das Figurobjekt. Und das ist die Grafik. Also durchschnittliche Bewertung pro Woche. Also, Sie sehen, dass die Labels hier miteinander verwechselt
sind Und es gibt Möglichkeiten, das zu beheben. Aber ich würde sagen, dass es
sich nicht lohnt, das hier mit
Matt Plot Lee zu tun , denn wenn Sie
Ihre Daten wirklich anderen zeigen wollen, dann sollten Sie eine
modernere Plotbibliothek verwenden, wie z. B. High Charts, die wir in den nächsten Videos
verwenden werden Hohe Diagramme zeigen jetzt ein
intelligenteres Diagramm, das benutzerfreundlich ist
und für
eine
hervorragende Benutzererfahrung sorgt und versucht , die Informationen effizienter darzustellen Ich würde also sagen, dass diese
Darstellung für die Verwendung
von Matplot Leap
im Jupiter-Notizbuch
ausreichend ist für die Verwendung
von Matplot Leap
im Jupiter-Notizbuch
ausreichend Verwendung
von Matplot Leap
im Jupiter-Notizbuch Wir untersuchen also nur Daten. Wir können jetzt einen Trend erkennen, dass die Bewertungen mit der Zeit
steigen. Vielleicht war das in der Tagesgrafik nicht sehr
gut sichtbar. Sie sehen diese Grafik also hier. Das hat die aktuellen Zählungen, aber wir können das so ändern, dass wir die Zelle erneut ausführen und
dann die
Zellen erneut zeichnen, und wir können die
Tagesmittelwerte hier sehen, die Wochenmittelwerte hier Ich glaube, Sie stimmen mir
zu, dass es
einfacher ist , den Trend in dieser
Grafik zu erkennen als in dieser Grafik Und das ist die Stärke des
Downsamplings der Daten. Im nächsten Video werden
wir die Daten noch weiter
verkleinern und die
durchschnittlichen Bewertungen pro Monat anzeigen Wir sehen uns im nächsten Video.
139. 138. Downsampling und Plotten von durchschnittlichen Ratings pro Monat: Hallo. In diesem Video zeige
ich Ihnen, wie
Sie
ein Diagramm erstellen, in dem die
durchschnittliche Bewertung pro Monat angezeigt wird . Dies wird
ein sehr kurzer Vortrag sein , weil wir bereits
wissen, wie das geht. Alles, was wir tun müssen, ist diese Zelle einfach so zu
kopieren, oder Sie können sie auch kopieren, indem Sie Escape und dann CC
drücken. Drücken Sie zweimal die C-Taste. Dann
gehst du hier einfach hin und sagst V, und das wird
die Zelle einfügen, sodass du nicht alle
Codes so kopieren musst. Aber anstatt die Codes zu
kopieren, können
Sie die gesamte Zelle kopieren. Und dann
müssen wir
hier ein paar Änderungen vornehmen , Monat hier, Zeitstempel, dann statt U haben
wir M. Statt
Woche haben wir Monat Statt Woche haben wir
hier Monat. Das ist in Ordnung. Dann aktualisieren
wir hier den variablen
Monatsdurchschnitt. Monatsdurchschnitt der Ausführung, und
das ist der monatliche Durchschnitt. Also ich denke, es wird besser. Sie sehen, dass wir den
Unterschied jetzt deutlicher sehen. Und das liegt auch daran, dass
sich die Bandbreite in der Grafik
geändert hat der Grafik
geändert seit wir mehr
aggregierte Daten haben, sodass wir jetzt monatliche Durchschnittswerte haben Das heißt, es gibt
keine große Amplitude, einen großen Unterschied zwischen
dem höchsten Wert. Sie sehen
also, dass der höchste Wert
jetzt irgendwo
bei 4,6 liegt , und dem niedrigsten Wert, irgendwo
bei 4,3 oder 4,35 liegt Dadurch werden die Höhen und Spitzen für den Benutzer sichtbarer Stimmt, und das ist
ungefähr dieses Video. Im nächsten Video werden
wir etwas anderes
machen. Wir werden versuchen,
mehrere Linien in
einem einzigen Diagramm zu erstellen , und jede Zeile
wird
den monatlichen Durchschnitt der
Bewertungen für jeden Kurs darstellen . Bisher hatten wir nur
aggregierte Kurse. Lassen Sie uns also
im nächsten Video mit Ihnen sprechen.
140. 139. Durchschnittliche Bewertungen pro Kurs pro Monat: Hallo, willkommen zurück. In diesem Video werden
wir
ein Diagramm mit
verschiedenen Linien erstellen , wobei jede Zeile
die durchschnittliche Bewertung pro Monat
für einen bestimmten Kurs darstellt . Wir haben also mehrere Kurse. Wir werden für
jeden Kurs eine Zeile haben . Lass uns das machen. Setzen wir eine Überschrift auf Seite drei. Das wäre die durchschnittliche
Bewertung pro Kurs pro Monat. Stimmt. So machen wir das. Zunächst
benötigen wir eine Monatsspalte im Datenrahmen. Jetzt weiß ich, dass
wir das hier gemacht haben. Wir haben
diese Monatsspalte bereits, aber ich möchte
den Code getrennt halten, damit es nicht schadet, wenn Sie
ihn hier nur aus
Konsistenzgründen noch einmal machen . Um zu sagen, dass diese Zelle genau das
tut, also ein Diagramm
mit mehreren Linien erstellt, und für dieses Diagramm
benötigen wir diesen Ausdruck. Es ist also derselbe Ausdruck. Ich kann das einfach kopieren
und hier einfügen. Richtig, wir müssen da nichts
ändern, also müssen wir nur
den Monat extrahieren und das überprüfen wir. Wir haben also den
Monat für jede Zeile. Da wir nach Monaten gruppieren, ist es sinnvoll, das zu haben Dann müssen wir die
Methode „Gruppieren nach“ verwenden , um
einen neuen Datenrahmen zu erstellen
, der eine Aggregation wäre Nun, nur damit wir es
vergleichen, um es zu vergleichen. Sehen wir uns an, wie der
durchschnittliche Datenrahmen des
Vormonats aussieht. Also nochmal, das hatten wir. In diesem Datenrahmen fehlen die
Informationen zu den Kursen. Es fehlen also die Informationen zum
Kursnamen. Sie sehen hier, wir
haben diese Spalte. Wir müssen diese Dimension irgendwie in unserem neuen
aggregierten Datenrahmen Was wir hier also tun müssen,
ist etwas anderes. Auch hier müssen wir eine neue Variable
erstellen. Lassen Sie uns das vielleicht als
Monatsdurchschnitts-CRS bezeichnen, um zwischen
diesem Datenrahmen und dem durchschnittlichen
monatlichen CRS zu unterscheiden durchschnittlichen
monatlichen CRS Auch dies wird ein Produkt für Produkt
dieses Datenrahmens sein , wobei eine Gruppierung nach Methode verwendet Aber lassen Sie
mich das in diesem Fall löschen, damit Sie den anderen Code hier sehen
können
, um den Unterschied zu sehen. In diesem Fall werden wir
nicht nur den Monat
hier in der Liste
der Spalten haben , die für
den Aggregationsprozess verwendet werden sollen, sondern wir werden auch,
können Sie erraten, welchen Kursnamen wir haben können Sie erraten, welchen Kursnamen Also, von Monat zu Kurs,
das ist es, was wir brauchen. Bewerben wir uns jetzt, meine ich, und
schauen wir mal, was wir bis jetzt bekommen haben. Das ist also ein Datenrahmen. Und im Grunde hat dieser tatsächlich zwei Indexebenen Es hat den Monat und
den Kursnamen. Das können Sie sehen, wenn
Sie diesen Index erstellen. Sie sehen also, dass es sich um einen Multiindex handelt. Sie sehen die Monatsspalte und auch einen Kursnamen
, der hier nicht angezeigt wird, aber er ist da und
so, wie Sie ihn gesehen haben, konnten
Sie ihn hier sehen. Sie sehen, dass diese fett gedruckt sind. Diese Werte, das
heißt, sie sind Indizes. Und das hier ist eine Kolumne. Die Spalten haben also
nur eine Bewertung, nur eine Spalte. Nun, das ist noch nicht sehr
nützlich, weil es so aufgebaut
ist, dass wir hier eine Zeile haben. Das ist also eine Gruppe von
Zeilen. Es beginnt hier. Also der erste Kurs, der zweite Kurs, der
dritte, vierte, fünfte. Und es gibt hier auch noch ein paar
andere Kurse, die wir tatsächlich sehen können,
wenn wir hier ein Stück auftragen. Schauen wir uns also die
ersten 20 Datensätze an. Jetzt sehen wir die ersten
20 Datensätze
vollständig, den kompletten ersten Tag der Entschuldigung, ersten Monat 2018, zweiten Monat 2018 und so weiter. Dieser Kurs hat die
Bewertung für diesen Monat. Dieser Kurs hat die
Durchschnittsbewertung für diesen Monat und alle
anderen Kurse. Dann
wiederholt sich dasselbe Muster, wie dieses hier wie dieses hier, in allen Monaten
immer wieder. Um diese Daten
in einer besseren Struktur zu haben, würden wir hier die
Unstack-Methode anwenden , um
diesen Datenrahmen
im Grunde zu entstapeln und am Ende diese bessere Struktur
zu erhalten Jetzt haben wir sozusagen
eine Pivot-Tabelle, wir haben
den Monat hier, den
ersten Monat, den zweiten Monat, den dritten
Monat, und jede Spalte
steht jetzt für
einen Kurs. Wenn Sie also zum Beispiel die Bewertung des kompletten
Python-Kurses wissen möchten
, in dem
zehn professionelle OOP-Apps
für einen bestimmten Monat erstellt wurden, sagen
wir, diese, ist
es keine, weil der Kurs nicht
veröffentlicht wurde noch zu diesem Zeitpunkt. Aber wenn Sie sich das Ende ansehen, sagen
wir -20. Dann würden
Sie sehen, dass
wir ab dem
ersten Monat des Jahres 2020 eine Bewertung
für diesen Kurs haben, eine Durchschnittsbewertung, richtig? Und so weiter, was können wir jetzt mit
diesem Datenrahmen machen ?
Nun, wir können es planen. Aber dieses Mal
werden wir
einen anderen Ansatz verwenden, da wir dieses Punktdiagramm nicht verwenden können , da wir mehrere,
mehrere Spalten haben Das erwartet also ein X und ein Y, aber welches ist das X? Das X steht natürlich für Monat.
Darüber sind wir uns im Klaren. Aber welches ist das Y? Ist es das oder das oder das? Wir haben also mehrere Spalten. Eine Möglichkeit wäre, diese Plotfunktion
mehrmals zu schreiben
oder vielleicht eine Schleife zu erstellen, oder vielleicht eine Schleife zu erstellen die durch
den Datenrahmen iteriert,
aber eine andere, einfachere
Möglichkeit besteht darin, einfach auf die durchschnittlichen CRs Dot Plot
und Villa
zu zeigen , was wir haben Natürlich sieht es chaotisch aus, aber lassen Sie uns es ein bisschen verbessern Da wir die Plotfunktion
direkt aus dem Datenrahmen und
nicht aus dem PLT verwendet direkt aus dem Datenrahmen haben, können wir hier die Argumente für die
Größe der Figur verwenden Sagen wir also 253. Und jetzt sieht es ein bisschen besser aus. Immer noch nicht ideal, vielleicht
könnten wir das auf acht erhöhen. Okay. Jetzt funktioniert es. Da haben wir also eine Legende, die die Farbe der
einzelnen Golfplätze
zeigt. Auch hier bin ich kein Fan von
dieser Art von Grafik, aber wenn wir die
High Charts-Bibliothek
mit der Weboberfläche verwenden , wird
das viel besser
aussehen. Was ist, wenn wir hier count verwenden? Wir würden das
Diagramm korrekt wiedergeben, aber die Legende
wäre ein bisschen durcheinander. Das liegt daran, dass
wir im CRS-Datenrahmen für den Monatsdurchschnitt CRS-Datenrahmen für den Monatsdurchschnitt nicht nur
die Anzahl der Bewertungen haben, sondern auch andere Zeitstempel und
Dinge, die wir nicht benötigen Sie sehen, dass zum
Beispiel dieser Kurs,
100 Python-Übungen, eine
hat den Zeitstempel hier. Sie sehen, es ist eine andere
Ebene von Spalten. Das alles gehört also
zu Timestamp, oder? Die Anzahl der Zeitstempel. Und dann haben wir die
Anzahl der Bewertungen, angefangen von hier
bis irgendwo Wir sehen nicht alle Spalten weil Jupiter sie
kürzt, aber Sie verstehen schon,
Tag und Woche Wie können wir also
nur die Bewertung extrahieren? Nun, das ist eigentlich einfach. Ich habe dir gesagt, dass Gruppe B, die hier beginnt
und hier endet, Gruppe B einen Datenrahmen zurückgibt. Jetzt extrahieren
wir aus diesem Datenrahmen nur die Bewertung. Und das Problem ist gelöst. Jetzt erhalten wir eine übersichtliche
Grafik, die die
Anzahl der verbleibenden Bewertungen für
jeden Monat des Jahres zeigt. Von
Anfang 2019 bis 2020 siehst
du hier also diese rosafarbene Linie, das ist der neue Kurs, der komplette Python-Kurs. Es beginnt irgendwo im Jahr 2021. Also der erste Monat des Jahres 2021. Und natürlich können Sie auch hier wieder das Mittel
herausholen, so wie
Sie es zuvor getan haben. Aber mit Mittelwert
erhalten wir wieder dieselben Ergebnisse, da
die Mean-Methode
diese Zeitstempel und diese
nicht numerischen Spalten ignoriert diese Zeitstempel und diese
nicht numerischen Also wie dem auch sei, sie werden gelöscht. Aber der Graf lässt sie nicht fallen. Es zählt sie hoch und
gibt uns so viele Daten. Stimmt, ich hoffe, das war klar, und ich werde später mit dir reden. Wir sehen uns.
141. 140. Welcher Tag der Woche sind die Menschen am glücklichsten: An welchem Wochentag sind die
Menschen am glücklichsten? Können wir diese
Frage mit Python und den Daten, die wir gerade zur Hand
haben, beantworten? Nun, ich denke, ja, das können
wir tun, und das ist das Schöne
an der Datenanalyse. Wenn Sie ein bisschen kreativ sind, können
Sie sehr interessante
Fragen zu Ihren Daten beantworten . In diesem Video werden
wir also gemeinsam herausfinden, an welchem Wochentag die
Menschen am glücklichsten sind ?
Wie machen wir das? Nun, indem wir ein Diagramm generieren. Also, wie können wir das machen? Nun, meiner Meinung nach
können wir die Logik verwenden, dass wenn die durchschnittliche Bewertung
für alle Kurse, sagen
wir, mittwochs die höchste der Woche
ist, dann können wir sehen, dass die
Leute an
diesem Tag am Mittwoch vielleicht positiver
sind Ich bin mir sicher, dass wir
das erkennen können, weil wir so viele Daten
haben Tausende von Bewertungen, und statistisch gesehen
,
gibt uns das meiner Meinung nach großes Vertrauen in das Ergebnis Was wir tun müssen, ist ein Diagramm zu erstellen, das sieben
Tage auf der horizontalen Achse, von Montag bis Sonntag, und
auf der vertikalen Achse werden
wir den
Durchschnitt für jeden Tag haben Das bedeutet, dass
wir eine Menge Daten aggregieren müssen. Lass uns das machen An welchem Tag sind
die Menschen am glücklichsten? Jetzt werden wir wie
immer den Datenrahmen verwenden. Also, wo wir diese Bewertungen zu
bestimmten Zeitstempeln übrig Also, was müssen wir extrahieren? Also, der Wochentag.
Nennen wir es so. Was gleich
Data, Timestamp ist. Also ohne Zeitstempel greifen
wir auf die DT-Eigenschaft zu,
und daraus benötigen
wir SDR FT. Und
der Wochentag Wenn Sie also Sonntag, Montag
oder Dienstag möchten
, kann dieser Name
des Wochentags
mit dem A-Formatcode extrahiert werden . Sie können das bei Google nachschlagen. Das mache ich auch. Es ist unmöglich,
sich an alles zu erinnern. Jetzt können wir die Daten wieder ausdrucken
und sehen, dass wir einen Wochentag
haben. Spalte. Freitag, Freitag, Freitag wiederholen
sich also immer wieder,
und wir müssen jetzt
aggregieren, um
den Durchschnitt für jeden Wochentag zu erhalten . Nehmen wir also an, der
Wochentagsdurchschnitt für den Datenrahmen ,
der die aggregierten Daten enthalten wird Auch hier ist Gruppe B unser Sparer. Mm. Was benutzen wir dieses
Mal? Nun, Wochentag. Und dann meine ich. Und lassen Sie uns sehen, was wir an Wochentagen durchschnittlich bekommen. Und das war's. Dann müssen
wir nur noch,
lassen Sie mich das löschen. Alles, was wir tun müssen,
ist ein Punktdiagramm. Die X-Achse wäre Woche,
der durchschnittliche Punktindex, und
die Y-Achse wäre Woche, Durchschnitt,
Wochentag, Entschuldigung, Bewertung Handlung, das ist die Antwort. Ich weiß, dass die Reihenfolge nicht so ist, wie Sie es erwarten würden,
aber wir können das ändern. In jedem Fall können wir
feststellen, dass der Freitag ganz
anders
ist als die anderen Tage. Freitags geben die Leute also eine durchschnittliche Bewertung von
4,455 auf
einer Skala von eins bis Und das macht Sinn. Ich glaube,
ich falle auch in diesen Bereich, also bin ich freitags tendenziell
glücklicher Ende der Woche
und das Wochenende stehen also vor der Tür und es macht Sinn Nun, wie können wir diese Daten bestellen? Also müssen wir
die Wochentagsspalte bestellen. Also, das können wir machen. Lassen Sie mich das für eine Weile
kommentieren. Der Wochentagsdurchschnitt entspricht dem Durchschnitt des
Wochentags. Sortieren Sie die Werte
nach Wochentag und drucken
Sie sie aus, um zu sehen,
was der Wochentagsdurchschnitt ist. Und Sie werden feststellen, dass dies nicht die Reihenfolge ist, die
wir erwarten würden. Das passiert natürlich, weil die Indexspalte, diese hier, Zeichenkettenwerte enthält. Also Freitag, Montag, ein
Tag sind alles Zeichenketten. Daher ordnet Python sie in alphabetischer Reihenfolge Freitag, Erster Tag,
Montag usw. sind also Zeichenketten, weil diese Methode eine Zeichenfolge, also eine
Wochentagsspalte,
erzeugt Sie sehen eine Zeichenfolge von Time. Zeitstempel war also Zeit, aber wir haben ihn in eine Zeichenfolge umgewandelt Jetzt gibt es möglicherweise verschiedene
Problemumgehungen, um dieses Problem zu beheben. Mir fällt ein, dass wir eine
Wochentagsnummer hinzufügen könnten eine
Wochentagsnummer hinzufügen Oder einfach die Zahl. Zum Datenrahmen,
und aus dem heraus verwenden
Sie wieder eine Zeichenfolge aus der Zeit, aber dieses Mal verwenden wir den
prozentualen Kleinbuchstaben W. Und
was uns das geben würde, ist,
lassen Sie mich Ihnen zeigen, dass Daten jetzt
dieser Datenrahmen sind prozentualen Kleinbuchstaben W. Und
was uns das geben würde, ist,
lassen Sie mich Ihnen zeigen, dass Daten jetzt und
diese Tagesnummer Jetzt haben wir neben dem
Namen des Wochentags eine
Zahl an
jede Zeile angehängt neben dem
Namen des Wochentags eine
Zahl an
jede Zeile Das ermöglicht uns nun,
die Werte nach dieser
Tagesnummernspalte zu sortieren . Montag ist der erste
, Freitag ist der fünfte und so weiter. Lass uns das machen. Ich
lösche den Delta-Datenrahmen von dort, das Drucken, das
Ungewöhnliche, und ändere
das in Tagesnummer. Und hier, Wochendurchschnitt, löschen, ungewöhnlich das, ausführen. Wir haben diese Schlüsselnummer für den Tag des
Fehlers. Oh, weil ich vergessen habe
,
hier die Tagesnummer hinzuzufügen . Auch hier haben wir einen Fehler. Mal sehen, wo der
Fehler aufgetreten ist. Das sind also die Fehler
tief in den Bibliotheken, Sie in MT plot Lip sehen und das zeigt den
Fehler in unserem Code. Es ist also in diesem
Liniendiagramm mit Punktdiagramm. Und es heißt, dass der Wert
ein Inzest von Zeichenketten oder
Bytes sein muss , kein Tupel Versuchen wir also, den Fehler hier
zu beheben. Ich werde das auskommentieren
und sehen was der Wochentagsdurchschnitt ist Das Problem hier
ist also der
Wochentagsdurchschnitt , der Index
gibt einen doppelten Index zurück, was so aussieht,
also ist es ein Multiindex Er enthält den Wochentag
und die Tagesnummer. Daher wird die
Plotmethode verwirrend sein, sodass sie nicht weiß, welches
dieser Arrays entlang der X-Achse
geplottet werden muss Wir brauchen also eine Möglichkeit, nur die Spalten zu
extrahieren. Also die Namen der Wochentage. Sie können das tun, indem Sie
die Get-Level-Werte verwenden. Das ist eine Methode, die ein Argument
erwartet. In diesem Fall können wir
entweder Null oder Eins eingeben. Null bedeutet, dass wir extrahieren, wir auf die erste
Spalte des Multiindex zugreifen und eine Spalte
die zweite Spalte wäre Wir brauchen also die erste Spalte. Und das gibt uns diese Tage, also die Namen der Tage. Deshalb
können wir das jetzt hier verwenden
, um diesen Ausdruck zu
kopieren. Das ist das Array, das wir entlang der X-Achse zeichnen wollen
. Also haben wir das hier reingetan. Ausführen,
und das ist die Ausgabe. Wenn wir
das Bild breiter machen wollen, müssen
wir die
Größe der Zahl plt so einstellen, dass
sie einer Liste von 253 entspricht, das funktioniert gut, oder vielleicht ein bisschen Kleiner. Ja, das ist besser. Also musst du
ein gutes Verhältnis zwischen der
Breite und der Höhe finden . Und wieder sehen wir, dass Freitag
der Tag mit der
höchsten Durchschnittsbewertung ist . Und das war also
über dieses Video. Vielen Dank fürs
Folgen. Ich werde in den nächsten Videos mit
dir sprechen. Wir sehen uns.
142. 141. Andere Arten von Plots +: Hallo. In diesem Video werde
ich Ihnen einige
wichtige Informationen
über verschiedene Arten von Grundstücken geben . In den vorherigen Videos haben wir mehrere Plots erstellt, und alle hatten
etwas gemeinsam. Es waren alles Liniendiagramme. Wie gehen wir also vor,
verschiedene Arten von Graphen zu verwenden? Nun, diese Liniendiagramme werden mit der Plotmethode
generiert. Aber wenn Sie die
Hirschmethode verwenden, um PLT,
also PLT, zu erforschen , können Sie sehen, dass Sie auch hier unten etwas eingeben
können Sie sehen, dass Sie auch andere Arten von
Diagrammen verwenden können. Nicht alle von ihnen sind Graphen. Bei einigen von ihnen handelt es sich um Eigenschaften, die Sie dem Diagramm geben, das
Sie erstellen, aber Sie werden sehen, dass sich hier zum Beispiel der
Plot irgendwo befindet. Das war also die Handlung,
und Sie können sehen, dass wir
zum Beispiel einen Balken
haben, diesen. Wenn Sie das in Balken ändern, bekommen
wir diese Balken
innerhalb der Linie. Dies ist jedoch keine sehr
gute Darstellung für diese Art von Grafik, da die Unterschiede zwischen den
Bewertungen sehr gering sind. Also würde ich mich für eine Handlung entscheiden. Einige dieser Arten von Diagrammen, zum Beispiel Pi, sind
für diese Art von Daten nicht geeignet. Wenn Sie also Pi ausprobieren, erhalten
Sie eine Fehlermeldung. Denn wenn du Hilfe benutzt, dann sagen
wir, hilf PLT Pi einem Kreisdiagramm werden
Sie sehen, dass Pi
ein X erwartet, aber kein Y. Wie könnten wir
also
ein Kreisdiagramm mit unseren Daten verwenden Nun, vielleicht, also lassen Sie mich hier einen neuen Eintrag
erstellen. Wir könnten vielleicht ein
Kreisdiagramm erstellen, sagen wir, Anzahl der Bewertungen pro Kurs,
was Sinn machen würde. Das könnten wir also tun. Nehmen wir an,
der neue Datenrahmen entspricht den Daten der Gruppe B. Wir möchten nach Kursnamen und Kursen gruppieren und dann die Anzahl anwenden. Und das würde uns
diesen neuen Datenrahmen geben. Wir sind also
an der Bewertungsspalte interessiert. Wir sehen, wie viele Bewertungen jeder Kurs insgesamt
erhalten hat. Wenn wir nun
all diese anderen Daten nicht haben wollen, interessiert
uns nur die Bewertungsspalte. Zwischen den Zählungen der Gruppen
B und D führen
wir also eine Bewertung durch, also
extrahieren wir die Bewertungsspalte. Dann würden
wir das ernst nehmen. Also können wir das nutzen.
Lassen Sie mich
eine neue Zelle mit PLT Dot Pi erstellen eine neue Zelle mit PLT Dot Pi Also haben wir gesagt, dass Pi ein X als Argument
bekommt. Also das wäre
die Share-Serie. Das X ist also mindestens eine Reihe, eine Datenrahmenspalte. Also wird jede Art von Array ausgeführt. Und ja, das ist das Pi-Diagramm. Aber es hat keine Beschriftungen, also geben wir ihm ein paar Beschriftungen. War es so? Das Argument. Etiketten? Ja. Derzeit ist
es auf None gesetzt, sodass der Standardwert none ist. Wenn Sie also Labels vergeben möchten, würden
Sie sagen, teilen Sie den Punktindex. Index ist die Spalte mit
den Namen der einzelnen Zeilen. Ausführen. Und ja, dieses Mal bekommen
wir diese Etiketten für
jedes Stück vom Kuchen. Sie sehen also, dass der
Python-Megakurs zum Beispiel die meisten Bewertungen
hat. Dann kommt die Python für
Anfänger mit Beispielen, die braune Scheibe in ihr und so weiter, auch andere
Kurse. Jetzt bekommen wir auch hier
eine
Menge Metadaten , die diese
Methode erzeugt. Aber wie ich schon sagte, Matplot Leap ist nicht die
benutzerfreundlichste Plotbibliothek, also eignet sie sich gut für die
Datenexploration, aber sie ist nicht sehr gut für Präsentationen vor anderen Zuschauern, vor anderen Lesern, anderen Benutzern, die Ihre Visualisierungen sehen
möchten Damit ist dieses Video beendet. Und wie ich dir schon gesagt habe, werden
wir
all diese Grafiken machen, jedes einzelne
davon, das du gesehen hast, einschließlich dieses, lass mich es wieder zur Handlung
ändern. Wir werden diese Grafiken
reproduzieren, diesmal
jedoch mit einer
moderneren webbasierten Bibliothek die die Daten in einem Browser darstellt. Sie
können
ganz einfach eine Web-App erstellen , sodass Sie
Benutzern die URL Ihrer Web-App zu
Ihrer Website
geben können, damit sie diese Grafiken
selbst interaktiv
erkunden können . Die gute Nachricht ist, dass
wir
keine weiteren Aggregationen mithilfe von
Group by durchführen werden, unsere Daten sind fertig Wir werden
diese einfach kopieren und dann
die Plotfunktion
der neuen Plotbibliothek mit
hohen Diagrammen verwenden der neuen Plotbibliothek , die wir in den nächsten
Videos verwenden werden Also vielen Dank, dass Sie diese Serie
verfolgt haben. Ich werde in
der nächsten mit dir sprechen. Wir sehen uns.
143. 142. App 4 (Teil 2): Datenanalyse und Visualisierung mit interaktiven In-Browser Plots: Willkommen zu einer neuen
Videoserie. In diesen Videos
werden wir lernen, wie
man interaktive
Diagramme mit Python erstellt. Lassen Sie mich Ihnen die
Exo-Charts zeigen, die wir in diesen Videos erstellen
werden Dies wird das erste Diagramm sein. Sie sehen, diese sind interaktiv. Wenn wir zum Beispiel mit
der Maus über das Diagramm fahren, werden diese Popups angezeigt, die den exakten Wert an der Stelle anzeigen
, auf die der
Cursor zeigt. Das wird die durchschnittliche
Bewertung pro Tag sein. Dann haben wir die
Durchschnittsbewertung pro Woche Monat für Kurs,
für mehrere Kurse. Dann haben wir diese coole Grafik. Es ist ein Stream-Graph. Auch hier handelt es sich um durchschnittliche
Bewertungen pro Kurs pro Monat, jedoch in einem anderen Diagramm dargestellt werden. Dann haben wir die Frage, wann
Menschen am glücklichsten sind. Und schließlich haben wir
dieses Kreisdiagramm, das wiederum interaktiv ist Und es sieht viel
besser aus als die anderen Diagramme, die wir mit Matt Plot Lip
erstellt haben. Diese Diagramme sind also mit hohen Diagrammen
erstellt. High Charts ist eine
JavaScript-Plotbibliothek, aber wir können Highcharts
in Python über Just Pi verwenden Und Just Pi ist ein
Web-Framework für Python. Es ist ziemlich neu, also besteht die Möglichkeit, dass Sie
noch nichts davon gehört haben. Juspi ist also ein
Web-Framework wie FAS, aber Juspi hat einen sehr Der Vorteil von Juspi
ist, dass Sie kein HTML,
JavaScript oder CSS schreiben
müssen HTML,
JavaScript oder CSS schreiben
müssen erstellen Nur mit Jus Pi können Sie
komplette Apps und komplette modern aussehende
Websites Du wirst also
2 Steine mit einem Vogel abschießen. Ich meine, ein Vogel mit 2 Steinen
oder zwei Vögel mit einem Stein. Du verstehst die Idee.
Du wirst also sowohl Jpi als auch High
Charts lernen. Das habe ich gemeint Und hier ist der Plan.
Im nächsten Video zeige
ich Ihnen, wie
Sie
eine einseitige Pi-Website erstellen , die nur einen Titel
und einen Absatz mit Text enthält. Also eine einfache Webseite. Im darauffolgenden Video werden
wir
diese Website erweitern,
indem wir der Webseite ein hohes
Diagramm hinzufügen. Mit anderen Worten, in
den nächsten beiden Videos erfahren
Sie, wie
Sie eine Just
By-Webapp erstellen und
wie Sie Justpy WebApp ein Diagramm mit hohen
Diagrammen hinzufügen In den Videos
nach diesen beiden Videos werden
wir dann lernen, wie
man andere Diagramme erstellt Also die, die ich
Ihnen hier gezeigt habe und welche Diagramme wir erstellt haben und die wir
mit Mat Plot Lip auf Jupiter
erstellt haben . Also werden wir
jeden einzelnen von ihnen erstellen. Also mach dich bereit und ich werde im nächsten Video mit dir sprechen
.
144. 143. Eine einfache Web-App erstellen: Hallo. In diesem Video erfahren
Sie, wie Sie mit dem
Just Spy-Webframework
eine einfache Web-App erstellen . Ich werde Visual
Studio-Code verwenden, um die Web-App zu schreiben. Also würde Jupiter hier nicht arbeiten. Ich schlage Ihnen daher vor, eine IDE wie
Visual Studio-Code oder eine andere
IDE oder einen Texteditor zu
verwenden Visual Studio-Code oder eine andere
IDE oder , den Sie verwenden. Also habe ich Visual
Studio-Code hier gestartet. Ich gehe zu File Open. Gehen Sie im Visual Studio-Code zu dem Ordner, in dem meine Bewertungen
befinden, und klicken Sie auf Öffnen wird ein
neuer Visual Studio-Code
und ein neues
Projektverzeichnis erstellt, das auf den Ordner verweist, in dem sich die
Bewertungen dieser CSV-Datei befinden. Wir müssen
diese CSV-Datei vorerst nicht überprüfen,
da
wir in diesem Video nur die Web-App
erstellen werden. Lassen Sie uns also eine Python-Datei erstellen. Ich werde es
Zero Simple App Dot PY nennen. Also werde ich
mehrere Web-Apps erstellen und verwende jetzt 01234 In den Namen dieser Dateien. Um Juspy verwenden zu können,
muss Justpy installiert sein. Also verwende ich jetzt 3.9 Python 3.9 und gehe zum
Terminal New Terminal, und hier werde ich
PIP 3.9 verwenden, da ich Python 3.9
verwende ,
Install just PY Ordnung. Das war erfolgreich. Ich habe also keine Fehler bekommen. Ich habe die
Meldung erhalten, dass
es bereits installiert ist. Aber wie dem auch sei, ich hoffe, du hattest auch
Erfolg mit
der Installation. Dann müssen
wir nur noch importieren. Pi. Es empfiehlt
sich, es als JP zu importieren, da Sie sich die
Dokumentation von Just Pi ansehen werden
und alle Beispiele diesen JP-Namen verwenden. Es ist also eine gute Idee, mit
der Dokumentation
konsistent zu sein . Jetzt wird jede By-App
ein Hauptobjekt haben , das als Quasar-Seite
bekannt ist Das ist also im Grunde die
Webseite. Und diese Webseite kann verschiedene Elemente
enthalten. So kann sie
beispielsweise auf Seite eins eine
Überschrift oder einen Absatz
oder vielleicht eine Tabelle enthalten . All diese Elemente
werden also zu
dieser Quasar-Seite
zur Webseite hinzugefügt dieser Quasar-Seite
zur Webseite Warum heißt es Quasar? Nun, weil Jus Pi
das Quasar-Framework verwendet, das im Grunde ein Framework ist das nichts mit Python zu tun Es ist ein Framework, das
mit JavaScript erstellt wurde, aber Jus Pi verwendet dieses Framework und wir können
dieses Framework über Python verwenden . Lassen Sie mich also eine Quasar-Seite erstellen. Zunächst
erstellen wir eine App-Funktion. Du kannst sie benennen,
wo immer du willst, aber im Grunde ist die Idee, dass diese App diese Quasar-Seite zurückgibt In der Funktion erstellen
wir also eine Variable, die der Jp-Quasar-Seite
entspricht Also Q, P. Das ist eine Klasse, die wir
hier instanziieren Wir erstellen also eine
Quasar-Seiteninstanz-Objektinstanz , diese Funktion sollte dann diese zurückgeben Und dazwischen
schreiben wir die Elemente, die diese
Seite enthalten soll Lassen Sie uns also
für jedes Element eine Variable erstellen. Lassen Sie uns eine Überschrift erstellen. Eine Überschrift besteht also im Grunde aus Text, aber mit einer sehr großen Schriftgröße. Und wir machen JP, also zeigen wir auf diesen
Punkt QD, also QDV Es ist im Grunde eine Einteilung, wenn
Sie sich mit HTML auskennen. Es ist eine Division, aber
es ist eine Quasar-Division. Es hat also ein
gewisses Styling von Quasar , das es modern aussehen und es
Ihnen auch ermöglicht, es sehr
einfach zu stylen , wie Sie gleich sehen werden Als erstes Argument sollten
wir übergeben, wo es hingehört Natürlich gehört
zu WP diese Variable,
die ich WP genannt habe, um
für Webseite, Webpage zu stehen. Das gehört dazu.
Dann sind andere Argumente , die QD bekommt, der Text Welchen Text
wollen wir dort anzeigen? Als Zeichenfolge, sagen wir, Analyse von Kursrezensionen. Lassen Sie uns auch einen Absatz hinzufügen. Nennen wir das wieder P eins ist
gleich p Punkt QDV. Wir verwenden immer QDV und A, es gehört wieder zu WP.
Diesmal der Text Schreiben wir also quasi eine
Beschreibung der Webseite, diese Grafiken stellen die
Kursübersicht dar. Analyse der Kursbewertung. Das wäre eine sehr
minimalistische Web-App. Aber wenn wir jetzt dabei sind, wird
nichts passieren weil wir die Funktion erstellen, aber keine Instanz diese Funktion
aufruft, also
rufen wir sie nirgends auf Lassen Sie uns also etwas tun, das
wir diese Funktion nennen. Wir können Pi von JP verwenden. Jus Pi ist also eine Funktion
und erwartet als Eingabe
eine Funktion, die eine Quasarseite
zurückgibt, was hier diese Funktion ist Sie können also einfach
eine App schreiben, ohne die
App-Funktion aufzurufen Also Pi, diese Funktion
kümmert sich um den Aufruf dieser Funktion. Richtig. Wenn wir es jetzt ausführen, sollten
Sie
hier die Meldung sehen , dass Just By
an dieser Adresse mit
dieser 8.000-Portnummer startklar ist an dieser Adresse mit
dieser 8.000-Portnummer Wenn Sie die Strg-Taste drücken und dann klicken
oder die Befehlstaste drücken und dann klicken
, sollte Ihr
Standardbrowser geöffnet Und das ist die
Web-App, also funktioniert sie. Nun, Sie würden erwarten, dass dies in einer größeren Schrift sein würde. Das ist nicht passiert
, weil wir keinem dieser Divs
einen Stil
hinzugefügt haben keinem dieser Divs
einen Stil
hinzugefügt Diese Unterteilungen
sind also nur einfacher Text. Um Elementen Stil zu verleihen, können
Sie jedem Q-Div-Element ein Klassenargument
hinzufügen, das einer Zeichenfolge entspricht. Wie können wir dieses Div also groß machen? Nun, ich kann es dir natürlich zeigen, aber ich möchte dir zeigen, wie du
jede Art von Styling finden kannst , die
du mit Pi verwenden kannst. Sie müssen also
einfach nach dem Quasar-Stil suchen. Und dann gehe zum ersten Ergebnis. Understyle und Identity,
Sie werden
die Attribute sehen , die Sie für die Seitenelemente
ändern können, wie zum Beispiel das div-Element,
das wir jetzt zur Hand haben Wir machen uns also
Sorgen um die Topographie. Wenn Sie dort klicken,
werden Sie hier Beispiele sehen. Wenn Sie also
den Text so groß machen möchten, sollten
Sie Text H verwenden. Also lass uns das versuchen.
Kopiere es und bearbeite es hier. Schreiben Sie H eins. Wenn Sie Visual
Studio-Code verwenden,
müssen
Sie wissen , dass nichts passiert, wenn Sie den Code
mit dieser Schaltfläche erneut ausführen, während der Code ausgeführt wird . Das Programm friert also einfach ein und wenn Sie
zum lokalen Host zurückkehren, sehen
Sie, dass die alte
App immer noch läuft. Sie
müssen also hierher gehen und Strg C drücken
, um den aktuellen Vorgang zu beenden , und dann zu dieser Taste
gehen
und ihn erneut ausführen. Dann wirst du sehen, dass die App aktualisiert wird und wir
haben jetzt diese großen Telefone. Schauen wir uns also noch einmal Quasar-Stil unter
Stil und Wir haben also über Typografie
gesprochen. Sie haben
hier auch andere Beispiele, was Sie ändern können. Wenn Sie also
eine weitere Eigenschaft hinzufügen möchten, sagen wir, Sie möchten diesen
Text in den Mittelpunkt stellen, Sie möchten Text zum Schreiben verwenden. Also kopierst du das.
Gehen Sie zu Ihrer App, machen Sie ein Leerzeichen und fügen Sie
die andere Stileigenschaft ein. Stoppen Sie den Code und führen Sie ihn erneut aus. Laden Sie die Seite neu. Und Sie sehen, dass der
Text nach rechts gegangen ist. Ja, also
wollte ich es in den Mittelpunkt stellen. Sagen wir also Textzentrum. Hör auf, nochmal zu rennen. Irgendwann erscheint dieses Pop-up mit der
Meldung, dass sich die App geändert hat, sodass wir auf Okay klicken können, und die Seite wird neu geladen Das habe ich also erwartet. Wenn Sie einen gewissen Abstand wünschen, also wenn Sie möchten, dass dieser
Text nicht so nah am oberen
Rand der Webseite liegt, sollten Sie sich die Abstände ansehen Was die Abstände angeht,
werden Sie
hier unten sehen , dass Ihnen
all diese Optionen zur Verfügung stehen Wenn Sie zum Beispiel möchten, dass der Abstand oben
besonders klein ist, verwenden
Sie diesen Text Wenn Sie möchten, dass der gesamte Text aufgefüllt wird, sollten
Sie hier
etwas Platz haben,
einen Abstand zwischen dem Text und
der oberen Grenze und einen Abstand
zwischen diesem Text und
dem nächsten Element,
also sollten
Sie hier
etwas Platz haben, zwischen dem Text und
der oberen Grenze und einen Abstand zwischen diesem Text und
dem nächsten Element, diesem hier Dann möchten Sie
vielleicht zu einem Textabstand auf allen Medien übergehen, also möchten Sie
das kopieren und dort hinzufügen Also mach ein Leerzeichen. Erneut ausführen, neu laden Und du siehst, dass wir jetzt
etwas mehr Abstand zwischen dem und
dem hatten etwas mehr Abstand zwischen dem und
dem Die letzte Änderung, die ich vornehmen
möchte, ist
, dass ich den Text etwas kleiner machen möchte. Control C, erneut ausführen, hierher
gehen, neu laden, und
jetzt sieht es besser aus So macht man es
einfach mit Webapps. Beachten Sie, dass die Reihenfolge, in der Sie
diese Elemente erstellen, wichtig ist. Sie sehen also, dass die Analyse natürlich die Bewertungen an erster Stelle steht. Von dem anderen Element hier. Wenn Sie also weiter unten
Elemente hinzufügen möchten, sollten
Sie die Reihenfolge einhalten. Sie möchten hier also
weitere Elemente hinzufügen und immer vergessen
, dass Sie dieses
Element immer mit der Webseite verbinden
müssen. Nun, so
erstellt man eine einfache Webseite. Aber Q DFs sind nicht das
einzige Element, das wir verwenden können. Wir können auch ein
Highchart-Element verwenden, bei dem es sich um ein Diagramm handelt, das wir unserer Benutzerseite hinzufügen
können. Lass uns das im
nächsten Video machen. Wir sehen uns.
145. 144. Eine Datenvisualisierungs-Web-App erstellen: Hallo, willkommen zurück.
Im vorherigen Video haben wir eine App mit Just Pi erstellt. Diese App enthielt
zwei Komponenten, daher werden sie in Jus Pi
als Komponenten bezeichnet. Also diese Komponente hier, Q Div und eine weitere Komponente Q Div, beide werden
der Hauptkomponente hinzugefügt
, der Quasar-Seite In dieser Vorlesung werden wir
eine dritte Komponente hinzufügen, sich um
ein Diagramm mit hoher Höhe handelt, das immer noch ein
Bestandteil von Just Pi ist Lassen Sie uns das Schritt für Schritt machen. Ich werde
ein neues Pythople erstellen , in dem ich diese neue
App schreiben werde Nennen wir es also
durchschnittlichen Bewertungstag. Die durchschnittliche Bewertung
pro Tag ist also PY. Ich werde
diesen Code einfach kopieren, weil wir ihn brauchen, und ihn hier platzieren. Und jetzt müssen wir nur noch
die Komponente High Charts hinzufügen. Lassen Sie uns die Dinge
Schritt für Schritt angehen. Der allererste Schritt, den wir machen
wollen, ist, das richtige Diagramm zu finden, das wir brauchen. Es gibt eine sehr
gute Möglichkeit, das zu tun. Wir können zur
Dokumentation mit den hohen Diagrammen gehen und uns
die Beispiele in
den Grafikbeispielen ansehen die Beispiele in
den Grafikbeispielen die sie auf dieser Seite zeigen, und dann können wir eines davon
auswählen. Lass uns das machen. Lassen Sie uns
ein Diagramm auswählen, das wir benötigen. Gehen Sie zu Ihrem Browser und
suchen Sie einfach bei Google nach
Dokumenten mit hohen Charts. Auf dieser Seite finden Sie die Dokumentation zu High
Charts. High Charts ist also auch eine JavaScript-Bibliothek
zur Erstellung von Diagrammen. also genau wie Quasar war also genau wie Quasar eine
JavaScript-Bibliothek Sie hat nichts mit hohen Charts zu tun. Und Python bringt
diese beiden Bibliotheken, diese beiden Frameworks zusammen, was für uns
Python-Programmierer wirklich großartig ist, diese
beiden modernen
JavaScript-Bibliotheken von Python zu verwenden diese
beiden modernen
JavaScript-Bibliotheken von Python Hier sind wir also in der Dokumentation zu den
Highcharts, und wir wollen zu den
Diagramm- und Serientypen übergehen Und hier
werden Sie sehen, dass wir verschiedene Arten von Diagrammen
haben. In unserem Fall
denke ich also, dass ein Spline-Diagramm angemessen
wäre Wenn Sie also auf das
Spline-Diagramm klicken, werden
Sie
dieses Beispiel hier sehen Es geht um Temperatur pro
Höhe. Es hat diese Temperaturachse horizontal und diese
Höhenachse vertikal. Jetzt
stellt jedes Diagramm den Code bereit,
den JavaScript-Code, der das jeweilige Diagramm
erzeugt,
und Sie können sehen, dass Sie entweder mit JSFiddle oder mit
dem Code-Stift darauf zugreifen
können. Dabei handelt es JSFiddle oder mit
dem Code-Stift sich im Grunde um zwei
Online-Code-Editoren Wenn Sie auf jsFiddle klicken, wird der Code geöffnet, der das Diagramm erzeugt Und jedes Diagramm
hat seinen eigenen Code. Wenn Sie also zum Stream-Diagramm gehen, gehen
Sie erneut zu JS V. Es wird Ihnen der
Code für diesen Stream-Graphen angezeigt. Wie auch immer, lass uns zurückgehen. Das ist also der Graph, der
uns interessiert, und hier ist der Code, der diesen Graphen
erzeugt. Sie können hier also auch eine
Live-Version des Diagramms sehen. Wenn Sie hier etwas ändern, wird das Diagramm erstellt. Aber ich sage nicht, dass du Javascript lernen
musst. Alles, was wir tun müssen,
ist, dass Sie
den Code, der nach dem
Koma dieses Containers beginnt, hierher kopieren müssen . Das heißt,
Sie müssen es aus
dieser geschweiften Klammer auswählen Gehen Sie nach unten, bis Sie
diese halbe Spalte und
diese runde Klammer sehen , und Sie möchten bis
zu dieser geschweiften Klammer kopieren Sie möchten also diese geschweifte Klammer einbeziehen
. Drücken Sie also Control C oder gehen Sie dorthin und kopieren Sie es
und gehen Sie dann zu Python. Und was wir tun müssen, ist
, eine Zeichenfolge zu erstellen. Lassen Sie uns eine Variable erstellen. Nehmen wir an, die Diagrammdefinition
entspricht einer Zeichenfolge. Ich werde dreifache Anführungszeichen verwenden. Also sechs Anführungszeichen, und ich
werde sie aufteilen. Also drei Zitate hier, drei Zitate hier. Hier drin werde ich
den ganzen Code einfügen. Also nochmal, du musst hier sehr vorsichtig
sein. Dieser Code beginnt mit
dieser geschweiften Klammer, dann wird er in ein
Diagramm übertragen und so weiter, und er endet mit
dieser geschweiften Bevor ich
Ihnen nun erkläre, was ich hier mache, lassen Sie mich zuerst dafür sorgen, dass
es schnell funktioniert, und dann komme ich zurück
zum Code und erkläre Ihnen,
was hier vor sich geht Sobald Sie also die
Codedefinition haben, das ist eine, wollen
Sie
hierher gehen und sagen wir HC für hohe Charts,
JP- und C-Charts. Das ist also die Komponente, die
wir verwenden wollen. A entspricht WP, also das
Standardargument. Und jetzt
erwartet diese
High-Charts-Komponente ein Optionsargument, das dieser Variablen entspricht, die in meinem Fall das
JavaScript-Codediagramm Def enthält Das ist es. Wenn ich nun diesen Code
ausführe, siehst
du, dass die App läuft, Befehlsklick oder Ctrl-Klick, und das ist die Web-App
mit dem Diagramm darin. Dies war also der erste Schritt, den Code aus
der kostenpflichtigen
Dokumentation zu
holen und
den Code in Ihr
Python-Programm einzufügen den Code in Ihr
Python-Programm Lassen Sie mich Ihnen nun den
ersten Schritt erklären, was wir gerade getan haben. Wie ich Ihnen erklärt habe, ist
High Charts eine
JavaScript-Bibliothek. Daher
ist das hier JavaScript-Code. Aber in diesem Fall ist das JSN. JavaScript verwendet also
JSON und das JSON-Format ist ein vertrautes Format für Python. Es sieht also aus wie ein Wörterbuch. Sie können sehen, dass es
mit dieser geschweiften Klammer beginnt, und dann haben Sie diesen Schlüssel Obwohl
es eine
Zeichenfolge ist, ist
es derzeit eine Python-Zeichenfolge. Was
passiert, wenn wir das
hier tun , ist, dass Juspi in ein
Python-Wörterbuch
konvertiert Also ein echtes Objekt, das Python lesen und manipulieren
kann. Juspi wird
dieses Wörterbuch also verarbeiten und es
als Diagramm auf der Webseite rendern Ich kann Ihnen beweisen, dass Python diese
Zeichenfolge
erfolgreich als Wörterbuch gelesen hat diese
Zeichenfolge
erfolgreich als Wörterbuch gelesen indem ich die
HC-Punktoptionen ausdrucke. Also Optionen, weil wir
es hier als Argument übergeben haben, wird es ein Attribut von HC und wir können so
darauf zugreifen. Dort drucke ich das
Wörterbuch aus und hier unten werde
ich auch den
Typ der HC-Option ausdrucken,
sodass Sie sehen können, um welchen Typ es sich handelt, und Konsole C, um
die aktuelle Instanz
der App zu unterbrechen , erneut ausführen, und
jetzt wird nichts passieren, weil ich noch keine Instanz
der Seite
geladen Wenn ich also auf die Seite gehe
und dann hierher zurückgehe, werden
Sie sehen, dass
etwas
ausgedruckt wurde , da beim
Laden der Seite diese App-Funktion ausgeführt und daher diese
beiden Zeilen ausgeführt werden. Also lass uns sehen. Das ist
das Wörterbuch, oder? Es beginnt dort, es endet hier. Es ist dasselbe Wörterbuch, das wir hier als Zeichenfolge einfügen. Beachten Sie auch, dass der Typ
nicht gerade ein Wörterbuch ist. Es ist eine andere
Art von Wörterbuch als ein
Python-Wörterbuch plus. Es ermöglicht uns,
mithilfe einer Punktnotation auf
die Wörterbuchschlüssel zuzugreifen . Lassen Sie mich Ihnen zum Beispiel
zeigen, was das bedeutet. Wenn Sie hier zu HC Dot
Options gehen und erneut Punkt sagen, können
Sie auf alle
Schlüssel dieses Wörterbuchs zugreifen. Nehmen wir zum Beispiel an, wir wollen
den
Titel dieses Titels hier ändern , richtig? Wir können also mit dem
Punkttitel auf diesen Titelschlüssel zugreifen. Und dann hat dieser Titel auch
ein eigenes Wörterbuch. Wir können wieder mit der
Punktnotation auf
den Text des Titels zugreifen . Also lass mich den
Titeltext machen, richtig? Der Titeltext ist eine Hierarchie. Lassen Sie mich also die
App-Instanz beenden und erneut ausführen. Gehen Sie und laden Sie die Seite neu und sehen Sie, was wir diesmal
ausgedruckt bekommen Siehst du, wir hatten Zugriff auf
den Wert dieses Textschlüssels
, der dieser Titel war Das ermöglicht uns nun,
den Titel auf etwas anderes zu ändern ,
z. B. durchschnittliche Bewertung pro Tag. Lassen Sie mich die Instanz beenden, erneut
ausführen und neu laden. Und Sie sehen, dass sich der Titel von Tag zu Tag auf
Durchschnittsbewertung
geändert hat von Tag zu Tag auf
Durchschnittsbewertung
geändert Ich versuche, zu
erreichen, dass Sie alles
von diesem Diagramm aus ändern
können, alles, was Sie wollen, alles, was Sie ändern müssen
,
von diesem Diagramm aus ändern können. Und
unser erstes Interesse
besteht natürlich darin, die Daten dieses
Diagramms zu ändern, denn derzeit sehen
Sie, dass das Diagramm diesen wichtigen Schlüssel
hat. Und dieser Serienschlüssel hat einen Namen, Temperatur und die Daten. Dies sind die Daten, die in der Grafik dargestellt
werden. Sie sehen also eine Null, 15, Zehn -50. Sie sehen also zum Beispiel, 15 ist eine Temperatur, Null ist ein Kilometer Und dann haben wir,
wie gesagt, zehn -50. In einer Höhe von 10 Kilometern
liegt die Temperatur also bei -50 Also das sind die Daten. Lassen Sie uns diese Daten
in etwas anderes ändern. Um das zu tun, benötigen
wir Zugriff auf H C but options dot series. Richtig, Serie. Und Serie ist eine Liste. Also musst du hier
sehr vorsichtig sein. Sie müssen
Python-Datenstrukturen verstehen, und dies ist eine hervorragende, wirklich hervorragende Übung, um Python-Datenstrukturen
wie Listen und Wörterbücher wirklich
zu verstehen und Ihre Fähigkeiten und Eine Reihe ist also ein Schlüssel und der
Wert dieses Schlüssels ist eine Liste. Und diese Liste besteht
aus einem Wörterbuch. Es hat also nur einen Artikel. Diese Liste und dieser Artikel
sind das Wörterbuch. Dann
hat dieses Wörterbuch zwei Schlüssel, einen Namensschlüssel und einen Datenschlüssel. Der Namensschlüssel hat als
Wert Temperatur. Der Datenschlüssel hat als
Wert diese Liste. Es ist eine Liste mit mehreren
Werten als Listen als Elemente. Es ist eine Liste von Listen. Also die zweite Liste, die dritte Liste und so weiter. Und bis jetzt gibt
uns das diese Liste, richtig. Und von dieser Liste wollen
wir den ersten Punkt. Das wird also ein Element
mit Index Null sein, richtig. Also, welches ist das Wörterbuch. Das heißt, bis jetzt haben
wir ein Wörterbuch. aus dem Wörterbuch Wir wollen diese Daten aus dem Wörterbuch. Das ist jetzt also diese Liste. Wir haben Zugriff auf diese Liste
und können sie ändern. Wir können dieser Liste einen neuen Wert, eine neue Liste hinzufügen. Lassen Sie mich zum Beispiel einige Dummy-Daten
erstellen,
drei, vier, sechs, 789 Wir haben also drei Punkte. Lassen Sie mich die App beenden und erneut ausführen. R laden, und das ist ein neues Diagramm. Also nochmal, die Daten waren drei,
vier, sechs, sieben, acht,
neun, drei, vier,
also drei ist das X.
Also das ist eigentlich ein umgekehrter
Graph. Also drei ist Y, vier ist das X. Wenn Sie dieses Diagramm
umkehren möchten, wenn Sie sich damit nicht
wohl fühlen, können
Sie hier hingehen und es auf Stürze
umstellen. Und Sie könnten diese
Daten auch direkt hier ändern,
ohne sie hier
im Wörterbuch ändern zu müssen. Aber später werden wir
Datenrahmen einfügen, also Spalten aus Datenrahmen Und das ist ein geeigneter
Weg, das zu tun. Also dieses hier, weil
es uns ermöglicht, mit
einem Wörterbuch zu arbeiten , anstatt mit einer Zeichenfolge zu
arbeiten. Und die Zeichenfolge ist keine Datenstruktur, die dafür konzipiert ist, Daten darin
zu speichern. Aber wie dem auch sei, für solche einfachen
Dinge können
Sie die
Werte einfach direkt hier ändern. Also umgekehrt, ich
setze es auf Folds und Stop und Run, Reload Und jetzt ist die Grafik anders. Sie sehen also, dass die
Höhe hier unten ist. Die Temperatur ist jetzt
auf der Y-Achse. Ordnung, also ich
tippe hier manuell einige Daten ein, aber so sieht das
echte Leben nicht aus. Im wirklichen Leben werden Sie also keine Daten in diesem Format
haben. Normalerweise haben Sie sie in einem
Datenrahmen in einer CSV-Datei, genau wie wir
sie in unserer App haben. Wir haben also die Daten
in den Bewertungen dieser CSV-Datei. Und so wird das Format etwas anders
sein. Normalerweise haben wir
so etwas wie ein X-Array für die X-Achse, wir sollten, sagen wir,
drei, sechs und acht suchen , und dann haben wir Y gleich
vier, sieben und neun. Also nicht so. Daher ist es unser Ziel, diese beiden Listen in
diese Liste umzuwandeln. Wie machen wir das? Wir machen das mit dem ZIP-Objekt, das im Grunde eine solche Liste erzeugt
. Also in den Formaten
mit Listenpaaren. Das erwartet X und Y. Also zwei Listen Dies ist jedoch noch keine Liste. Dies ist ein ZIP-Objekt. Ich kann dir das
in einer Python-Shell zeigen. Nehmen wir an, wir haben diese
Liste und wir haben diese Liste. Und Zp XY wird
immer noch ein ZIP-Objekt sein. Sie möchten
dieses ZIP-Objekt mithilfe
der Listenfunktion
in eine Liste konvertieren mithilfe
der Listenfunktion
in eine Liste Also X und Y. Jetzt bekommen wir die Liste,
die wir erwartet hatten Daher können wir diese
Liste abrufen und dort verwenden. Wenn ich jetzt hier zum
anderen Terminal gehe, stoppe ich die App und starte sie erneut. Laden Sie neu und wir erhalten immer noch das
gleiche Diagramm mit diesen Daten. Was ist nun, wenn diese aus einem Datenrahmen stammen
? Das bringt uns zu unserer
App mit unseren Bewertungsdaten. Lassen Sie mich also zu
dem Code übergehen , an dem wir auf Jupiter
gearbeitet haben. Welches ist das hier drin. Also laden wir den
Datenrahmen mit diesem Code. Ich werde das kopieren
und nach dem Import von
Jus Pi hier
oben einfügen , oder? Wir haben jetzt diesen
Datenrahmen. Und was mussten wir
noch tun , um
die Durchschnittsbewertung zu berechnen? Ja, wir hatten diesen
durchschnittlichen Datenrahmen für diesen Tag
, der eine aggregierte Version
des Datenrahmens war Also werde ich
diese beiden Zeilen kopieren und sie hier
einfügen Tagesdurchschnitt ist also der
Datenrahmen, an dem wir interessiert sind, und er hat einen Index, der
das Datum
sein wird, und eine Bewertungsspalte, die
die durchschnittlichen Bewertungen
für jeden Tag enthält . Sie können also nur Ihr Gedächtnis
auffrischen, es sieht so aus. Richtig. Jetzt hätten
wir statt X den D-Durchschnitt, den Punktindex des Datenrahmens. Das wird also als X-Achse
verwendet. Und dann hätten wir für Y eine Tagesdurchschnittsbewertung.
Also diese Kolumne. Diese werden also nach PLZ
und PLZ
als zwei Listen behandelt . Dann paaren wir sie zusammen, sodass ein Paar
aus Datum und Bewertung entsteht. So wird es zum Beispiel
im Hintergrund wie eine Liste von
Listen aussehen, wie ich Ihnen erklärt habe. Das erste Datum
wäre also 2020 133, und die Bewertung 4,51, sagen wir, beantworten Sie eins, das nächste Datum
und Sie haben die Idee Also lass uns das ausprobieren. Es wird nicht funktionieren und
ich sage dir warum. Also, wie ich dir gesagt habe, wir erhalten ein leeres
Diagramm und keine Fehler. Der Grund, warum
das nicht funktioniert, ist, dass hohe Charts das Datum berücksichtigen. Solche Daten werden also als Kategorien, Datentypen und nicht als Zahlen betrachtet . Und in diesem Fall müssen
Sie diese
Daten auf andere Weise bereitstellen. Das geschieht über Optionen,
X-Achse, Punktkategorien. Also was ist das? Nun, die X-Achse ist tatsächlich hier. Und wir machen Punktkategorien auf der
X-Achse. Nun, Sie sehen hier keinen Schlüssel, aber wir erstellen diesen Schlüssel. Das entspricht der
Auflistung des durchschnittlichen Punktindexes. Also konvertieren wir
das in eine Liste und stellen diese Liste diesen Kategorien
zur Verfügung. Dies ist eine Liste von Daten. Und dann müssen wir für Delta nur noch die Bewertungsspalte in eine Liste umwandeln
. Lassen Sie mich das Drehbuch beenden und sehen, was wir dieses Mal bekommen werden. Refresh und bumm, wir bekommen das Diagramm, das
wir erwartet haben. Das Diagramm ist interaktiv, aber Sie sehen, dass wir
hier einige Beschriftungen und einige Titel
für die Achse
haben , die aus dem alten Beispiel stammen, also Höhe und Temperatur,
aber wir können sie ändern. Ich würde also vorschlagen, dass
Sie sie direkt
im JavaScript-Code ändern können . Sie können also den Text
des Titels von hier aus ändern. Von dort aus können Sie den
Untertitel ändern. Ich glaube also, dass das im Code
einfach zu machen ist. Nur um Ihnen
eine kurze Zusammenfassung zu geben : Wir haben den
Datenrahmen, den wir benötigen, hierher geladen. Der Tagesdurchschnitt ist also der
Datenrahmen, der unsere Daten enthält. Dann haben wir hier den JavaScript-Code für hohe
Charts. Dann haben wir die Funktion
, die die Webseite rendert. Wir haben die Webseitenkomponente. Wir haben diese beiden Komponenten, normale Komponenten, Text, QD Und dann haben wir die Komponente
High Charts, die jetzt dieses Diagramm
D JSON als Wörterbuch enthält Wir können also über Optionen auf dieses
Wörterbuch zugreifen, da es in Optionen gespeichert ist. HC-Optionen
sind jetzt also das Wörterbuch, und deshalb können wir dann auf
Eigenschaften aus diesem Wörterbuch zugreifen Eigenschaften aus diesem Wörterbuch und sie nach Belieben ändern. Und die wichtigste Verwendung
davon ist das Einstellen der Daten. Sie haben also gesehen, dass
Sie für Daten, die Kategorien und keine Zahlen
enthalten, diese X-Achse verwenden und die
Eigenschaft dieser Kategorie auf eine Liste
festlegen können , bei der es
sich um eine Liste von Daten handelt. Und dann entsprechen Daten
einer einfachen Liste von Bewertungen. Das ist die App.
Danke fürs Folgen. Und das war ein langes Video, aber die nächsten Apps
werden
viel weniger Zeit in Anspruch nehmen , weil Sie den Prozess
jetzt kennen
und mit etwas Übung in der Lage sein werden, jedes beliebige
Diagramm zu erstellen. Danke.
146. 145. Grafikbeschriftungen in der Web-App ändern: Hallo, willkommen zurück.
Im vorherigen Video haben wir dieses
Zeitreihendiagramm mit
durchschnittlichen Bewertungen erstellt , die
auf täglicher Basis angezeigt werden. Jetzt sehen Sie, dass wir hier
einige unerwünschte Beschriftungen haben, wie zum Beispiel Temperatur, wir haben Kilometer als
Ende der Beschriftungen der X-Achse. Also werde ich das schnell in meinem Code
ändern. Nun, Sie können
das entweder über Python tun, indem Sie diese
Wörterbuch-Punktnotation verwenden, oder für diese Dinge würde
ich vorschlagen, dass Sie einfach den
JavaScript-Code direkt
durchgehen . Wir
sprechen zum Beispiel von der X-Achse, und hier haben wir die Höhe. Die X-Achse sollte also
eigentlich das Datum und das Datum sein. Dann haben wir diese Beschriftungen, das Format der X-Achsenbeschriftungen. Es hat also dieses Kilometerende, das Sie hier
im Kilometer sehen. Wenn du etwas anderes willst, schreib es
einfach hier auf. Ansonsten lösche es einfach und
lasse den Wert so wie er ist. Löschen Sie diese Art von
Javascript-Platzhaltern nicht. Sie können auch
die Bereichsbeschreibung ändern, auch wenn diese
nirgends angezeigt Also werde ich
mit der Temperatur weitermachen. Deshalb Achse, wo
wir die durchschnittliche Bewertung haben. Wo sonst haben wir dieses
Celsius-Grad-Symbol hier. Ich werde das löschen und wir haben hier diesen
Temperaturnamen
, der eigentlich der Name ist, den wir hier im
Popup-Fenster bekommen. Also Temperatur, die
dem entspricht. Also können Sie hier noch einmal sagen, durchschnittliche Bewertung, und dann C
kontrollieren, erneut ausführen. Und sehen wir uns die Änderungen an. Also neu laden. Ja,
durchschnittliche Bewertung hier, Daten hier, durchschnittliche
Bewertung dort Wir sehen diesen
Kilometer immer noch im Pop-up. Sie sehen 506 Kilometer. Das steht hier im Tooltip. Also willst du das löschen
und das auch löschen. Der Tooltip hat
dieses Header-Format, das ist ein Serienname, also die Temperatur, und vorher war
es Temperatur,
jetzt ist es Durchschnittswert. Das ist also der Punktname der Serie. Und wir haben auch Punkt X. Es wird
also der X-Wert
angezeigt. In unserem Fall ist das die Zahl, also die Indexspalte, die eine Zahl von
Null bis zu einer beliebigen Zahl ist. Also die Nummer der Zeile, und das ist die durchschnittliche
Bewertung, die Sie dort sehen. Also laufen wir wieder
und dieses Mal sollte
alles in Ordnung sein. Und damit ist dieses Video beendet. Ich werde
im nächsten mit dir sprechen.
147. 146. Hinzufügen eines Zeitreihendiagramms zur Web-App: Hallo, willkommen zurück. In
den vorherigen Videos haben wir dieses tägliche Diagramm
der durchschnittlichen Bewertungen erstellt. In diesem Video
werden wir
dasselbe Diagramm erstellen , jedoch
auf wöchentlicher Basis. Nun, das wird ein
kurzes Video sein , weil
ich den Code nicht erklären werde , weil
ich ihn bereits gemacht habe,
sodass Sie leicht
verstehen können, was ich mache. Lassen Sie mich also zum
Visual Studio-Code zurückkehren und eine neue Datei erstellen. Ich nenne
das F für Durchschnitt Terrett für Bewertung und Woche Das ist also Nummer zwei. Und was ich normalerweise
mache, wenn ich
diese Graphen erstelle , ist
, dass ich zu dieser
Spy-Vorlage gehe und sie hier einfüge , und
dann hier drinnen , dann erstelle ich eine neue
High-Charts-Komponente die zu WP gehört,
und als Option hat
sie dieses Diagramm de Variable, das hier
eine Variable sein wird. Es wird eine mehrzeilige
Zeichenfolge sein, die in Anführungszeichen eingeschlossen ist. Also hier werde ich jetzt ein Beispiel
aus High Charts
finden. Also werde ich
für dieses Wochendiagramm wieder Spline verwenden ,
weil ich denke, dass dies
der geeignetste
Diagrammtyp für
diese Art von Analyse für
diese Art von Visualisierungen ist der geeignetste
Diagrammtyp für diese Art von Analyse für
diese Art von Visualisierungen Also werde ich zu
JS Fiddle rüberklicken und das wird
mir den JavaScript-Code zeigen
, der hier ist Ich kann das alles kopieren
und zu Python gehen und es dort einfügen und dann diesen
Teil natürlich löschen. Es beginnt mit der ersten
geschweiften Klammer vor dem Diagramm und endet dann mit
einer geschweiften Klammer, also lösche ich die halbe
Spalte und die Klammer. Options zeigt auf diese Dokumentzeichenfolge. Bevor ich meine eigenen Daten anwende, probiere
ich zuerst diesen Code aus,
um zu sehen, ob er funktioniert, aber zuerst muss ich
den aktuellen Prozess
mit Control C beenden und Go to buy reload
ausführen Ja, es funktioniert. Als Nächstes möchte ich Pandas importieren. Da ich die
Analyse bereits auf Jupiter gemacht
habe, kann ich diese Zeilen einfach kopieren und
einfügen Füge sie dort ein. Wir brauchen Mt Lips nicht. Ich kann das löschen. Das ist unser Datenrahmen. Jetzt müssen wir einige
Analysen dieser Daten durchführen. Also geh zurück zu Jupiter und finde die wöchentliche Analyse,
also die da drin. Der Wochendurchschnitt ist
der Datenwert, den wir benötigen. Fügen Sie sie also unter den ursprünglichen Datenrahmen und wir sollten jetzt den Durchschnitt
dieser Woche haben. Jetzt wird der Wochendurchschnitt die Wochen als Indexspalte
haben. Also hier und die Woche, in der
das Wochendurchschnitt sein wird , Punktindex. Und im Datenrahmen für den
Wochendurchschnitt wird es auch
eine Bewertungsspalte geben . Lassen Sie uns also diese beiden
Spalten verwenden, um die Daten grafisch darzustellen. Wir sollten also
für kategoriale
Daten wie Datum auf
Hc-Punktoptionen, Punkt X-Achsen-Kategorien zugreifen Hc-Punktoptionen , Punkt X-Achsen-Kategorien für kategoriale
Daten wie Datum auf
Hc-Punktoptionen, Punkt X-Achsen-Kategorien Das wäre also ein schwacher
durchschnittlicher Punktindex, aber in Form einer Liste Also müssen wir es in
eine Liste umwandeln , nur um es
zu erkennen. Und dann HC Options, das ist
ernst. Diese Daten. Das heißt, Serie Null gibt uns dieses erste Objekt,
das ein Wörterbuch ist. Wir haben also das Wörterbuch hier, und dann greifen wir auf den
Datenschlüssel aus diesem Wörterbuch zu. Das gibt uns also tatsächlich
den Wert dieses Schlüssels
, der diese Liste ist. Und wir ersetzen diese
Liste durch eine andere Liste, was eine schwache Durchschnittsbewertung darstellt. Das sollte reichen. Also stoppe
die Steuerung C, starte erneut, lade neu Das ist unsere Grafik. Es sieht komisch aus, weil
wir es umkehren müssen. Eigentlich ist es
ursprünglich umgekehrt. Wir sollten also sagen, dass der
Wert von invertiertem Control C fällt
und erneut ausgeführt wird. Erneut laden Und ja, das ist es.
Ich werde deine Zeit nicht verschwenden und
all diese Labels ändern , wie ich es
im vorherigen Video getan habe. Also habe ich
das schon gemacht. reicht das für dieses Video. Danke fürs Folgen.
Ich erzähle es dir später.
148. 147. Mehrere Zeitreihen-Plots: Hi, willkommen zurück. In diesem Video werden
wir ein Diagramm mit
einer durchschnittlichen Bewertung
pro Monat und Kurs erstellen . Wie Sie vielleicht wissen, haben wir das Diagramm
erstellt, das Sie bereits mit Jupiter und
Matplot Lib
gekauft haben . Es
sah also so aus Die Idee ist, dass
wir den Monat auf
der horizontalen Achse
und Durchschnittswerte
auf der vertikalen Achse haben der horizontalen Achse
und Durchschnittswerte werden, und wir werden mehrere Grafiken
in diesem Zeichnungsbereich
haben , von denen jedes einen
Kurs in unserem Datensatz darstellt Und wie Sie vielleicht schon wissen, erstellen ist die Website higchart.com
eine gute Möglichkeit,
Grafiken mit B- und
Highcharts zu Sie gehen also unter Diagramme und
Reihentypen und wir finden eine Grafik, die unsere Daten gut
repräsentiert Also habe ich mir diese
Beispiele angesehen und festgestellt
, dass ich ein Area-Spline-Diagramm verwenden möchte ,
das so aussieht Sie sehen, dass es
mehrere Linien hat, also
in diesem Fall zwei, und es hat diese X-Achse mit
kategorialen Daten Es sind also keine Zahlen, es ist Montag, Dienstag,
Mittwoch und so weiter Und wir haben diese Zahl
Y-Achse, also Fruchteinheiten. Und das entspricht dem
durchschnittlichen Fruchtkonsum John und Jane
während einer Woche
. In unserem Fall werden
wir
dieses Diagramm ändern und
sechs oder sieben Linien haben. Ich bin mir nicht sicher, wie viele
Kurse es gibt. Also eine Zeile für
jeden Kurs,
die die durchschnittlichen Bewertungen über einen längeren
Zeitraum im Laufe der Monate zeigt . Bevor wir die Codes kopieren, bereiten
wir zunächst
die Umgebung vor. Erstellen Sie das Skript und erstellen Sie
das nach der App und so weiter. Ich nenne diese
vier Durchschnittswerte. Das wäre,
sagen wir, ein Kursmonat. Also durchschnittliche Bewertung pro
Kurs pro Monat, PY. Sie sehen, das unterscheidet sich
von der durchschnittlichen Bewertung pro Monat. Dies ist die durchschnittliche Bewertung
pro Kurs pro Monat. Dann werde ich
diese Vorlage von J Pi kopieren. Kopiere dort. HC wird die
High-Charts-Komponente sein, die zu WP gehört, und Options wird normalerweise
eine Chartdefinition sein, die hier irgendwo eine
Variable sein muss. Entspricht einer Zeichenfolge,
einer mehrzeiligen Zeichenfolge. Lassen Sie uns also diesen
JavaScript-Code kopieren. Also diesen hier drin,
ich werde das alles
kopieren dort einfügen,
und dann, kurz vor dem Diagramm, und dann, kurz vor dem Diagramm, lassen
wir die geschweifte
Klammer vor dem Diagramm hier Wir belassen das und löschen die halbe Spalte und
die Klammer Und jetzt sind wir bereit,
die Daten durch unsere Daten zu ersetzen. Aber ich schlage vor, dass
Sie zuerst dieses Beispiel ausprobieren, um zu sehen ob es gerade funktioniert ohne die
Daten mit Ihren eigenen Daten zu ändern. Was ich jetzt
tun möchte, ist zu versuchen,
dies auszuführen und dann die URL
aufzurufen, und
Sie werden einen Fehler sehen. Also Jason Decode-Fehler, hohe Charts mit
unbekanntem Identifier Das passiert wegen
dieser Zeile. Python kann
diesen Ausdruck
hier nicht erkennen , da es sich um JavaScript handelt. Sie möchten das also löschen und nur diese Zeichenfolge hier belassen, die Farbe der Hintergrundfarbe. Und jetzt, wenn ich das
Skript stoppe und es erneut starte und die Seite neu lade, sollten
wir das
Beispiel so sehen, wie wir es von der Website von
High Chart bekommen haben Nun, diese beiden Graphen
sind Flächen-Splines. Aber wenn Sie sie in Spline
ändern möchten, sollten
Sie zu
Ihrem Code übergehen und
diesen Bereichs-Spline in Spline ändern , das Skript
beenden und erneut ausführen.
Und neu laden. Und das ist die Ausgabe. Jetzt sind wir bereit,
unsere eigenen Daten in die Daten einzufügen. Dafür
wollen wir also zum
Jupiter gehen, wo wir
unsere Analyse fertig haben Kopieren Sie den Code, fügen Sie ihn dort ein, und wir müssen auch
die Aggregationen durchführen , die
für das Extrahieren des Monats erforderlich sind, die Kurse pro Monat Das ist dieser Code hier, und das gibt uns
diesen Datenrahmen Lassen Sie uns nun unseren Speicher auffrischen, wie der Datenrahmen aussah Sie können sie also entweder
hier ausdrucken und das Skript ausführen, die Seite
neu laden und sehen, was Sie im Terminal ausgedruckt
haben, oder Sie können sich die
Ausgabe von Jupiter ansehen Also, was auch immer Sie
bevorzugen, ich führe
das Skript einfach hier Und so bekommen wir den Datenrahmen ausgedruckt, noch bevor wir
die Web-App laden , weil er ausgedruckt wird, weil sich die
Web-App innerhalb der Funktion befindet, also ist er nur
im globalen Namespace, im globalen Gültigkeitsbereich Wenn das Skript
ausgeführt wird, werden diese also ausgeführt. Wenn das hier in
der Funktion wäre, würde
es nur ausgeführt werden,
wenn wir die Seite laden. Und das ist der Datenrahmen. Es hat also diesen Monatsindex und verschiedene Spalten. Das ist also die erste Spalte. Dann haben wir mehr Spalten,
die wir hier nicht sehen. Und dann ist die letzte Spalte diese und
die Werte jeder Spalte. Also der Name einer Spalte, die Werte dieser Spalte, das sind die durchschnittlichen Bewertungen. Und wir haben einen
Monat für jede Zeile. Das ist also Juli 2019, August 2019, Januar 2021. Indexieren Sie also Spalten. Lassen Sie uns jetzt sehen, wie wir diese
Daten in diese Daten einfügen Wir sehen also, dass XXIs
diese Kategorien
mit diesen Wochentagen hat diese Kategorien
mit diesen Wochentagen Also können wir jetzt dasselbe tun. Hier unten sagen wir HC
Dot Options Dot XXI. XXs ist also der Schlüssel zum
Hauptwörterbuch. Es ist also direkt
in der ersten Ebene verfügbar. Also Diagrammtitel, Legendenachse. Und dann haben wir
die zweite Ebene. Die Kategorie ist also Teil der Achse. Daher können wir wie folgt darauf zugreifen sodass Kategorien eine
Liste sind, wie Sie hier sehen können. Daher
müssen wir es durch
eine Liste ersetzen , in der die durchschnittlichen CRS pro Monat Das ist also unser
Datenrahmen-Punktindex. Also die Spalte da drin, 20185, 20186 und so Richtig. Das war der einfache Teil. Jetzt kommen die Daten. Was Sie also tun
müssen, ist die
Struktur der Daten
zu verstehen. Das ist der sehr
wichtige erste Schritt. Die Serie ist also ein Schlüssel der ersten Ebene. Daher können wir sagen,
Hc-Optionen, das ist Serie, richtig. Das wird uns also diese Liste geben. Dann hat diese Liste, wie
viele Artikel hat sie? Ich sehe ein Wörterbuch
von dort bis hier. Das ist ein Wörterbuch mit dem Namen
John
, einem Paar aus Schlüssel und Wert. Der Name ist also der Schlüssel,
John ist der Wert. Dann haben wir diese anderen
Schlüsseldaten und eine Liste, und das Wörterbuch endet dort. Und dann haben wir das
andere Wörterbuch. Es ist also Jane How und das
sind die Daten für Jane. Die Liste besteht aus einem Wörterbuch, und jedes Wörterbuch stellt
eine Linie im Diagramm dar. Also das ist für Jane
und das ist für John. Also, was wir
tun müssen, ist, dass wir sie hier haben müssen. Das wäre also der
Name eines Kurses. Nehmen wir an, der erste Kurs
würde aus 100 Python-Übungen bestehen und so weiter, der gesamte Titel. Und dann würden die Daten
eine Liste mit durchschnittlichen Bewertungen
für diesen bestimmten Kurs enthalten . Also dieser, dieser,
dieser und so weiter. Und dann müssten wir diesen Vorgang für jeden
der sechs oder sieben Kurse
wiederholen der sechs oder sieben Kurse , die wir hier haben.
Wie machen wir das? Nun, das könntest
du manuell machen. Vielleicht könntest du so etwas aus der Serie
einbauen, du würdest sagen, die erste Handlung, damit du
das erste Wörterbuch bekommst Dieser Ausdruck ist
das erste Wörterbuch. Dann könnten wir auf den
Namen zugreifen und ihn durch die
CRS-Punktspalten im Monatsdurchschnitt ersetzen CRS-Punktspalten im Monatsdurchschnitt Das wäre also die
erste Spalte und so weiter. Das wäre okay, aber es ist kein
automatischer Prozess. Wenn Sie also manuell arbeiten, ist
das ein Zeichen dafür, dass Sie nicht richtig programmieren
. Was wir stattdessen tun müssen,
ist, dass wir die
gesamte Liste dynamisch erstellen müssen. Und das ist jetzt ein sehr, sehr wichtiger Punkt bei der Verwendung von hohen Diagrammen, aber auch beim Wissen, wie
man Datenstrukturen in Python manipuliert. Das ist also eine
hervorragende Praxis. Ich bin sehr froh, dass das rausgekommen ist. Das ist eine tolle Übung für dich. Lassen Sie mich Ihnen zeigen, wie Sie diese Liste
aus diesem Datenrahmen
erstellen können . Bevor wir das tun, bevor wir die Liste zuweisen, wollen
wir die Liste erstellen. Lassen Sie uns diesen
HC-Unterstrich Delta nennen. Und das entspricht. Also müssen wir eine Liste erstellen. Das ist also eine Liste. Deshalb schreiben wir
eckige Klammern. Die Liste besteht
aus Wörterbüchern. Deshalb schreiben wir geschweifte
Klammern. Und dann haben
wir in jedem Wörterbuch einen Namensschlüssel Wir haben immer diesen Namensschlüssel und eine Variable für
diesen Namensschlüssel. Warum sage ich variabel? Nun, weil Name immer
Name ist, also ist es eine Konstante. Deshalb kodiere ich so hart, dass wir immer
einen Namen dort haben sollten. Aber der Wert des
Namens ist eine Variable, also ändert er sich jedes Mal. Und was dann noch? Wir haben dieses Paar, okay. Im Wörterbuch, in
diesem Wörterbuch. Dieses Wörterbuch
hat also ein anderes Paar. Also Daten und die Liste. Also lass uns das schreiben. Como Data, die Zeichenfolge, eine Spalte und wir haben eine Liste. Diese Liste ist im Grunde repräsentativ für
jedes der Grundstücke, jedes der sieben Grundstücke, die wir
für jeden Kurs haben werden. Das bedeutet, dass diese Liste aus diesen Bewertungen bestehen
wird. Zum Beispiel werden wir
die erste Liste als
erste Spalte haben , zum Beispiel
für Python-Übungen
eine für diesen Kurs, diese Spalte als Liste da drin
und dann die andere Spalte. Nach diesem Kurs der nächste
und der nächste und der nächste. Also eine Spalte für jeden Kurs und V eine wird durch den
Titel der Spalte
ersetzt. Bevor ich also den
Ausdruck in diese Liste schreibe, möchte
ich zuerst
das Verständnis der oberen Liste beenden das Verständnis der oberen Liste weil wir hier zwei
Listenverständnisse haben Wir haben die erste Ebene, also nennen wir sie
die obere Hier erstellen wir
Wörterbücher. Es ist also eine Liste
von Wörterbüchern das heißt, wir sollten hier
für V eine durchschnittliche CRS-Tat-Spalte pro Monat
angeben Das ist also eine Liste
mit sieben Zeichenketten, eine Zeichenfolge für
jeden Es wird also
eine Liste mit 100
Python-Übungen sein , eine, um
deine Fähigkeiten zu
bewerten und zu verbessern, dann
der andere Titel des anderen Kurses und so weiter, es ist eine
Liste dieser Titel. Wir fügen hier einen Titel ein,
den ersten Titel dieser Liste
in der ersten Iteration und
dann den nächsten Titel der
durchschnittlichen CRS-Spaltenliste für diesen Monat
in
der durchschnittlichen CRS-Spaltenliste für diesen Monat
in
der Also erstens werden wir sieben oder sechs Iterationen
haben,
unabhängig von der Anzahl der
Kurse, die Aber dann, hier drinnen, haben
wir eine verschachtelte Iteration, ein Verständnis verschachtelter Listen,
tut mir leid, und das ist das Und das ist
wieder so, lassen Sie uns
eine weitere Variable schreiben, Beispiel V zwei für V zwei
im durchschnittlichen CRS Hm. Also, was wird das sein? Nun, es muss
diese Kolumne sein, oder? Also, welche ist diese Kolumne? Wie lautet der Name dieser Kolumne? Nun, für diesen Kurs
ist das der Name der Spalte. Also hier müssen wir den Namen der Spalte
aufschreiben. Siehst du, das ist
eine Pandas-Syntax. Sie schreiben also den
Namen der Spalte, aber wir haben unterschiedliche
Spaltennamen Also was wir
hier eingeben ist V eins. Weil V eins
der aktuelle Titel im Listenverständnis der oberen
Ebene sein wird der aktuelle Titel im Listenverständnis der oberen
Ebene Im Grunde wird
Python also, während es
den ersten Titel iteriert,
in der ersten Iteration der
oberen Ebene aufhören,
und es wird durch diese bestimmte Spalte
iterieren, indem es
diese Bewertungen für
die ersten 100
Python-Übungen durchläuft 100
Python-Übungen durchläuft 100
Python-Übungen Und es wird diese
Liste erstellen, sobald es
mit all diesen Zahlen fertig ist, es erstellt diese Liste geht
dann zur zweiten Iteration in
der ersten Iteration In der zweiten Iteration
der anderen Spalten, was der nächste Kurs
sein wird Und so weiter, ich hoffe, es ist klar. Richtig, also was wir noch
tun müssen , ist, diese neue Liste
zuzuweisen, also sie in unsere Daten einzufügen,
weil wir sie erstellt haben, aber wir haben sie nicht
mit HC verbunden Es ist also nur eine Variable, die in unserem Skript
schwebt, keine Verbindungen zu
den anderen Teilen Also müssen
wir sagen, dass diese, Liste
diese Liste ist. Also müssen wir
es der Serie zuordnen, oder? Ct-Optionen stehen auf Serie, was HC-Daten entspricht. Richtig. Jetzt werde
ich das Skript beenden und die App ausführen und besuchen. Und das ist die Ausgabe. Hier ist die X-Achse mit dem Monat, und das ist unsere Bewertung
von 2,5 bis 5,5. Das Maximum ist
irgendwo hier drin. Du kannst also mit der
Maus drüber fahren und dir die Bewertungen für
jeden Kurs
ansehen, richtig? Die Legende hier schwebt. Wenn Sie das ändern möchten, können
Sie zu Ihrem Code zurückkehren
und die Legenden hier suchen. Sie haben hier also einige
Parameter, mit denen Sie experimentieren können. Aber wenn ich Floating auf Falls setze, sollte
das die
Ansicht des Graphen ändern. Also ich denke, das ist klarer. Nun, ich würde nicht zustimmen, dass
diese Art von Diagramm
die beste Darstellung
für diese Art
von Daten ist die beste Darstellung
für diese Art , weil wir hier
mehrere Linien haben, aber so
nahe beieinander liegen. Es gibt also keine großen Unterschiede zwischen einem Kurs
und dem anderen. Ich denke, diese Splines
wären
repräsentativer ,
wenn wir
anstelle von Durchschnittswerten die Anzahl der die
verbleibenden Bewertungen für jeden Kurs hätten, was bedeutet, dass wir
zum
Bearbeitungsbereich gehen und hier sagen müssen, zählen statt Mittelwert Und lassen Sie mich das versuchen. Hmm. Also ja, es sieht
besser aus, glaube ich Wir haben mehr Abwechslung,
mehr Unterschied zwischen dieser Handlung
und den anderen. Obwohl die anderen immer noch nicht so gut sichtbar
sind, da dieses Diagramm hier
einen Großteil
des Bereichs der Y-Achse einnimmt . Deshalb
werde ich
im nächsten Video
als Nächstes
eine andere Art von
Grafik verwenden , um
dieselben Daten darzustellen . Durchschnittliche Bewertungen pro Kurs, pro
Monat, jedoch unter Verwendung
eines Stream-Diagramms. Ich werde
im nächsten Video mit dir sprechen.
149. 148. Mehrere Zeitreihen-Streamgraphen erstellen: Hallo, willkommen zurück. In diesem Video werden
wir
dieses Stream-Diagramm erstellen. Sie finden es also
auf der
Website hichart.com unter Diagramm
- und Serientypen Gehen Sie also runter zum Stream-Diagramm. In diesem Beispiel haben
wir auf der X-Achse dieses
Diagramms die Jahre, haben
wir auf der X-Achse dieses
Diagramms die Jahre, es handelt sich
also um
kategoriale Zeitdaten auf der X-Achse Auf der Y-Achse wird
die Anzahl der Medaillen angezeigt, die von Sportlern
gewonnen wurden, und jede Farbe
steht für ein Land Jedes Land hatte also eine
bestimmte Anzahl von Medaillen, die seine Athleten
in einem bestimmten Jahr gewonnen haben. Jetzt haben wir
dieselbe Grafik, Sie verstehen die Idee. Wir haben die Monate
entlang der X-Achse und jede Farbe, die wir repräsentieren,
einen Kurs. Dann
können wir entweder die
durchschnittlichen Bewertungen
oder die Anzahl der
Bewertungen auf der Y-Achse haben . Bevor wir den
JavaScript-Code dieses Diagramms kopieren, bereiten
wir
unsere Umgebung vor. Ich werde
das duplizieren, indem ich
es kopiere und einfach Strg
V drücke, um es einzufügen. Ich dupliziere es und
benenne es in etwas anderes um. Nennen wir es Stream. Richtig. Gehen Sie dann zu der Datei
, die wir gerade erstellt haben. Und alles, was wir von hier aus
ändern müssen ist diese Diagrammdefinition, löschen und hier alles
auswählen, Control A, Control C,
kopieren, hier hin, Ctrl V, um es einzufügen,
und vergessen Sie nicht, das nicht benötigte Zeichen zu entfernen,
also
die Semikolonne die Klammer, und hier oben brauchen wir Diagramme
und wir brauchen
die geschweifte Klammer hier oben brauchen wir Diagramme
und wir brauchen Diagrammen Also alles vor dieser geschweiften Klammer wird gelöscht, einfach so. Schauen wir uns
jetzt diese Daten an. Ja, wie die Daten aufgebaut
sind. Eine Serie ist also eine Liste. Es ist eine große Liste mit
mehreren Wörterbüchern. Das ist zum Beispiel
das erste Wörterbuch. Es beginnt hier. Es endet hier. Und es besteht aus diesem Schlüssel- und Wertepaar und dem Namen
und dem Namen des Landes, das
durch den Namen eines Kurses ersetzt wird. Und wir haben Daten,
das ist diese Liste. Und so werden diese
Wörterbücher dann wieder mit unterschiedlichen Daten
wiederholt Das heißt, wir müssen unseren Code hier unten nicht
ändern. Also hatten wir diesen Code. Wir haben ihn bereits
im vorherigen Video gebaut. Das sollte also in Ordnung sein. Lass uns versuchen, es auszuführen. Wir bekommen einen Fehler
und wir werden ihn beheben. Stoppen Sie also den aktuellen Prozess falls ein Prozess läuft. Stellen Sie sicher, dass Sie
die neue Datei ausführen, die wir erstellt haben. Drücken Sie also auf Ausführen. Also das ist der Fehler. Und wenn Sie diesen
Jason-Dekodierungsfehler erhalten, bedeutet
das, dass es um den
JavaScript-Code geht, den wir haben Wir wollen also zu den Codes gehen
und Sie sehen, dass es
um Farben und
unbekannte Identifikatoren geht , weil wir hier diese Farben haben, und wir müssen sie löschen Und Sie können
die gesamten Farben löschen. Also von dort nach hier,
einschließlich des Kommas, weil Python diese Farben nicht verwenden
kann Also lösche das, und das wird die Ausgabe nicht
ändern Und lass es mich dir zeigen. Wir haben noch einen, Peto. Ja, es ist also hier. Wir haben also diese Art von JavaScript-Syntax,
die Python nicht erkennen kann. Sie könnten also, da wir
das sowieso ersetzen,
leider alle Werte der Kategorienliste löschen und
die
Kategorien leer lassen. Also genau wie diese Kategorien. Kategorien werden also,
wie Sie wissen, hier unten
durch diesen Ausdruck ersetzt . Lass mich nochmal anhalten und rennen. Diesmal scheint es zu funktionieren. Dies ist also
die Anzahl der
verbleibenden Bewertungen für jeden Kurs, sodass Sie den Unterschied
zwischen diesem Kurs,
dem Python-Megakurs
und den anderen Kursen sehen können. Und das ist hier etwas
Interessantes. Sie sehen also, dieser neue
Kurs wurde vor nicht allzu langer
Zeit, irgendwann am 20. und 21. Januar,
gestartet Der komplette Python-Kurs
hat also zehn professionelle OP-Apps erstellt, und High Charts ist sehr intelligent, um es
in diesem Stream-Diagramm anzupassen. Jetzt möchten Sie
diese Beschriftungen vielleicht ändern , damit Sie sie leicht finden
können. Sie können sie hier finden
, wo sie sich befinden,
damit ich eine Suche in Deutschland durchführen
kann Das ist dieser Text hier. Es ist also Teil der Anmerkungen. Sie sehen, man könnte
zum Beispiel sagen, dass Kurs gestartet wurde oder Python populär
wurde. Richtig. Wenn ich es stoppe und wieder renne. Wir sollten sehen, dass diese
Labels aktualisiert werden. Sie können
ihren Standort auch aktualisieren. Sie sehen also, dass die erste Anmerkung bei X 5.5, y 30 steht.
Also X 5.5. Also Null hier, eins, zwei, drei, vier, fünf, sechs, also sind es 5-6. 5,5 30 entlang der Y-Achse. 30 sollte also
irgendwo hier drin sein. Also hast du die Idee. Damit
ist dieses Video und ich werde
in den nächsten Videos mit Ihnen sprechen.
150. 149. Ein Kreisdiagramm zur Web-App hinzufügen +: Hallo. In diesem Video werden
wir ein Kreisdiagramm erstellen, genau wie das, das
Sie sich gerade ansehen. Sie können es also auf pchart.com finden Gehen Sie zu Diagramm- und
Serientypen und dann zu Dieser hier zeigt
den Prozentsatz
der Benutzer für die wichtigsten Zum Beispiel
hat Chrome die Mehrheit. Sie sehen diese großen Teile hier und jedes Segment ist
mit dem Prozentsatz verknüpft. In unserem Fall werden
wir diese Analyse früher durchgeführt haben , also haben wir diese Daten. Für jeden Kurs haben
wir noch eine Reihe von Bewertungen für diesen Kurs übrig. Deshalb werden wir am Ende so etwas haben, aber interaktiv, wie
Sie hier sehen können. Gehen wir und bereiten
unsere Umgebung vor. Also werde ich natürlich eine
neue Dateibewertung erstellen. Es ist ein Pi. Und wie üblich
verwende ich diese Vorlage,
diese Pi-Vorlage und füge dann eine Highchart-Komponente hinzu
, die zu WP gehörte und
rendere diesen JavaScript-Code
, den wir hier einfügen müssen. Also hier drin ist der
Code für dieses Diagramm. Also der da drin. Steuerung A, kopiere es
und füge es dort ein, und vergiss nicht, die halbe Spalte und
die
Klammer zu löschen und hier oben alles zu
löschen, was
vor dieser geschweiften Klammer steht Ich möchte den Code ausprobieren,
bevor ich Änderungen vornehme. Aber ich habe diesen Fehler hier.
Es gibt vier Codes. Ich muss einen entfernen und dann ausführen,
damit wir das Kreisdiagramm korrekt
visualisieren Als Nächstes möchte ich den
Code hier oben einfügen. Außerdem wollen wir
diese Aggregation des
Datenrahmens haben , bei der wir im Grunde
zählen,
wie viele Bewertungen es für jeden Kurs gibt Also Bewertung des Kursnamens. Zähle das. Stimmt. Dann müssen
wir uns als Nächstes die
Struktur der Daten ansehen. Wie Sie sehen können, ist dies eine
große Liste mit Wörterbüchern. Also hier ist das erste Wörterbuch,
aber seien Sie vorsichtig hier. Soweit ich sehe,
haben wir hier ein Wörterbuch, das diesen Schlüssel und Wert,
diesen Schlüssel und Wert
und dann diesen Schlüssel
und diesen Wert
hat diesen Schlüssel und Wert
und , was eine Liste ist. Es endet also hier. Deshalb müssen wir dieses Mal auf HC Dot Options Dot Serious
Dot-Daten zugreifen. Im Gegensatz zu den anderen Zeiten , als wir
HC-Options-Punktserien verwendet haben, weil die Daten
direkt hinter der Serie standen. Serie war die Liste. Aber dieses Mal
hat Series einen Datenschlüssel, und dieser Datenschlüssel
enthält die eigentlichen Daten, die aus Wörterbüchern bestehen Also das erste Wörterbuch
mit Name und Y, das zweite Wörterbuch
mit Namen und warum nochmal Das erste Wörterbuch hat auch diese anderen Eigenschaften,
wie z. B. durchgeschnitten und
ausgewählt,
was darauf hindeutet, dass diesem Chrom um Slice handelt Siehst du, es ist durch
die anderen Teile des Kuchens getrennt. Das ist also für Chrome. Die anderen haben diese
Eigenschaften nicht , was in Ordnung ist. Also werde ich es einfach so
lassen. Aber jeder von ihnen
hat einen Namen und ein Y. Deshalb
wird das etwas bedeuten,
und dieses Etwas müssen
wir jetzt konstruieren HC-Daten werden also sein
, dass das eine Liste ist. Es ist eine Liste von
Wörterbüchern, richtig. Eine Liste von Wörterbüchern
, deren Namen „
Lass uns
einen Namen für eine
Variable V finden“ entspricht Lass uns
einen Namen für eine
Variable V finden Also Name und Y, die Bezeichnung des
anderen Werts ist Y. Nehmen wir die Variable V zwei Da diese also immer Opera hier
ändern, QQ hier, also geh dort in den Explorer, das heißt, wir brauchen eine
Variable nach dem Namen und auch eine Variable nach Y, da sich
diese Werte auch Und was wir tun, ist ein
Listenverständnis zu erstellen Also für V eins und V zwei rein. Also, wo bekommen wir das her? Im Grunde brauchen wir für V eins die Namen
für jeden Kurs, die Titel der Kurse. Und für V zwei benötigen wir die Anzahl der Bewertungen
für den Kurs. Schauen wir uns also den Datenrahmen
an, wie er aussieht, teilen. Ich denke also, der Index
hat den Kursnamen. Lass mich tatsächlich zeigen, dass du. Ich führe diese Zelle aus
und führe sie auch aus. Wir bekommen das, teilen uns aber, dass Index im Grunde
ein listenartiges Objekt ist, das alle
Namen der Kurse enthält. Und share actually list share enthält die
Anzahl der Bewertungen. Was wir tun werden, ist
für V eins,
V zwei im Zip Share Dot Index, share print V eins, V zwei. Und was hier passiert
, ist, dass in der ersten Iteration V eins, der Titel des
ersten Kurses und die Anzahl
der verbleibenden Bewertungen
für diesen Kurs
ausgedruckt der Titel des
ersten Kurses und die Anzahl
der verbleibenden Bewertungen
für diesen Kurs Also v1v2 dann v1v2 wieder und wieder und wieder. Das brauchen wir hier. Also für v1v2 in Zip share sorry, share index und share Also werden
diese Werte
hier und hier in
dieses Wörterbuch eingefügt hier und hier in
dieses Und dann weisen wir das dem zu, und dann beenden wir
das Skript und führen es erneut aus, um zu
sehen, wo wir uns befinden. Also bekommen wir einen Fehler. Das Attributlistenobjekt
hat keine Attributdaten. Schauen wir uns also an,
wo der Fehler aufgetreten ist, Zeile 84, die sich hier befindet. Und es heißt, das List-Objekt
hat keine Attributdaten, was bedeutet, dass dies das letzte Objekt
ist und dies das Datenattribut ist. Da es sich um eine Liste handelt, hat
sie
dieses Datenattribut natürlich nicht, hat
sie
dieses Datenattribut natürlich nicht weil wir dachten, es
handele sich um ein Wörterbuch. Irgendwie dachte ich, dass du es
vielleicht nicht getan hast. So ernst. Hmm. Serie
ist wirklich eine Liste Das war also ein
Logikfehler meinerseits, aber genau darum geht es
bei Fehlern. Also erklären sie
dir, was vor sich geht. Du liest das und
behebst das Problem. Da
es sich bei einer Reihe also um eine Liste handelt, bedeutet das, dass sie Elemente enthält ,
und in diesem Fall
hat sie nur ein Element. Es ist also das große Wörterbuch
, das diesen Schlüssel und Wert, diesen Schlüssel und Wert
und diesen Schlüsselwert hat. Die Serienliste
enthält also nur einen Artikel. Daher müssen wir
auf diesen einen Artikel zugreifen. Aus einer Serie, also der
Eintrag mit dem Index Null
, der
uns dann dieses Wörterbuch geben wird. Und aus diesem Wörterbuch extrahieren
wir den Datenschlüssel
dieses Wörterbuchs. also Daten durch
Zugriff auf den Datenschlüssel extrahieren, erhalten
wir die Liste des Datenschlüssels Jetzt sollte es uns also gut gehen. Hey, es sieht gut aus. Und damit ist auch dieses
Video beendet, und das war eine Reihe von Grafiken, die wir
in diesen Abschnitten entwickelt haben. Ich möchte mich bei
Ihnen für das Folgen bedanken und werde in
den nächsten Videos mit Ihnen sprechen. Wir sehen uns.
151. 150. Demo von App 5: Web-Entwicklung mit Flask: Aufbau einer persönlichen Website: Hallo und willkommen zu diesem
neuen Abschnitt des Kurses. Und dies ist die allererste
Vorlesung, in der ich Ihnen zeigen werde, was Sie in diesem Abschnitt
entwickeln werden. Das ist also einer der
Abschnitte
des Kurses, in denen Sie eine Anwendung erstellen werden
. Diese spezielle Anwendung
ist eine Website mit Python. Python kann Websites erstellen, genau wie andere
Programmiersprachen. Natürlich benötigen Sie HTML und möglicherweise
auch CSS
und JavaScript , damit die Client-Site
die
Webseite im Browser rendern Aber im Backend verwenden
Sie Python, genau wie Sie es mit PHP
und anderen Programmiersprachen tun . Ja, die Website
, die Sie
erstellen werden, ist die, die Sie
hier sehen. Ich meine, sie ist momentan ziemlich
leer, sie hat keinen Inhalt, aber du kannst sie mit
Inhalten füllen und sie als
Schaufenster für deine Arbeit,
als Portfolio oder so verwenden . Sobald Sie diesen Punkt erreicht
haben, können Sie ihn mit Easy verbessern. sollten auch wissen, dass diese
Website jetzt live ist Deshalb werde ich Ihnen beibringen, wie
Sie eine Website auf
einem Live-Server bereitstellen , damit jeder Ihre Website durchsuchen und
besuchen kann. Es ist also ein vollständiges
Tutorial, um
die Website von Grund auf neu zu erstellen und online zum Laufen zu bringen. Und jetzt ist das eine
statische Website. Aber später im Kurs haben wir
andere Anwendungen, mit denen
Sie
dynamischere Websites mit einer
Datenbank im Backend und einigen
dynamischen Funktionen erstellen werden dynamischere Websites mit einer . Aber das ist ein
guter Anfang. Ich hoffe, Ihnen gefällt
dieser Abschnitt, und wenn Sie Fragen haben,
können Sie sie gerne stellen. Und ja, ich werde in der nächsten Vorlesung mit
dir sprechen.
152. 151. Deine erste Flask-Website mit Server-Warnung hinzugefügt: Hallo. Und in diesem Vortrag werden
Sie
Ihre erste Website
mit FLASK erstellen , falls Sie dies
noch nicht getan FLASK ist ein Python-Framework
, das alle Tools, Vorlagen und Funktionen Sie
Websites mit Python erstellen Und bevor ich tiefer in
FAS eingehe und Ihnen erkläre, wie FLASK wahrscheinlich zum
Erstellen von Python-Web-Apps verwendet wird, möchte
ich Sie bitten , 3 Minuten
damit zu verbringen, eine sehr einfache
Website mit FLASK zu erstellen Und das mit nur
mehreren Zeilen Python-Code. Also das werden
wir jetzt tun. Um eine Web-App mit FLASK zu erstellen, muss
Flask PIP install Flask
sollte also Flask in
Ihrer Python-Umgebung installieren In Ordnung. Das wurde
erfolgreich installiert. Und lassen Sie uns jetzt
unsere Website erstellen. Was Sie benötigen, ist eine Python-Datei. Also erstelle ich hier eine. Sagen wir, Drehbuch eins, kein Kuchen. Und dann schreiben Sie hier den Code, mit dem Ihre Web-App
erstellt wird, und alles beginnt mit
dem Import von Flask Und tatsächlich
importieren Sie nicht das Flask-Framework, sondern Sie importieren die
Flask-Klasse aus einem Flask-Framework Also aus Flask importieren Sie Flask. Und FLASK ist eine Klasse
dieser Bibliothek, und sie enthält
alle Prototypen, die Sie benötigen
, um
Web-Apps mit Python zu erstellen Das wird also
Anfragen für Sie bearbeiten. Sie müssen Anfragen nicht selbst
einrichten. Aber konzentrieren wir uns vorerst auf
dieses Beispiel. Sobald Sie das getan haben,
müssen Sie eine Variable erstellen,
in der Sie FLASK-Objektinstanz,
Ihre FLASK-Anwendung,
speichern Das würde der
FLASK-Klasse entsprechen. Und du übergibst dort die
Namensvariable, mach dir
darüber jetzt keine Sorgen Dann brauchst du einen Dekorateur, root, und hier ist eine URL, über die
du deine Website aufrufen Dieser Schrägstrich hier
bedeutet also die Homepage. Und gleich danach müssen
Sie die Funktion schreiben ,
die
Python-Funktion. Und diese Funktion
definiert , was Ihre
Webseite tun wird. In diesem Fall
geben wir eine Zeichenfolge zurück. Sagen wir hier Zeichenfolge. Der Inhalt der Website wird hier angezeigt. Kurz danach benötigen Sie
zwei weitere Codezeilen, und das ist eine
bedingte Anweisung. Wenn der Name der Zeichenfolge entspricht, muss die
Haupt-App ausgeführt werden. Debug ist gleich True. Das ist es. Mach dir
darüber jetzt keine Sorgen. Klicken Sie einfach auf Speichern,
öffnen Sie das Terminal und führen Sie das Skript mit dem ersten Python-Skript,
Python, Und es sieht so aus, als ob Ihre
Web-App jetzt läuft. Öffnen Sie
also den Browser Und Ihre Website sollte auf Ihrem lokalen Host
live sein. Das ist es. Nichts Beeindruckendes, aber Sie sehen wie einfach es ist,
eine Website mit Python zu erstellen. Und in diesem Fall geben
wir nur
ein Zahnrad an die Website zurück . Da ist also nichts
Besonderes drin. Aber später werde ich Ihnen erklären, wie
Sie
HTML-Seiten zurückgeben können , anstatt Python-Strings
auf Ihrer Website
abzuspielen. diese Weise können
Sie tatsächlich verschiedene Formate Schriftarten für Ihren Text verwenden,
und dann können Sie auch den
CSS-Stil auf Ihren HTML-Code anwenden, sodass Sie
eine vollständige Website mit modernen Funktionen erhalten. Lassen Sie uns zunächst
sicherstellen, dass Sie
diese sieben Codezeilen verstehen . Ja, es sind sieben Zeilen. Wie gesagt, in der ersten Zeile importieren
Sie
das FAS-Klassenobjekt aus der FAS-Bibliothek Dann in der nächsten Zeile, sobald Sie die Flask-Klasse,
das Flask-Objekt, importiert haben, mit anderen
Worten, instanziieren
Sie diese Klasse, instanziieren
Sie Dies ist eine spezielle
Variable, die den Namen des
Python-Skripts
als Wert erhält . Wenn Sie nun eine
Python-Datei, ein Python-Skript, ausführen weist
Python der Datei den Namen main
this string zu Wenn Sie ein Skript
in ein anderes Skript importieren, z. B. wenn wir dieses
Skript aus einem anderen Skript importieren, erhält
dieses Skript
dem Skript einen Punkt Py-Namen Aber wenn Sie
dieses Skript ausführen, weist
Python den Namen
underscore underscore,
main score underscore main Was passiert also, ist das?
In dieser Zeile sagen
wir, dass der Name gleich Main ist, dann rund um die App Das ist wahr, wenn wir
das Skript so ausführen, wie wir es hier getan haben. Aber wenn wir dieses
Skript aus einem anderen Skript importieren würden, würde
diese Zeile hier
nicht ausgeführt werden. Das ermöglicht uns also, die Kontrolle
über dieses Skript
zu haben ,
indem wir diese Zeile hier verwenden. Dann haben wir diese beiden Zeilen. Das ist ein Dekorateur. Jetzt wird die Ausgabe
, die diese Funktion erzeugt, dieser
URL zugeordnet Wenn Sie möchten, können Sie diese URL so
ändern, dass Sie
beispielsweise das Skript speichern Klar, du brauchst hier eine URL. Speichern Sie das Skript, führen Sie es aus und gehen Sie
zum lokalen Host, laden Sie es neu. Und dieses Mal
bekommst du eine Fehlermeldung. Python konnte diese Seite nicht finden, aber es kann die About-Seite finden. Ja, das ist es. Wenn du immer noch eine Homepage haben möchtest, fügst du direkt
nach dem Dekorateur einen weiteren Dekorateur
und eine weitere Funktion Also geh einfach mit dieser
Homepage weg und sag einfach Homepage. Hier. Speichern. Auch hier haben wir einen
Fehler, weil wir keine Funktionen
mit demselben Namen haben können. Also können wir das in einen Bot ändern. Der Name spielt keine Rolle. Das muss bei diesem also nicht
dasselbe sein. Klicken Sie im Skript erneut auf Speichern. Und gehe auf die Website.
Das funktioniert. Probieren Sie das Internet auf der Homepage aus.
Das funktioniert auch. Wenn du etwas ändern willst, sagen
wir mal, was den Inhalt angeht
, dann speicherst du das Script. Und die Web-App wird
von selbst neu gestartet, sodass Sie die Web-App nicht schließen
und das Skript
erneut ausführen müssen die Web-App nicht schließen
und das , wie ich es zuvor getan habe. Wenn Sie eine Fehlermeldung erhalten, wie ich sie zuvor hatte, wird das
Skript beendet. Aber wenn alles in Ordnung ist, werden
Sie keinen Fehler bekommen, also versuchen Sie es erneut. Die Homepage ist in Ordnung.
Die About-Seite ist auch in Ordnung, und mit dem neuen Inhalt. Das war's also auch schon.
In der nächsten Vorlesung lernen
Sie, wie Sie eine HTML-Template,
eine HTML-Datei, mithilfe
Ihrer Python-Funktionen
zurückgeben . Das gibt Ihnen die volle Möglichkeit alles
, was Sie wollen, auf
Ihrer Website
zu veröffentlichen und nicht nur Saiten zu
spielen, wie wir
es in dieser Vorlesung getan haben. Wir sehen uns also in
der nächsten Vorlesung.
153. 152. HTML-Vorlagen vorbereiten +: Nochmals willkommen. In dieser Vorlesung lernen
Sie, wie Sie
HTML-Seiten mit
Ihrer Python-Web-App generieren . In der vorherigen Lektion geben wir einfach einige
einfache Zeichenketten zurück, wie Sie hier sehen, also
geben wir eine Zeichenfolge zurück. Jetzt werden wir hier eine
HTML-Vorlage zurückgeben. Dazu müssen wir die Render-Template-Methode
der Flask-Bibliothek verwenden Render-Template-Methode
der Flask-Bibliothek Und die Rendervorlage greift auf eine HTML-Datei zu, die irgendwo in unserer
Python-Anwendung in unseren Python-Dateien
gespeichert
ist irgendwo in unserer
Python-Anwendung in unseren Python-Dateien
gespeichert , und zeigt dann diesen HTML-Code
alle Anfragen unter der URL an Also müssen wir das
durch den Namen einer HDML-Seite ersetzen, sagen
wir Home Dot Und dieser Name hier,
dieser Dateiname muss einer echten HTML-Datei entsprechen, die in einem Ordner
gespeichert werden muss, wiederum Templates heißen
muss Stellen Sie also sicher, dass Sie diese Namen verwenden
, wenn Sie einen Ordner erstellen. Innerhalb des Ordners müssen
Sie dann
eine HTML-Datei, Home Dot HTML, erstellen . Und der Name muss den Namen
widerspiegeln, den Sie hier in der
Eder-Vorlagenmethode
zurückgeben. Das ist es. Und hier schreibst
du jetzt den HTML-Code Wenn Sie HTML bereits kennen, sollte
das so
einfach wie das Atmen sein Wenn Sie es nicht wissen,
sollte es leicht zu erlernen sein. Wenn Sie jetzt ein bisschen Python kennen,
was Sie sollten, ist das Erlernen von HTML ein Kinderspiel. Also mach einfach weiter
und lerne etwas HTML. So einfach ist das. Aber wie dem auch sei, ich werde hier eine HTML-Datei erstellen. Alles beginnt
mit einer Deklaration
des Dokumenttyps HTML. Dann haben Sie die HTML-Tags. Es gab ein öffnendes Tag, und Sie haben auch ein schließendes Tag. Das ist es. Du hast Körpermarken. Einfach so, und hier
ist der Inhalt
Ihrer Webseite drin . Nehmen wir an, ich möchte eine
Überschrift wie diese. Und hier drinnen
kannst du etwas Text eintragen. Meine Homepage zum Beispiel. Und hier ist eine
andere Art von Tag,
nämlich ein Absatz-Tag, und sagen wir, das ist eine Test-Website. Clicksaf und, ja, du
solltest startklar sein. Gehen Sie zu Ihrem Skript und stellen Sie
sicher, dass Sie es gespeichert haben. Und das Web wird neu gestartet, und ich gehe jetzt und
besuche meine Homepage Das ist die Bot-Seite. Das
sollte die Homepage sein, wie. Ich glaube, ich habe hier einen kleinen
Tippfehler. Ja, das sollte Seite
eins als Eröffnungs-Tag sein. Klicken Sie auf Speichern und Sie müssen
das Python-Skript nicht lesen. Gehen Sie einfach hierher, laden Sie die Seite neu. Und das ist jetzt ein normaler Text. Das ist also ein Absatz, und das ist die Überschrift Großartig. Wir können also auch eine weitere
Seite für die Info-Seite haben. Wenn du das einfach
schnell duplizieren willst, sag über meine About-Seite. Hier, das ist eine Test-Website. Auch hier gehst
du einfach zu deinem ersten Skript und
änderst es in eine Rendervorlage, und dort übergibst du
etwa Punkt-HTML. Klicken Sie auf Speichern, gehen Sie
zum lokalen Host. Dies sollte die Homepage sein. Sie haben die Seite Über uns. Ja, meine About-Seite. Das ist
wieder diese Website. Also, das ist es. So übergeben Sie HE
Mel-Vorlagen an Ihre
Python-Web-App und ordnen
sie Ihren URLs zu. Lass uns weitermachen, dann
zur nächsten Vorlesung.
154. 153. Ein Website-Navigationsmenü hinzufügen: Okay, in dieser Vorlesung werde ich weiter an der Website arbeiten. Und speziell werde ich
ein Navigationsmenü hinzufügen , damit der Benutzer einfach durch die Seiten
navigieren kann. Lassen Sie mich zunächst
die Idee veranschaulichen. Zunächst möchte ich das
umsetzen, was wir bisher haben. Also Python-Skript eins. Die Anwendung läuft also. Und wenn Sie zu Ihrem
Browser, dem lokalen Host, gehen ist
der Standardport 5.000,
und das ist die Website. Und wir haben hier auch zwei Seiten. Über die Seite. Gut. Also über Seite und Homepage. Also, was ich in
diesem Vortrag aufbauen werde , ist dieses Ding
hier. Ich habe einen Screenshot. Also die Homepage, die About-Seite, Homepage, die About-Seite. Wir haben hier also ein
Navigationsmenü. Wenn Sie hier auf einen
dieser Texte klicken, gelangen
Sie zu der entsprechenden Seite. Und wir haben auch eine Überschrift und etwas,
das Sie jetzt beachten
sollten . Es ist wichtig
zu beachten, dass dieser Teil hier auf beiden Seiten
derselbe ist. Das heißt, wir werden diesen Teil hier
hinzufügen, den Code dieses
Teils auf der HTML-Seite Wie klingt das? Nun, für mich klingt
das nicht sehr klug. Eine intelligentere Methode, dies zu tun,
wäre, hier
eine separate HTML-Seite
für diesen Teil zu erstellen hier
eine separate HTML-Seite
für diesen Teil und dann die A-Seite und
die Homepage mit dieser Seite zu verknüpfen Das werden wir also in dieser Vorlesung
tun. Also brauchen wir den HTML-Code für diesen Header und
das Navigationsmenü. Und ich habe diesen Code bereits, also werde ich nicht den ganzen HTML-Code
abtippen. Hier. In Ordnung. Aber ich erkläre dir, was
der HTML-Code macht. Zuallererst möchte
ich darauf
doppelklicken und
es einfach lokal anzeigen. Wir führen das also nicht auf
einem Server aus, sondern haben es doppelt angeklickt. Wir haben hier also die Kopfzeile und das Navigationsmenü. Wenn Sie darauf klicken, Sie nirgendwohin, weil
wir
das Layout, die HTML-Seite
mit A und die Startseite noch nicht verknüpft das Layout, die HTML-Seite
mit A und die Startseite Und wie Sie sehen können, habe ich
das in den
Vorlagenordner gelegt . Jede HTML-Seite wird also in
den Vorlagenordner verschoben. Was wir hier haben, ist die
Dokumentdeklaration und wir haben hier
die HTML-Tags zum Abschluss. Dann haben wir ein Header-Element, das hier DF enthält. Und wir werden
diesen Klassennamen später verwenden , um auf unseren CSS-Code zu verweisen. Dann haben wir
hier eine Funktion, die URL vier sagt. Und das bewirkt, dass dadurch die Home-Funktion,
die Python-Funktion, ausgelöst
wird .
Was wir hier haben. Also dieser hier, diese Funktion
wird ausgelöst, wenn der Benutzer auf den Home-Link
klickt Also dieser hier.
Und das Gleiche gilt für den Bauchmuskel. Wenn der Benutzer also auf about klickt, wird
die Python-Funktion
ausgeführt und die
HTML-Datei
über die Render-Template-Methode gerendert . Ich hoffe also, dass das klar ist. Wenn Sie faul sind wie ich, möchten Sie nicht jede
Zeile dieser Datei eingeben Sie finden diese Datei
im Ressourcenbereich, der sich
rechts auf dem Bildschirm befindet. Jetzt müssen wir einen Weg finden
,
diese Layout-HTML-Datei mit
der Startseite und den
obigen HTML-Seiten zu verknüpfen diese Layout-HTML-Datei mit . Ich werde schnell darauf zurückkommen,
wie die Seite aussieht. Und wie Sie hier sehen, haben
wir die Kopfzeile, und gleich unten in der Kopfzeile haben
wir die A-HTML-Seite. Also einfach hier. Das heißt, wir geben
direkt unter der Kopfzeile einen
Code ein,
der auf die Home-Dot-HTML-Seite oder die A-Punkt-HTML-Seite verweist je nachdem, worauf
der Benutzer klickt. Also haben wir
hier eine Abteilung, die geschlossen wird. Und ich gebe ihr einen Klassennamen ,
damit ich
später auf den CSS-Code verweisen kann. Dann hast du geschweifte Klammern. Das ist also eine Syntax, und Sie
müssen dort auch das
Prozentzeichen verwenden Dann schreibst du das Block-Tag und dann gibst du dem Block einen
Namen. Und was wir hier machen, ist eigentlich die Vererbung von Vorlagen. Die HTML-Seite mit Layout-Punkten,
die wir gerade
ändern,
ist also die wir gerade
ändern, eine Basisvorlage Die untergeordnete Vorlage wird die Home-Dot-HTML-Seite oder
die About-Punkt-HTML-Seite Und diese untergeordnete Vorlage wird diesen Block hier
ausfüllen. In geschweiften Klammern und
Prozentzeichen befindet
sich eine weitere Linie . Das ist das Schlüsselwort end block, das das
Ende des Blocks angibt Und wir sind fertig mit
der Layout-HTML-Seite. Was ich hier tun werde, ist zu
Panes zu gehen und
das Fenster nach rechts zu teilen Also habe ich die
Layout-Punkt-HTML-Seite hier, schließe sie hier. Und ich gehe jetzt zum
Home Dot HML. Und weil das eine untergeordnete Vorlage
sein wird, brauche
ich die Deklaration
hier und das HTML-Tag nicht, und ich
brauche nicht einmal das Body-Tag Ich werde das durch ein DIV ersetzen. Und nehmen wir an, Klasse ist gleich Home, schließe es hier
und lösche diese beiden Und was Sie jetzt tun müssen, ist die
Templating-Syntax wieder so zu verwenden und
das Schlüsselwort extends zu verwenden Und dann deklarieren Sie
, was Sie erweitern möchten. Lege die HML-Datei aus. Dann brauchst du auch eine weitere Zeile. Und hier müssen Sie
den Namen des Blocks angeben. Das muss also diesem hier
entsprechen. Also, was ist hier los? Nun, gehen wir zum Skript
zum Python-Skript. Was passiert ist, dass
Python, wenn
der Benutzer diese URL besucht, also die Homepage oder diese
, sagen wir diese, also die Homepage oder diese
, sagen wir diese,
die Home-Funktion ausführt weil die Home-Funktion dieser URL zugeordnet
ist, und die Home-Funktion die
Home-Punkt-HTML-Vorlage rendert Python geht also
zur Home-Dot-HTML-Seite
und sieht, dass die Home-Dot-HTML-Seite das Layout-Punkt-HTML
erweitert. Also dieser hier. Also,
es wird diesen Code in
diesem Block hier reinschicken, und dann wird diese Seite in der Home-URL
gerendert. So einfach ist das, der
Benutzer sieht
das Layout dieser HTML-Seite mit
ihren untergeordneten Inhalten Das ist also die Basisvorlage,
das ist die untergeordnete Vorlage. Und in diesem Fall haben wir auch ein anderes
Kind, bei
dem es um dieses HML geht Also lass mich das hierher bringen. Und ich kopiere das einfach ich stelle das hier hin,
und das auch. Steuere C und yo. Stellen Sie sicher, dass Sie
alle Dateien und diese gespeichert haben. Ja. Und schauen wir uns an,
ob die App läuft Ja, es sieht live aus. Und ich gehe auf die Homepage.
Ja, es sieht gut aus. Ja, wir haben Zuhause und Zuhause. Gehen wir zum Thema Tinte über. Jep. Wir scheinen hier den Überblick
verloren zu haben. Das Format dieser Zeile, schauen wir uns die AB-Seite
an. Ja, ich habe vergessen, das Div hier zu
schließen, erneut zu
speichern, zum Browser zu gehen, neu zu laden und es ist in Ordnung Also das war es auch schon. Ich hoffe, die Dinge funktionieren auf deiner Seite. Wenn nicht,
zögern Sie nicht, eine Frage zu stellen, oder Sie können sogar meine Dateien überprüfen, die ich im
Ressourcenbereich auf der rechten Seite Ihres Bildschirms einfüge. Und ja, ich denke, unsere
Bewerbung ist bereit für mehr. Also lass uns weitermachen und
dich in der nächsten Vorlesung sehen.
155. 154. Das Website-Frontend mit CSS ++ verbessern: Großartig. Wir sind ziemlich
weit fortgeschritten Wir haben ein
Python-Skript, das
Flashcap generiert, und wir
haben zwei Funktionen Und jede von ihnen ordnet zwei HTML-Seiten
zwei verschiedenen URLs zu Und das ist unsere Website
mit zwei Webseiten. In diesem Vortrag werden wir
dieser Website etwas CSS-Styling
hinzufügen , sodass wie jede
andere moderne Website
aussieht, sie wie jede
andere moderne Website
aussieht,
visuell ansprechend ist und nicht
wie in den 80ern aussieht. In Ordnung. Um das zu tun, müssen wir im Grunde zwei Dinge
tun. Als erstes müssen
wir
eine CSS-Datei erstellen und
den CSS-Code darin schreiben. Und die zweite Sache ist,
sobald wir diesen CSS-Code geschrieben haben, sobald wir die CSS-Datei haben, müssen
wir von
unserer Layout-Punkt-HTML-Datei aus darauf verlinken. CSS ist ein CCS-HTML. Wenn Sie es also nicht
wissen, schlage ich vor, dass Sie sich einige Tutorials ansehen, und ich bin mir sicher, dass Sie sich sehr schnell an CSS
gewöhnen werden Ich habe bereits eine CSS-Datei
, die meine Website stilisieren wird. Ich schneide das aus und lege es in einen Ordner, den
ich statisch nenne Hier erstelle ich
einen weiteren Ordner und nenne ihn CSS, und ich füge die
CSS-Datei hier ein. Also lass mich das schließen. Wie Sie sehen, wurden der Ordner, den
ich erstellt habe, und die Datei in der
Baumstruktur hier in Atom wiedergegeben. Die Idee ist also, dass
Python im
statischen Ordner nach statischen Dateien sucht . Hier im statischen Ordner können
Sie also verschiedene Dateien ablegen. Wenn Sie beispielsweise ein Bild zu Ihrer Website
hinzufügen möchten, erstellen
Sie
hier einen Ordner mit dem Namen Images und legen dann Bilder
in diesen Ordner. Anschließend können Sie diese
statischen Dateien von
Ihrer Layout-HTML-Seite oder
von beliebigen anderen Seiten aus verknüpfen . Bevor ich die CSS-Datei öffne und sie kurz durchgehe, möchte
ich Ihnen zeigen, wie Sie auf die CSS-Datei verlinken
können. Denken Sie nun daran, dass sich der
sichtbare Teil eines HTML-Codes
innerhalb des Haupttextes befindet,
während Links wie Links zu
JavaScript-Dateien oder
Links zu CSS-Dateien
außerhalb des Textkörpers während Links wie Links zu JavaScript-Dateien oder
Links zu CSS-Dateien liegen. Und diese sollten
in Head-Tags eingefügt werden. Also geh hierher und geh dorthin. Und dann haben wir ein Link-Tag. Und das L dort bedeutet
die Beziehung. Die Beziehung zu der Datei, auf
die wir verlinken
, ist also ein Stylesheet Wir
deklarieren also quasi den Typ der Datei, auf die wir Es ist also ein CSS-Stylesheet, und dann haben wir hier die
Referenz, die URL-Vier-Funktion
entspricht, die als Argument den Ordnernamen, in
dem sich
die Datei
befindet, und den Dateinamenparameter verwendet, dem
CSS-Hauptpunkt-CSS entspricht Was wir hier haben, ist den Typ der Datei zu deklarieren, auf die wir verlinken,
und dann fügen wir den
Link der Datei
ein und dann fügen wir den
Link der Und das sollte in
Anführungszeichen stehen. Also das alles. Und ich möchte auch
einen Titel für die Website hinzufügen, sagen
wir, Flask-App Das ist es. Das spare ich mir. Und ich werde die Website
ausprobieren. Whoa. Kannst du
den Unterschied erkennen Ja. Wir haben die Speisekarte
hier sehr gut. Über die Seite, die Homepage und den Titel
haben wir gleich hier. Und dann kommt der Inhalt
der Webseite hierher. Nun, all diese Balken hier,
die Hintergrundfarbe, die Abstände, all das
wurde mit CSS definiert Lassen Sie uns also weitermachen und uns den CSS-Code
ansehen. Das ist es. Ich glaube, das ist ziemlich
selbsterklärend. Aber wie dem auch sei, was wir
haben,
ist im Grunde ein HTML-Element, also ist der Körper hier. Und sobald wir das
HTML-Element in das CSS-Skript geschrieben
haben, verwenden wir geschweifte Klammern, und dann definieren
wir innerhalb der
geschweiften Klammern diese Attribute Also der Rand, das Bild und die Schriftfamilie für den Text und die
Farbe des Wenn Sie
dies ändern möchten, sagen wir 999, speichern und zur
Webseite neu laden möchten, werden
Sie feststellen, dass der Text eine andere Farbe
hat Das ist also ziemlich klasse. Das bedeutet also, dass
sich dieses
Attribut hier auf den
Hauptteil der Website auswirkt. Ich setze das wieder
auf vier für vier. Dann hast du hier das
Header-Element, das
für diesen Header verantwortlich ist. Also ganz oben. Wenn Sie dann
einen bestimmten
Teil Ihrer Webseite stilisieren möchten , sagen
wir, nur das Logo, dieses
hier, müssten
Sie den Header und dann auf
das Agon-Element verweisen zuerst auf den Header und dann auf
das Agon-Element verweisen, und dann verweisen Sie
auf die Logo-Klasse Das ist also ein
Klassenname genau hier. Und so weiter und so fort, ich glaube, Sie können sich diesen Code in
Ihrem eigenen Tempo ansehen. Die Logik ist also dieselbe. Großartig. Und jetzt sind wir bereit,
diese Website online in
der Cloud bereitzustellen . Also werden wir das in den
nächsten Vorlesungen tun. Wir sehen uns.
156. 155. Eine virtuelle Python-Umgebung erstellen: Wir haben also eine laufende Website,
die ziemlich gut aussieht. Das Problem ist, dass dies in unserem lokalen Host
ist. Also die einzige Person, die das
sieht, sind ,
ja, Sie oder jemand, der
Zugriff auf Ihren Computer hat. Stattdessen möchten wir
diese Website auf einem
Webserver oder in der Cloud bereitstellen , wie wir es in diesem Kurs tun werden. Und wir werden
die Hogu Cloud verwenden. Heroku ist ein Dienst
, mit dem Sie Python-Anwendungen
in ihrer Cloud
bereitstellen können Python-Anwendungen
in ihrer Cloud
bereitstellen Eine gute Nachricht ist, dass Sie eine Anwendung kostenlos
bereitstellen können und dass Sie auch Ihre öffentliche
Domain kostenlos nutzen Sie benötigen jedoch eine Subdomain
von Heroko, also sagen wir zum
Beispiel ardit.heroko.com sagen wir zum
Beispiel ardit.heroko.com Wenn Ihre Website jedoch später viel
Traffic haben
wird, sollten
Sie Ihr Abonnement tatsächlich
aktualisieren und mehr Bandbreite aktualisieren Die Bereitstellung auf Heroko
ist relativ einfach. Sie müssen nicht nachdenken und keine Verwaltungsarbeit erledigen, sodass Heroko viel
Zeit und Mühe spart, sodass Sie sich auf die Programmierung
statt auf die Serverteile konzentrieren
können Vor der Bereitstellung auf Heroku müssen wir
jedoch etwas tun Es gibt etwas, das
wir
seit Beginn
dieses Abschnitts hätten tun sollen seit Beginn
dieses Abschnitts Bevor Sie also eine Datei hier schreiben
, sollten
Sie eine virtuelle
Umgebung
erstellen, die von Ihren anderen Dateien
und Ihrer
Python-Hauptinstallation
isoliert ist von Ihren anderen Dateien
und Ihrer
Python-Hauptinstallation
isoliert . Um unsere Anwendung auszuführen, verwenden
wir Python, das aus unserer
Hauptinstallation
stammt. Also dieser hier, die,
die ich hier habe. Das ist keine gute Praxis. Eine gute Vorgehensweise ist
eine Neuinstallation von Python, die nur
für Ihre Anwendung verwendet wird. Bei dieser Installation möchten
Sie also nicht, dass Bibliotheken
Bibliotheken installieren , die Sie nicht
für die Erstellung von FLASK-Anwendungen benötigen für die Erstellung von FLASK-Anwendungen Daher müssen wir
eine virtuelle Umgebung erstellen. Und hier zeige ich Ihnen,
wie Sie das tun können. Um eine virtuelle Umgebung zu erstellen, müssen
Sie eine Virtual
F-Python-Bibliothek verwenden. Und um die Virtual
Python-Bibliothek zu verwenden, müssen
Sie
Virtual F installieren. PIP installiert also Virtual NV, also verwenden wir hier die
Python-Hauptinstallation , um Virtual ENV zu installieren Großartig. Das wurde
erfolgreich installiert, und jetzt werden wir
eine virtuelle Umgebung erstellen. Die virtuelle Umgebung
sollte auf derselben Ebene wie
der Hauptordner erstellt werden derselben Ebene wie
der ,
der die Anwendungsdateien enthält. Wenn wir also in unser Verzeichnis gehen, genau hier befinden
sich die Dateien. Und ich werde hier
einen Hauptordner erstellen und ihn meine Site nennen. Und ich werde Atom für eine Weile schließen. Und das würde da
reinkommen. Also einfach hier. Und jetzt können Sie Atom in
diesem Verzeichnis öffnen ,
denn hier werden wir
die virtuelle Umgebung erstellen. Lassen Sie uns jetzt die
Befehlszeile öffnen
und wir sind bereit, eine virtuelle Umgebung zu erstellen. Und um das zu tun, sollten Sie
eine Visual M-Bibliothek verwenden ,
indem Sie Python sagen. Das Argument, dann haben Sie Vn, was der Name der
Bibliothek des Moduls ist. Und hier ist ein Argument
, das es Python
ermöglicht , Module für die
Ausführung als Skripte zu finden. Dann müssen Sie einen
Namen für den Ordner angeben, in
dem die Dateien der virtuellen
Umgebung gespeichert
werden ,
damit das funktionieren sollte. Mal sehen, dass der virtuelle
Ordner erstellt wurde. Und die Umgebung wurde erfolgreich
erstellt. Was wir hier haben, ist eine isolierte
Installation von Python, und in Skripten werden
Sie sehen, dass Sie Python dort
haben. Hier ist es. Okay, mach
dir darüber keine Sorgen. Und hier ist auch PIP. Also Pip Dot. Und das bedeutet, dass Sie diese
Python verwenden können, wenn Sie möchten. Lass es mich ausprobieren. Wir befinden uns
jetzt also im Mside-Verzeichnis Das heißt, wir müssen uns
auf virtuelle Krypten und Python beziehen. Und das wird unser
neues Python in der Konsole auslösen. Wir sind jedoch
nicht daran interessiert, Python
tatsächlich
von der Stange aus auszuführen. Also werde ich das einfach beenden. Und was uns
stattdessen interessiert, ist,
die FLASK-Anwendung tatsächlich mit
der Neuinstallation
von Python auszuführen die FLASK-Anwendung tatsächlich mit der Neuinstallation
von Python Aber bevor wir das tun, müssen
wir Flask tatsächlich in unserem Visual
Python
installieren, wenn Sie möchten Und dazu müssen Sie
die PIP-Bibliothek
Ihres isolierten Python verwenden die PIP-Bibliothek
Ihres isolierten Python Sie müssen also auf
den virtuellen Ordner verweisen, dann auf
den Skriptordner und
dann auf PIP, um Flask zu installieren Also wird FASC installiert und es hat
auch seine Abhängigkeiten installiert Und wir sollten jetzt startklar sein. Lassen Sie uns also unsere Webapp
mit unserer neuen
Python-Installation ausführen mit unserer neuen
Python-Installation Um das zu tun, musst du auf das neue Python
zeigen
und das auf die Demo, weil wir
jetzt auf meiner Seite sind, wie du hier siehst, also
Demo-Backslash-Skript mit einem Punkt Das sollte funktionieren. Großartig. Und wenn Sie jetzt auf die Website gehen, werden
Sie feststellen, dass
sie einwandfrei funktioniert. Das ist es. Jetzt sind Sie
mehr als bereit, Ihre
FASC-Anwendung in der Cloud
bereitzustellen, und genau das werden wir
in der nächsten Vorlesung tun Und ich möchte es noch einmal erwähnen , dass Sie bitte bedenken
sollten, dass Sie immer
eine virtuelle Umgebung erstellen
sollten bevor Sie Ihre
FLASK-Anwendung erstellen Bevor Sie also Code schreiben, sollten
Sie eine
Neuinstallation von Python verwenden.
157. 156. So verwendest du den PythonAnywhere-Service: Hallo, willkommen zu einer neuen
Vorlesung darüber, wie Ihre
Flask-Web-App auf einem Live-Server
bereitstellen, was bedeutet, dass
Sie
Ihren eigenen Domainnamen haben , Sie jedem geben können, und
er kann Ihre Web-App verwenden Und wir werden Python Anywhere
verwenden. Gehen Sie also zu Python Ware.com. Python Anywhere
bietet einen kostenlosen Dienst dem Sie Ihre
FLASK-Anwendungen hosten können Das werden
wir also tun,
und es ist relativ einfach, es überall auf Python zu
implementieren. Also das ist natürlich ein aktualisiertes
Video. Davor haben wir Heroku benutzt. Heroku und Python
Nware können Sie
FLASK-Anwendungen jetzt kostenlos hosten oder bereitstellen Der Unterschied besteht darin
, dass Python Aware tendenziell benutzerfreundlicher ist. Und Heroku macht es
dagegen schwieriger. Daher schlage ich normalerweise vor
, dass
Sie sich als Programmierer auf
Ihre Codes konzentrieren möchten, anstatt mit Problemen
der
Serveradministration zu befassen Ich möchte aber auch
sagen, dass sowohl Hiroko als auch Python-Ware relativ einfach
sind
, verglichen mit , eigenen Server, auf dem Sie alles erledigen
müssten Dennoch machen Hoco und Python
Aware die Dinge einfacher. Um
Ihre FAS-Web-App überall auf
Python bereitstellen zu können, müssen Sie sich für ein Konto anmelden Gehen Sie also zu Preise und melden Sie sich an. Sie möchten
den Abschnitt finden, in dem Sie ein Anfängerkonto erstellen
können,
da das kostenlos ist Und sie haben auch
andere Pläne bezahlt. Wenn Sie also mehr Besucher haben, müssten
Sie
auf ein kostenpflichtiges Konto umsteigen. Also werde ich ein neues Konto
erstellen. In Ordnung, also habe ich mich angemeldet und
mein Benutzername ist Ardit 12345. Das ist mein Nutzername und
das ist ein Dashboard. Auf Python Anywhere können
Sie jetzt neben der Bereitstellung von Web-Apps neben der Bereitstellung von Web-Apps auch
einige andere Dinge tun. Bevor wir die Web-App bereitstellen, möchte ich Ihnen einen kurzen
Überblick über Python Anywhere geben. Im Grunde sollten Sie hier das Dashboard-Menü
sehen können , und dann haben wir Konsolen. Wenn Sie in Konsolen zu Konsolen
wechseln, können Sie
grundsätzlich eine Bash-Konsole
erstellen Dadurch haben Sie Zugriff auf Ihren eigenen Server, auf dem
Sie Ihre Web-App bereitstellen, und Sie können auch andere Dinge
tun ,
z. B. Python Three
starten. Und es startet diese
Version von Python. Es ist also ein interaktives Python du kannst hier sogar
einige Bibliotheken importieren, Pandas ist
also bereits
installiert, du kannst es verwenden Der Nachteil dabei ist , dass Sie keine
grafische Benutzeroberfläche haben Wenn Sie also zeigen möchten, um einige Graphen zu generieren, und
Sie sie sehen möchten, ist
das auf Python
nirgends möglich , weil
Sie nur diese Shell haben. Also die Python-Shell, und du
gehst zurück zum Terminal. Und mit PWD können
Sie beispielsweise sehen, wo
Sie sich gerade befinden Das ist also dein Standort
auf dem Server. Sie sind also zu Hause, dann in der 20 2345, also in dem Ordner
des Home-Ordners Hier können Sie auch Python-Dateien
erstellen, zum Beispiel
Nano-Beispiel Punkt PY. Nano ist ein Texteditor
, den Sie in dieser Art
von Befehlszeilenschnittstellen verwenden können . Dadurch wird eine neue Datei erstellt, und hier können Sie
Python-Code wie print schreiben. Hallo. Klammer.
Um diese Datei zu speichern , möchten Sie
nun
diesen Befehlen folgen . Also beende es. Sie möchten den Vorgang mit Control X beenden Drücken Sie
also Control X. Sie werden diese Meldung sehen. Es heißt, den modifizierten Puffer speichern, was bedeutet, dass Sie diese Datei speichern
möchten? Y für Ja oder N für Nein. Also werde ich Y drücken
und dann werden Sie erneut gefragt, und dann werden Sie erneut gefragt welchen Namen Sie Ihrer Datei geben
möchten. Beispiel Punkt PY S ist es, ja. Drücken Sie also einfach die Eingabetaste. Geben Sie ein und die Datei
ist gespeichert. Um es auszuführen. Du machst Python 3.9. Beispiel Punkt PY, ausführen und
Sie erhalten die Ausgabe. Das ist es also, was du mit der Konsole
machen kannst. Wenn du zurückgehst, dann
hast du diese Dateien. Und hier können Sie jetzt das Beispiel PY
sehen, das wir
zuvor erstellt haben. Und Sie sehen das
aktuelle Verzeichnis, also ein Home-Rit eins, zwei, drei, vier, fünf, das ist ein Verzeichnis. Wir waren in der
Befehlszeilenschnittstelle. Das ist also eine weitere
Möglichkeit, Dateien zu erstellen. Wenn Sie also hier eine Datei
erstellen möchten, geben
Sie hier einen Namen ein. Nehmen wir zum Beispiel zwei
PY an und gehen Sie zu Neue Datei. Und sagen wir, hier bin ich gedruckt. Hallo nochmal. Und jetzt können Sie diese Datei
auch ausführen, speichern und von hier aus ausführen. Speichern Sie es also zuerst und
klicken Sie auf die Schaltfläche Ausführen. Und du solltest
die Ausgabe hier unten sehen. Dies ist etwas langsamer
als die vorherige Methode Anwendung
zum Ausführen von Python-Dateien auszuführen. Aber wie dem auch sei, das ist die Ausgabe. Das ist also eine weitere
Möglichkeit, Python-Dateien auszuführen. Wenn du jetzt zurück willst, kannst
du hier reindrücken. Also das ist eine Dateien-Seite, und dann haben wir Web. Hier werden wir eine neue Web-App
erstellen, aber in der nächsten Vorlesung. Dann haben wir Aufgaben mit Aufgaben. Sie könnten hier
den Pfad einer Ihrer
Python-Anywhere-Python-Dateien eingeben . Wenn ich zum Beispiel den Pfad von Beispiel PY
angeben möchte, sage
ich home.r1,
zwei, drei, vier,
fünf, das Verzeichnis
und das Und dann definiere eine Zeit. Ich stelle hier eine Zeit
im UTC-Zeitsystem ein. Dieses Skript
würde dann jeden Tag zu dieser
Zeit ausgeführt werden. Dies könnte
für Dinge wie
Web-Scraping nützlich sein , wenn Sie jeden Tag zu einer bestimmten
Zeit
etwas schreiben möchten jeden Tag zu einer bestimmten
Zeit
etwas Sie können das auch auf
Python überall tun Schließlich haben wir Datenbanken. In diesem Menü
können Sie eine Datenbank erstellen. Wenn Ihre Web-App also über
eine Datenbank verfügt , in der die Daten gespeichert werden, möchten
Sie
hier
eine neue Datenbank und dann eine
Tabelle für diese Datenbank erstellen. Auch das können Sie
in dieser Oberfläche
hier in Datenbanken tun , und dann
kann Ihre Web-App mit dieser Datenbank interagieren. Das war also eine Einführung
in Python Anywhere. Im nächsten Video werden
wir unsere Python-App bereitstellen,
also unser Flashap auf Python Anywhere.
Wir sehen uns.
158. 157. Bereitstellen der Flask-App auf PythonAnywhere +: Willkommen zurück. Ich freue mich, Ihnen jetzt zeigen
zu können, wie Ihre Web-App
auf Python Anywhere
bereitstellen. Das ist also mein Python
Anywhere-Konto, und ich bin gerade im
Dashboard-Bereich. Sie möchten ins
Internet gehen und dort eine neue Web-App erstellen und Sie erhalten diese Nachricht hier. Python Anywhere teilt
Ihnen mit, dass Sie keinen benutzerdefinierten Domainnamen haben
können, sagen
wir, ardit.com, da
dies ein kostenloses Konto ist Wenn Sie einen
benutzerdefinierten Domainnamen wünschen, möchten Sie bezahlen, um
eines der kostenpflichtigen Konten zu erhalten Zunächst möchten Sie jedoch
einen Domain-Anbieter finden , um einen Domainnamen zu
kaufen. Wenn Sie also
beispielsweise den
Domainnamen example.com kaufen möchten, sollten Sie vielleicht
zu Name-Chip gehen Name-Chip ist meiner Meinung nach der
beste, um Domainnamen zu bekommen. Also nenne chip.com, und sobald
du dort einen Domainnamen gekauft hast, dann gibt
dir Name Chip einige DNS-Namen, und diese Namen
musst du hier irgendwo in
einer Python eingeben , um
sie mit deinem Web zu verbinden, aber das machen
wir jetzt nicht Für unseren Zweck
ist es ausreichend, einen
solchen Domainnamen zu haben , der in meinem Fall
dieser hier ist Also Rs eins, zwei, drei, vier, fünf, Punkt Python
Anywhere, Punkt com. Das ist also eine Subdomain von Python
aware.com . Drücken Sie auf Weiter. Und Sie haben mehrere Möglichkeiten. Wir wollen FLASK, damit Sie überall
verschiedene Arten von
Web-Apps auf Python bereitstellen können überall
verschiedene Arten von
Web-Apps auf Python Wir drücken auf FLASK und Python 3.9 ist startklar.
Also drück dort weiter Und das ist jetzt der
Einstiegspunkt der Flask-App. Mit Einstiegspunkt meine ich
die Datei, die Sie ausführen,
um die FLASK-App zu starten In unserem Fall ist es also das
Skript mit einem Punkt PY. Das ist eine Datei, die wir
mit dem Python-Skript PY ausführen. Also ändere das nicht,
lass es so wie es ist. Also drücken Sie vorerst auf Weiter. Und die App ist erstellt, aber wir müssen
unsere Dateien zu unserer App hinzufügen. Dafür möchten Sie also zum Dateimenü
gehen. Und jetzt hier auf der linken Seite können
Sie meine Seite sehen. Wenn Sie dort klicken, sehen Sie
die Datei
, die Python Anywhere erstellt hat. Das ist also der Einstiegspunkt
, über den ich gesprochen habe, Flask Underscore-App, die PY ist Sie möchten dort klicken und
diesen Code löschen
und einfügen, Ihren eigenen Code kopieren und Ihren Code dort
einfügen
und auf Speichern klicken Sie können jetzt also sehen, dass
wir uns in diesem Verzeichnis befinden. Also schneide O R
eins, zwei, drei, 45. Also dein Nutzername MySite, fA FAS Unterstreiche App,
dass PY Wenn Sie also auf meine Site klicken, kehren
Sie zum
Stammverzeichnis Ihres Projekts zurück Das ist also das Stammverzeichnis
von Python Anywhere, und das ist das Stammverzeichnis
unseres lokalen Projekts. Also ein Skript, dass PY da ist, und dann hat es einen statischen Ordner und einen Vorlagenordner im
selben Stammverzeichnis. Deshalb wollen
wir in
diesem Mist-Stammverzeichnis einen Vorlagenordner erstellen. Schreiben Sie dort also Vorlagen
und klicken Sie auf neues Verzeichnis. Dadurch wird ein
neuer Vorlagenordner erstellt. Sie sehen jetzt, dass es
in diesen Ordner geändert wurde. Wenn Sie also zu meiner Seite zurückkehren, sehen
Sie, dass Vorlagen hinzugefügt wurden Die
Flask-Underscore-App befindet sich ebenfalls im selben Ordner, meiner Site Und wir wollen auch
einen leeren statischen Ordner erstellen. Neues Verzeichnis, drücken Sie
auf diese Schaltfläche und es sollte
ein statischer Ordner erstellt werden. Also geh zurück auf meine Seite. Sie sehen Statik und
Vorlagen sind jetzt da. Also müssen wir
unsere statischen Dateien hinzufügen. Drücken Sie also auf Statisch. Du bist jetzt auf static inside
static und
möchtest main hochladen, das ist CSS, aber warte, das ist
in einem anderen Ordner. CSS ist der Ordner, also möchtest du
Inside Static erstellen. Sie möchten
ein CSS-Verzeichnis erstellen. Drücken Sie auf neues Verzeichnis. Stellen Sie sicher, dass Sie sich
in diesem Verzeichnis befinden, damit meine Website den
statischen Schrägstrich Und hier wollen wir jetzt
die Datei hochladen. Und diese Datei ist dieses Haupt-CSS. Also hier bin ich Das ist das Projektverzeichnis
mit unseren lokalen Dateien. Unter Static unter CSS haben
wir Main Dot Css. Doppelklicken Sie und es
wird innerhalb von CSS hochgeladen. Gehen Sie dann zurück zu meiner Website, gehen Sie zu Vorlagen und laden Sie sie hoch. Die Dateien, die sich
innerhalb von Templates befinden
, wo es um Home Dot HTML geht, und die dritte,
Layout Dot HTML. Diese drei
befinden sich in Vorlagen. Stellen Sie also sicher, dass sie sich
in Vorlagen befinden. Dann geh zurück zu meiner
Seite und schau einfach
mal , ob alles
gut aussieht. Für mich sieht es gut aus. Eine Änderung, die Sie auch vornehmen möchten ,
ist, dass Sie
zu Ihrer App wechseln möchten, und wenn Ihre App in Produktion
ist, möchten
Sie
dies auf „Falsch“ ändern. Sie möchten
Besuchern also keine Python-Fehler anzeigen ,
da
Ihre App dadurch anfällig für Hackerangriffe werden könnte Weil Leute oder Hacker die Fehler Ihrer App sehen werden Sie verstehen möglicherweise,
wie Ihre Web-App
strukturiert ist , und Sie können
auch Daten offenlegen, die Sie nicht in den von Flask
angezeigten Debug-Fehlermeldungen
offenlegen möchten Flask
angezeigten Debug-Fehlermeldungen Also falsch und
sicher und jetzt sind wir
bereit, unsere App zu sehen, aber nachdem wir
die App mit dieser Schaltfläche neu geladen haben Sie also im Web-Bereich Drücken Sie also im Web-Bereich
diese Schaltfläche und laden Sie sie erneut, um
die neueste Version
der von
Python überall bereitgestellten Dateien zu erhalten die neueste Version
der von Python überall bereitgestellten Dateien Und dann willst du auf diese URL
klicken. Das ist also die URL meiner App, drück dort und
meine Seite ist online. Es funktioniert also einfach super. Ich hoffe, deins funktioniert auch. Wenn nicht,
möchten Sie zum Webbereich zurückkehren und nach unten scrollen
und diese Fehlerprotokolle suchen. Wenn Sie dort drücken,
werden die neuesten Fehler angezeigt ,
die Sie von Ihrer Web-App
erhalten haben. Das sind also Python-Fehler und versuche sie zu lesen, um zu
verstehen, was vor sich geht. Wenn Sie sie nicht verstehen, gerne eine
Frage in den Fragen und Antworten stellen. Achten Sie
jedoch darauf, diese Fehler und auch den
Code Ihrer Web-App
dort zu kopieren
und
einzufügen und auch den
Code Ihrer Web-App
dort . Wir helfen Ihnen gerne weiter Vielen Dank. Ich werde in den nächsten Videos mit
dir sprechen.
159. 158. Einführung in die Tktier-Bibliothek: Hallo und willkommen zu diesem
neuen Abschnitt des Kurses. In diesem Abschnitt erfahren Sie
, wie Sie grafische
Benutzeroberflächen mit Python
erstellen. Und speziell werden
wir dafür
die Tkinter-Bibliothek verwenden die Tkinter-Bibliothek In diesem Abschnitt werden
Sie also kein Programm für die reale Welt
erstellen Ich werde Ihnen die
Tkinter-Bibliothek vorstellen und natürlich eine grafische
Benutzeroberfläche
erstellen,
ein kleines Programm, das
Ihnen den Einstieg in Tkinter eine grafische
Benutzeroberfläche
erstellen,
ein kleines Programm, erleichtern kann Dann im nächsten
Abschnitt, also sobald wir mit diesem Abschnitt
im nächsten Abschnitt fertig sind, werden
Sie lernen, wie Sie mit
Datenbanken mit Python
interagieren. Wir werden
Python also als Wrapper für
SQL-Code verwenden , damit wir Daten in einer
Datenbank
speichern, Daten abfragen,
löschen und so weiter und so fort können Daten in einer
Datenbank
speichern, Daten abfragen, löschen und so weiter und so fort Das war also ein Abschnitt
nach diesem. Und dann, im ersten Abschnitt
nach diesen beiden Abschnitten, werden
wir
ein Programm für die reale Welt erstellen. Und dieses Programm
ist dieses hier. Also habe ich es Buchhandlung genannt, und das macht
es möglich, Buchinformationen
in einer Datenbank
zu speichern Das ist eine grafische
Benutzeroberfläche. Dieses Programm besteht also
aus zwei Teilen. Sie haben eine grafische
Benutzeroberfläche, bei der es sich um die Schaltflächen handelt,
die als Widgets bezeichnet werden Und das wurde mit Tkinter gebaut. Und dann haben Sie das Backend, das aus Code besteht
, der mit der Datenbank kommuniziert Wenn wir also zum Beispiel die Ansichtstaste
drücken, erwerben
wir die Datenbank, um alle Bücher für uns zu laden Oh, wir haben den Titel. Wenn du also auf einen davon
drückst, bekommst du hier den Titel, den Autor und das
Jahr des Buches. Und auch die
Buch-Identifikationsnummer, die ISBN heißt Sie können auch nach einem Eintrag
suchen. Wenn Sie also nach einem Autor
suchen möchten, geben Sie den Autorennamen
Ni ein und drücken auf Suchen. Und wenn Sie einen Eintrag hinzufügen möchten, geben
Sie ihn einfach ein. Und ja, so etwas in der Art. Eintrag hinzufügen. Und wenn
Sie sie erneut laden, sollte
Ihr Eintrag hier sein. Das ist also ein Programm.
Wir werden zwei Abschnitte
nach diesem
bauen. Lassen Sie mich diesen hier schließen, und in der nächsten Vorlesung werde
ich Ihnen
die Tinder-Bibliothek vorstellen Also werden wir einige einfache Benutzeroberflächen
mit einigen Widgets erstellen Wir sehen uns in
der nächsten Vorlesung.
160. 159. Ein GUI-Fenster erstellen und Widgets hinzufügen: Also los geht's. Ich habe Atom hier
geöffnet, also werde ich Atom verwenden, um sozusagen das
Buchhandlungsprogramm zu
bauen, das Kinder und Aquia
Light Three als Bibliotheken verwendet Also werde ich hier
eine neue Python-Datei erstellen. Welches Drehbuch. Hat Kuchen gewonnen. Um grafische
Benutzeroberflächen mit Kiner zu erstellen, benötigen
Sie die Inter-Bibliothek, und Sie müssen sie nicht installieren da Tkinter eine
eingebaute Python-Bibliothek ist Alles was Sie tun müssen, ist also
weiterzumachen und Tkinter zu importieren. Wenn Sie Python zwei verwenden, wäre
das bei
T. In Python drei ist
es einfach so Tkinter Eine gute Praxis ist jedoch,
tatsächlich
alles aus Tkinter zu importieren Also
alles von Skiner importieren Warum machen wir das? Wir tun das, weil
wir viele
Tkinter-Objekte in unseren Skripten verwenden viele
Tkinter-Objekte in unseren Es ist also sinnvoll, sie einfach alle zu
laden, anstatt sie beispielsweise mit der Tkinter-Punkttaste zu
referenzieren Anstatt das zu tun, können
wir einfach Button sagen
und dann die
Parameter eingeben und Lassen Sie mich also eine
grafische Benutzeroberfläche erstellen. Bei Kinter besteht das Programm nun hauptsächlich
aus zwei Dingen. Sie haben das Fenster und
Sie haben die Widgets. Das Fenster
ist zum Beispiel all das Programm, das Sie
hier sehen, und dann haben Sie Schaltflächen
und solche Dinge,
die Widgets genannt werden. Zuallererst müssen
Sie also das Fenster erstellen. Und ich nenne
mein variables Fenster gerne, und das wäre
gleichbedeutend mit Zerfall. Das ist es. Das würde
ein leeres Fenster für uns schaffen, aber wir müssen hier
etwas mehr tun. Wir sagen Fenster, die Hauptschleife. Das ist immer notwendig. Also öffnen wir ein Fenster,
wir erstellen ein Fenster und dann bewegt sich alles
zwischen diesen beiden Zeilen. Sie erstellen also Widgets
zwischen diesen beiden. Und das ist notwendig, denn
wenn Sie das nicht haben, wird
Ihr Programm geöffnet und im
Bruchteil einer Sekunde geschlossen Im Grunde können
Sie auf diese Weise
die Taste in der Ecke Ihres Fensters drücken und das Programm
schließen. Das sollte also immer
am Ende deines Codes stehen. Ich werde dieses Skript speichern
und ausführen. Und wir haben einen Fehler bekommen, der
besagt, dass TK nicht definiert ist, also erkennt Python
diese Funktion hier nicht ,
weil sie T
sein sollte. Und führen Sie es erneut aus. Und das ist das Fenster, und da ist nichts drin, also lasst uns weitermachen
und eine Schaltfläche hinzufügen. Also speichern wir das
Hauptfenster in einer Variablen, und wir werden
dieselben vier Widgets verwenden. Also werden wir Variablen
erstellen. Nehmen wir an, B eins
entspricht einer Taste. Die Schaltfläche ist also eine Funktion, die ein Button-Widget
generiert Die untere Funktion
benötigt einige Argumente. Wenn Sie eine
vollständige Liste der Argumente erhalten möchten, sollten
Sie eine
Code-Introspektion durchführen Sagen wir hier IPython. Und vom Skin bis zum Import. Ziehen Sie, und dann sagen wir,
Knopf und ein Fragezeichen. Und hier können Sie
sehen, welche Parameter Sie an die
untere Funktion übergeben können. Der allererste Parameter, den
Sie zum
Widget hinzufügen möchten, ist die Variable des
Fensters des Hauptfensters. Sie müssen also Ihrem Widget,
dem Fenster, mitteilen , dass das Widget auch gepackt werden
muss. Also Fenster und dann kannst du
Parameter übergeben wie den
, den du hier siehst. Nehmen wir an, einer der
Hauptparameter wäre Text. Text entspricht also, sagen wir, der Zeichenfolge execute Das ist also der Text, das Etikett , das
über dem unteren Rand angezeigt wird Wenn wir jetzt versuchen, dieses Skript
auszuführen, werden
Sie feststellen, dass wir noch keine Schaltfläche
haben,
und das liegt daran, dass wir nicht
angegeben haben , wo der Boden
platziert werden soll. Dazu müssen Sie die Pack-Methode
verwenden, bei der es
sich um eine Widget-Methode handelt, und sie dann erneut ausführen. Und jetzt siehst du den Boden. Es gibt jedoch eine andere Möglichkeit, Ihr
Widget
tatsächlich in Ihrem Fenster zu platzieren. Das ist eine Grid-Methode. Raster. Und oft ist es eine Frage der Präferenz, ob Pack oder Grid verwendet werden
soll. Die Idee von Grid ist jedoch,
dass
Sie mit der Grid-Methode mehr Kontrolle
über die Position
Ihrer Schaltflächen oder Ihrer
Widgets im Allgemeinen haben , da Sie
hier die Zeile
und die Spalte angeben , in der Sie Ihren unteren Teil platzieren
möchten. Also fängt alles bei Null an. Also
hat die erste Zeile einen Index von Null, und die erste Spalte hat einen
Index von Null und so weiter. Ich habe dafür tatsächlich eine
Illustration gefunden. Das ist also ein Kinderprogramm, und wir haben hier zwei Zeilen. Wir haben also diese erste Zeile, die
einen Index von Null haben sollte, und Sie haben die zweite
Zeile, die einen Index von eins
haben sollte . Und Sie haben Spalten, also Null, Eins, Zwei,
Drei und so weiter. Nehmen wir an, die OK-Schaltfläche, die hier ist,
hätte eine Zeile mit Null, Eins, Zwei, also zwei für die Zeile und dann Null, Eins, Zwei, Drei, Drei
für die Spalte. Dann könnten Sie auch Widgets haben , die sich über mehr als
eine Zeile oder Spalte erstrecken. In diesem Fall würden Sie hier einen weiteren Parameter namens rowspan
hinzufügen Und das würde einer Zahl
entsprechen. Nehmen wir an, wenn Sie den
Button drücken, würde er sich über zwei Reihen erstrecken. In unserem Fall ist das eigentlich nicht
notwendig, weil wir nicht viele
Widgets haben . Wir
haben nur einen Knopf. Lassen Sie mich
dieses Skript jetzt ausführen und
sehen, was wir bekommen. Wir bekommen also eine Taste, die eigentlich
nichts bewirkt, weil wir nicht
spezifiziert haben , welche Aktion
ausgeführt werden soll , wenn Sie die Taste
drücken. Und das werde ich
in der nächsten Vorlesung erklären. Aber vorerst fügen wir hier noch
einige weitere Widgets hinzu, nur damit Sie sich mit Widgets besser
vertraut machen können. Lassen Sie uns also ein Eintrags-Widget hinzufügen. Und sagen wir E E eins dafür. Also Eintrag eins entspricht Eintrag, und dann raten Sie, was
der erste Parameter ist Und das ist der Fensterparameter. Und wir können es vorerst
so lassen. Und sagen wir, ein E, eine Klasse. Und lassen Sie es uns in
derselben Zeile und in Spalte eins behalten. Speichern und ausführen. Und hier haben wir einen Eintrag. Also, was ist ein Eintrag. Ein Eintrag ist wie ein Bereich,
in den Sie einen Wert eingeben können, dann können Sie mit
diesem Wert in Ihrem Skript interagieren. Nehmen wir an, Sie geben hier
Kilometer ein und
möchten eine Schaltfläche haben, die
diese Kilometer in Meilen umrechnet. Die Schaltfläche würde also den
Wert dieses Bereichs hier abrufen und ihn in einem anderen Widget anzeigen, bei
dem
es sich um ein Text-Widget handeln könnte. Lassen Sie uns also ein Text-Widget hinzufügen. Nehmen wir an, T one entspricht natürlich einem
Textfenster. Und sagen wir T eins, Rasterzeile Null, Spalte zwei Das ist es. Hinrichten. Wir haben ein sehr großes Text-Widget,
weil die Standardgröße, die Standardhöhe und -breite eigentlich eine ziemlich große Zahl sind. Wir müssen also zwei
Parameter für das Text-Widget angeben. Wir müssten die Höhe angeben. Sagen wir eine Zelle
und die Breite. Sagen wir 20.
Das ist also der Widget-Bereich. Und das ist der Eintrag,
und das ist der Boden. Und das war's für diesen Vortrag. In der nächsten Vorlesung zeige
ich dir, wie du
diese Widgets so zum Leben erweckst, dass sie tatsächlich etwas bewirken
können.
Wir sehen uns in der nächsten Vorlesung.
161. 160. GUI-Widgets mit Funktionen ++ verbinden: Hallo, nochmal, in der
vorherigen Vorlesung haben wir diese grafische
Benutzeroberfläche mit Kiner erstellt Und das Problem ist, dass das vorerst nichts
bewirkt, also drücken wir darauf, aber
es tut nichts Also, was ich hier machen möchte, die endgültige Ausgabe, die
ich haben möchte ist, wenn ich diesen unteren Teil ausführe, also haben wir hier einen Eintrag. Wir können einen Wert eingeben,
und ich möchte
diese Schaltfläche ausführen und Meilen
hier im Textbereich sammeln. Meilen sind also wie
eine Kilometereinheit, die 1 Meile mal 1,6
entspricht Wenn ich das also ausführe, möchte
ich, dass
hier so etwas wie 16 generiert wird Also ein sehr einfaches Programm. Beachten Sie, dass dies nicht eines
der echten Programme ist , die ich
in diesem Kurs zu erstellen
versprochen habe . Das ist also nur, um
dich mit Kindern zum Laufen zu bringen. Also lass uns das jetzt schließen. Und damit eine Schaltfläche etwas
tut, müssen
wir hier einen
Befehlsparameter hinzufügen. Der Befehlsparameter verwendet hier also eine Funktion als
Argument, als Wert. Und wenn Sie dann diese Taste
drücken, die Ausführungstaste, wird in diesem Fall
die Funktion, die Sie
hier haben, ausgeführt. Nehmen wir an, wir haben hier
eine Funktion , die Kilometer in Meilen umwandelt. Nehmen wir für den Moment an,
diese Funktion druckt nur etwas Text aus. Nehmen wir zum
Beispiel Erfolg an, weil Sie wissen,
es ist gut, bevor Sie
Ihr eigentliches Programm schreiben, es ist gut,
Print-Anweisungen zu verwenden, um Dinge auszuprobieren. Auf diese Weise können Sie Ihre Probleme
isolieren. Wenn hier etwas passiert, wissen
Sie, dass Sie mit
einer
Print-Anweisung kein Problem haben können , aber wenn Sie hier einen
komplizierteren Ausdruck hätten, wird
es schwieriger zu wissen,
ob das Problem darin , dass Sie nicht auf die
richtige Funktion zeigen, oder ob Sie ein Problem
mit Ihrer Anweisung haben. Es ist also gut, zuerst
einfache Anweisungen zu verwenden ,
wie z. B. die gedruckte Anweisung. Also, du würdest hierher fahren und 2 Meilen
Kilometer zurücklegen,
das ist die Funktion. Und eine Sache, die du
beachten solltest , ist, dass du hier die Klammern nicht
übergibst. Das ist also kein üblicher
Funktionsaufruf. Sie verweisen
hier nur
auf die Funktion und lassen Python den Rest
erledigen Also der Funktionsname steht
hier und lassen Sie uns das ausprobieren. Führen Sie es aus und Sie sehen , dass der Erfolg hier
abgedruckt ist. Drücken Sie erneut, Erfolg, Erfolg, Erfolg. Es funktioniert also. Wir müssen den Erfolg jedoch nicht in
der Befehlszeile
ausdrucken. Wir wollen einen
Wert im Textbereich ausdrucken. Jetzt müssen wir uns das Eingabe-Widget
ansehen. B hier erhalten wir den Wert,
also gibt der Benutzer einen Wert in das Eingabe-Widget ein, und dann holen wir uns diesen Wert und verwenden ihn
dann
in unserer Funktion. Und dafür gibt es einen
Parameter namens Textvariable. Und das würde einem String-Var-Objekt entsprechen
, das wir hier
weiter oben deklarieren müssen. Nehmen wir an, Sie wollen einen Wert, also das ist variabel, und
das würde der String-Var-Funktion entsprechen . Und dann zeigen wir auf
E, eine Wertvariable, die wir gerade erstellt haben. Diese Variable
erhält also den Wert,
je nachdem , was der Benutzer in das
Eingabe-Widget eingibt. Dann können wir diesen
Wert verwenden, was immer wir wollen. Nehmen wir an, wir wollen das als Wert
ausdrucken, und wir müssen hier
noch etwas extra hinzufügen, nämlich eine Get-Methode
des String-Objekts. Das ist also ein besonderes Objekt. Es ist keine Saite, eine
Python-Spielsaite. Um eine tatsächliche Zeichenfolge
aus diesem Objekt zu erhalten, müssen
wir die G-Methode anwenden. Also speichere das und probiere das Skript aus. Sagen wir, zehn hier, ausführen und wir bekommen zehn auf dem Terminal
ausgedruckt. Wir haben
diese Zeichenfolge hier also noch nicht
mit einem Text-Widget verbunden . Also lass uns genau das hier machen. Die Idee hier ist, dass wir einen Wert in
das Text-Widget
einfügen müssen . Und um das zu tun,
hat das Text-Widget eine Methode namens insert. Sie müssen sich also auf das gewünschte
Text-Widget beziehen. T one ist also unser Textobjekt, und wenden Sie dann die
Insert-Methode an. Und die Methode erhält zuerst
ein Argument, das ist eine Stelle, an der Sie den Text einfügen
möchten. Nehmen wir an, wir möchten am Ende
des Text-Widgets einfügen . Nehmen wir zum Beispiel an, Sie fügen
viele
Textzeilen in Ihr Widget ein und
müssten die Ausführung dieser
Methode mehrmals beantragen Und jedes Mal, wenn Sie
eingeben, geben Sie den neuen Text am
Ende des vorhandenen Textes Sie sagen also, setzen Sie
diesen Text ans Ende. Sie möchten den Wertpunkt G. Also die Zeichenfolge Wert, den der Benutzer in das Eingabe-Widget eingibt. Schauen wir uns also an, wie das läuft. Führe die Funktion aus
und füge hier etwas Text ein. Sie können auch alles dort platzieren, ausführen und Sie bekommen die Zeichenfolge
im Text-Widget ausgedruckt. Ordnung, aber wir wollen diesen Wert nicht einfach nehmen und in den Text
einfügen. Wir wollen zuerst
etwas mit diesem Wert machen und dann das Produkt, die Ausgabe, in
das Text-Widget einfügen . Nehmen wir an, wir nehmen
den On-Wert Dot Get und
multiplizieren ihn mit 1,6. Und das wären Meilen. Meilen entsprechen also
dem Wert, den der
Benutzer eingibt, mal 1,6 Sie bitten den
Benutzer also, Kilometer einzugeben, und 1 Meile
entspricht 1 Kilometer mal 1,6, ist tatsächlich
etwa 1,6 oder sechs Ich kann mich nicht an
den genauen Wert erinnern, aber Sie verstehen die Idee. Und zu guter Letzt würdest
du hier Meilen sammeln wollen. Sie möchten also
den Ausgabewert sicher in
das Widget einfügen . Und ausführen. Und ich
erwarte hier einen Fehler. Sagen wir zehn. Ja,
wir haben einen Fehler. Wenn Sie also Fehler erhalten, versuchen Sie
nicht einfach,
diesen Fehler zu kopieren und in Google
einzufügen , um zu sehen, was
andere Leute sagen. Sie können viel Zeit verschwenden. Investieren Sie stattdessen etwas Zeit und versuchen Sie,
diesen Fehler zu verstehen. Was das heißt,
es heißt Typfehler. Die Sequenz kann nicht mit einer Ganzzahl
vom Typ Float multipliziert werden. Eine Sequenz kann also eine
Liste sein, kann eine Zeichenfolge, ein Tupel usw. sein. Python versucht, eine Sequenz mit einer
Nicht-Ganzzahl zu multiplizieren, die ein Float ist. Float hier ist also die Zahl 1,6, und Python versucht hier
1,6 mit einer Sequenz
zu multiplizieren . Das ist also keine Zahl
, weil die G-Methode tatsächlich eine Zeichenfolge aus einem String-Objekt
herausnimmt Und eine Zeichenfolge kann nicht mit einer
Flussnummer multipliziert werden. Wenn das zwei wären, wäre es
möglich zu multiplizieren. Wenn Sie zum Beispiel M,
die Zeichenfolge M mit
zwei, multiplizieren , würden Sie Mimi erhalten Also, aber du kannst
mich nicht mit 1,6 multiplizieren , weil
das keinen Sinn ergibt Wie dem auch sei, die Lösung
dafür ist, dass Sie den Wert, den der
Benutzer eingibt, in einen Float
umwandeln möchten , und das tun Sie, indem Sie
die Float-Funktion hinzufügen. Achten Sie also auf die Klammern. Sie sehen, dass sich
unter der Klammer eine Unterstreichung befindet und Sie
haben hier eine Unterstreichung Das bedeutet also, dass diese
Klammer hier geschlossen wird. Also alles sieht gut aus, sicher und nochmal ausführen,
dann und dann ausführen. Und wir erhalten die erwartete Leistung. Sie können die
Druckfunktion löschen. Wir brauchen es nicht mehr. Ich glaube, das war ein guter
Anfang mit der Kiner-Bibliothek, und Sie sollten jetzt in der Lage sein fortgeschrittenere Schnittstellen
zu erstellen Wir werden jedoch mit Kiner
eine wirklich fortschrittliche grafische
Benutzeroberfläche entwickeln,
die
mit der Datenbank interagiert, sodass es sich um ein
echtes Programm handelt. Und vorerst gebe ich dir in
der nächsten Vorlesung einfach
eine Übung , damit du Kiner ein bisschen
üben kannst Und du lernst auch
einige weitere kosmetische Aspekte kennen. Sie werden also das Programm
, das wir in dieser Vorlesung entwickelt haben, optisch ansprechender gestalten und
dafür sorgen, dass Sie sich mit
Kindern ein bisschen die
Hände schmutzig machen. Ich werde später mit dir reden.
162. 161. Wie Python mit Datenbanken interagiert: Hallo, und ich freue mich, Ihnen diesen neuen
Abschnitt des Kurses
vorstellen zu können In diesem Abschnitt erfahren Sie
, wie Sie über Python mit
Datenbanken
interagieren. Und das bedeutet, dass Sie bestimmte
Python-Bibliotheken verwenden und
eine Datenbank von
Python aus mit Python betreiben werden. Sie werden
Operationen
wie das Einfügen von Daten
in Datenbanktabellen Sie können Daten aktualisieren,
löschen und Daten aus der Datenbank abfragen Dann können Sie
diese Daten in Ihrem
Python-Programm verwenden . Python kann mit
vielen Datenbanken wie MySQL,
Post GracuLocle oder
SQLite usw. interagieren vielen Datenbanken wie MySQL, Post GracuLocle oder
SQLite In diesem Abschnitt
erfahren Sie, wie Sie mit
einer SQL Light-Datenbank und einer
Post-SQL-Datenbank interagieren einer SQL Light-Datenbank und einer
Post-SQL-Datenbank SQL Lite und PostGrasul unterscheiden
sich darin. SQLite ist keine Client-Server-Datenbank. Stattdessen ist es
in das Endprogramm eingebettet. Also, was bedeutet das? Nun,
schauen wir uns dieses Programm an. Wenn Sie dem
vorherigen Abschnitt folgen, wissen
Sie, dass wir dieses Programm
im nächsten Abschnitt
erstellen werden. Wenn Sie
hier auf eine Schaltfläche klicken, werden einige Daten angezeigt, und diese Daten werden
in der SQL Lite-Datenbank gespeichert. Im Gegensatz zu anderen Datenbanken
wie Postgradual-SQL basiert
SQLite auf einer Datei All diese Daten
hier werden also
in einer Punkt-DBFle-Datenbankdatei gespeichert in einer Punkt-DBFle-Datenbankdatei Das heißt, Sie können
dieses Programm einfach einer anderen
Person geben dieses Programm einfach einer anderen
Person , die SQLite nicht installiert hat, und sie können dieses Programm verwenden, sodass sie hier weitere Daten hinzufügen, Daten aktualisieren und
löschen
können und so weiter Aber wenn Sie dieses Programm
in der Postgraduierten-SQL-Datenbank haben, der Benutzer,
dem Sie das Programm geben müsste
der Benutzer,
dem Sie das Programm geben,
PostgreSQL auf
seinem Computer installiert haben , um die Daten verarbeiten
zu können Denken Sie also an SQLite, eine
kleine Datenbank, und Sie können sie portabel nennen, aber sie ist sehr beliebt
und Post-GrascUL wäre besser für die Verwendung in einer Webanwendung geeignet Nehmen wir an, Sie
haben einige Formulare, Sie erhalten einige Daten vom Benutzer auf Ihrer Website und
speichern Ihre Daten in
einer Post-GrascUL-Datenbank auf Ihrem einer Post-GrascUL-Datenbank Python ist ein Programm, das
die Daten aus Ihren Formularen auf
dem Client im Browser abruft dem Client im Browser und diese Daten
in Ihre Datenbank sendet. Um
mit diesen Datenbanken interagieren zu können, benötigen
Sie zwei Bibliotheken,
und diese Bibliotheken
dienen als Schnittstellen, und diese Bibliotheken
dienen als Schnittstellen um tatsächlich
SQL-Code an die Datenbank zu senden,
und die Bibliothek zur Interaktion mit einer SQLite-Datenbank
heißt SQLite Three, und die Bibliothek für die Arbeit mit einer Postgradual-SQL-Datenbank
ist Psycho In diesem Abschnitt und
in der nächsten Vorlesung werde
ich Ihnen zeigen, wie man
mit SQLite 3 arbeitet, und dann springen wir zu Psychopg
zwei. Lassen Sie uns also weitermachen.
163. 162. Verbindung mit einer SQLite-Datenbank mit Python: Ordnung. In dieser Vorlesung werden
Sie lernen,
wie man SQLite Three benutzt Acul Three ist also eine Python-Bibliothek zur Interaktion mit
SQL Lite-Datenbanken Stellen Sie sich das also als
Python-Wrapper für SQL-Code vor. Sie können also mit
Ascoli Three tatsächlich SQL-Code
in Python
schreiben mit
Ascoli Three tatsächlich SQL-Code
in Python Sie müssen
Scull Three nicht installieren, da SQLite Three eine integrierte
Python-Bibliothek ist Sie müssen also nur Kult
Drei importieren. Lass es mich testen. Drehbuch
eins. Ja, es funktioniert. Nun, der Standardprozess
der Interaktion mit einer Datenbank würde
aus fünf Schritten bestehen. Zuerst stellen Sie eine Verbindung
zur Datenbank her. Zweitens erstellen Sie
ein Cursorobjekt, und das Cursorobjekt
ist wie ein Zeiger, um tatsächlich auf Zeilen aus
einer Tabelle einer Datenbank zuzugreifen. Dann wenden
Sie im ersten Schritt eine SQL-Abfrage an, sodass Sie möglicherweise
Daten in die Datenbank einfügen
oder Daten aus der Tabelle
auswählen möchten usw. Und dann besteht der vierte Schritt darin
, Ihre Änderungen
in die Datenbank zu und dann
die Verbindung zu schließen. Lassen Sie uns also weitermachen und ein Beispiel mit
all diesen fünf Schritten
schreiben , die ich gerade erwähnt habe. Als Erstes
müssen Sie also eine Verbindung herstellen und
dieses
Verbindungsobjekt in einer Variablen speichern . Sagen wir also C. Das wäre gleichbedeutend mit Kult Three Dot Connect. Und was Sie hier übergeben,
ist die Datenbankdatei. Also sagen wir es Punkt DB. Und wenn Sie noch keine Datenbankdatei haben
, wird
Ihre Datenbank
mit dieser Codezeile erstellt und die Verbindung
wird hergestellt. Wenn Sie eine Datenbank haben, wird
so einfach
eine Verbindung zu
Ihrer vorhandenen Datenbank hergestellt . Dann müssen Sie
ein Cursor-Objekt erstellen, also die Variable ausschneiden, und Sie müssen auf
Ihre Verbindung und dann
auf die Cursormethode verweisen , die eine Methode
des Verbindungsobjekts ist So weit so gut, dann
kommt hier der eigentliche SQL-Code. Sie möchten auf
Ihr Cursor-Objekt zeigen
und dann die Execute-Methode verwenden. Und dann geben Sie in Klammern Ihren SQL-Code ein. Denken Sie daran, dass Ihr SQL-Code
immer innerhalb des Codes steht. Sie übergeben also
SQL-Code als Zeichenfolge an die Ausführungsmethode des Cursorobjekts der
SQL Lite-Bibliothek Three. Wenn Sie also mit SQL vertraut sind, sollte Ihnen
das leicht fallen. Wenn Sie mit SQL nicht vertraut sind, ist
SQL ziemlich einfach, sodass Sie es ziemlich schnell
lernen können. Derzeit
haben wir eine Datenbank, aber wir haben keine Tabellen
in der Datenbank, weil eine Datenbank aus Tabellen besteht und
Tabellen
Zeilen und Spalten haben. Sie möchten
also zunächst eine Tabelle erstellen. Und es hat sich bewährt,
Großbuchstaben für
die SQL-Schlüsselwörter zu verwenden . Create ist also ein ASCL-Schlüsselwort. Table ist ebenfalls ein
ASCUL-Schlüsselwort. Und dann möchten Sie den Namen
angeben, den Sie der
Tabelle geben möchten. Sagen wir Laden. So ordnen Sie Python
vasQul an, um eine Tabelle zu erstellen, aber dann müssen Sie angeben,
welche Spalten Sie möchten, welche Felder Sie in Ihrer Tabelle haben
möchten Nehmen wir also an,
wir erstellen eine Tabelle. Wir haben ein Geschäft, wir haben ein Geschäft und wir wollen unsere
Produkte in einer SQL-Datenbanktabelle speichern. Also würden wir
den Artikel haben wollen. Das wäre also der Artikelname. Und das Element
wäre ein Textdatentyp. Text ist also wie
Zeichenketten in Python, und dann
möchten Sie eine Menge haben. Und das wäre eine Ganzzahl. Also, wie viele von diesem
Artikel Sie in
Ihrem Geschäft haben und auch den
Preis. Und sagen wir mal real
für den Preis
, der in Python ein
Float sein sollte. Also eine
Dezimalzahl. Das ist es. Hier schließt der Code
des SL-Codes, und hier ist die letzte Klammer
der Execute-Methode. Dann müssen Sie diese
Änderungen in die Datenbank übernehmen. Sie verweisen also auf die
Verbindung und bestätigen dann, und dann möchten Sie die Verbindung
schließen. Das ist es also. Du speicherst
das und gehst und führst es aus. Qlite ist natürlich nicht definiert, weil ich hier bei Typo einen
Fehler gemacht habe Und wieder, und wie Sie sehen, wurde
eine Datenbank erstellt Wenn Sie jetzt wieder
im Programm sind, erhalten
Sie eine Fehlermeldung,
da die Tabelle bereits in der Datenbank vorhanden ist. Was Sie
hier also tun könnten, ist ein einfacher Trick. Sie müssen Ihrer SQL-Zeile etwas
Code hinzufügen. Sie sagen, erstellen Sie eine Tabelle,
falls sie nicht existiert. So sicher. Und wenn Sie Ihren
Code jetzt erneut bearbeiten, wird
nichts passieren,
denn
Python stellt Verbindung
zur Datenbank her und erstellt
dann einen Cursor. Und wenn es dann
eine Tabelle namens store gibt, tut
sie nichts und
geht zur nächsten Zeile über. Wenn es keine Tabelle gäbe, würde
sie eine Tabelle erstellen. Es ist also gut,
diese einfache Bedingung
hier im SQL-Code zu haben . Wie wäre es, ein paar
Daten zu unserer leeren Tabelle hinzuzufügen? Lass uns das versuchen. C ausführen. Also führen wir wieder
etwas SQL-Code aus, und das Schlüsselwort, das Daten in die
Datenbank
einfügt, ist insert. Dann möchten Sie angeben , wo Sie die Daten
einfügen möchten. Also in den Speicher einfügen. Und welche Werte Sie in Ihre Speichertabelle
einfügen möchten. Also Werte, dann öffnest du Klammern
und innerhalb der Klammern gibst du die Werte
in der richtigen Reihenfolge ein. Also in der Reihenfolge, in der Sie Ihre Spalten definiert
haben, also haben Sie die
Artikelmenge und den Preis, sagen wir Weinglas. Nun, das ist eine Zeichenfolge, also sollte sie in Anführungszeichen stehen. Und Sie sollten hier
einfache Anführungszeichen verwenden, da Sie doppelte Anführungszeichen für
den äußeren Ausdruck
verwenden. Wenn Sie hier also
doppelte Anführungszeichen verwenden, werden
Sie
Python verwirren und Sie werden
weitermachen , also einfache Anführungszeichen verwenden Aus diesem Grund haben wir
verschiedene Arten von Anführungszeichen, um Zeichenketten zu umschließen Also haben wir das Weinglas mit der Kette, und nehmen wir an, wir
haben eine Menge von acht und den Preis von Speichern Sie das und fahren Sie
fort und führen Sie es aus. Wir haben keinen Fehler erhalten, das war
also erfolgreich. Was ist nun, wenn wir eine weitere Zeile einfügen
wollen? Nun, wir könnten diese
Zeile hier darunter hinzufügen. Aber wenn wir dann den Code
ausführen, würden
wir auch diese Zeile
ausführen lassen. Wir hätten also ein
Duplikat dieser Zeile. Daher könnten wir
in diesem Fall
eine Funktion verwenden , um
unsere separaten SQL-Anweisungen zu umschließen. Sie können diesen
Codeblock also einrücken, wenn Sie möchten,
Sie können zum Bearbeiten von Zeilen einrücken gehen oder Sie können eine Tastenkombination verwenden, die
in Ihrer Tastatur spezifisch sein kann Suchen Sie einfach hier nach
Ihrer Tastenkombination, und dann können Sie sie einfach verwenden Der Grund, warum ich
den Codeblock beabsichtige
, ist , dass ich hier
eine Funktion erstellen möchte Sagen wir, Funktion, Tabelle erstellen. Vergiss die Spalte dort nicht. Und dann möchte ich eine separate
Funktion. Für eingefügte Daten. Das wäre also die
SQL-Anweisung für die
Insert-Funktion, aber Sie können
den Unterschied zwischen dieser
Funktion und dieser Funktion erkennen . Hier stellen wir keine Verbindung zur
Datenbank her, was falsch ist. Also würdest du
diese Zeilen hier einfügen wollen. Damit Sie eine
Verbindung mit der Datenbank herstellen. Und dann
schließen Sie diese Verbindung korrekt. Sie wissen jetzt also, wie man
Python-Funktionen benutzt. Und natürlich müssen Sie hier Parameter
an
Ihre Funktion übergeben. Du willst also Artikel sagen, also nur ein paar Variablen
und Menge. Preis. Und dann würden Sie diese Parameter hier ,
sodass Sie jedes Mal, wenn Sie die Funktion
aufrufen, einige Argumente einfügen und diese Werte in Ihre Tabelle
eingefügt werden. Jetzt können Sie
Zeichenkettenplatzhalter und
Python-Zeichenkettenplatzhalter verwenden, um diese Werte durch die Werte
zu ersetzen , die der Benutzer beim
Aufrufen der Funktion übergibt Dies ist jedoch keine gute Vorgehensweise,
da Ihr Code anfällig für
SQL-Injections von Hooks
wäre , und das gilt natürlich,
wenn Ihre Webanwendung im Internet
ist auch sei, es ist eine gute Praxis hier Fragezeichen
zu setzen Und dann, nach der
SQL-Anweisung, nach dem Doppelcode, möchten
Sie
die Variablen übergeben , durch die
diese Fragezeichen ersetzt werden
könnten. Sie würden also Artikel wollen, also in der richtigen
Bestellmenge und zum richtigen Preis. Also lass uns das alles jetzt versuchen. Ich möchte die
Einfügefunktion ausführen, die ich gerade mit
einigen neuen Elementen erstellt habe. Nehmen wir an, Wasser, Glas, wir haben zehn davon, und das wäre
günstiger. Speichern Sie das und gehen Sie und führen Sie es aus. Ich habe hier einen schrecklichen Fehler gemacht. Ich habe
alle Argumente mit Code verpackt. Also sollte Wasserglas in der
Nähe sein, und das sind Zahlen. Also speichern Sie noch einmal und versuchen Sie es erneut. Und Ihre Daten sollten in der Datenbank
bekannt sein. Also noch einmal, und sagen
wir Kaffeetasse. Sicher nochmal ausführen. Ich bin mir sicher, dass Sie jetzt
die Daten sehen
möchten , mit denen Sie Ihre Datenbank
in Ihre Tabelle
eingefügt haben Ihre Datenbank
in Ihre Tabelle
eingefügt Lassen Sie uns also eine Funktion erstellen
, die genau das tut. Sagen wir Tiefenansicht. Und Sie möchten
eine Verbindung mit der
Datenbank herstellen. Also lass uns das kopieren. Fügen Sie es hier ein und hier ist der SQL-Code,
also führen Sie ihn aus Wir verwenden also immer
die Execute-Methode , um SQL-Code an die Datenbank
zu senden Und dann haben wir Zitate. Nehmen wir an, wir
möchten die Daten
aller Spalten
der Speichertabelle auswählen . Wählen Sie also ein Sternchen aus,
was bedeutet, dass alles aus dem Speicher stammt Ordnung. Also haben wir sie ausgewählt, aber wie holen wir uns
diese Daten eigentlich , damit wir sie in Python verwenden
können Nun, der Weg, sie abzurufen besteht darin, die Methode „Alle
abrufen“ zu verwenden Und wir möchten auswählen, ob diese Zeilen in
Variablen gespeichert werden sollen. Nehmen wir an, Zeilen rufen alles ab. Und dann müssen wir die Verbindung
schließen. Im Gegensatz zu den anderen Methoden, bei denen wir
Daten in die Tabelle geschrieben haben, wählen wir
hier nur Daten aus, sodass wir nicht die Commit-Methode
verwenden müssen. Und wir wollen
die Variable Rose zurückgeben. Und ich drucke einfach gerne
die Ausgabe der Funktion aus. Die Ausgabe der
Funktion ist also variabel. Also lasse ich mir den Rosenwert auf der Kommandozeile
ausdrucken. Speichern Sie das Skript, führen Sie es aus. Natürlich habe ich
hier einen Tippfehler und sollte zurückgegeben werden. Versuche es erneut. Und
hier sind unsere Daten. Wir haben also ein
Glaswasserglas und zwei Reihen
Kaffeetassen. Das liegt daran, dass wir
die Funktion früher ausgeführt haben ,
die Insert-Funktion, und jetzt, wo ich
das Skript erneut ausgeführt habe um die
View-Funktion auszuführen, wurde
die Insert-Funktion
auch zum zweiten Mal ausgeführt . Also wurde die Kaffeetasse
zweimal in die Tabelle gesteckt. Also gut, das ist
für diesen Vortrag. Und in der nächsten Vorlesung werde
ich Ihnen einige
weitere Operationen zeigen, werde
ich Ihnen einige
weitere Operationen zeigen Sie mit der Datenbank durchführen können. Also werde ich später mit dir sprechen.
164. 163. SQLite: Auswählen, Einfügen, Löschen und Aktualisieren von SQL-Datensätzen: In der vorherigen Vorlesung habe ich Ihnen die
SQLite-Drei-Bibliothek vorgestellt
und Ihnen gezeigt, wie
Sie eine Tabelle
in Ihrer SQL-Datenbank erstellen in Ihrer SQL-Datenbank und wie Sie
Daten in Ihre Datenbank einfügen und wie Sie Daten auswählen
und sie in Python anzeigen Wir haben also diese vier Zeilen, vier Zeilen in unserer Datenbanktabelle Und in dieser Vorlesung werde ich Ihnen
schnell zeigen, wie Sie Daten aus Ihrer Tabelle
löschen und aktualisieren können. Also noch einmal, ich werde eine
Funktion erstellen, also lass mich diese kopieren. Wir müssen immer noch eine Verbindung
zur Datenbank herstellen und
ein Cursor-Objekt erstellen. Dann müssen wir die
Execute-Methode verwenden. Und in diesem Fall möchte
ich die Zeile
löschen, in der
sich das Weinglas befindet. Also würden
wir innerhalb von Execute schreiben, aus
dem Speicher
löschen, wo Element gleich ist, ich würde hier gerne den
Fragezeichen-Platzhalter verwenden Also markiere und in Klammern, wir würden den Parameter wollen , den wir
durch unsere Funktion übergeben würden Also dieses Element hier
ist das, was wir hier hineinlegen, item, und lassen Sie mich
den Namen unserer Funktion ändern. Also das ist dieser. Verwechsle es nicht damit. Dies ist die Spalte unserer Tabelle, und dies war die Zeile aus der vorherigen Funktion.
Lösche das auch. Und Sie möchten
die Änderungen auch in Ihre Datenbank übernehmen. Also verpflichten Sie sich. Also das ist es. Und ich möchte das
auskommentieren , damit ich
die Insert-Funktion nicht noch einmal ausführen möchte. Und ich möchte, dass die View-Funktion
ausgeführt wird, nachdem wir die Zeile
gelöscht haben . Also lösche. Also Artikel, welchen Artikel würdest
du löschen wollen? Also der Artikel Weinglas. Und mal sehen, was passieren wird. Wir haben einen Fehler und
bitten Sie um drei Fehler, falsche Anzahl der gelieferten
Bindungen. Zeile 28, ich kann sehen, ja, es gibt etwas, das
ich oft vergesse. Du musst hier ein Koma hinzufügen. werden Sie sehen, wenn ich Ihnen
beibringe, wie man eine Verbindung zu einer Postgrascule-Datenbank herstellt
und wie man
Daten aus der Postgrascule-Datenbank abfragt Daten aus Der Code ist ziemlich ähnlich, enthält
aber einige wichtige Änderungen wie diese hier Es kann also verwirrend sein
, wenn Sie
mit verschiedenen
Arten von Datenbanken arbeiten . Lass uns das noch einmal ausprobieren. Und es scheint jetzt zu funktionieren. Wineglass ist nicht hier. So löscht man also eine Zeile. Lassen Sie uns jetzt eine weitere Funktion hinzufügen. Zur Aktualisierung der Datenaktualisierung. In diesem Fall
möchte ich
die Anzahl der Fotobrillen aktualisieren . Also möchte ich das 10-11 ändern. Auch hier stellen Sie Ihre
Verbindung zur Datenbank her, erstellen ein Cursor-Objekt,
und dann führen Sie es aus, und hier geben Sie den Befehl
Update SQL Aktualisieren Sie also, was Sie
aktualisieren möchten, ist die Speichertabelle. Und welche Spalte
möchten Sie aus
der Speichertabelle aktualisieren? Sie möchten also
den Namen der Spalte festlegen, was in diesem Fall Menge
wäre. Und das wäre gleichbedeutend
mit was? Ratet mal was? Fragezeichen. Und
dann sagst du, wo? Oder lassen Sie mich Ihnen zeigen, wie Sie mehr als eine Spalte
aktualisieren können. Wenn Sie also mehr
als eine Spalte haben möchten, würden
Sie ein Komma verwenden und dann sagen, dass der
Preis einem anderen
Fragezeichen entspricht Ordnung, also sagen wir aktualisieren, speichern und Menge und
Preis darauf festlegen, aber welche Zeile? Also musst du hier „
Conditional“ angeben. Also wir Artikel entsprechen Weinglas. Oder Sie können dies auch
auf ein Fragezeichen setzen. Sie haben hier also drei
Platzhalter, und dann haben Sie das Zitat,
um Ihre cL-Aussage zu schließen, und dann möchten
Sie in Klammern die
Parameter Menge übergeben, und Sie haben
einen zweiten, der Preis und Artikel ist. Wenn Sie hier mehr als
einen Parameter haben, setzen
Sie
kein Komma ans Ende,
also endet das Ganze so Sie möchten
diese Parameter hier auch übergeben , damit sie Ihre
Funktionseingabe widerspiegeln Was wir hier haben, ist also wir die
Speichertabelle aktualisieren und den Wert
der Mengenspalte und der
Preisspalte auf diese Werte setzen , aber nur für
die Zeilen, in denen der Artikel einem bestimmten Wert
entspricht. Also geben wir diesem
hier diesen
Wert und
diesen die ersten beiden. Du verstehst die Idee. Speichern Sie das Skript und Sie
müssen es hier aufrufen. Lassen Sie mich
das kommentieren und aktualisieren. Also, welche Menge möchtest
du weitergeben? 11, sagen wir. Und
der Preis war fünf. Nehmen wir an, es würden
bis zu sechs sein, und welchen Artikel
möchtest du aktualisieren? Wasserglas? Das ist es. Speichere dein
Script und probiere es aus. Und wir haben diese Werte wie erwartet
aktualisiert. Und das wollte ich dir in dieser Vorlesung
beibringen. Es könnte praktischer sein, hier tatsächlich einen Ausweis
zu haben. Wir sagen also Menge und Preis, wobei die ID einer Zahl
entspricht, damit wir nicht den gesamten Namen
weitergeben müssen was verwirrend sein kann
oder zu anfälligen Trägern führt In diesem Fall würden wir die Tabelle hier ändern
wollen, und wir würden
einen Primärschlüssel hinzufügen wollen , der
alle inkrementiert Aber wie das geht, lernst du im nächsten Abschnitt
des Kurses Dort werde ich Ihnen zeigen, wie
man ein Programm für die reale Welt macht, und wir werden
das in diesem Programm implementieren. Das waren also einige
triviale Beispiele, und im nächsten Abschnitt bekommen Sie eine viel bessere
Vorstellung Als Nächstes werden wir
zu Postgradual-SQL springen und mit der Cycle PG
Two-Bibliothek arbeiten . Wir sprechen später mit dir
165. 164. PostgreSQL-Datenbank mit Python: Willkommen zu dieser Vorlesung. Wir sind mit SQLite 3 fertig, also hoffe ich, dass Sie
dieses Skript erstellen konnten , das ich
Ihnen in den
vorherigen Vorlesungen gezeigt habe Ihnen in den
vorherigen Vorlesungen Denn in dieser Vorlesung
werden wir dieses Skript verwenden,
aber ich werde es so modifizieren, dass es mit der Interaktion mit
Postgrade-SQL-Datenbanken
kompatibel ist Interaktion mit
Postgrade-SQL-Datenbanken
kompatibel Postgrade-SQL-Datenbanken Zum Glück
ist der größte Teil des Codes derselbe, mit
einigen geringfügigen Änderungen. Natürlich bräuchten wir eine weitere Bibliothek
namens Psycho PG Two Und dann werden wir uns
Methoden aus dieser Bibliothek holen. Und im Gegensatz zu SQLite Three muss
psycopg two installiert werden, es handelt sich
also
um eine Bibliothek eines Drittanbieters Es ist keine
eingebaute Python-Bibliothek. Sie müssen also Psychopg
Two installiert haben, und Sie müssen auch Postgradual-QL auf
Ihrem Computer installiert haben In diesem Vortrag möchte ich Ihnen zeigen, wie
Sie auch
PostgraQL und
Psychopg Two installieren PostgraQL und In Ordnung. Dies ist die offizielle
Webseite von PostgrasQL und Sie können hier unten einfach zu den
Downloads gehen Und dann willst du
dein Betriebssystem finden. PostGraqul funktioniert also auf Mac,
Linux und Windows, auch unter
Solaris Also bin ich auf Windows. Ich klicke
einfach auf Windows, und wenn Sie PostGrasul installieren, installieren
Sie auch PG Admin Three, ein grafisches Tool, ein grafisches Tool dem Sie Ihre Datenbanken sehen
können Sie kennen sich mit MySQL aus, PG-Admin entspricht PHB
Madmin Post Grad QL wird auch
mit einem Stack Builder geliefert
, einem Paket, mit dem
Sie andere
Post-Grad-SQL-Erweiterungen herunterladen
und installieren können andere
Post-Grad-SQL-Erweiterungen herunterladen
und installieren Nehmen wir an, Sie möchten eine
Erweiterung für räumliche Daten, also um räumliche Daten in
PostQL zu speichern , damit Sie
sie für JS-Anwendungen verwenden können Dafür gibt es also eine Erweiterung
namens Post GS. Wie dem auch sei, ich zeige dir,
wie man Erweiterungen installiert. Zuerst müssen Sie
PostgreSQL herunterladen und ich bin auf
Windows, also werde ich darauf klicken Und ich werde eine Weile warten, bis
mein Download abgeschlossen ist. Also werde ich schnell
den Installationsprozess durchgehen. Ich werde also nur
gefragt, wo ich Post Grass QL installieren
möchte Post Grass QL installieren
möchte und wo meine Daten gespeichert
werden. Und hier sollten Sie vorsichtig
mit diesen Zugangsdaten sein. Also Ihr Superuser, der
die meisten
Rechte für Ihre Datenbanken hat,
und Ihr Superuser-Name ist Postgres, und ich würde eigentlich gerne
eine einfache Datei erstellen Eine Textdatei, nur um meine Anmeldeinformationen zu speichern
. Ich möchte auch das Passwort
sagen. Eins, zwei, drei. Ordnung, also
gebe ich Postgress eins,
zwei, drei als Passwort ein Als Nächstes ist dies ein Port Ihres Servers
Ihres Datenbankservers Also würde ich das auch
zur Kenntnis nehmen wollen. Es geht um Ihre
lokale Einstellung, also belasse ich diese Standardeinstellung. Und Sie müssen nur
eine Weile warten, bis die
Installation abgeschlossen ist. In Ordnung, das war erfolgreich. Nun, wenn Sie Stock Builder
starten möchten, um Erweiterungen für die Datenbank der
Klassenstufen zu
installieren, sollten
Sie das vielleicht überprüfen lassen also das ist mein Datenbankserver Und hier haben Sie eine
Reihe von Erweiterungen , die Sie vielleicht
installieren möchten, zum Beispiel räumliche Erweiterungen, und Sie haben Post gs für 32 Bit und
Post Gs für 60 für Bit. Wenn ich auf Weiter klicke, sagt mir das, dass sie
mindestens ein Paket benötigen , um installiert zu werden. Lass
mich einfach Post gs installieren. Ordnung, stimmen Sie
der Poss-Lizenz zu und fahren
Sie dann einfach als Nächstes fort werde nach DEL gefragt
, einer weiteren
Schnittstelle für GIS-Daten Okay, es war schwierig, externe Erweiterungen zu
installieren. Wenn Sie später
zu Stack Builder zurückkehren möchten, sollte
Ihr Stack Builder hier
sein oder Sie können einfach zu Postgres SQL gehen, und hier haben wir auch den
PG-Administrator, und hier ist das
Anwendungs-Tag Ordnung, aber wenn Sie mit Python arbeiten
möchten, möchten
Sie über Python auf
die
PostGraqul-Datenbanken zugreifen , sodass Sie hier nicht
mit diesen Anwendungen interagieren müssen mit diesen Die Möglichkeit,
mit PostgrasQul
mit Python zu interagieren , besteht darin, Psycho PG Two zu
installieren,
und Sie können Psychopg Two mit PIP installieren Sie können jedoch auf
Probleme stoßen, da Cyclopedia
Two in C geschrieben ist Sie müssen
also einen C-Compiler Ihrem
System unter Windows
installieren.
Zumindest
haben Sie dieses Problem nicht auf einem Mac und Linux, . Sie müssen
also einen C-Compiler auf Ihrem
System unter Windows
installieren.
Zumindest
haben Sie dieses Problem nicht auf einem Mac und Linux, da bin ich mir ziemlich sicher. Die Lösung dafür, eigentlich
gibt es ein paar Lösungen. Eine der Lösungen ist
, dass Sie vielleicht ein Visual Studio
auf Ihrem Windows-Computer
installieren möchten , aber das ist ein ziemlich großes Programm und ich würde es nicht installieren
wollen. Die zweite Lösung, die ich am meisten bevorzuge, ist die Verwendung
vorkompilierter
Python-Bibliotheken. Und Sie können fast
alle Python-Bibliotheken finden , die einen C-Compiler benötigen Sie finden diese Bibliotheken dieser Seite, die von
Christoph Goldke bereitgestellt wird Wir suchen also nach einem SIP-Anruf. PG zwei. Hier haben Sie die Raddateien. Eine Raddatei ist also eine Datei, die mit PIP installiert werden
kann. Was machst du also,
wenn du
etwas mit PIP installierst ? PIP
installiere Psycho PIP lädt die
Web-Datei von einem Remote-Server herunter und installiert
sie dann Also hier kannst du nach deiner Version
suchen. Das wäre die
Datei für mein System. Also hol das einfach von
hier und füge es hier ein, damit ich über die Atom-Befehlszeile darauf
zugreifen kann . Also hier ist die Datei
, die ich gerade heruntergeladen habe. Also mach einfach weiter
und pip install, und dann musst du auf die Well-Datei
zeigen Also das wird Oliged. Und das wurde
erfolgreich installiert. Ich kann schnell überprüfen,
ob das verfügbar ist. Und es scheint zu funktionieren. Sie können auch die Version
Ihrer Bibliothek überprüfen , wenn Sie möchten. Es ist also 2.6 0.1. Ordnung, in
der nächsten Vorlesung werden
wir uns mit
der Datenbank und der
Post-Gradsqll-Datenbank verbinden , und dann werden wir
Tabellen erstellen und Daten einfügen, sie
anzeigen, löschen Lassen Sie uns also weitermachen.
166. 165. PostGreSQL: Auswählen, Einfügen, Löschen und Aktualisieren von SQL-Datensätzen: Sehr gut. In dieser Vorlesung lernen
Sie, wie Sie eine Verbindung zu einer Post-GradesCL-Datenbank herstellen und wie Sie Tabellen in einer
Post-Gradescule-Datenbank erstellen, Daten speichern, Daten anzeigen löschen
und aktualisieren Das Skript, das Sie sich jetzt
ansehen,
ist ein Skript, das Sie in den vorherigen Vorlesungen mithilfe
der SQLi-Datenbank erstellt haben der Wenn Sie diese Vorlesungen also nicht
gesehen haben, empfehle
ich Ihnen dringend, sie zuerst
durchzugehen und
dann hierher zu kommen. Denn in dieser Vorlesung werde ich
einfach diesen Code durchgehen und nur ein
paar Zeilen ersetzen. Das
deutet darauf hin, dass der Code, den Sie für die
Q Three-Bibliothek verwenden, dem Code, den wir für Psycopg Two verwenden
werden, einer Bibliothek,
die Sie verwenden, um eine Verbindung
zu
Postgrascue-Datenbanken herzustellen, sehr ähnlich ist Verbindung
zu
Postgrascue-Datenbanken Der Hauptunterschied besteht darin, dass
Ihre Datenbank keine DB-Datei
sein wird , die in Ihrem Dateisystem gespeichert Es wird eine Datenbank sein, die
in Ihre
Post-Grascule-Installation eingebettet in Ihre
Post-Grascule-Installation Die erste Anforderung
ist also, dass Sie
eine bestehende Datenbank auf
Ihrem Datenbankserver haben müssen eine bestehende Datenbank auf
Ihrem Datenbankserver Post Grass SQul wird
mit einer Standarddatenbank geliefert. Sobald Sie PostgreSQL installiert haben, haben
Sie eine Datenbank
namens PostGres, sodass Sie
die Datenbank einfach hier übergeben können,
oder wenn Sie möchten, können
Sie Ihre eigene Sie müssen also nur zu
Ihrer PostgreSQL-Installation gehen
und können über PG Admin eine Datenbank erstellen Also hier sind deine
Datenbankserver, und das ist ein Standardserver Sie müssen zuerst eine Verbindung zu Ihrem
Datenbankserver herstellen. Dass dies das Passwort wäre
, das Sie bei der Installation von Postgress erstellt PostGress 123 gehörte mir. Ordnung. Also ich wurde
erfolgreich verbunden und ich habe drei Datenbanken. Das ist also die Standarddatenbank
, über die ich gesprochen habe, und dies sind zwei weitere
Datenbanken, die ich erstellt habe. Um eine neue Datenbank zu erstellen, klicken Sie
einfach mit der rechten Maustaste auf die
Datenbanken und die neue Datenbank. Sagen wir Datenbank eins, und Sie müssen den Besitzer
angeben, also den Benutzer Ihrer Datenbank. PostgresST
habe ich angegeben, als ich Postgres UL installiert habe.
Das sollte ausreichen In Ordnung, jetzt hast du
hier eine Datenbank. Wenn Sie darauf klicken, stellen
Sie eine Verbindung her. Jetzt kannst du das einfach schließen
und zu Python zurückkehren. Okay, lassen Sie mich zuerst
diese Zeilen auskommentieren , damit diese
Funktionsinstanzen nicht aufgerufen werden,
wenn
ich das Skript ausführe. Wir haben also eine leere Datenbank. Also das erste, was
wir
tun möchten, ist eine Tabelle zu erstellen. Aber zunächst
möchte ich das auch ändern. Psychopharmakon zwei. Und natürlich möchte
ich SQ L drei chargenweise
ersetzen es
durch PG zwei ersetzen Deshalb möchte ich, dass all diese
Bibliotheksnamen hier durch Pycopg Two
ersetzt werden Also ersetze alles und drücke
einfach Escape. Das geht weg. Zum Glück ist dieser Code
derselbe wie die SQLite-Drei-Bibliothek. Also haben wir connect und dann haben
wir das Cursor-Objekt, dann haben wir die
Execute-Methode commit und close Wir müssen hier nur
die Parameter ändern. Und hier möchten wir
den Datenbanknamen,
den Benutzernamen,
den Host, das Passwort
und die Portnummer
Ihres Datenbankservers übergeben den Datenbanknamen,
den Benutzernamen, den Host, das Passwort . Und das alles steht
in Anführungszeichen. Es wird also als Zeichenfolge
an die Connect-Methode übergeben. Zuerst haben wir einen Datenbanknamen. Also der Parameter dbname und das wird einem Wert
entsprechen Sie müssen den
Wert also in einfache Anführungszeichen einfügen. Das ist also Datenbank. Nun, der Name der Datenbank. Dann haben Sie einen Benutzer und seien Sie sich bewusst, dass Sie hier keine Kommas verwenden
müssen Das alles geht also
als Zeichenfolge und wird von
der Connect-Methode als Zeichenfolge
gelesen Der Benutzer setzt also
Anführungszeichen, Post Grass, dann haben wir das Passwort, Post Grass, eins, zwei, drei, dann haben Sie den Hostnamen, also den Host-Parameter. Das sollte der lokale Host sein. Ordnung. Lokaler Host sollte also dein Hostname sein
und so ist es immer. Und schließlich haben wir
die Portnummer, und die steht auch in
Anführungszeichen. Also 532 Das sind also die
Parameter, die Sie an
Ihre Connect-Methode oder
die Cycle-PG-2-Bibliothek übergeben Ihre Connect-Methode oder
die Cycle-PG-2-Bibliothek Dann versuchen wir, diese Funktion
aufzurufen. Tabelle erstellen ist also eine Funktion, und ich werde das Skript speichern. Also lass mich sichergehen, dass du weißt,
was hier passiert. Also stellen wir eine Verbindung zur Datenbank und dann haben wir dieselben Methoden
für
die Cycle PG Two-Bibliothek. Wir erstellen also
einen Tabellennamenspeicher und dann haben wir drei
Spalten für diese Tabelle. Und wir übernehmen diese
Änderungen und schließen die Verbindung. Also
speichere das Skript. Control S. Alan,
ruf das Drehbuch auf. Und das sieht erfolgreich aus. Wenn du möchtest, kannst du
einfach zu PG at Mean gehen. Und hier siehst du die Tabelle , die du gerade erstellt hast. Geben Sie einfach das Passwort und Sie müssen
zu Ihrer Datenbank gehen. Also Datenbank eins, erweitere das. Dann müssen Sie zu
Schemas und öffentlichen Tabellen gehen. Und das ist unser Tabellenname. Wir haben also die Lagertabelle und Sie haben drei Spalten, Artikelmenge und Preis. Ordnung. Wir haben
eine leere Tabelle, also lassen Sie uns weitermachen und
einige Daten in diese Tabelle einfügen. Ich kopiere einfach diese
Verbindungszeichenfolge und füge sie ein. Hier drin.
Denken Sie dann daran, dass wir beim Einfügen von
Werten für ganze drei
Fragezeichen verwenden.
Wenn Sie möchten, können Sie Platzhalter
zur Zeichenkettenformatierung verwenden Also eins für den Artikel, eins für die Menge und noch eins für den Preis Lassen Sie mich das nach dem Komma hinauszögern. Nach dem Zitat übergeben
Sie leider den Prozentsatz, sodass Sie die Zeichenkettenformatierung bereits kennen, und dann geben Sie das Tupel der Variablen an, in die
Sie einfügen möchten Also Artikelmenge und Preis. Sie können das also verwenden,
aber das wäre anfällig für SQL-Injections
von Tuckers Also ist es keine gute Idee. Ich kann das
tatsächlich ausführen , nur um zu
sehen, was passiert. Sagen wir also April und
zehn und 15. für den Preis. Und lassen Sie mich das ausführen. Es sieht also so aus, als ob es funktioniert hat, und wir können es
in der Tabelle hier überprüfen. Sie können also einfach
zu Ihrer Datenbank gehen, die Datenbank eins ist. Und hier können Sie
eine einfache SQL-Abfrage ausführen, alles aus dem Store
auswählen, alles aus dem Store
auswählen auf Ausführen
gehen und Sie sehen, dass
Apple zur Tabelle hinzugefügt wurde. Es funktioniert also, aber es ist riskant, die
Python-String-Formatierung zu verwenden. Was Sie also tun möchten, ist, dass ich es
einfach für eine
Weile stehen lasse, damit Sie die Dinge
vergleichen und um Schädelinjektionen zu
vermeiden, sollten
Sie Ihre Variablen tatsächlich
als zweiten Parameter an
die Execute-Methode
übergeben als zweiten Parameter an
die Execute-Methode Das bedeutet also, dass
Sie keine Oden verwenden müssen, also geben Sie einfach den Prozentsatz
S weiter, einfach so Dann setzen Sie
hier ein Komma, das bedeutet, dass diese Zeichenfolge hier in doppelten
Anführungszeichen ein Argument ist, und dann
ist diese hier das andere Dann übergibst du deine Variablen, das sollte jetzt funktionieren Ich bin mir sicher, dass Sie
den Unterschied zwischen
diesem und dem erkennen können . Und ich werde das einfach auskommentieren,
damit es nicht ausgeführt wird. Und sagen wir Orange. Ausführung zu gleichem Preis und gleicher Menge. Und lass uns bei PG Mad Man
einchecken. Lassen Sie mich
die Abfrage erneut ausführen. Und Sie sehen, dass Orangen der
Tabelle als Neuro hinzugefügt wurden. Das ist also der richtige Weg
und ich werde das löschen. Ordnung. Schauen wir uns nun die View-Funktion
an. Die View-Funktion stellt
also eine Verbindung
zur Datenbank her
und wählt alle
Zeilen aus der Speichertabelle aus. Dann speichern wir diese Zeilen mit
der fatalen Methode in der Zeilenvariablen. Dann geben wir diese Zeilen
als Funktionsausgabe zurück. Alles, was Sie hier ändern
müssen, ist das Argument der Connect-Methode. Also leg sie einfach hierher. Und
es sollte startklar sein. Lassen Sie mich die
Funktion ansehen, aufrufen und ausführen. Und ja, wir müssen es ausdrucken. Hab es vergessen. Ja. Also, wir haben April und wir
haben
jetzt drei Orangen , weil ich gerade, als ich das Skript hier
ausgeführt
habe, die
Insert-Funktion erneut ausgeführt habe, also haben wir zwei Orangen und eine
weitere, wenn Sie Platzhalter zur
Zeichenkettenformatierung verwenden Also verstehst du die Idee.
Schauen wir uns die Löschung an. Funktion. Auch hier müssen wir Argumente von
Psychopg Two Connection
übergeben Dann müssen wir den Artikel aus dem
Store löschen, auch hier können
wir kein Fragezeichen verwenden, also müssen wir Prozentsätze verwenden Und dann übergeben
wir als zweites Argument die Artikelvariable Es ist also dasselbe wie Feld Drei, aber wir verwenden hier Prozentsätze Und lass mich Löschen nennen. Ich werde das hier
auskommentieren und löschen. Was Sie also löschen möchten,
ist der Artikel, welcher Artikel? Nehmen wir an, wir möchten
Zeilen löschen , in denen
das Element Orange entspricht. Schauen wir uns also an, wie das geht. Ja, der Artikel wurde gelöscht. Die Zeilen mit dem
orangen Element wurden gelöscht und wir haben die
View-Funktion ausgeführt, also haben wir jetzt eine Zeile. Unsere Tabelle hat nur eine Zeile. Ein kurzer Blick auf die
Aktualisierungsmethode. Einfach so. Und hier aktualisieren wir
die Lagertabelle, und da stellen wir ein, also aktualisieren wir die Menge auf diesen Wert und den Preis
auch auf diesen Wert, bei dem der
Artikel diesem Wert entspricht. Ordnung, wir haben also einen, zwei, drei Werte und wir übergeben hier
nach dem Komma
drei Variablen Also als zweites Argument
der Execute-Methode, und die Update-Methode
erhält drei Argumente Lassen Sie mich
das kommentieren und aktualisieren, wir haben nur eine Zeile. Also möchte ich die Menge
der Äpfel auf sagen wir 20 setzen. Und den Preis, lassen wir den Preis gleich
bleiben. Und für den Artikel Apple einfach
so und fertig. Und wir haben die Menge auf 20
geändert. Das war es also. Ich glaube
, das war ganz einfach. Wenn du also schon einmal S
wie drei gelernt hast, war
das für dich ziemlich einfach. Und wenn Sie Fragen haben, können Sie diese gerne
im Diskussionsbereich stellen. Ich antworte gerne. Wir
sehen uns in der nächsten Vorlesung.
167. 166. App 6: App zur Buchbestandsaufnahme: Willkommen in diesem neuen Bereich. Und in diesem Abschnitt erfahren Sie
, wie Sie
ein echtes Programm erstellen , das es
dem Benutzer ermöglicht, Informationen über Bücher zu speichern. Ich habe dieses Programm also bereits
erstellt und werde Ihnen Schritt für
Schritt zeigen, wie Sie dasselbe tun können. Ich habe das Programm hier und
es ist eine ausführbare Datei. lernen also nicht nur, wie
man das Dot Pi-Programm erstellt, Sie lernen also nicht nur, wie
man das Dot Pi-Programm erstellt, sondern auch, wie man ausführbare Dateien
erstellt, die unter Windows
ausgeführt werden , und
Punkt-App-Dateien, die auf einem Mac laufen. Sie können Ihr Programm also grundsätzlich
jedem
geben und dieser muss
Python
nicht auf seinem Computer installiert
haben . Also nenne ich das Programm Bookstore. Und das wurde
hauptsächlich mit Kinte, einer grafischen
Benutzeroberflächenbibliothek
,
und der ASQ Light Three-Bibliothek, einer Bibliothek zur Interaktion
mit
der ASQE Light-Datenbank, einer Bibliothek zur Interaktion
mit
der ASQE Wir haben hier also vier Einträge,
in
die Sie
einen neuen Buchdatensatz eingeben können Nehmen wir an, Sie
haben ein neues Buch in Ihrem Geschäft und möchten es zu Ihrer Datenbank
hinzufügen. Und hier können Sie alle Bücher
sehen , die dem Programm
hinzugefügt wurden. Sie können schnell ein neues
Buch hinzufügen, sagen wir Pythons für den Titel
rdt Sie haben die ISBN-Nummer, eindeutige
Identifikationsnummer für Bücher ist die eine eindeutige
Identifikationsnummer für Bücher ist.
Sie ist ziemlich lang Nehmen wir an,
Sie fügen einen Eintrag hinzu, und dann sehen Sie sich alles
noch einmal an und Sie werden sehen , dass der neue Eintrag zur Datenbank
hinzugefügt wurde. Jeder Datensatz, den Sie hier
sehen, wird also tatsächlich in einer Tabelle in
dieser Light One-Datenbank
gespeichert. Dann haben Sie hier einige
andere Schaltflächen. Wenn Sie möchten, können Sie also tatsächlich nach einem Eintrag für einen Datensatz
suchen, einen Sucheintrag, und dann wird der Eintrag
angezeigt
, den Sie suchen. Wenn Sie auf den Eintrag klicken, werden hier alle Felder in
den einzelnen Textbüchern
angezeigt Löse dich alle noch einmal, und du kannst auch Datensätze aktualisieren und löschen Und schließlich können Sie das Fenster
schließen. Es ist also keine großartige
Benutzeroberfläche. Ich bin kein großartiger
Benutzeroberflächendesigner, aber Sie lernen eine Menge, wenn Sie dieses Programm erstellen. Es ist also ziemlich
lang, aber es wird sich
auszahlen . Also lass uns anfangen.
168. 167. Die Benutzeroberfläche entwerfen: Hallo zusammen. Und in diesem Vortrag werden Sie damit beginnen
, unser Buchhandlungsprogramm aufzubauen Konkret werden wir an der grafischen
Benutzeroberfläche
arbeiten
, weil dieses Programm sozusagen
aus zwei Teilen besteht Es hat also ein Backend
und es hat ein Frontend. Das Backend ist der
Sculi-3-Datenbankcode. Also der Code, der
mit der Datenbank interagiert. Und das Frontend ist der
Code der Tkinter-Bibliothek. Also der Code, der all diese Schaltflächen, diese Einträge,
diesen Text und dieses Listenfeld
und diese Bildlaufleiste
zusammensetzt Einträge,
diesen Text und dieses Listenfeld
und diese Bildlaufleiste Normalerweise müssten Sie also
wählen, ob Sie zuerst am
Back-End-Code arbeiten
möchten oder ob Sie der Erstellung des Frontend-Codes beginnen
möchten. Zuallererst möchten
Sie jedoch zunächst einige Anforderungen definieren. Sie möchten also sagen, was
Ihr Programm tun wird. Nehmen wir an, Sie
möchten, dass Ihr Programm eine Liste
der aktuellen Datensätze anzeigt. Wenn Sie also VO drücken, sehen
Sie hier die Liste
der Datensätze. Und dann möchten Sie, dass Ihr Programm
nach einem aktuellen Eintrag sucht, und dann
möchten Sie Andrea hinzufügen und Daten
aktualisieren und auswählen. Und dann möchten Sie, dass das
Programm das Fenster schließt. Das
sind also im Grunde unsere Anforderungen, und jetzt können Sie wählen, ob Sie mit dem Schreiben des Beck-Endes
beginnen möchten, also könnten Sie
eine Funktion schreiben, die alle Daten
aus der Datenbank
auswählt. Dann könnten Sie
diese Daten als Text zurückgeben. Sie können
sie also vorerst einfach ausdrucken, wenn Sie
zuerst das Backend
schreiben möchten , weil Sie das Frontend nicht
haben, Sie haben die grafische
Benutzeroberfläche noch nicht erstellt. Sie können also einfach Funktionen
des Backends
schreiben und dann die Ausgabe
ausdrucken. Oder Sie können zuerst mit
dem Schreiben des Frontends beginnen. Sie erstellen also diese
grafische Benutzeroberfläche. Aber wenn Sie auf diese
Schaltflächen klicken, passiert nichts. Also im Grunde zeichnest du
dieses Ding einfach mit Python. Und wenn Sie das getan haben, fangen
Sie an, das Backend zu erstellen, und dann verbinden
Sie
alle Widgets und alle Befehle
dieser Schaltflächen mit Ihren
Backend-Funktionen. Es ist also eine Frage der
Präferenz,
ob Sie zuerst mit dem
Backend oder dem Frontend arbeiten möchten. In diesem Kurs, in diesem Abschnitt, werden
wir zuerst
das Frontend erstellen. Wir werden also
eine grafische
Benutzeroberfläche erstellen , die eine Zeit lang
nichts tut , bis wir sie mit dem
Backend
verbinden. Dann alles klar. Ich möchte zuerst diesen senkrechten Balken
hier
entfernen , weil ich hier die grafische
Benutzeroberfläche
zeichnen werde . Also werde ich
eine Skizze machen, die du dir ansehen kannst, und die Skizze
immer hier haben. Um diese Leiste zu entfernen, können Sie,
wenn
Sie neugierig sind, einfach zu den Einstellungen gehen. Dann gibt es noch ein Paket
, das tatsächlich
diese Leiste anzeigt , die Rap-Guide
genannt wird, und Sie möchten
alle Anzeigen
im Editor um eine Zeile mit
dem achten Zeichen verschieben alle Anzeigen
im Editor um eine Zeile mit
dem achten Zeichen Und das kann dir helfen, wenn du willst, vielleicht hilft es dir,
ein bestimmtes Muster beizubehalten Sie möchten also nicht
mehr als 80 Zeichen
in Ihrem Code haben . Diese Leiste hilft
dir also, diese Regel einzuhalten. Also, das wollen wir nicht,
also habe ich es einfach entfernt. Und ich werde nur
ein paar Notizen in
die Dokumentzeichenfolge schreiben . Sie wissen also, dass eine Dokumentzeichenfolge wie eine Kommentarzeile
ist. Wenn Sie also etwas
in diese Dreifachcodes einfügen, wird
dies von Pathon nicht
als Code gelesen sondern es ist einfach wie eine
Dokumentationszeichenfolge Also nur für Menschen zum Lesen. Also sagen wir, ich möchte ein Programm. Darin werden diese
Buchinformationen gespeichert. Also Titel und Autor und ISBN. Also die
Identifikationsnummer für Bücher. Und der Benutzer kann alle Datensätze
einsehen. Sie können einen
Eintrag suchen und einen Eintrag hinzufügen, einen Eintrag
aktualisieren, löschen und das
Programm schließen, wenn sie möchten. Schliessen. Acht. Wenn Sie also
anfangen, darüber nachzudenken, möchten Sie
jetzt eine
grafische Benutzeroberfläche mit all diesen Schaltflächen haben , sodass der Benutzer diese Aktionen
über einige Schaltflächen ausführen kann. Und dann überlegst du,
wie sie Datensätze einsehen können. Und Sie wissen, dass Tkinter das Listenfeld
hat, ein
Widget, mit dem
Sie
Text als Liste anzeigen können . Also Zeile für Zeile Und dann möchten Sie, dass
der Benutzer
einen Eintrag bei einem Eintrag zum Aktualisieren eines
Eintrags sucht . Sie benötigen also einige Widgets für Einträge. Und dann benötigen Sie natürlich
einige Beschriftungen, aus denen hervorgeht,
worum es bei jedem Eintrag geht. Das wäre also ein Label-Widget. Und vielleicht möchten Sie auch
eine Bildlaufleiste, damit Ihre Liste scrollbar ist. Wenn
es also viele Datensätze gibt, kann
der Benutzer
durch
sie blättern und die
Datensätze unter der Liste sehen. Und so haben wir eine Skizze. Dies
erfordert natürlich etwas Fantasie
und vielleicht etwas Erfahrung mit der Gestaltung von
Benutzeroberflächen. Aber es ist sehr wichtig
, dass Sie eine Skizze haben. Also werde ich diese Skizze auf dem
Bildschirm
behalten , während ich das Programm
kodiere. Normalerweise möchtest
du im echten Leben zeichnen, vielleicht auf echtem Papier oder
einfach nur auf einem digitalen Bildschirm. Aber es ist wichtig, es zu haben, und jetzt, wo wir es haben, wollen wir in
der nächsten Vorlesung
damit beginnen, es zu bauen.
169. 168. Die Frontend-Schnittstelle programmieren: Großartig. Jetzt haben wir also eine Skizze unserer grafischen Benutzeroberfläche, und das sollte die Dinge einfacher
machen. Jetzt können Sie einfach
weitermachen und
Ihre grafische Benutzeroberfläche in
Python mithilfe der Kiner-Funktionen codieren Ihre grafische Benutzeroberfläche in Python mithilfe der Kiner-Funktionen Salt Kiner ist eine
Bibliothek, die wir
verwenden werden , um diese Oberfläche zu erstellen Und ich nehme an, Sie
kennen Kinder bereits, weil ich das in einem
der vorherigen Abschnitte
erklärt habe das in einem
der vorherigen Abschnitte
erklärt Wenn Sie Kinder also nicht kennen, gehen
Sie bitte vorher zwei
Abschnitte zurück, dann werden
Sie verstehen, wovon ich hier
spreche. Also behalte ich die
Skizze auf der rechten Seite. Und jetzt wissen Sie, dass Sie
zur Erstellung einer grafischen
Benutzeroberfläche mit Kiner entweder
die Pack-Methoden verwenden können, entweder
die Pack-Methoden verwenden können um Ihr
Widget zu packen, oder die Grid-Methode Wir werden die Grid-Methode verwenden, daher könnte es eine gute Idee sein,
tatsächlich ein Raster
auf Ihrer Skizze zu erstellen Wenn Sie also Ihre Widgets
erstellen, sagen
wir, Sie erstellen eine Unterseite, möchten
Sie die Nummer
der Zeile und die
Nummer der Spalte übergeben . Ein solches Raster
wird die Dinge also einfacher machen. In Ordnung. Und ich möchte diese Dokumentzeichenfolge einfach
löschen. Wir brauchen es nicht und
es spart mir Platz
, sodass Sie hier einen
saubereren Arbeitsbereich sehen können. Ordnung. Von
Skinerimport. Alles. Also erkläre ich den Code
jetzt nicht , weil du diese Dinge bereits
weißt. Wenn es etwas
Neues gibt, werde ich es durchgehen. Window entspricht TK, der TK-Methode, die ein Fensterobjekt
erstellt, und dann möchten Sie
die Main-Loop-Methode anwenden, die im Grunde
eine Möglichkeit ist,
alle Widgets zusammenzufassen , die Sie jetzt in diesen Bereich
eingeben werden In Ordnung, wir haben hier also
vier Labels. Also haben wir hier den Labeltitel
und den Autor und die ISBN. Also werde ich einfach
Fobels mit vier Label-Objekten erstellen. Also nenne ich meine Objekte, meine Variablen von
L eins bis L vier und wir verwenden dafür die
Objektbeschriftungsmethode Fenster ist das übergeordnete Fenster, und der Text sollte der Titel sein. Drücken Sie also die Eingabetaste, Sie
können zur nächsten Zeile wechseln, egal wo Sie sich
in der vorherigen Zeile befinden. Sie müssen also nicht
einfach wechseln, hierher gehen und dann die Eingabetaste drücken, Sie drücken einfach die Eingabetaste
und schon gehen Sie zur nächsten Zeile. Erstens wenden Sie
die Grid-Methode an. Das erste Label ist also Zeile Null, Spalte Null ebenfalls. Dann kannst du
das einfach kopieren und noch
dreimal einfügen. Das wären also L zwei,
L drei und L vier. Und Sie möchten auch
den Text Ihres Labels ändern. Hier und ISBN. Autor wäre Spalte zwei, wie Sie der Skizze entnehmen können Also 02, dann haben
wir hier Eins, Null und dann 12
für das letzte Label. Also lass uns sehen, was wir haben. Ich möchte nur mein Drehbuch aufrufen. In Ordnung, es sieht vielversprechend aus. Fügen wir nun die Einträge hinzu. Das waren also statische Widgets. Jetzt müssen wir einige Einträge hinzufügen. Eine Eins wäre also ein Eintrag. Und entry erhält das Fenster
als ersten Parameter, genau wie jedes andere Widget. Und auch ein
Textvariablenparameter. Dieser Textvariablenparameter erwartet als
Argument den Wert
, den der Benutzer
in das Eingabe-Widget eingibt. Das ist ein räumlicher Datentyp. Sie müssen hier also zuerst tatsächlich einen Datentyp
erstellen, ein Objekt dieses
Datentyps. Nennen wir es also. Wir erstellen den
Eintrag für den Titel, sagen wir den Titeltext, der der Zeichenfolge vary
entspricht. Das ist also die Funktion, die dieses räumliche Objekt
erzeugt. Das würde
dem Titel Geschlecht entsprechen. Das ist es also. Und
Sie müssen dieses Eingabe-Widget auch so rastern. Und die ersten Widgets des
Titel-Widgets
entsprechen Zeile Null und Spalte eins. Das ist es also. Ich kann das hier
schnell multiplizieren und
hier Text und ISBN-Text verfassen hier Text und ISBN-Text Sie müssen auch einfach so die Zahlen oder
weniger Variablen
ändern einfach so die Zahlen oder
weniger Variablen Und natürlich müssen Sie
die Benutzereingaben hier weitergeben . Also das sollte so sein und
diese beiden. In Ordnung. Und schließlich möchten Sie auch
die Zeilen und Spalten
für die Einträge angeben . Es wäre also Null, Drei, und dann haben wir
das Text-Widget, eins, eins. In Ordnung. Und der letzte Eintrag.
Eins. Drei. In Ordnung. Lass es uns überprüfen.
Ja. Sieht gut aus. Großartig. Und jetzt ist die Leasingbox an
der Reihe. Nennen wir es also
Liste eins. Warum nicht? Das würde dem
Listenfeld-Fenster entsprechen. Und dann möchten Sie die Höhe
Ihres letzten Felds und auch
die Breite
angeben . Also habe ich darüber nachgedacht,
sechs und 35 zu addieren. Es wäre eine gute
Höhe und Breite. Sie können
verschiedene Höhen und
Breiten probieren und sehen, was besser wird. Und dann würde ich das gerne bewerten. Raster. Das würde also bei Zeile Nummer zwei und Spalte Null beginnen. Wenn wir es jedoch so
belassen, werden
die Dinge nicht so laufen, wie wir es erwarten. Eigentlich können
wir das versuchen. Wie Sie sehen können,
belegte das Listenfeld nur die erste Zelle. Also die erste Zelle der
ersten Spalte in Zeile Null, eins, zwei, also Zeile
zwei, Spalte Null. Stattdessen wollen wir, dass
sich dieses Listenfeld auch auf
die anderen Spalten und
die anderen Zeilen erstreckt auch auf
die anderen Spalten und , weil wir hier später Schaltflächen
haben werden, also wollen wir das überspannen. Und Sie können die Skizze hier sehen. Wir können also einen
Zeilenspannenparameter hinzufügen, und das würde auch einer Spanne von
sechs Spalten entsprechen. Das wären also zwei. In Ordnung. Also das wäre ein Listenfeld. Wir müssen
dort jedoch auch eine
Bildlaufleiste hinzufügen, damit die Liste gescrollt werden kann wenn die
Liste viele Daten enthält,
viele Datensätze, um der Liste
eine Bildlaufleiste hinzuzufügen Die Logik hier funktioniert so. Sie erstellen Ihre Bildlaufleiste teilen Ihrer
Bildlaufleiste
dann
die Liste mit, in der die
Bildlaufleiste scrollen muss Und dann sagst du deiner Liste auch, wer ihre Scrollleiste Lassen Sie uns also zunächst
die Scrollleiste als
eigenständige Bildlaufleiste erstellen die Scrollleiste als
eigenständige Bildlaufleiste Sagen wir also SB One. Scrollbar-Methode. Das wird
durch das Fenster berührt. Und dann wenden Sie
die grüne Methode an. Die Bildlaufleiste würde
sich also in einer dritten Spalte befinden. Und nachdem Sie
diese beiden Objekte erstellt
haben, möchten Sie
eine Konfigurationsmethode
auf die Lease-Box und
eine Konfigurationsmethode anwenden . Zum Scrollbar-Objekt. Und diese
Konfigurationsmethoden erhalten Argumente. Das wäre also ein Scroll-Befehl, Satz von einem Punkt
entspricht. Das ist es heißt, dass die
vertikale Bildlaufleiste entlang der Y-Achse auf diese Bildlaufleiste
eingestellt wird und Sie dann zur
Bildlaufleistenmethode wechseln. Entschuldigung, das muss konfiguriert werden, dann übergeben Sie den Befehl
equals, um eine Y-Ansicht aufzulisten Das sollte also funktionieren. Sie übergeben hier einen
Befehlsparameter,
was bedeutet, dass sich
beim Scrollen der Leiste die vertikale Ansicht
des letzten Balkens ändert. Schauen wir uns also an, wie das läuft. Und es scheint, als hätte ich hier etwas
vermasselt. Ich glaube, ich habe die Position
der Bildlaufleiste in Zeile eins und in Spalte drei Die Bildlaufleiste sollte also
eigentlich Zeile zwei Spalte zwei sein. Lassen Sie uns das noch einmal überprüfen.
Ja, scheint zu funktionieren. Allerdings
sieht es nicht sehr zentriert , weil wir
es durch die gleichen Reihen ziehen müssen , wie
wir es hier in der Box getan haben Also müssen wir hier
einen Rowspan-Parameter hinzufügen und ihn auf sechs weitere
Scrollbalken
setzen, die zentriert aussehen Ordnung, jetzt müssen wir nur noch diese
Button-Widgets hier hinzufügen Großartig. Wir haben also sechs Knöpfe. Fangen wir mit dem ersten an. Wir haben die Button-Methode. Fenster und Text, also
Schaltflächen haben Text. A ist der erste. Und dann dachte ich daran
, eine Breite von 12 anzugeben. Also sei weg, fertig. Das wäre Zeile
zwei Spalte drei. Und wir haben fünf weitere Knöpfe. Also werde ich diese sechs einfügen, glaube ich. Also b2b3,
vier, sechs Natürlich
haben diese Schaltflächen
jetzt keinen Befehlsparameter, weil wir später hier einen Befehlsparameter hinzufügen werden,
und das wird entscheiden, was
die Schaltflächen Aber im Moment ist das in Ordnung. Diese Schaltflächen werden also
alle in Spalte drei angeordnet, und jeder
hat einen anderen Zeilenwert. Und sechs. Großartig.
Schauen wir mal, was wir haben. Und bumm. Ich habe vergessen, eine Zeilennummer für den
geschlossenen Boden anzugeben. Sieben. Und jetzt sieht es besser aus. So
erstellt man also eine
grafische Benutzeroberfläche. Natürlich machen diese Knöpfe
vorerst nichts. In der nächsten Vorlesung werde
ich Ihnen zeigen, wie Sie Aktionen
an diese
grafische Benutzeroberfläche anhängen können. Wir werden also am Backend arbeiten und SQLite 3 verwenden um mit
der Datenbank zu interagieren und diese Daten in dieser
grafischen Benutzeroberfläche
abzurufen Ich hoffe also, dass meine Routinen und meine
Praktiken Ihnen helfen werden, grafische
Benutzeroberflächen mit
EZ zu erstellen , und wir sehen uns
in der
170. 169. Das Backend der App programmieren: Hallo, willkommen zu
dieser neuen Vorlesung. Und hier
bauen wir unser Buchhandlungsprogramm weiter aus
, das
Buchaufzeichnungen speichert und aus einer Datenbank abruft Soweit Sie wissen,
haben wir die grafische
Benutzeroberfläche mit Kindern erstellt Das ist also unser Skript. Also im Grunde haben wir das
Frontend unseres Programms. Und jetzt, das ist unsere
grafische Benutzeroberfläche. Und im Grunde müssen
wir jetzt all diesen Tasten einige Funktionen
hinzufügen. Nehmen wir zum Beispiel an, wenn wir die Schaltfläche Alle
anzeigen drücken, wird
eine Funktion ausgelöst, die Daten aus
einer SQL Lite-Datenbank auswählt und
diese Daten dann abruft und sie
hier in dieses Listenfeld einfügt. Das heißt, wir
müssen eine Datenbank erstellen, eine SQLite-Datenbank
mit SQLite drei Wir müssen auch zuerst eine Tabelle
erstellen. Wir könnten das also
im Skript machen, aber ich ziehe es vor, tatsächlich
ein anderes Skript zu erstellen und dieses Skript dann hier zu
importieren. Also Import, lass uns
das neue Skript-Backend aufrufen. Also müssen wir
ein Backend für das
Pi-Skript erstellen . In Ordnung. Und jetzt möchte ich den Namen meines
Frontend-Skripts
ändern meines
Frontend-Skripts ,
damit wir
das gleiche Muster beibehalten. Sagen wir also Frontend. Ordnung. Also sind wir jetzt
im Frontend-Skript und hier sind wir
im Backend-Skript. Das bedeutet also, nehmen wir Sie erstellen eine View-Funktion, die Daten aus
der Datenbank auswählt , und Sie
erstellen diese Funktion hier, und dann gehen Sie
zur Schaltfläche „Alle anzeigen und dann zum
Befehlsparameter hier, und das wäre identisch. Sagen wir Befehl, nur
um Ihnen eine Vorstellung zu geben, Befehl entspricht dem Backend
und dem Namen der Funktion Also so etwas. Ordnung. Ich hoffe,
das ergibt Sinn. Vorerst wäre es jedoch
großartig, wenn wir dieses Drehbuch
vergessen würden. Wir müssen also
die grafische Benutzeroberfläche berücksichtigen,
aber es ist gut, vorerst nicht
mit diesen Widgets zu interagieren. Stattdessen
drucken wir die Ausgaben
von Funktionen aus, die Funktionen, die wir hier
als Zeichenketten in der
Befehlszeile erstellt haben . Wir werfen diese
Daten also nicht in das kleinste Feld, sondern in das Terminal hier. Ordnung. Lass uns anfangen zu programmieren. Importiere SQLite drei. Das ist das Erste
, was Sie tun möchten. Und ich werde hier ein Bild
der grafischen
Benutzeroberfläche behalten , damit Sie sich leicht darauf beziehen können. Also müssen wir
eine View-Funktion erstellen. Aber vorher
möchte ich eine Datenbank erstellen, also eine Verbindung zur Datenbank. Und das möchte ich
in die Funktion einfügen. Sagen wir also Function Connect. Und wir haben ein Verbindungsobjekt. Das wäre also ein
Scul Three Connect. Und nennen wir die
Datenbankbücher Punkt dB. In Ordnung. Also stellen wir eine
Verbindung zur Datenbank her. Dann definieren wir ein solches
Cursor-Objekt. Und als Nächstes müssen wir die SQL-Anweisung
ausführen. Also Cursor-Objekt, ausführen
und in doppelte Anführungszeichen setzen, wir geben die SQL-Anweisung ein. Wir haben also eine Datenbank, und wir benötigen auch eine Tabelle in der Datenbank, in der wir
unsere Buchinformationen speichern können. Denken Sie jetzt darüber nach. Benutzer: Wenn Sie dem Benutzer dieses Programm geben, wird
er das Programm ausführen. Und jedes Mal, wenn sie das Programm
ausführen, muss
Ihr Skript
überprüfen, ob es eine bestehende Tabelle in
der Datenbank des Buches gibt. Wenn es also eine Tabelle gibt, sagen
Sie, erstellen Sie die Tabelle nicht. Wenn es keine Tabelle gibt,
möchten Sie die Tabelle erstellen. Erstellen Sie also eine Tabelle, falls sie nicht existiert. Und nennen wir ein Tabellenbuch, nur um es
vom Datenbanknamen zu unterscheiden. Und dann möchten Sie einige Parameter
übergeben. Der erste Parameter, den ich übergeben
möchte, ist die ID. Verwechseln Sie das also nicht
mit der ISBN-Nummer. Die Buchidentifikation, das ist nur eine Zahl, die
bei Null beginnt, und sie wird automatisch
um eins erhöht,
sodass wir die Kontrolle darüber haben,
wie viele Datensätze wir in der Datenbank
haben Es ist also eine gute Idee, diese ID hier
zu haben, das wäre eine Ganzzahl, und Sie müssen sie
auf den Primärschlüssel setzen Das ist also eine obligatorische
Spalte in Ihrer Tabelle. Dann haben Sie Titel
als Text, Autor, hier
als Text als Ganzzahl, und ISBN, auch das ist eine
Ganzzahl Ordnung, das ist es.
Sie möchten die Änderungen übernehmen und dann die Verbindung
schließen. In Ordnung, also haben wir
eine Verbindungsfunktion erstellt. Später, wenn wir dieses Skript
ausführen, also das Frontend-Skript, und dann importieren Sie das Backend, dieses Skript, das Skript
des Backends. Der Code des Backends
wird also von Python gelesen. Wenn Sie diese Funktion jedoch nicht
aufgerufen haben, wird
dieser Code nicht ausgeführt. Was Sie stattdessen tun möchten,
ist diese Funktion zu haben. Wird jedes Mal ausgeführt, wenn Sie diese Funktion
ausführen. Sie führen also das Frontend aus
und das importiert das Backend, sodass der gesamte Code ausgeführt wird Und diese Zeile hier wird ausgeführt. Die Funktion wird also immer dann ausgeführt
, wenn Sie das Frontend ausführen. Ordnung. Ich hoffe
, das ergibt Sinn. Oder lassen Sie mich das schnell besser
erklären. Wir haben also ein A-Pi-Skript und wir haben ein B-Pi-Skript. Und im A-Pi-Skript importieren
wir das B-Skript. Und was wir
im B-Skript haben, ist eine Funktion PU, die etwas auf dem Bildschirm
ausdruckt. Hey, und speichere das und
speichere das auch. Wenn Sie also einen Punkt Pi ausführen, passiert vorerst
nichts, weil Sie gerade Ihr Skript
definiert haben. Aber wenn Sie das
Skript hier, richtig, food,
safe aufrufen und A erneut ausführen, erhalten Sie
diesmal die
Ausgabe der Funktion. Das ist also die Idee.
Danke. Und zurück zu unserem
Drehbuch aus der realen Welt. In Ordnung. Jetzt haben wir die
Connect-Funktion. Beginnen wir mit der Erstellung einer Funktion zum Einfügen,
die einige Daten
in die Datenbank einfügt. Also fange ich mit der Insert-Funktion an
, weil das eine einfachere Funktion ist
als die andere. Also möchte ich zuerst mit
den einfachen Dingen beginnen. Beilage des Entwicklers.
So nenne ich meine Funktion. Und denken Sie darüber nach, dass Sie dort vier Einträge
haben. Sie erwarten also
vom Benutzer, dass er
Titel, Autor, Jahr
und ISBN-Nummer eingibt Titel, Autor, Jahr
und ISBN-Nummer Sie möchten hier also vier
Parameter und ISBN übergeben. Ordnung. Und dann müssen Sie
natürlich eine
Verbindung zur Datenbank herstellen. Da diese Funktion hier
ist, wird sie nur vorübergehend eine Verbindung
zur Datenbank herstellen
und prüfen, ob
eine Tabelle vorhanden ist , und die Verbindung wird
geschlossen. Sie haben hier also eine geschlossene
Verbindung Wenn Sie die Einfügetaste drücken,
wenn Sie die Eingabe-Taste drücken, müssen
Sie eine neue
Verbindung zur Datenbank herstellen. Und lassen Sie mich weitermachen und
auch diese beiden Zeilen
besorgen , denn wir brauchen
sie auch, richtig. Und hier führen wir unsere spezifische
SQL-Anweisung in Anführungszeichen aus. Mit der
Adentry-Schaltfläche wird also eingefügt. In das Buch, also die Werte des Tabellenbuches. Und hier ist jetzt ein Trick. Wir haben hier eine ID, das
ist also ein Wert, der automatisch erhöht wird, sodass wir ihn nicht manuell
übergeben müssen Und was wir stattdessen tun können,
ist hier einen neuen Wert zu übergeben. Und Python versteht das und erstellt
die ID automatisch. Und dann haben wir
vier Fragezeichen, eines für jeden unserer Werte. Dann müssen Sie Ihre Parameter
als zweiten Parameter
der Ausführungsfunktion
übergeben . Also als Tupel hier,
Titel hier und ISBN Ordnung, lassen Sie mich
eine weitere Funktion schreiben, und dann führen wir das Skript um es auszuprobieren und zu sehen,
wie es läuft Also auf jeden Fall, sagen wir
die View-Funktion. Dadurch werden also alle
Datenzeilen aus der Tabelle abgerufen. Also kopieren wir das
und legen sie hier ab. Also stellen wir eine Verbindung zur Datenbank her, erstellen ein Cursor-Objekt und führen dann
eine SQL-Anweisung aus. Und weil es
sich dabei um eine Select-Anweisung handelt, werden wir keine
Änderungen an der Datenbank vornehmen, sodass wir hier keine
Commit-Methode benötigen. Und das ist eigentlich
ganz einfach. Wählen Sie alles aus dem Buch aus. Sie müssen Ihre Auswahl also tatsächlich als Umkipp
zurückgeben Dann schnappst du dir diese Auswahl und fügst sie
in das Listenfeld Sie möchten also, dass die
View-Funktion einen Umschwung zurückgibt. Sagen wir also, rose, entspricht cur fetch all und dann können Sie die Verbindung
schließen, aber Ihre Daten bleiben in der Variablen Rose
gespeichert, sodass Sie hier einfach Zeilen zurückgeben können.
In Ordnung. Also lass uns das Drehbuch jetzt ausprobieren. Und die Art, es auszuprobieren, wäre, eine
gedruckte Anweisung zu verwenden. Wir würden also Insert aufrufen wollen und dann
einige Daten manuell eingeben. Im echten Programm wird
diese Einfügefunktion also wird
diese Einfügefunktion irgendwo
im Anzeigeneintrag
ausgeführt. Taste. Aber vorerst müssen
wir die Dinge einfach halten und unser Ziel
Schritt für Schritt erreichen. Fügen Sie ein, lassen Sie uns hier einige
Werte übergeben. Titel. Sagen wir das C und dann das Tablet
des Autors John. In Ordnung. Und hier ist eine Ganzzahl, also müssen Sie nur
eine Zahl übergeben und ISBL ist
also eine Ganzzahl Sie müssen
sie also nicht in Anführungszeichen setzen. Und dann möchten Sie auch die Ausgabe der
View-Funktion
ausdrucken Ausgabe der
View-Funktion
ausdrucken Großartig. Mal
sehen, wie das läuft. Das wäre das
Backend-Skript. Toll. Also wurde der Datensatz in
die Datenbank eingefügt und die View-Funktion
ausgedruckt. Wenn Sie das Skript erneut ausführen, erhalten
Sie zwei Datensätze, da die Einfügefunktion zweimal
ausgeführt wurde. Ordnung. Scheint gut
zu laufen. Also, was haben wir sonst noch? Wir haben eine Suchfunktion. Und wir würden
eine Or-Suche implementieren. Das bedeutet also, dass der
Benutzer einen Titel oder
einen Autorennamen oder das
Jahr oder die ISBN-Nummer eingibt, oder er kann sich dafür entscheiden, alle
gleichzeitig einzugeben Nehmen wir jedoch an, er
gibt nur das Jahr ein, erhält
er alle Zeilen, die diesem Jahr
entsprechen Also müssen wir hier auch
vier Parameter übergeben. Ben, alles klar. Und dann brauchen
wir diese Codezeilen, also stellen Sie eine Verbindung zur Datenbank her, zum Cursor-Objekt und führen Sie es dann aus. Also lass uns eine Weile hier bleiben. Wir möchten alles aus
Büchern auswählen, bei denen der Titel gleich
etwas ist oder der Autor gleich etwas
ist
oder das Jahr gleich
etwas ist oder die ISBN Und dann wäre der zweite
Parameter das Tupel
der Argumente, PhtalesBN Dann müssen wir alle
Zeilen abrufen, die
von dieser Abfrage zurückgegeben werden, und
sie in dieser Zeilenvariablen speichern, die Verbindung
schließen und erneut Zeilen die Verbindung
schließen und erneut zurückgeben Alles klar. Ein Problem, auf das wir hier stoßen können,
ist jedoch , dass
der Benutzer, sagen
wir, den
Namen des Autors nur an die Einträge weitergeben möchte sagen
wir, den
Namen des Autors nur an die Einträge Diese Funktion ruft also
nur die Argumente
für den Autorenparameter ab. Diese anderen Parameter
bleiben ohne Wert. Und dann erhalten Sie
eine Fehlermeldung, weil Ihre Funktion so konzipiert ist
, dass sie vier Parameter hat. In diesem Fall möchten Sie
einige leere Zeichenketten
als Standardwerte übergeben . Ordnung. Und diese beiden. Wenn der Benutzer also einen Autorennamen
übergibt, sagen
wir John Smith, sucht
diese SQL-Anweisung nach einem leeren Titel oder nach dem Autorennamen John Smith oder nach einem leeren Ohr
und einer leeren ISBN und so weiter Und es werden alle Zeilen
mit John Smith als Autorennamen zurückgegeben mit John Smith als Autorennamen Ordnung. Also lass uns
das sagen und es ausprobieren Also müssen wir verbinden, die Druckansicht
einfügen. Sagen wir die Erde. Ich
füge hier einen weiteren Datensatz ein John Smith. In Ordnung. Und dann, sagen wir, Suche
drucken und Sie
möchten einige Argumente übergeben. Zum Beispiel ist Autor gleich
John Smith. In Ordnung. Ohne ein Zitat hier. Und
mal sehen, wie das geht. Also haben wir hier diese Liste von Zeilen aus der View-Funktion , weil wir hier auch
die View-Funktion haben. Und dann gibt die Suchfunktion
diese Zeile für uns zurück. Also die Zeile mit ID drei und
mit John Smith als Autor. Also das funktioniert gut. Lassen Sie uns weitermachen und
eine Verdünnungsfunktion erstellen. Lassen Sie uns also darüber nachdenken, wie der Benutzer einen Datensatz
löschen möchte. Wahrscheinlich würden sie also einige Datensätze
in der zugehörigen Box sehen wollen . Dann würden sie einen der Datensätze
auswählen wollen. Nehmen wir den Rekord
für ID Three, die Erde, John
Smith usw. an. Also würden sie das auswählen und dann die Löschtaste drücken Das heißt, wir wollen zuerst die
Listenauswahl übernehmen, also die Auswahl
aus dem Listenfeld, wir würden das als Tupel aufnehmen, aber
darüber werden wir später nachdenken Also nehmen wir das als Tupel. Dieses Tupel hat eindeutige
Identifikationsnummern oder die ID. Wir möchten also auf diese ID verweisen
und dann zu
unserer Datenbanktabelle gehen und die Zeile mit dieser ID
löschen Hoffe also, dass das bei der
Löschfunktion nicht sehr
verwirrend ist , also würden wir die ID
des Tupels erwarten , das der
Benutzer auswählen wird Und dann würden wir
diesen Code haben wollen und von dort aus beginnen Stellen Sie also eine Verbindung zur Datenbank her, Cursor-Objekt,
führen Sie eine Anweisung aus. Ordnung. Mal
sehen, wie das läuft. Also wollen wir aus dem
Buch löschen , in dem
ID etwas bedeutet. Großartig. Und dann
ist dieses Etwas der ID-Parameter. Also das Argument
dieses Parameters hier, und das ist der Spaltenname. Verwechseln Sie das also nicht mit
diesem Funktionsparameter für den Spaltennamen Vergiss das Komma hier nicht. Und ja, das ist es im Grunde. Speichern wir dieses Skript jetzt
und führen wir es aus. Wir fügen dort einige Daten ein. Sagen wir diesmal die Sonne. Und so hätten wir
das C, wieder das C, die Erde und die Sonne, also würde ich die Erde gerne löschen. Und ich würde
sie hier reinstellen, löschen wollen. Die Erde hat also eine Vorstellung von drei. Also würden wir hier drei bestehen wollen. Dann würden wir uns alle
aktuellen Datensätze ansehen sobald wir sie gelöscht haben. In Ordnung. Also hier sind unsere Aufzeichnungen und die Erde ist verschwunden.
Also funktioniert es super. Wie gesagt, diese ID
wird wieder aus der Tabelle extrahiert. Das Tupel wird also
die ID als erstes Element haben. Also werden
wir im Grunde genommen von Tuple das Element mit dem Index Null
abrufen und das erste
Element an diese Löschfunktion übergeben Großartig. Die Funktion wäre ein Update. Aktualisieren. Und noch einmal, wie möchten
Sie Datensätze aktualisieren? Wie würde der Benutzer also einen Datensatz aktualisieren
wollen? Nun, auch hier
könnten sie erwarten, dass sie
eine Zeile aus dem Listenfeld
von Tinder auswählen eine Zeile aus dem Listenfeld
von Tinder und die Werte dieser Zeile in den Eingabe-Widgets
angezeigt Von dort aus möchte der Benutzer
möglicherweise eine
dieser Zellen dieser Einträge ändern und unten auf „Aktualisieren“ klicken Also wieder holen wir uns die
Auswahl aus dem Listenfeld, dann würden wir uns auf die Idee beziehen. Also ID hier als ersten Parameter, aber wir möchten auch
die neuen Werte, die
der Benutzer
aus diesen Einträgen haben möchte, abrufen die neuen Werte, die
der . Nehmen wir an, der Benutzer möchte den Titel von
Sonne zu Mond
ändern, sagen
wir, und Sie würden diesen Titel
bekommen. Der Titel wird also im
Eingabefeld angezeigt und hier übergeben. Das Gleiche gilt für den Autor hier
und die ISBN. In Ordnung. Und dann
möchten Sie Ihre Tabelle aktualisieren. Aktualisieren Sie also
die Tabelle, in der die ID dieser entspricht. Aktualisieren Sie die Tabelle mit
diesen neuen Werten, wobei ID diesem Wert entspricht. Zuallererst
müssen wir jedoch all diese Zeilen abrufen. Ordnung. Also aktualisiere ,
buche und du sagst fertig. Der Titel des Keyword-Sets
entspricht also einem Fragezeichen. hier gilt: Fragezeichen Auch hier gilt: Fragezeichen
und ISBN bedeuten Fragezeichen Aktualisieren Sie also das Buch und
legen Sie diese Werte , dass ID
einem anderen Fragezeichen entspricht Also dann bestehen wir hier ein Triple. Also ID, Titel, Autor und ISBN. Also sieht es gut aus. Wir übernehmen die Änderungen und
schließen die Verbindung. Und mal sehen, wie das läuft. Derzeit haben wir also
die Zeilen in der Tabelle, das C, wieder das C, die Sonne. Ja, diese drei Zeilen. Und lass uns die Sonne auf den neuesten Stand bringen. Also möchte ich das
zuerst kommentieren und auch löschen. Konzentrieren wir uns also auf die
Update-Funktion und das Update. Sie möchten also
die Idee der Zeile weitergeben , damit Sie sie aktualisieren möchten. Und dann möchten Sie
die Werte in der richtigen Reihenfolge übergeben . Also, was du für den neuen
Titel willst, sagen wir, der Mond. Und
wenn der Benutzer dann
in der realen Oberfläche in der grafischen Benutzeroberfläche nur den Titel
ändern möchte, lässt
er die anderen
Werte unverändert. Diese Werte werden also durch
die vorhandenen Werte ersetzt. Also John Smith und Jahr
1919 die ISBN-Nummer. Aber in diesem Fall befinden wir uns nur in einem Geschmacksmodus, sodass wir diese Werte
übergeben können Glatt. In Ordnung. Und eine Zahl. Also lass uns
sehen, wie das jetzt läuft. Und es scheint, dass es nicht funktioniert hat. Die Sonne ist immer noch da. Also
lass uns sehen, was wir hier haben. Aktualisiere den Titelautor
hier, ISBN, wo IDs. Die ID sollte hier also am
Ende des Sturzes stehen. Hmm. B, weißt du, wir haben
sie in die richtige Reihenfolge gebracht , die wir hier festgelegt haben Also lass uns das nochmal ausprobieren. Hm. Jetzt funktioniert es. Also wurde die ID Vier durch Mond,
John Smooth und
die anderen Werte
ersetzt . Großartig. Also ich denke, wir haben
das Ben-Skript fertig. Und jetzt müssen wir
all diese Funktionen
an unsere Tasten anhängen . Wir haben also noch viel zu tun, und das werden wir in
der nächsten Vorlesung tun.
171. 170. Das Frontend mit dem Backend verbinden, Teil 1: Hey, willkommen nochmal. Und das ist der letzte Schub , den wir
unserer Bewerbung geben werden. Am Ende dieser Vorlesung werden
Sie also über ein voll funktionsfähiges
Programm verfügen, das Buchaufzeichnungen
in einer ASQE Lit-Datenbank speichern
und abrufen kann Buchaufzeichnungen
in einer ASQE Lit-Datenbank speichern
und abrufen Also, wie Sie wissen,
haben wir zwei Skripte. Wir haben Front- und Punkt-Py und wir haben das
Backend-Pi-Skript. Wir sind mit
dem Bend Dot Pi-Skript komplett fertig. Deshalb haben wir all
unsere Funktionen entwickelt, die eine Verbindung zur Datenbank herstellen und Daten
drittens anzeigen, suchen,
löschen und aktualisieren. Und jetzt müssen wir zum Frontend-Skript gehen , weil wir
es ein wenig anpassen müssen
, sodass das Front-End-Skript
Daten aus dem
Backend-Skript abrufen kann , oder genauer gesagt, die
Funktionsausgaben abrufen kann, bei
denen
es sich im Grunde um Datentupel handelt Und fügen Sie dann diese
Datentabellen in das Listenfeld ein. Im Grunde
drückt der Benutzer also eine Taste, und dann werden diese Funktionen ausgelöst und die Daten werden
in das Listenfeld eingefügt. Fangen wir also mit
den einfachsten Dingen an. Das erste, was ich implementieren
möchte, ist, die Datensätze im
Listenfeld abzurufen , wenn der Benutzer die Ansicht oder die Schaltfläche
drückt. Zuallererst müssen
Sie, wie ich
bereits erwähnt habe ,
das Ben-Skript
hier importieren , damit Sie
Ihre Funktionen später als
Backend-Punktansicht bezeichnen
können , zum Beispiel
für die
Datenbankansichtsfunktion Nein, ich habe erwähnt dass Sie, um eine
Funktion an einen Boden anzuhängen, dorthin gehen müssen, wo Sie diesen Boden definiert
haben Also zur unteren Funktion, und dann fügen Sie hier einen Befehl hinzu. Also Befehl und dann geht
hier die Funktion rein. Wenn wir nun einfach
die View-Funktion
des Bend-Skripts aufrufen . Wenn wir also die Bent View-Ansicht
ausführen, führen wir
lediglich die View-Funktion aus, sodass wir
keine Daten in das Listenfeld einfügen Wir wollen also
eine andere Funktion haben und diese Funktion
haben, die Daten aus
der View-Funktion
abrufen und diese Daten in
das Listenfeld einfügen Nennen wir
diese Funktion zum Beispiel den Befehl View. Einfach so. Denken Sie daran, dass Sie
hier keine Klammern
übergeben , denn wenn
Sie das Skript ausführen, diese Funktion hier,
wenn Sie das so machen, wird
diese Funktion
ausgeführt, wenn Python Ihr Skript
liest, aber das wollen
Sie nicht. Das willst du, wenn du
die Taste drückst , wenn der Benutzer die Taste
drückt. Diese Funktion wird ausgeführt. Also Tkinter weiß das und wenn du das einfach so weitergibst, Python Tkinter
es aus, wenn die Taste gedrückt wird es aus, wenn die Also Befehl anzeigen, und jetzt brauchst
du eine Also lass uns unsere
Funktionen einfach hier schreiben. Der View-Befehl. Denken Sie also jetzt über die Ausgabe nach. Die Ausgabe, die wir
erhalten, ist ein Tupel. Also werde ich hier
die View-Funktion ausführen,
also die Ansicht drucken, nur
um zu sehen, was wir haben, falls Sie es vergessen haben Also Python Band Punkt Pi. Also
haben wir tatsächlich eine Liste von Tupeln. Also Stürze in der Liste. Und was wir jetzt tun wollen, ist jedes dieser Tupel
einzufügen Also jede dieser
Datenbankzeilen
als neue Zeile in der Liste
innerhalb des Listenfeldes Wir können also durch dieses
Tupel iterieren. Das wäre also, sagen wir, für
eine Zeile in der Backend-Punktansicht Also das ist eigentlich
diese Liste hier. Das ist also eigentlich ein
Objekt und ein Listenobjekt. Und dann, Liste eins, glaube
ich, so ist
unser Listenfeld codiert. Ja, es ist also Liste eins. Das ist eine Variable, in der
unser Leasingfeld mit dem Punkt Einfügen steht. Und dann
erhält die Insert-Methode zwei Argumente. Das erste Argument
ist der Index, in Sie Ihre Werte einfügen möchten. Sie haben also ein Listenfeld, und dieses Listenfeld hat
mehrere Stellen. Es hat also den ersten Platz und dann den zweiten,
dritten usw. Wenn Sie es also an
die erste Stelle setzen möchten , geben Sie Null ein. Wenn Sie
es an die zweite Stelle setzen möchten, würden
Sie hier einen Index
von eins eingeben und so weiter. Aber denk mal drüber nach. Wir arbeiten uns
durch diese Tuben. Also gehen wir zum ersten Tupel, und dann würden wir es einfügen
wollen, und wir würden
dieses Tupel als ersten
Punkt der Liste platzieren wollen dieses Tupel als ersten
Punkt der Liste Und dann würden wir
wollen, dass das zweite als zweites
Element
eingefügt wird , und so weiter In solchen Fällen hat
die Insert-Methode also auch einen speziellen Index, der
End genannt wird , und dann übergeben Sie die Zeile. Das bedeutet
also, dass die neuen Zeilen am
Ende des Felds stehen. Sie haben also diese Zeile und
das ist die erste Zeile, und dann wird sie an das Ende
der vorhandenen Zeilen gesetzt. Dadurch wird sichergestellt
, dass jede neue Zeile am
Ende des Listenfeldes eingefügt wird. Ich hoffe also, dass das klar ist. Und ich würde das Skript eigentlich
gerne ausführen. Jetzt haben wir also das
Frontend. Kein Kuchen. Ich habe hier einen Fehler gemacht. Also eigentlich möchte ich das
Backend hier
so importieren . Führen Sie es erneut aus. Und wir haben die Schnittstelle. Schauen wir uns also an, was VO hat. Der Name Backhand ist in Zeile fünf nicht
definiert. Also ja, natürlich, es ist nicht definiert, weil
ich hier einen Tippfehler habe Biegen Sie sich. In Ordnung. Lass es uns nochmal versuchen. Schließ es. Lass uns sehen. Großartig. Also haben wir die Zeilen in der IS-Box
angezeigt bekommen. Wenn Sie es jedoch immer wieder
und wieder drücken , werden
diese Zeilen
an die vorhandenen angehängt Wir müssen uns also
überlegen, wie wir
tatsächlich ein leeres
Listenfeld haben können , wenn wir auf den unteren Rand drücken Das ist eigentlich sehr einfach zu machen. Wir müssen hier sicherstellen , dass bei der Ausführung dieser
Zeilen das Listenfeld bereits leer ist. Wir können also eins auflisten, löschen und Null
stellt sicher, dass Sie alles vom
Index Null aus
der Zeile mit dem Index Null
bis zum Ende der letzten Zeile
löschen . Schauen wir uns also an, wie das läuft. Ve, und wenn Sie die
Vegan-Ansicht erneut drücken, erhalten
Sie immer alle Zeilen
, die Sie in der
Datenbank haben, in der Tabelle Großartig. Lassen Sie uns nun weitermachen und
eine ähnliche Funktion für
den Sucheintrag unten definieren . Die Schaltfläche ist also diese
hier, Sucheintrag. Und wieder möchten wir, dass
der Benutzer mindestens einen Wert in die
Einträge in den Eingabefeldern eingibt, und dann drückt er die
Sucheingabe-Schaltfläche
und erwartet dann, dass
das Programm die Zeilen zurückgibt, die den Eintrag
enthalten, den der
Benutzer in das Eingabefeld eingegeben hat. Also nochmal, Sie möchten Daten in das Feld
einfügen. Also auch hier können Sie einfach
die Suchfunktion oder
das Ben-Skript in here aufrufen . Sie benötigen also eine Wrapper-Funktion. Sagen wir also Suchbefehl. Ein weiterer guter Grund
, warum Sie
diese
Wrapper-Funktionen sozusagen verwenden möchten ,
ist, dass
Sie in einigen Fällen
wie diesem hier einige
Parameter an die Funktion übergeben Wenn Sie sich also das Backend ansehen und die View-Funktion
keine Parameter hatte, aber die Suchfunktion
hat einige Parameter Das bedeutet, dass Sie hier keine Klammern setzen
dürfen, also müssen Sie eine andere
Funktion verwenden, bei der Sie Ihre
Haupt-Backend-Suchfunktion
mit Parametern
aufrufen . Und das
werden wir jetzt tun. Also def search, command. Und wieder der Suchbefehl, was wir tatsächlich als
Argument erhalten , ist ein Titel
, dass der Benutzer einen Autorennamen und
hier eine ISBN-Nummer
eingibt Nun werden wir diese Parameter
über
die Eingabe-Widgets abrufen Eingabe-Widgets Also, wo ist der Eintrag für den Eintrag? Hier sind die Eingabe-Widgets, und Sie sollten
sich daran erinnern, dass wir hier
dieses String-Var-Objekt haben . Diese Variable, die den
Datentyp Zeichenfolge
hat , wird als Wert,
als Text oder als Zahl
angegeben , die
der Benutzer in
das Eingabe-Widget eingibt. Behalte das also im Hinterkopf.
Lassen Sie uns hier weitermachen und das erste, was Sie tun
möchten , ist, einen Punkt aufzulisten und zu löschen. Sie möchten also die Liste leeren. Ordnung. Und dann müssen
Sie Ausgabe der
Backend-Liste
durchgehen, weil, wissen
Sie, in diesem Fall lassen Sie uns das schnell ausführen,
also das Backend-Skript Also
suchen wir nach dem Autorennamen John Smith, Backend-Punkt Ordnung, wir haben im Moment keinen
John Smith, also suchen wir nach John Smooth Also haben wir dort eine leere Liste. Speichern Sie noch einmal und Sie werden sehen
, dass wir eine Liste mit Stürzen haben. In diesem Fall haben
wir also nur ein Tupel,
aber Sie verstehen schon, was ich meine Das heißt, wir müssen im
Backend, Punkt,
Suche erneut durch vier Zeilen
iterieren im
Backend, Punkt,
Suche erneut durch vier Zeilen Und hier musst du vorsichtig sein. Die Suchfunktion
hat also Parameter, und der erste Parameter
wird der Titeltext sein. Also der Text, den der
Benutzer in das Eingabe-Widget eingibt,
das
Texteingabe-Widget Wir sind jedoch noch nicht fertig, da der Titeltext eigentlich
ein String-Objekt ist, also keine einfache Zeichenfolge Und was wir tun müssen, ist hier
tatsächlich eine Get-Methode
anzuhängen, und das wird
ein String-Objekt ausgeben Wenn der Benutzer also John
Smooth-Tarif in das Widget eingibt, wird eine einfache
John-Smooth-Zeichenfolge erzeugt Also hoffe ich, dass das Sinn macht. Nochmals Text verfassen, Methode abrufen. Dann haben wir Jahr Text Punkt Get und zuletzt ISBN Text Punkt Get Für ein Objekt in der Liste
gibt die Suchfunktion
für
uns also gibt die Suchfunktion
für aus, wenn sie
die Datenbank durchsucht, wir wollen einfach
neue Werte am Ende
der Liste einfügen , einfach so Ich kann sehen, dass die Syntaxhervorhebung
hier nicht funktioniert, also habe ich
wahrscheinlich einen Tippfehler Mir fehlt hier eine Spalte. Jetzt waren vier und mehr lila
gefärbt. Okay, also lass uns
das Frontend-Skript ausprobieren. Und lassen Sie uns nach dem
Autor John Smooth suchen. Nun, natürlich drücke ich
den Knopf zum Sichtloch, damit ich alles hier habe. Sie möchten also die
Suchtaste drücken. In Ordnung. Suche Suche. Und es zeigt
immer John Smooth. Wenn du „Loch ansehen“ sagst, zeigt
es alles. Es scheint also zu funktionieren. Und als nächstes ist der Eintrag ganz unten. Der Benutzer drückt also
am unteren Rand des Eintrags. Sie erwarten, dass die
Daten, die sie in die vier
Eingabe-Widgets
eingegeben haben , irgendwo
gespeichert werden. Sie wissen nicht wo,
aber sie werden
irgendwo gespeichert und sie
werden sie abrufen können. Das bedeutet, dass Sie
die Insert-Funktion
hier im Bend-Skript aufrufen müssen. Diese Funktion erhält also
diese vier Argumente. Also der Wert rund um die
Eingabe-Widgets, und es wird sie
in der Buchtabelle platzieren. So einfach ist das. Als
Erstes möchten wir vielleicht zum Ende des
Hinzufügens gehen. Also hier, und dann füge hier eine
Wrapper-Funktion hinzu. Auf Befehl. Und dann erstellen wir eine Befehlsfunktion zum
Hinzufügen. Und das ist eigentlich ganz
einfach. Sie sagen einfach Backend Dot Insert und hier übergeben Sie diese Werte. Also kopiere ich das einfach
und zahle hier etwas. Also lass uns das ausprobieren. Lassen Sie uns versuchen, einige Einträge hinzuzufügen. Sagen wir Bäume und Gras. Nehmen wir an, Sand,
Jahr 1917, und
geben Sie dort einfach ein O für die
ISBN ein und fügen Sie einen Eintrag hinzu Der Eintrag
wurde also wahrscheinlich zur Datenbank hinzugefügt, aber wir haben nichts gesehen, und Sie können ihn wahrscheinlich mit
einer VL-Funktion sehen Wenn ich also VL drücke
, sehe ich Bäume und Gras. Aber es wäre gut, wenn
wir einen Eintrag hinzufügen, dieser Eintrag, der neue Eintrag
hier angezeigt wird, damit der Benutzer weiß , dass der Eintrag erfolgreich zur Datenbank
hinzugefügt wurde. Also hier sind Bäume und Gras. Lassen Sie uns also etwas
tun, damit der Eintrag im Listenfeld angezeigt
wird, wenn
der Benutzer auf Eingabe drückt. Und was wir tun können, ist zunächst sicherzustellen, dass
die Liste leer ist. Löschen Sie also Null, um die Liste zu beenden. Das gibt uns eine leere Liste. Dann fügen wir neue Werte
am Ende der Liste ein. Also welche Werte? Nun, ist einer. Also die Werte, die der Benutzer eingeben
wird, einfach so. Also lass uns sehen, wie das läuft. Sagen wir Grasland. Nehmen wir an, Kirk hat das Jahr
1910 getroffen und dort eine Nummer. Und das ist eigentlich nicht ganz das, was
wir erwartet hatten. Und das haben wir bekommen , weil wir
hier wirklich viele Werte einfügen Also sagen wir
Python, das
alles in einen neuen Wert einzufügen , diesen in einen neuen, und auch das und
so weiter und so fort. Die Lösung hier ist also einfach. Setze es einfach als einen einzigen Wert ein. Also als Triple und starte
das Programm erneut. Ein Fehler hier, also
brauchen wir noch eine Klammer weil diese Klammer
hier hier geschlossen wird. Also einfach so,
probiere es nochmal aus. Sagen wir warm und Elena Gomez,
1944, und eine Zahl
hier. Eintrag hinzufügen Und jetzt haben wir die Zeile
in einer einzigen Zeile. Treibstoff, und Wonder Lens ist da. Grass Lens ist auch da. Also lass uns weitermachen.
172. 171. Frontend mit Backend verbinden, Teil 2 ++: Okay, wir haben
noch etwas Code vor uns. Wir haben die Ansicht,
die Suche und die Anzeigenschaltflächen definiert . Jetzt haben wir also das Update
und den geschlossenen Boden. Und ich möchte mit
der Schaltfläche Löschen fortfahren, da
die Schaltfläche Löschen einfacher zu
implementieren ist als die Schaltfläche zum
Aktualisieren. Lassen Sie mich das
Interface also noch einmal aufrufen. Und noch einmal, denke an den Benutzer. Der Benutzer könnte
erwarten, dass er möglicherweise eine der
Zeilen löschen
möchte, sagen wir, diese Zeile. Sie erwarten also,
diese Zeile auszuwählen und dann
die Schaltfläche Ausgewählte löschen zu drücken, und diese Zeile wird
aus der Datenbank verschwinden. Und
wenn sie eine Zeile auswählen, möchten sie vielleicht auch
die Daten in diesen Einträgen sehen, und wir werden uns auch
darum kümmern. Wir werden
diese Einträge also mit
den entsprechenden Werten füllen , wenn der Benutzer hier auf eine
der Zeilen klickt. Ordnung. Das ergibt
Sinn, glaube ich. Und jetzt schauen wir uns die Löschfunktion
im Backend-Skript Delete
erwartet also eine ID,
die Idee der Zeile, und
dann sucht diese SQL-Anweisung nach dieser ID und löscht die gesamte
Zeile der Buchtabelle, in der das D
dem hier angegebenen D
entspricht also Wenn der Benutzer also eine der
Zeilen im Listenfeld auswählt, müssen
wir die ID
dieser Zeile abrufen und diese ID dann an
die Löschfunktion
des Backend-Skripts senden die Löschfunktion
des Backend-Skripts Und dann
kümmert sich die Löschfunktion um die Zeile. Oh, gut. Und auch in diesem Fall
möchten
Sie hier, am unteren Rand
des Löschvorgangs, eine Art Löschbefehlsfunktion
anhängen am unteren Rand
des Löschvorgangs, eine Art Löschbefehlsfunktion anhängen Aber in diesem Fall würde
ich eigentlich
gerne einen Bottom-up-Ansatz verfolgen Lassen Sie uns also zunächst darüber nachdenken
, wie wir die Rolle
vom Benutzer auswählen können. Lassen Sie uns also zuerst darüber nachdenken. Und Sie kennen das Problem nicht, aber es gibt eine Methode namens
bind der Kinder-Bibliothek, und bind wird verwendet, um eine
Funktion an ein Widget-Ereignis zu binden. Lassen Sie mich also diese Bind-Methode schreiben ,
damit Sie die
Dinge besser verstehen. Also binden wir
hier eine Methode an das Listbox-Widget. Es ist also sinnvoll, diese Methode zu
schreiben, nachdem wir
die Liste definiert haben. Widget. Also definieren wir hier das
Listen-Widget, und wir konfigurieren es und listen
dann eine Bindung auf. Und die Bond-Methode
benötigt zwei Argumente. Es benötigt also einen Ereignistyp und auch eine
Funktion, die Sie an den Ereignistyp binden
möchten. Der Ereignistyp
gehört eigentlich zu diesen Zeichen und heißt List Box Select. Und dann möchten Sie hier eine Funktion
angeben , die ein
Listenobjekt mit einer Auswahl zurückgibt. Also so etwas. Eigentlich erwarten wir in diesem Fall ein
Tupel, ein Tupel mit der ID, dem Titel, dem Autor und dem Jahr
und
der ISBN-Nummer Rufen wir also diese
Funktion auf und holen uns die ausgewählte Zeile. Dann machen wir weiter und
definieren diese Funktion. Definieren wir es hier
ganz am Anfang. Also auf jeden Fall die ausgewählte Zeile abrufen. Und diese Funktion jetzt, weil wir sie als
Ereignis an ein Widget-Ereignis gebunden haben, erhält
diese Funktion einen speziellen
Parameter namens Event Und der Event-Parameter enthält Informationen über den
Typ des Ereignisses. Python weiß also, dass, wenn Sie dies an
die Bind-Methode übergeben, erwartet, dass die Funktion diesen Ereignisparameter
hat. Und dann. Also auch hier kehrt
diese Funktion
zum ausgewählten Tupel Aber zuallererst funktioniert das
so, dass
wir zuerst den Index der
Liste aus dem Listenfeld
abrufen müssen den Index der
Liste aus dem Listenfeld
abrufen Die Liste kann, sagen wir, zehn Zeilen haben, und die erste Zeile
hat einen Index von Null, die zweite einen Index von eins usw., bis zu neun,
wenn wir zehn Zeilen haben. Um also den Index der
ausgewählten Zeile des Listenfeldes zu ermitteln, verweisen
wir auf das
Listenfeld und dann auf die
Cur-Auswahlmethode des Listenfeldes In Ordnung. Und ich möchte den Index hier nur
vorübergehend zurückgeben , damit Sie sehen, was dieses Objekt ist und
wie es aussieht. Hoffen wir also, dass das funktioniert. Es sollte funktionieren. Python.
Frontend, ja. Also hätten wir den Index eigentlich hier
ausdrucken
sollen. Wir geben
es nur zurück, also Index drucken. Lass uns das nochmal ausprobieren. Ich gehe also davon aus, dass ich
den Index hier ausdrucken werde, ja. Das ist also
der Index einer ausgewählten Zeile. Das ist also Null, Eins, tut mir leid, Null innerhalb von Null ,
eins, zwei und so weiter. Wie Sie sehen, ist
dies jedoch keine einfache Zahl. Das ist eigentlich ein Tupel, ein Tupel mit einem Element Was wir also tun müssen,
ist ein sehr einfacher Trick, und wir nehmen einfach das Element
mit dem Index Null des Tupels, was in diesem Fall Nummer
zwei ist, in diesem Fall Null und so Und dann könnten wir
es noch einmal versuchen, alles
ansehen, und jetzt erhalten wir
einzelne Zahlen. Großartig. Wir sind also sehr nah dran, aber noch
nicht da, weil
wir
das tatsächliche Tupel mit allen Werten
der Zeile ermitteln müssen das tatsächliche Tupel mit allen Werten
der Zeile Und um das zu erreichen, müssen Sie eine andere Methode namens
get
anwenden , also sagen wir
das ausgewählte Tupel Das tatsächliche Tupel
, das wir wollen,
die tatsächliche Zeile, die
wir wollen,
entspricht also die tatsächliche Zeile, die
wir wollen,
entspricht mindestens einem, das den Index erhält Sie können es also von der kleinsten Box aus lesen, das Tupel mit dem Index X
erhalten. Und dann können wir das ausprobieren Also, was bekommen wir hier? Lass dich nicht
mit dieser Reihe verwechseln. Das wird ausgedruckt,
weil im
Ben-Skript tatsächlich eine
Suchfunktion ausgedruckt wird. Das ist also das Drucken
der Ausgabe der Suchfunktion. Diese Funktion sagt
also, gib mir die Zeile mit John
Smith als Autorennamen, und das nächste Mal
wird das nicht ausgeführt. Also zurück, was wir tun wollen, ist eine Zeile auszuwählen und wir bekommen die Zeile dort als Tupel
ausgedruckt Also das ist großartig. Also, was kommt als Nächstes? Nun, als Nächstes
müssen wir die ID des ausgewählten Tupels an
die Löschfunktion
des Backend-Skripts übergeben ausgewählten Tupels an
die Löschfunktion
des Backend-Skripts Wir gehen zur ausgewählten Schaltfläche. Befehl entspricht Löschbefehl. So werde ich das Skript nennen
, und das sollte hier stehen. D Befehl löschen. Und was wir hier haben,
ist Backend Dot Delete. Auch hier
erhält die Methode delete als Argument die ID. Wir haben also ein Tupel
namens get selected row, also müssen wir das gewählte Tupel
zurückgeben Wenn wir also die Funktion jetzt aufrufen, wird
die ausgewählte Zeile ausgewählt Und wir benötigen das Element mit dem Index Null aus
Get Selected Row. Speichern Sie das Skript und wir
haben einen Fehler in Zeile 24. Ich habe die Kolumne nicht
hier. Versuch es nochmal. Schau es dir an und lass uns versuchen, den Mond zu
löschen. Löschen. Und Python sagt, dass get selected row ein erforderliches Positionsargument
fehlt Das ist das Event-Argument. Python hat also recht , denn hier haben wir
einen Event-Parameter, also müssen wir
ihn als Argument übergeben. Aber hier rufen wir die Funktion
ohne Argument auf. Wir bekommen also einen Fehler. Andererseits können wir dieses Ereignis nicht
entfernen, da diese Funktion auch von der Bind-Methode
ausgeführt wird. In diesem Fall wäre der Held
des Tages hier also eine globale Variable. Vielleicht wissen Sie bereits,
dass lokale Variablen, wie das ausgewählte Tupel,
eine lokale Variable sind, weil sie innerhalb einer Funktion
definiert Wenn Sie also dieses Tupel drucken, wählen Sie
außerhalb der Funktion das Sie werden eine Fehlermeldung erhalten,
weil Python sagen wird:
Oh, tut mir leid, ich
erkenne das nicht. Dies ist ein undefiniertes Objekt , da lokale Variablen nur innerhalb der Funktion
Sinn machen nur innerhalb der Funktion
Sinn In diesem Fall können
wir also globale Variablen verwenden Und um
eine globale Variable zu erstellen verwenden Sie das globale Schlüsselwort und deklarieren
dann den Namen der Variablen, die
Sie erstellen möchten Wenn Sie also in diesem Fall das ausgewählte Tupel
außerhalb der Funktion
ausdrucken , erhalten
Sie den Wert
des ausgewählten Tupels, und der Wert des
ausgewählten Tupels
wäre in diesem Fall das Tupel mit den Werten
der Zeile In diesem Fall müssen
wir das
ausgewählte Tupel also nicht zurückgeben, da wir einfach auf
die ausgewählte
Tupelvariable zeigen
können in diesem Fall einfach auf
die ausgewählte
Tupelvariable zeigen
können
und wir unsere verzögerte Funktion hier korrigieren müssen Wir wollen also das ausgewählte Tupel und wir wollen das Element mit dem Index Null aus dem Also lass uns nochmal ausführen. Und alles ansehen und den Mond
löschen. Ausgewählte löschen. Alles ansehen
und der Mond ist weg. Es scheint also zu funktionieren. Jetzt möchte ich
die Einträge mit einem ausgewählten
Tupel oder einer ausgewählten Zeile füllen , wenn Sie möchten Also müssen wir
die Insert-Funktion
des Enter-Widgets verwenden , und wir könnten
diese Methoden tatsächlich in die Funktion
Get Selected Row schreiben diese Methoden tatsächlich in die Funktion
Get Selected Row Weil Sie wissen,
wenn der
Benutzer auf eine der Zeilen klickt und
eine der Zeilen auswählt, möchten
wir
diese Einträge sofort mit Werten füllen. Und das erste wäre
das Titelende und wir wollen sicherstellen, dass
der Eintrag leer ist. Also lösche Null bis zum Ende. Lösche alles aus dem
Eintrag, wenn es etwas gibt. Und dann E eins, einfügen. Also, was wir
in den Autoreneintrag einfügen wollen. Nun, das wäre das ausgewählte
Tupel mit einem Index von eins. Die ID hat also einen Index von Null. Der dritte Titel hat
einen Index von eins, und das wäre auch für
die anderen Einträge der Fall. Wir haben also E eins, zwei, E drei und E vier. Und dann wollen wir uns hier den Namen des Autors
schnappen. Hier wollen wir das E und
die ISBN-Nummer drin haben. Großartig. Ich hoffe also, dass das
funktioniert. Es sollte funktionieren. Also alles anzeigen, etwas auswählen, und bei der Insert-Methode fehlt
ein erforderliches Argument. Ich glaube, ich habe vergessen anzugeben, wo ich die neuen Werte einfügen möchte. Also brauchen wir hier, hier, hier und hier. Also lass uns nochmal sehen, alles
ansehen und jetzt
scheint es zu funktionieren. Also Bäume und Gras
und Kurven und so weiter. Und lass mich versuchen, das zu löschen, löschen und der Eintrag ist weg Großartig. Also lass uns jetzt weitermachen. Lassen Sie uns ohne
Zeitverschwendung die
Update-Funktion implementieren Also zurück zu unserem Backend-Skript.
Die Aktualisierungsfunktion erhält eine
ID und einen Titel, einen Autor und Im Gegensatz zur Löschfunktion
, die nur ein Element hat, dieser Funktion vier Elemente abgerufen,
tatsächlich fünf Elemente In der
Befehlsfunktion Löschen übergeben
wir also das ausgewählte Tupel
mit einem Index von Null Jetzt
wird die Aktualisierungsfunktion eine
ähnliche Struktur haben, aber dann werden wir hier
mehrere Argumente haben Wir haben also ID Tile
Author und ISBN. Also ein Tupel
mit einem Index von eins, ausgewähltes Tupel mit
einem Index von zwei, ein ausgewähltes Tupel mit
einem Index von drei
und ein ausgewähltes Tupel
mit Und dann müssen wir diese Funktion zur Unterseite des Updates hinzufügen Also aktualisiere den Befehl. Ordnung. Und ich habe vergessen
, das zu ändern Befehl aktualisieren.
Das sollte funktionieren. Also lass uns sehen. Ich habe vergessen, den
Namen des Parameters hier zu übergeben. Befehl entspricht also Befehl
aktualisieren, speichern und erneut ausführen. Versuchen wir, diese Zeile zu aktualisieren. Sagen wir also neun. Ein Presse-Update wurde ausgewählt. Und noch ein Fehler: Hab
keine Angst vor Fehlern. Je mehr Fehler Sie sehen,
desto vertrauter
werden Sie mit Python. Es ist wichtig, dass Sie
sich auf den Fehler konzentrieren,
herausfinden, in welcher Zeile Sie den Fehler
erhalten, und
versuchen , die Art
des Fehlers und die
Meldung, die Sie erhalten, zu verstehen . In diesem Fall
benötigt delete also ein Positionsargument,
aber es wurden fünf angegeben Wir haben hier keine
Löschfunktion ausgeführt. Wir haben die Aktualisierungsschaltfläche ausgeführt , die eine
Aktualisierungsbefehlsfunktion erhält, und Sie gehen zum
Aktualisierungsbefehl. Also den Aktualisierungsbefehl
B und Delete. Deshalb
bekommen wir diesen Fehler. Der Befehl update führt tatsächlich die
Methode delete
des Bend-Skripts aus, also wollen wir
aktualisieren statt löschen. Und speichern Sie das Skript und
führen Sie es erneut aus. Alles ansehen. Ich möchte
diese Nummer hier wirklich aktualisieren. Also neun Updates ausgewählt, alle
anzeigen, und es funktioniert nicht. Und in diesem Fall erhalten wir hier nicht
einmal eine Fehlermeldung, sodass Sie sich im Moment möglicherweise
verloren fühlen. In diesem Fall könnten Sie also überprüfen was Sie in
Ihrer Aktualisierungsbefehlsfunktion zurückgeben. Sie wissen also, dass Sie Probleme isolieren
können, indem Sie Print-Anweisungen
verwenden. Nehmen wir an, Sie möchten überprüfen, was Sie an
die Aktualisierungsfunktion senden. Ich kenne das Problem
hier, aber nur um
Ihnen zu zeigen , wie Sie
Probleme beheben können. Also drucke das aus und
führe es erneut aus. Wir haben alle die
Grasland-Updates ausgewählt. Und Sie sehen, dass die Tabelle so ausgedruckt
wird, wie sie ist. Diese Zahl ändert sich also nicht. Eigentlich habe ich es nicht geändert. Also lass mich das nochmal ändern. Sagen wir 24 und das
Update ist ausgewählt. Sie sehen also, dass die Zahl 24 hier nicht
ausgedruckt wird. Das heißt, wir
senden an die Datenbank. Nochmals dieser Datensatz,
also senden wir
den aktualisierten Datensatz nicht .
Also warum ist das so? Wenn Sie es bereits von früher
gefunden haben als ich diese Funktion geschrieben habe, ist
das sehr großartig. Falls nicht, nun ja, der Grund ist, dass
wir das ausgewählte Tupel an
die Aktualisierungsmethode senden ausgewählte Tupel an
die Aktualisierungsmethode Und die Auswahltabelle ist die, die der
Benutzer ausgewählt hat Es sind also nicht die tatsächlichen
Einträge, die der Benutzer an den
Aktualisierungsbefehl sendet In diesem Fall wollen wir also
tatsächlich diese Werte
versenden, also die aktuellen Werte
der Einträge. Also kopiere ich das
und füge es hier ein. Okay. Und das erste
ausgewählte Objekt ist die ID, also wollen wir die D der
ausgewählten Zeile behalten , weil der Benutzer
die anderen
Werte ändert, nicht die ID Und das sieht gut aus. Die Klammer schließt sich hier. Sicher. Also lösche diesen,
sicher, führe ihn erneut aus. Wir gehen dazu und sagen
wir drei, Update ausgewählt, V
und drei ist da. Löschen, alles ansehen, es geht weg. Sie können es erneut hinzufügen, weil
Sie es in Ihren Einträgen haben, im Eintrag, und es wurde erneut hinzugefügt, und
Sie können es hier sehen. Also alles funktioniert super. Und wir wollen dieses Programm
schließen, aber wir haben die Schaltfläche geschlossen, es funktioniert im Moment nicht, also lasst uns weitermachen und das auch
implementieren. Und das ist sehr einfach. Geh einfach her und
befehlige Eagle Two. Du willst also
das Fenster zerstören, oder? Also Fenster nicht
zerstören. Das ist es. Speichere das Drehbuch. Und probiere es aus. Sie funktionieren also wie gewohnt, schließen und das Fenster schließt sich. Und vielleicht
möchten Sie Ihrem Fenster auch einen Titel
geben und
die WM-Titelmethode
des Fensterobjekts verwenden . Titel. Sagen wir Buch, Geschäft. Und du solltest diesen
Namen in der Titelleiste sehen. Endlich sind wir
mit diesem Programm fertig,
und ich weiß, dass es noch
Verbesserungsbedarf gibt, und ich freue mich über alle
Vorschläge von Ihnen, damit wir das Programm
verbessern können. Programme haben
Versionen davon, das ist Version Null, könnte man sagen. Und ich hoffe, Sie fanden das sehr nützlich und haben
viel daraus gelernt. Also werde ich später mit dir sprechen.
173. 172. Executables mit EXE- und App-Dateien aus dem Python-Skript erstellen: Hallo nochmal. Wir haben also dieses großartige Programm
, das sehr gut funktioniert. Und es besteht aus drei Dateien. Also zwei Python-Dateien
und eine Dot-DB-Datei, in der die Daten gespeichert werden. Das ist gut. Wir können
die Skripte so ausführen. Also wenn wir Python benutzen,
bekommen wir das Programm angezeigt. Aber ich denke, wenn du dein Programm
jemand anderem
geben willst dein Programm
jemand anderem
geben , kannst du ihnen einfach sagen:
Oh, installiere Python und du
kannst das Programm ausführen indem du zum Terminal gehst und Python und das Skript
aufrufst Das kann also
für Benutzer, die keine
Erfahrung mit Programmieren haben,
furchtbar schwierig werden In diesem Fall möchten
Sie also
ein eigenständiges ausführbares Programm erstellen ein eigenständiges ausführbares Programm , das Sie einfach
an jeden senden können kann dann einfach darauf
doppelklicken und Daten einfügen und Daten
abrufen und so
weiter und Daten einfügen und Daten
abrufen und so
weiter In diesem Vortrag werde
ich Ihnen zeigen,
wie Sie eine ausführbare Datei erstellen, und Sie erstellen diese Datei, egal ob Sie auf einem Mac, Windows
oder Linux arbeiten. Der Code ist also derselbe. Es gibt eine großartige Bibliothek , um eigenständige ausführbare Dateien zu erstellen Das ist der Pi-Installer. Sie können den
Pi Installer also mit
PIP installieren . Und jetzt ist es furchtbar einfach,
aus Ihrem Python-Skript
eine eigenständige ausführbare Datei zu erstellen aus Ihrem Python-Skript
eine eigenständige ausführbare Datei Alles was Sie tun müssen, ist
Pi Installer aufzurufen und dann auf Ihr
Skript zu zeigen In diesem Fall ist unser
Hauptskript also front and dot py. Das ist also ein Skript, das
den gesamten Code enthält und das auch
das Backend-Skript importiert. Also wollen wir
auf diese Datei verweisen. Und wenn Sie es so lassen, erhalten
Sie eine Punkt-X-Datei,
wenn Sie Windows verwenden, eine Datei, wenn Sie einen Mac verwenden Und zusammen mit diesen Dateien erhalten
Sie auch eine Reihe
anderer Dateien, die mit Ihrem Programm
verknüpft sind Das hat den Vorteil, dass es
einfacher wird , etwaige
Fehler zu beheben. Sie haben also viele Dateien
und dann können Sie zu
diesen Dateien gehen und
den Fehler finden und so weiter. Aber wenn Sie praktisch sein wollen, sollten
Sie hier
einen Parameter übergeben. Hat eine Datei aufgerufen. Dadurch wird eine einzige
ausführbare Datei für Sie erstellt. Und in diesem Formular wird
Ihnen auch die
Terminal-Befehlszeile im Hintergrund
Ihrer grafischen Benutzeroberfläche
angezeigt . Wenn Sie das also nicht möchten, können
Sie
einen anderen Parameter
namens windowed
so angeben und ausführen Und du wirst eine Weile warten müssen. Und meine ausführbare Datei wurde erstellt. Wenn Sie also auf einem Mac wären, wäre
das eine Datei. Also meins ist hier
im Disc-Ordner. Also in diesem Ordner kann
ich hier nachschauen. Also Frontend-Punkt x. Wenn Sie das ausführen, erhalten
Sie das Fenster. Und wie Sie sehen, haben Sie auch die Bücher, die die
DB-Datei generiert hat. Standardmäßig wird dadurch nur
eine ausführbare Datei erstellt. Wenn Sie das
Programm dann zum ersten Mal ausführen,
denken Sie daran, dass wir
im Backend-Skript
eine Verbindungsfunktion hatten im Backend-Skript Diese Funktion erstellt also eine Datenbank. Also
genau das hat das getan. Und wenn Sie sich jetzt alles ansehen, haben
Sie keine Zeilen, also keine
Daten, weil von Grund auf neu erstellt
wurde. Falls Sie also
die bestehende Datenbank haben möchten, sollten
Sie Ihrem Benutzer
sowohl die ausführbare Datei
als auch die bestehende
Datenbank, die Sie haben, geben sowohl die ausführbare Datei
als auch die . Nehmen wir zum Beispiel an,
dass das nicht existiert, und ich kann zu meiner
vorhandenen Datenbank gehen, und wenn ich sie hier ablege,
weiß Python, wo es nach der Datenbank
suchen muss. Wenn Sie sich jetzt alle ansehen, erhalten Sie die Daten aus der
vorhandenen Datenbank. Und wir können einen schnellen Test machen. Fügen wir ein Buch hinzu, den großartigen Kurzfilm D Taylor aus dem Jahr 1913 und
setzen dort eine Zahl ein. Am Eintrag, und der Eintrag
wird der Datenbank hinzugefügt. Und du kannst das
Programm schließen und das war's. Hoffe dir gefällt das. Wir
sehen uns in der nächsten Vorlesung.
174. 173. Was ist Object Oriented Programming (OOP): Hallo, und willkommen in diesem neuen Abschnitt, in dem Sie etwas über
objektorientierte Programmierung,
oft kurz OOP
genannt, lernen . Wenn Sie Erfahrung
mit der Programmierung haben, ist Ihnen
das Konzept wahrscheinlich
vertraut da OOP in den
meisten Sprachen verwendet wird. Aber ich gehe davon aus, dass Sie
nichts über
objektorientierte Programmierung wissen , also werde ich das Konzept
von Anfang an erklären. Nun, es gibt verschiedene
Definitionen von OP, und einige werden sehr knifflig. Aber ich glaube, das Beste, was
man wissen sollte, ist, dass objektorientierte Programmierung
nur eine Möglichkeit ist , Ihren Code zu
organisieren. Das heißt, OOP ist kein Muss. Sie können also einfach
Funktionen verwenden, um
eine Anwendung zu erstellen , wie wir es
hier mit unserer
Buchhandlungsanwendung getan haben , und viele Programmierer
entscheiden sich dafür, ihren Code nicht objektorientiert
zu organisieren, also verwenden sie nicht die OOP-Methode, um ihren
Code zu schreiben, mit anderen Worten Es ist jedoch allgemein
anerkannt, dass, wenn Sie
mehr als zwei Funktionen haben
, Operationen
auf dasselbe Objekt anwenden Zum Beispiel ein
Programm, das
Operationen auf eine Kiner-Schnittstelle anwendet Operationen auf eine Kiner-Schnittstelle Sie haben also diese
Callback-Funktionen. Deshalb sollten Sie
diese Funktionen in einer
sogenannten Klasse organisieren diese Funktionen in einer
sogenannten Klasse Da
objektorientierte Programmierung ein komplexes Konzept
ist, habe ich das zu
Beginn dieses Kurses nicht berücksichtigt. Ich wollte also, dass Sie zunächst
einige Anwendungen
mithilfe von Funktionen erstellen , was intuitiver ist, dann zur
objektorientierten Programmierung übergehen. Also zurück zu unserer Anwendung mit grafischer
Benutzeroberfläche. Also das Objekt hier, ich spreche von Objekten, und das Objekt hier
ist das gesamte Fenster mit Schaltflächen und anderen
Widgets. Jetzt können wir alle Attribute
,
die dieses
Objekt definieren, also dieses Fenster,
wie den Titel der
Schaltflächen, die Beschriftungen
und auch die an dieses
Objekt
angehängten Callback-Funktionen, in eine Klasse einfügen dieses
Objekt definieren, also dieses Fenster, wie den Titel der
Schaltflächen, die Beschriftungen
und auch die an dieses
Objekt
angehängten Callback-Funktionen, und auch die an dieses
Objekt
angehängten Callback-Funktionen in eine Klasse In unserer Anwendung haben wir also keine Klassen verwendet,
wir verwenden Funktionen Dieses Skript hier
gilt also nicht für
objektorientierte Programmierung,
und dieses
Objekt innerhalb einer Klasse zu platzieren bedeutet, dass wir
den Code in einer Klasse organisieren, wodurch ein Objekt erzeugt wird Deshalb nennen wir es
objektorientierte Programmierung. Und die Verwendung von Klassen zur
Organisation Ihres Codes wird als
objektorientierte Programmierung bezeichnet. Und was ich als Nächstes tun werde, ist in meinem Backend-Skript, in dem ich die Datenbankoperationen
habe. Ich werde dieses Skript transformieren indem ich es in eine Klasse einfüge. Und danach
können Sie dasselbe für
die
Frontend-Schnittstelle tun , sodass Sie
objektorientierte Programmierung
üben können . Nun, mein Ziel hier ist es nicht , Ihnen beizubringen
, wie man Klassen schreibt. Zunächst möchte ich, dass Sie den Unterricht
verstehen, und viele Lernressourcen erklären
objektorientiertes Programmieren indem sie etwa sagen, wir erstellen eine Klasse, die ein Hundeobjekt
erzeugt, und ein Hund kann heizen
und bellen und so weiter. Das ist ein gutes Beispiel, um zu lernen, wie man die
Syntax einer Klasse lernt. Aber hey, was ist ein
Hund beim Programmieren? Ich meine, Sie können sich den ganzen Tag am
Kopf kratzen und
versuchen, sich ein Szenario auszudenken, in dem Sie einen Hund als Objekt
in Ihrer Anwendung
haben würden . Das ist immer noch ein gutes Beispiel, aber nur, wenn Sie einige Jahre Erfahrung in
der Programmierung haben Erfahrung in
der Programmierung und Sie sich
anhand solcher Beispiele schnell
überlegen können, wo und wann Sie Klassen verwenden sollten. Ich gehe davon aus, dass Sie nicht über
diese jahrelange Erfahrung verfügen, also werde ich in
diesem Abschnitt reale
Programmierobjekte verwenden , um ein
so kniffliges Konzept wie
objektorientierte Programmierung zu erklären . Der beste Weg,
OP zu verstehen, besteht also darin, zuerst
ein Programm mit
einem bekannten objektorientierten
Programmieransatz zu erstellen einem bekannten objektorientierten ,
also Funktionen zu verwenden, und wenn Sie
das Programm einmal gut kennen, dann erstellen Sie das
Programm erneut, mit OP, und dann
verstehen Sie automatisch, was OP ist, wenn Sie sich ansehen, wie sich die
Dinge unterscheiden. Lassen Sie mich diesen
Code
jetzt mithilfe von Klassen organisieren und später werden wir ein
einfacheres Programm von Grund auf neu erstellen, bei dem wir ein
Bankkontoobjekt mit Python und Funktionen auf
dieses Objekt anwenden , z. B.
Einzahlung abheben und so weiter. Oh, das ist großartig. Und ja, das ist ungefähr diese Einführung. Und lass uns mit
der nächsten Vorlesung weitermachen und ein paar Kurse
schreiben.
175. 174. OOP in einem Programm verwenden, Teil 1: Gut. Jetzt werde ich
weitermachen und dieses Skript in einen
objektorientierten Programmierstil umwandeln. Mit anderen Worten, ich werde
diese Funktionen
effizienter organisieren . Und nur um Ihr Gedächtnis aufzufrischen, was dieses Skript macht, also haben wir ein Backend
- und ein Frontend-Skript, und das Frontend, was es macht ist,
die grafische
Benutzeroberfläche zu konstruieren , also wissen Sie das Und wir haben diese
Buch-DB-Datenbankdatei, und da sind einige Daten Und Sie können nach
Einträgen für Zeilen in der
Datenbank unter Neu usw. suchen. Und dieser Punkt Pi im Frontend erstellt die grafische
Benutzeroberfläche, und dieses Backend ist für die
Datenbankinteraktion
verantwortlich Bei objektorientierter
Programmierung geht es also darum,
Funktionen innerhalb
einer Klasse zu kapseln , also Klasse und nennen
wir diese Datenbank Und ja, das ist es im Grunde. Wir haben noch viel
zu tun, aber lassen Sie uns darüber nachdenken, was diese Datenbankklasse
ist. Nun, wann immer Sie
sich für
objektorientierte Programmierung entscheiden , müssen
Sie zuerst über
das Objekt nachdenken , das Sie verwenden möchten, nämlich das Objekt, auf das Sie diese Methoden anwenden
möchten. Und in unserem Fall wäre
das die Datenbank. Und dann fügen wir
Daten in die Tabellen
dieser Datenbank ein und
sehen uns Daten an und so weiter. Von diesem Objekt, diesem Objekt, müssen
Sie zuerst
ein Minimalobjekt erstellen , wenn
Sie die Klasse aufrufen. Und ich werde dir in einer Minute zeigen, wie du eine Klasse
aufrufst. Aber jetzt
konzentrieren wir uns darauf,
den Bauplan des Objekts zu erstellen den Bauplan des Objekts Sie erstellen also den Blueprint des Objekts,
der hier
ist,
und dann erstellen Sie
Objektinstanzen mit diesem und dann erstellen Sie
Objektinstanzen Blueprint,
und das tun Sie, indem Sie die Klasse
aufrufen Wenn Sie nun die Klasse aufrufen, möchten
Sie
dieses minimale Objekt haben In diesem Fall würde
das also bedeuten, eine
Verbindung zu dieser Datenbank herzustellen. Und dann erstellen Sie ein
Cursor-Objekt und
suchen Sie vielleicht nach einer Tabelle, sodass
Sie sicherstellen , dass Ihre Datenbank über eine
Tabelle verfügt, sodass Sie später Methoden auf
diese Datenbanktabelle anwenden können. Andernfalls
wäre die Datenbank nutzlos. Es braucht also eine Tabelle und eine etablierte Verbindung. Das heißt, Sie
müssen
einen Weg finden , dass beim
Aufruf der Klasse diese Zeilen hier ausgeführt werden. Und Python hat dafür eine
spezielle Syntax reserviert. Die erste Funktion
Ihres Skripts
müssen Sie also mit einem
doppelten Unterstrich
vorne und hinten aufrufen doppelten Unterstrich
vorne und hinten Das ist also eine Init-Funktion,
was bedeutet, ein Objekt
zu initialisieren In anderen Programmiersprachen wird
das Konstruktor genannt,
also konstruiert es das Objekt Wenn Sie also eine Klasse aufrufen, wird
diese Funktion ausgeführt,
aber nicht die anderen werden ausgeführt, wenn Sie
auf sie verweisen, in diesem Fall wäre
das
so etwas wie Punkteinfügung in eine Datenbank, und dann übergeben Sie dort die
Parameter, die Argumente. Jetzt müssen wir hier im Skript einige Dinge hinzufügen,
damit das funktioniert. Aber ich würde es vorziehen, dies
auf Trial-and-Error-Basis zu tun. Wir führen es aus, um zu
sehen, welchen Fehler wir bekommen ,
damit Sie verstehen, wie die
Dinge dort funktionieren. Was ich tun werde, ich werde
diesen Kurs so nennen, wie er jetzt ist. Wir brauchen diese Funktion also nicht. Diese Funktion ist jetzt weg
, weil ich sie durch sie ersetze. Sie rufen also keine Funktionen
mehr auf, wie wir es hier getan haben. Also
rufen wir hier zum Beispiel Funktionen aus
dem Backend-Modul auf, das wie ein Modul ist, Sie importieren
es als Modul Und in diesem Fall importieren wir aus dem
Backend die Datenbank Also importieren wir die
Datenbankklasse aus dem Becan-Skript. Das macht uns also
die Datenbankklasse verfügbar. Also der Datenbank-Blueprint. Das ist also nur eine Blaupause. Jetzt müssen wir aus diesem Bauplan ein
Objekt erstellen. Nennen wir das also
Objektdatenbank. Das entspricht einer Datenbank. Also die Klasse und vorerst, lassen Sie uns dort keine
Argumente übergeben Dann müssen wir
diese Referenzen ersetzen , damit wir
kein Backend mehr machen Wir machen eine Datenbank mit dieser Ansicht. Wir beziehen uns also
auf die View-Funktion des Datenbankobjekts, das eine Instanz
dieser Klasse ist. Großartig. Also werde ich weitermachen und
diese anderen durch Datenbank ersetzen . Also zurück und ersetze
das, ersetze, ersetze. Ja, das ist es. Das ist der Name des Skripts und er
sollte auch so sein. Entkomme hier. Großartig. Jetzt mache ich
weiter und führe das aus. Erwarte also nicht, dass das funktioniert, aber wir müssen uns den Fehler
genau ansehen und
versuchen zu verstehen, was darin steht. Also verfolgen Sie die
Datei-Fronten-Punkt-Pi-Zeile vier zurück. Hier. Es werden keine
Positionsargumente benötigt, aber eines wurde angegeben. Und was hier jetzt passiert
, ist , dass, wenn Sie die Klasse aufrufen, diese Klasse
eine Objektinstanz erstellt und sie in dieser Variablen
speichert Und dann sendet sie diese
Objektinstanz an diese Funktion. Lassen Sie mich das also
auf der rechten Seite aufteilen , sodass wir
beide Skripte hier haben. Also das Frontend
und das Backend. Also im Grunde wird diese
Datenbankobjektinstanz an dieses Innit-Objekt
gesendet Auch wenn das
eine leere Klammer ist. Das ist dort also wie eine
versteckte Syntax. Und um das zu beheben, müssen
Sie hier
einen Trick ausführen. Es heißt also, dass es keine
Positionsargumente braucht , weil es hier tatsächlich
eine leere Klammer hat Es ist also wie
bei einer normalen Funktion und funktioniert, wenn Sie dort keinen
Parameter angeben, aber dann einen
Parameter übergeben, wenn Sie ihn aufrufen Die Funktion wird
sagen, dass ich
keine Positionsargumente oder obligatorische Argumente
akzeptiere Aber mir
wurde ein Argument gegeben, also gebe ich einen Fehler Um das zu beheben,
müssen Sie dort einen Parameter übergeben. Und da geht jeder an sich selbst vorbei. Sie können also jedes Wort weitergeben
, das noch funktioniert. Aber als Konvention ,
damit Ihr Code von anderen Leuten
gelesen werden kann, müssen
Sie self übergeben. Jetzt
benötigt Ihre Init-Funktion also einen Parameter, und wenn Sie diese Klasse aufrufen, sendet
diese Klasse
die Objektinstanz, und diese Objektinstanz wird
in diesen Parameter aufgenommen Dieser Parameter
wird also durch
das
Objektinstanzargument ersetzt . Großartig. Wenn du das immer noch nicht
verstehst, bin
ich mir sicher, dass du es später
tun wirst, wenn du mehr Kurse schreibst. Gut. Gut, ich speichere das
und das und probiere das Script
nochmal aus. Und großartig. Das bedeutet, dass die Klasse
erfolgreich initialisiert wurde und eine
Objektinstanz für uns erstellt hat Lassen Sie mich das jetzt schließen und
vielleicht dort etwas hinzufügen. Das ist nicht notwendig,
sondern nur, um Ihnen zu zeigen, dass Sie,
wenn Sie Ihrer Init-Funktion weitere
Parameter hinzufügen möchten, so etwas wie DB tun
und dies dann durch
Dib ersetzen und dann hier das Argument
übergeben, das an diesen DB-Parameter
übergeben wird an diesen DB-Parameter
übergeben Das wäre also books dot db der Dateipfad
zu unserer Großartig. Und wenn Sie das erneut
ausführen, erhalten
Sie dasselbe Ergebnis. Was hier passiert
, ist, dass Python dazu dient,
die Datenbankobjektinstanz an den Self-Parameter
zu senden ,
die Datenbankobjektinstanz an den Self-Parameter
zu und dann den Pfad der Datei an den DB-Parameter zu senden, und dass DB-Parameter
diesen Pfad an den DB-Parameter
der Connect-Methode sendet . Großartig. Lassen Sie uns nun sehen, wie
diese Methoden funktionieren werden. Wir haben also die View-Schaltfläche Wenn wir sie drücken
, wird
die View-Funktion der Datenbankklasse ausgeführt, tatsächlich
wird die View-Methode
der Datenbankklasse ausgeführt. Also dieser hier, mal sehen, ob wir ihn bekommen
können. Nun, Arn-Fehler,
lass mich das schließen. Es heißt also, dass View t null
Positionsargumente hat, aber eins wurde angegeben Das wiederum deutet darauf hin, dass, wenn Sie eine Klassenmethode aufrufen, die Klasse auch die
Objektinstanz an diese Methode sendet ,
genau wie dies bei der
Init-Funktion Das heißt, wir müssen den Trick noch einmal
machen. Übergeben Sie el dort und versuchen Sie es erneut,
um zu sehen, welchen Fehler wir diesmal bekommen. Nun, kein Fehler.
Die Dinge funktionieren offensichtlich. Das ist also großartig. Wenn Sie jetzt jedoch die anderen
Methoden wie Einfügen ausprobieren, erhalten
Sie wahrscheinlich eine
Fehlermeldung. Also lass mich das versuchen. Also, wenn Sie alle,
es funktioniert gut, aber wenn wir etwas einfügen, sagen
wir Hallo
und ja, bei der Eingabe. Insert benötigt also vier
Positionsargumente, aber fünf wurden angegeben. Also einfügen Und diese Werte werden
an diese Parameter übergeben, aber wir übergeben auch
die Objektinstanz. Lassen Sie uns also selbst weitermachen, und ich werde dasselbe auch
für die Suche tun. Löschen und aktualisieren. Ja, das
haben wir. Sieht gut aus. Lass es uns nochmal versuchen. Also alles ansehen und Eintrag hinzufügen. Ja, das
scheint zu funktionieren. Alle ansehen und hier
haben wir entweder Schließen. So konnten wir
eine Klasse erstellen und alle
Funktionen innerhalb der Klasse platzieren. Wir haben jetzt also ein
organisiertes Programm. Das ist also
objektorientierte Programmierung, aber bei objektorientierter
Programmierung geht es nicht einfach darum, einige
Funktionen innerhalb der Klasse zu platzieren. Bei objektorientierter Programmierung
geht es um gutes Design. Dieses Skript ist also wahrscheinlich nicht das beste Design, das wir uns einfallen
lassen können.
Das liegt daran, dass wir
die wirklichen Vorteile, die
wir durch die Verwendung von Klassen haben,
nicht nutzen. Ich meine also, dass wir
hier
diese Methoden erstellen, und in jeder Methode wir einige ähnliche Funktionen
aus und stellen auch eine Verbindung
in jeder der Methoden her. Wir können diesen Code also weiter reduzieren indem wir
die wiederholten Aktionen entfernen. In einer Klasse
müssen Sie also
zunächst über eine Möglichkeit nachdenken
, eine Möglichkeit etwas zu
konstruieren, und zwar in der Init-Funktion Und dann bezieht
man sich in
den anderen Funktionen der anderen Methoden
auf dieses Etwas den anderen Funktionen der anderen Methoden
auf Wir sprechen hier also
über Methoden. Also, obwohl unser
Skript
gut funktioniert , werden
wir in der nächsten Vorlesung weitermachen und
das Design verbessern . Also werde
ich dich dort sehen.
176. 175. OOP in einem Programm verwenden, Teil 2: Gut. Wir waren in der Lage, unser Skript,
das mit Funktionen erstellt wurde, zu
transformieren , und wir haben eine Klasse erstellt und diese Funktionen
in diese Klasse eingefügt. Deshalb werden sie jetzt Methoden genannt. Und obwohl dies
eine Verwendung einer Klasse ist, es immer noch nicht die beste Verwendung des objektorientierten
Programmierparadigmas Weil wir hier eine Datenbank haben, ein Datenbankobjekt, das gerade erstellt
wird, aber wir behandeln
es nicht als festes Objekt, also öffnen und
schließen wir es in jeder Methode Ich denke also,
wir stellen eine Verbindung her
, wenn wir die Klasse aufrufen. Wenn diese Funktion ausgeführt
wird, stellen wir dort eine Verbindung her und wir halten diese Verbindung geöffnet. Also füge ich diese Methode zum
Schließen nicht hinzu, aber ich lasse die Commit-Methode
stehen, falls es keine Tabelle gibt, und es wird eine Tabelle erstellt, und die Änderungen werden in
die offene Verbindung übernommen. Nun, da wir dort eine
Verbindung geöffnet haben, müssen
wir nicht für jede Methode
eine neue Verbindung einrichten. Und wir müssen nicht einmal
ein Cursor-Objekt erstellen , weil das Cursor-Objekt hier erstellt
wird. Also werden wir diese beiden
Zeilen in jeder einzelnen Methode los. Wir haben also ein
Cursor-Objekt im Blick, wenn wir hierher gehen, und dann führen wir diese
Anweisung für dieses Cursor-Objekt aus. Das ist also gut. Dann gehen wir hier runter,
diese beiden auch. Und für die Löschmethode. Ebenfalls ein Update. Großartig.
Nun, lass uns sehen, wie das läuft. Lassen Sie mich das näher erläutern. Also rufen wir das
Frontend-Skript auf, in dem
wir eine
Instanz unseres Objekts erstellen. So weit so gut. Alles ansehen. Und es heißt, dass in Zeile 17 keine Namenskurve definiert
ist. Also haben wir die View-Methode ausgeführt. Und die View-Methode
versucht,
eine als Variable deklarierte Variable
innerhalb der Funktion zu finden . Die Kurvenvariable findet
sie nicht, dann sucht sie, ob
es eine Variable
außerhalb der Funktion gibt und sie findet sie nicht. Tatsächlich gibt es
eine Variable, die in
dieser Init-Funktion deklariert
wurde , aber das ist eine lokale Variable Dies hat nur
innerhalb dieser Funktion einen Wert. Sie können
außerhalb der Init-Funktion nicht darauf zugreifen. Aber wenn wir uns auf
das Argument self beziehen, das das Datenbankobjekt ist und sehen, was wir bekommen.
Lassen Sie mich das schließen. Speichern Sie das und sehen Sie sich alles an, und jetzt erhalten wir eine andere
Art von Fehler. Und es heißt Attributfehler.
Also lass mich das schließen. Schauen Sie
hier genau hin und es heißt, dass das
Datenbankobjekt
keine Attributkurve hat. Das ist in Zeile 17,
also dieser hier. Das Datenbankobjekt, das
ist dieses hier. Also wurde self durch database
ersetzt, das ist das Objekt, das von dieser Klasse
erzeugt wurde. Dies ist ein Attribut
dieses Objekts. Und um das zu beheben, müssen wir dort ein Attribut
erstellen. Also sagen wir Self Dot
Cur, Eagles Connection Dot Also die Cursormethode des Verbindungsobjekts
der QSt Wenn wir nun den Code erneut versuchen, heißt
es, dass die Namenskurve in Zeile acht nicht
definiert ist Jetzt haben wir
ein Attribut erstellt. Dies versucht,
die Variablenkurve zu finden, die lokale Variablenkurve, die nicht in dieser
Funktion enthalten ist, da dies
jetzt ein
Attribut der Klasse ist. Das heißt, wir müssen uns auch hier
auf Selbst beziehen, auf das Objekt und dann auf
Curve Execute und so weiter. Wenn wir das jetzt versuchen, erhalten
wir eine weitere Linie, die in Zeile 18 nicht definiert
ist. Also hier bedeutet das, dass Sie dasselbe tun
müssen und wir haben keine
Kurvenvariable mehr. Wir haben das cur-Attribut. Wenn ich das jetzt noch einmal ausführe, erhalte
ich dieses Mal wahrscheinlich eine Fehlermeldung
bezüglich der Verbindung , der con-Variablen Wir alle sind in Zeile 19 nicht
definiert. Also nochmal, diese
View-Funktion versucht Verbindung
mit der Variablen
zu finden, also übergebe ich mich dort
und auch hier selbst. Also deklarieren Sie das
Attribut dort und dort übernehmen Sie
die Änderungen hier unten. Und die Selbstverbindung wird geschlossen. Also das sieht jetzt gut aus. Eine Rose entspricht dem. Rose ist also nur eine lokale
Variable, die hier erstellt wird, und dann geben wir die abgerufene
Rose aus diesem Ausdruck zurück Diese Methode gibt
das also zurück, wenn sie in diesem
Skript
aufgerufen wird , genau hier. Gut. Und ja, lass mich versuchen,
was wir derzeit haben. Mm, Zeile 7, Name
C ist nicht definiert. Oh ja, wir müssen
das Gleiche für die beiden tun, und jetzt sieht alles gut aus. Also lass es uns nochmal versuchen. Ja, alles ansehen, und jetzt
haben wir die Daten da. Aber wenn ich es
zum zweiten Mal drücke, bekommen
wir noch einen Fehler. Und so heißt es, dass mit
einer geschlossenen Datenbank nicht gearbeitet werden kann.
Also warum ist das so? Nun, ich habe einmal die
View-Taste gedrückt und diese Methode wurde ausgeführt. Also
konnte das Cursor-Objekt diese Daten abrufen, und dann haben wir
die Verbindung geschlossen Ich habe die Zeilen zurückgegeben.
Wir konnten also diese
drei Reihen dort platzieren. Aber wenn ich dann zum zweiten Mal die
View-Schaltfläche drücke, die Verbindung bei der View-Methode
geschlossen. Aus diesem Grund
erhalten Sie, dass dies bei einer geschlossenen
Datenbank nicht
funktionieren kann . Also und sehen Sie, was wir bekommen. Also alles ansehen, es
funktioniert gut. Jep Das heißt, wir können weitermachen
und die anderen Methoden modifizieren. Also Selbstcursor und
Selbstverbindung und dann das Schließen entfernen. Denken wir später darüber nach,
die Verbindung zu schließen. Konzentrieren Sie sich jetzt also nicht darauf. Versuche einfach,
diese Methoden zum Laufen zu bringen, ich hier,
ich selbst da und da. Auch hier gilt für die Dalit-Methode, Sie die Verbindung entfernen
und schließen Und zu diesem Zeitpunkt sollte alles gut
funktionieren. Also mal sehen, ob wir das
alles funktionieren. Lass uns nach etwas suchen. Lass uns den Eintrag sehen und suchen. Oh, wir haben da einen Cursor. Curr ist also
in der Suche nicht definiert. Oh ja Tut mir leid. Okay, nochmal, wir
alle wollen uns den Sucheintrag ansehen. Und noch ein Namensfehler. Der Name Rose ist nicht definiert. Also habe ich versehentlich diese lokale
Variable in ein Attribut
umgewandelt. Also stieg er hier, stieg dort. Okay, noch einmal. Wir alle und jetzt
scheint es zu funktionieren. Lassen Sie uns also einige Daten hinzufügen. Fügen Sie dort einen Eintrag hinzu und können nicht
mit einer geschlossenen Datenbank arbeiten. Oh, warum? Mm. Weil
wir bei der Suchmethode eine geschlossene Datenbank haben, schließen
wir die Datenbank dort. Und das übersehe ich, also haben wir dort keine
geschlossenen Methoden mehr, nein Dann versuchen wir es noch einmal .
Das tut mir leid. Eintrag hinzugefügt, und jetzt
scheint es gut zu funktionieren. Großartig. Also alles sieht gut aus, außer
dass wir
die geschlossene Methode nicht mehr haben ,
weil wir diese Methode nicht in den Methoden
unserer Klasse behalten können , weil Sie das
gesehen
haben, als wir diese Methode dort haben und wir am Ende
diesen Fehler haben. Oder Sie können den Code
ohne geschlossene Methode belassen. Später würden Sie jedoch
einige Probleme denn wenn Sie einige Methoden haben , die noch nicht festgeschrieben wurden, ,
wenn ein anderes Programm eine
Verbindung zu Ihrer Datenbank herstellt werden diese Daten festgeschrieben,
wenn ein anderes Programm eine
Verbindung zu Ihrer Datenbank herstellt. Bei der nächsten Operation. Also bringt es manchmal manche Dinge durcheinander Also in der Regel sollten Sie die Verbindung
schließen. Und dafür gibt es
eine weitere spezielle
Methode, die Sie Ihrer Klasse
hinzufügen können ,
wie diese hier, aber diese andere dient dazu, Ihr
Objekt zu zerstören Das nennt man Deal. Also für delete, und das
bekommt auch die Objektinstanz
als Parameter. Diese Methode wird also angewendet, wird ausgeführt, wenn Sie eine Instanz
der Klasse
aufrufen , wie wir es
im Frontend-Skript gerade hier tun , während diese hier ausgeführt wird, wenn diese Instanz aus dem Skript gelöscht
wird, was zufällig der Fall ist, wenn
das Skript beendet wird Bevor das Skript beendet wird, wird
diese Methode also ausgeführt Und was wir hier tun wollen, ist Self Dot Connection Dot Close Das sollte also funktionieren. Wenn wir das jetzt ausprobieren, sollten
wir die gleichen Ergebnisse erzielen. Also habe ich das
versehentlich hinzugefügt, aber trotzdem, also werden wir sehen, dass Sie danach
suchen können und Sie
die Rose mit diesem
bestimmten Wert erhalten . Das ist also meine Lösung, und es gibt keine
Standardmethode, um ein Skript zu schreiben. Es gibt also möglicherweise andere
Alternativen, um dieses Problem zu lösen, um diese Anwendung zu
erstellen. Sie können sich also auch dafür
entscheiden,
dort oder hier in der
grafischen Benutzeroberfläche eine Methode hinzuzufügen . Sie könnten also beispielsweise eine Schaltfläche hinzufügen,
z.
B. die Schaltfläche Commit, und dann hier eine weitere
Methode namens Commit hinzufügen. Und dann entfernst du wahrscheinlich all diese Commit-Methoden aus diesen Methoden aus den Methoden
deiner Escult-Operationen Und dann setzt du diese Methode ein. Also eine Methode Commit innerhalb der Commit-Methode deiner Klasse. Wenn also die
Benutzertaste festgeschrieben ist, die
Änderungen in die Datenbank übernommen. Das wäre also
eine andere Lösung, aber genau das haben wir uns in diesem speziellen Fall ausgedacht
. Ich hoffe, Sie verstehen jetzt
ein paar Dinge, und das wird selten verwendet. Also normalerweise musst du nur darin und dann
die anderen Methoden
verwenden. Dies ist jedoch angemessen
, wenn Sie kurz vor dem Beenden
des Programms
etwas anwenden möchten kurz vor dem Beenden
des Programms
etwas . Das ist also großartig Und in der nächsten Vorlesung werde
ich einen weiteren Kurs schreiben. Also werden wir darüber nachdenken,
wie wir ein Problem modellieren können, bei dem es darum geht, eine Art
Bankkontoobjekt zu
erstellen , mit dem wir das Geldgleichgewicht
wiederherstellen. Und dann heben wir
Geld ab und zahlen es auf dieses Guthaben ein. Als Übung können
Sie nun dieses Skript, den alten Skiner-Teil des Programms,
das Frontend, in eine
objektorientierte Form umwandeln Skiner-Teil des Programms,
das Frontend, in eine
objektorientierte Form Also fügst du das in eine Klasse ein und versuchst, eine gute Lösung
zu Ich werde Ihnen auch
eine Lösung dafür anbieten. Aber vorher möchte ich, dass
Sie es selbst ausprobieren damit Sie ein wenig objektorientiertes
Programmieren üben. Ja, das passt gut dazu. Ja, wir sehen uns in
der nächsten Vorlesung.
177. 180. Erstellen einer Benutzer-Anmeldeseite: Hallo. In diesem Vortrag zeige
ich Ihnen, wie
Sie
mit Python und
seiner Kivi-Bibliothek
eine minimalistische mobile App erstellen eine minimalistische mobile App mit Python und
seiner Kivi-Bibliothek Was wir erstellen werden, ist diese einseitige App
, die Sie hier sehen Wie ich Ihnen
im vorherigen Video gezeigt habe, handelt es sich bei
dieser App tatsächlich um
eine Mehrbildschirm-App. Wenn Sie also auf Anmelden klicken, wechseln
Sie zu einem anderen
Bildschirm und
melden sich dann auf einem anderen
Bildschirm an und so weiter. Aber in diesem Vortrag werde
ich dir nur die Minimal-App zeigen, und das ist wie eine
Vorlage, mit der du beliebige andere Apps schreiben
kannst, egal ob sie nur
einen Bildschirm oder
mehrere Bildschirme haben . Also werde ich diesen
Screenshot hier auf dem Bildschirm behalten. Denn das ist notwendig, wenn
Sie die Oberfläche erstellen, die grafische
Oberfläche, damit Sie anhand Ihres Designs programmieren können. Dies könnte auch auf einem
Blatt Papier sein, auf dem Sie eine Skizze gezeichnet
haben, wie
die Benutzeroberfläche aussieht. Was Sie also benötigen,
ist eine Python-Datei. So fängt alles an. Und ich werde
meine Datei Main Dot Pi nennen. Sie müssen sie nicht Main Dot Pi
nennen, aber es ist eine gute Praxis, denn wenn wir
später unsere App bereitstellen, wenn Sie Ihre App in
eine ausführbare mobile App konvertieren eine ausführbare mobile App die auf einem
echten Handy läuft, müssen
Sie Ihrer Datei den
Namen Main Punkt Pi geben. Es ist also eine gute Idee, sie sofort
zu benennen, damit Sie sie später nicht umbenennen
müssen,
oder vielleicht vergessen Sie es später und erhalten einige Fehler. Also Hauptpunkt Pi. Dieser Hauptpunkt Pi ist der
Ort, an dem
die Logik des Programms
in Python-Sprache geschrieben wird. Und es gibt noch eine weitere
Datei, die du erstellen musst. Du kannst es
nennen, wie du willst, aber ich werde es Design KV
nennen. Sie müssen also
die KV-Erweiterung verwenden und den Bildschirm trennen. Ich werde das hier reinstellen. Ich nehme den Kuchen hier drin und ich werde dir auch
dieses Bild hier unten zeigen , damit es dort bleibt. Und ich meine, der Kuchen
sollte hier bleiben. Ordnung. Also, was ist dieser KV? Also, nichts worüber man sich Sorgen machen müsste. Es ist eigentlich eine gute Sache. Es gibt zwei Möglichkeiten,
eine mobile App mit Python
und der Kivi-Bibliothek zu erstellen eine mobile App mit Python
und der Kivi-Bibliothek Die erste Möglichkeit besteht darin,
alles in Python zu schreiben, was die Logik
des Programms bedeutet. Die Verarbeitung und
alles, was im Hintergrund mit
den von
Ihnen verarbeiteten Daten passiert, sind also Hintergrund mit
den von
Ihnen verarbeiteten Daten die Benutzeranmeldungen, Abrufen von
Wetterbeobachtungsdaten oder was auch immer Ihre App tut Und der andere Teil
des Programms ist die grafische Benutzeroberfläche, das ist dieses Ding hier Also irgendeine Art von Sprache, man braucht eine
Sprache, um zu sagen: Oh, ein Etikett mit dieser Schriftgröße und dieser Schriftfamilie und
diesem Lehrbuch und so weiter Und das können Sie in Python tun, aber das ist keine gute Praxis. Es ist eine gute Idee
, diese grafische Oberfläche
in einer Punkt-KV-Datei in
der Kiwi-Sprache zu schreiben in einer Punkt-KV-Datei in
der Kiwi-Sprache Aber die Kiwi-Sprache ist
sehr, sehr einfach. Du wirst es an einem Tag
lernen. Ich werde dir also nicht zeigen, wie
man beides macht. Ich werde Ihnen also nicht
zeigen, wie Sie
eine App mit beiden Methoden erstellen können, also mit der Methode
,
alles in der Punkt-Py-Datei zu haben und mit
der Methode , die Logik in
der Punkt-Py-Datei und die grafische Oberfläche
in der KV-Datei zu haben.
Ich werde
Ihnen nur den richtigen Weg zeigen, nämlich Python für
die
Logik und KV für die Grafik zu verwenden. Das ist es, was jeder
Profi verwendet. Also bitte lerne auf diese Weise. Und wir beginnen mit
der Python-Datei. Der erste Schritt besteht darin,
alle erforderlichen
Objekte aus KV zu importieren . Aus der QV Dot App Import App. Dies ist das Hauptobjekt. Es symbolisiert die App
von KV Lang Import. Wenn Sie sich gefragt haben, wie Sie die
Python-Datei mit der KV-Datei
verbinden, ist
die Antwort dieses
Builder-Objekt, das ich Ihnen in
nur einer Minute zeigen werde , nachdem ich ein weiteres Objekt aus dem qv
dot UIX-Bildschirmmanager,
Import, Bildschirmmanager und Bildschirm Und das ist es. Und dann verwenden Sie den Builder, der die
Dateilademethode verwendet, und dort laden Sie das
Design dieser KV-Datei. So
wird dieses Skript also über die KV-Datei Bescheid wissen. Stellen Sie sicher, dass sich diese beiden Dateien im selben Verzeichnis
befinden, Main Dot Pi Design Dot KV. Und dann gehst du zu deiner KV-Datei. Die
Funktionsweise der KV-Sprache erfolgt auf Hierarchieebene. Es ist also eine Hierarchie von Objekten. Das ist also ein Bildschirm und dieser
Bildschirm enthält Widgets. Wenn Sie also nur einen
Bildschirm haben, werden Sie schreiben. Geben Sie
dem Bildschirm einfach einen Namen und verwenden Sie diese Symbole und
dann eine Spalte dort. Also nenne ich diesen
Bildschirm den Anmeldebildschirm. Und wenn Sie dann
einen anderen Bildschirm haben, sagen
wir, wenn Sie
auf diese Schaltfläche klicken, der Anmeldebildschirm angezeigt. Dann möchten Sie einen weiteren Bildschirm
wie einen Anmeldebildschirm
schreiben . Auf die gleiche Weise. Aber vorerst werden
wir nur einen Bildschirm
haben. Und falls du dich fragst, wie
ich zu dieser schönen lila Farbe gekommen bin? Nun, das ist
Syntaxhervorhebung für die Sprache Kiwi, und Sie können eine Erweiterung verwenden,
die Kiwi-Erweiterung Suchen Sie also einfach nach Kiwi
und verwenden Sie diese Erweiterung. Also installiere es und aktiviere es
dann. Und Sie werden
Syntaxhervorhebungen im
Visual Studio-Code erhalten ,
was eine gute Sache ist. Also dann
hat der Anmeldebildschirm Widgets, sagte ich. Und sobald Sie die Eingabetaste gedrückt
haben, möchten Sie mit
einem Tabulator oder vier Leerzeichen einrücken, genau wie in Python Das erste Widget ist also
das erste Widget ist ein Label. Aber anstatt das zu tun, möchten
Sie ein weiteres
Widget über dem Etikett hinzufügen. Es ist ein unsichtbares Widget, aber es ist immer noch ein Widget. Es ist ein Rasterlayout. Sie verwenden diese
Symbole nicht mehr. Du benutzt es einfach für den Bildschirm. Ein Rasterlayout, was es ist, ist
im Grunde die Art von Bereich
, der alle anderen Widgets enthalten wird. Also hier unten werden wir die anderen Widgets
hinzufügen,
und das ist eine Möglichkeit,
den Bereich zu trennen. Also der Bildschirm. Und ich denke,
ich denke darüber nach meinen Bildschirm
zu
trennen, um
meinen Bildschirm zu organisieren , indem ein Hauptraster-Layout habe, das alles enthält, und dann wird dieses Rasterlayout zwei weitere Rasterlayouts
enthalten. Das Rasterlayout für diesen Bereich finden Sie hier. Und dieses spezielle
Rasterlayout wird
eine Spalte und eine
undefinierte Anzahl von Zeilen haben eine Spalte und eine
undefinierte Anzahl von Zeilen Sie können diesem Rasterlayout also so viele Zeilen wie möglich
hinzufügen diesem Rasterlayout Ich meine also ein Rasterlayout
und dann noch ein Raster. Grundriss. Das erste
Rasterlayout ist also das gesamte Raster, das nur aus einer Spalte bestehen wird. Und dieses Rasterlayout besteht
aus zwei Rasterlayouts. Dieser hier drin und
dieser hier drin. Also dieser ist es und das ist es. Der Grund, warum ich das
so mache, ist, dass dieser Bereich Widgets hat, die auf die gleiche Weise
organisiert sind, was bedeutet, dass wir hier
nur eine Spalte haben Und hier haben wir zwei Spalten. In diesem zweiten Rasterlayout werde
ich also den zweiten
Kult, das Attribut, deklarieren. Und hier
haben
diese Rasterlayouts standardmäßig nur eine Spalte. Also werde ich
es bei einer Spalte belassen. Und dann ist das, was Sie hier
hinzufügen, beschriftet. Das ist das erste
Widget, das wir hier haben. Geben Sie die Eingabetaste ein und dann die Tabulatortaste, sodass alles eingerückt ist Der Text des Etiketts steht
in Anführungszeichen, Benutzeranmeldung. Was wir dann unter
dem Etikett haben, ist eine Texteingabe. Der Text der Texteingabe. Das wollen wir hier nicht. Was wir hier wollen, ist ein Hinweistext. Der Benutzername
, den Sie
im Textbuch sehen, ist also wie
ein Hinweis für den Benutzer Nutzername. Deshalb fügen wir hier Widgets als Zeilen
für dieses Rasterlayout hinzu. Dann haben wir eine weitere
Texteingabe mit Hinweistext. Passwort. Und dann haben wir
eine Schaltfläche mit Text-Login. Und dann gehen wir zum
anderen Rasterlayout. Wir haben hier zwei Knöpfe. Der erste hat
einen Text, Passwort vergessen, und der andere hat einen Text, melden Sie sich an, und das war's. Und das ist alles, was
Sie
vorerst für den Anmeldebildschirm tun müssen. Nun, hier gibt es noch etwas
anderes, das du tun musst. Gehen Sie also zur ersten
Einrückungsebene, genau wie beim
Anmeldebildschirm. Das siehst du hier. Gerade da, und Sie
möchten eine weitere Regel hinzufügen. Also in der Kiwi-Sprache sind diese Dinge hier, in den Symbolen in diesen
Symbolen Regeln Diese andere Regel ist
das Root-Widget. Es ist also im Grunde ein
unsichtbares Widget,
das alle Bildschirme der App aufzeichnet. Und in diesem Fall haben wir
nur einen Anmeldebildschirm. Und dieser Anmeldebildschirm
muss einen Namen haben. Sagen wir also den
Anmeldebildschirm in Anführungszeichen. Sie werden später
sehen, dass wir diesen Namen benötigen,
wenn wir in der Python-Datei auf
den Anmeldebildschirm verweisen den Anmeldebildschirm , weil
die Logik in Python geschrieben wird,
wo Sie sagen, dass, wenn der
Benutzer diese Taste drückt, wir so
etwas wie Bildschirm, der aktuell dem Anmeldebildschirm
entspricht
, sagen werden. Also geben wir den
Namen des Bildschirms an, den Python
anzeigen wird, wenn der Benutzer diese Taste
drückt. Und das ist alles, was wir
in der KV-Datei tun müssen. Stellen Sie sicher, dass Sie keine
Zuweisungsoperatoren anstelle
von Spalten verwenden . Verwenden Sie also Spalten. Ich habe diesen Fehler gemacht,
als ich die Sprache
QV gelernt habe , weil
Sie an
Python gewöhnt sind , wo Sie häufig
Zuweisungsoperatoren verwenden, Ihre Datei ansehen
und dann zu Python wechseln Und was wir jetzt in Python
tun müssen, wir müssen
einige leere Klassen erstellen , die den gleichen Namen wie
diese Regeln hier
haben. Was Klasse bedeutet. Auf dem Anmeldebildschirm wird dieselbe Groß- und Kleinschreibung verwendet. Also verwende ich
hier L und S, genauso wie hier. Also muss es genau
dieselbe Zeichenfolge sein. Und diese Zeichenfolge muss
vom Bildschirmobjekt erben. Es wird also
ein Bildschirmobjekt sein. Lassen Sie uns vorerst sagen, einfach bestehen. Und dann müssen Sie eine weitere Klasse
erstellen,
die, Sie haben
es erraten, das Root-Widget ist Jede Regel hier muss durch eine
Klasse in Python
repräsentiert werden . Das Root-Widget
muss vom Screenmanager erben. Machen Sie sich also keine Sorgen, wenn dieser Code vorerst etwas starr
ist. Sie haben also einige Regeln, die wie eine Blackbox
aussehen. Aber betrachte es
nur als eine Vorlage. Sie werden diese
Vorlage für jede App verwenden, also ist es gut,
dass Sie das auch zulassen. Und zu guter Letzt ist das das
Letzte, versprochen. Sie benötigen auch die Haupt-App der
Klasse. Es geht also um das App-Objekt
, das wir noch nicht verwendet haben. Das muss also von der App erben. Das ist eine und diese benötigt
eine Methode namens Build. Selbst. Jede Methode
benötigt also einen Selbstparameter. Diese Build-Methode ist also
eigentlich eine App-Methode. Sie können das sehen,
wenn Sie es hier verwenden. Also habe ich diese
Zeile und die liebe App ausgeführt. Sie werden sehen, dass build
zu diesen Objekten gehört, diesen Methoden dort,
build. In Ordnung. Also
wird diese erstellte Methode das Root-Widget zurückgeben Aber stellen Sie sicher, dass dies das
Objekt und nicht die Klasse ist. Also initialisieren wir hier
das Root-Widget. Sie können sehen, dass ich
die runden Klammern verwende. Und das allerletzte ist, falls und sobald wir
das gemacht haben, ist das jetzt die App. Wir sind bereit zur Ausführung. Aber wie Sie hier
in der Python-Datei sehen, rufen
wir keine Klasse auf. Das allerletzte, was
wir tun müssen, ist
natürlich, die
Haupt-App-Klasse aufzurufen. Eine gute Vorgehensweise ist die
Verwendung, wenn der Name gleich zwei ist. Wichtigste. Dann erstellen Sie eine Instanz
der Haupt-App und verwenden dann die
Run-Methode der Haupt-App
, bei der
es sich übrigens um eine App-Methode handelt. Sie können also auch
hier einen Lauf sehen, nur dort. Speichern Sie das Skript, und
ich werde
jetzt die Datei ausführen und
sehen, was wir bekommen. Ich erwarte natürlich einige Fehler
, weil ich glaube
, ich habe nicht alles zu 100% gemacht. Ja, ich habe keine Fehlermeldung erhalten. Terminal ist alles
in Ordnung, aber die Oberfläche
sieht nicht so aus, wie ich es erwartet hatte. Also habe ich dort einige
Fehler gemacht. Manchmal wird also kein
Fehler im Terminal angezeigt, was die
Behebung des Problems erschwert. Und wenn Sie keinen Fehler erhalten, sollte er
im Code in Ihrer Q-Datei suchen. In diesem speziellen Fall sieht
es also so aus, als ob das Rasterlayout nicht so funktioniert, wie
es sein sollte. Und der Grund dafür
ist, dass ich nicht angegeben habe wie viele Spalten das
Rasterlayout haben sollte, das Hauptraster-Layout, sondern auch die andere
, das untergeordnete Element
dieses übergeordneten Rasterlayouts. Bevor Sie also eine Änderung vornehmen, müssen
Sie dieses
Fenster schließen. Ich werde hierher gehen. Ich werde also
ein Kultattribut bestehen , genau wie ich
es mit diesem Rasterlayout getan habe. Lassen Sie mich es einfach zuerst mit
dem übergeordneten Rasterlayout testen . Also das bekommen wir. Wie Sie sehen können, sehen
wir
im Vergleich dazu nicht die ersten
Rasterlayoutelemente, nämlich eine Bezeichnung, den Benutzernamen, das Passwort und das untere. Weil diese
Widgets tatsächlich Unterseite des
vergessenen Passworts
versteckt sind. Sie sind also irgendwo hier
drin. In der Ecke. Wenn Sie also
diese Spalten nicht angeben , wie
viele Spalten Sie haben, platziert Kiwi einfach
alle Widgets in der
unteren linken Ecke Wenn wir das
jetzt schließen und auch ein Call-Attribut
hinzufügen, das einem
entspricht, und wenn ich es nicht speichere
und es erneut ausführe, sehe
ich dieselbe Ausgabe Also muss ich das Skript,
Control S, speichern und es
dann erneut ausführen. Und dieses Mal sehen wir mehr oder weniger, was wir erwartet
hatten. Nun, wir müssen noch etwas Abstand und
Abstand zwischen den Widgets
hinzufügen Abstand zwischen den Widgets , damit es so aussieht wie hier. Aber das ist es, was wir
bisher erreicht haben, und ich finde es gut. Also werde ich das jetzt schließen und diesen Code als erledigt betrachten. Aber bevor ich das Video schließe, werde
ich sicherstellen, dass Sie verstehen,
was hier vor sich geht. Also diese Kiv-Datei, all diese Dinge, die Sie hier
sehen, Rasterlayout,
Anmeldebildschirm, Texteingabe-Schaltfläche, sind eigentlich
Python-Objekte Einige von ihnen, wie
Anmeldebildschirm und Root-Widgets sind Objekte, die durch
Klassen repräsentiert werden, die wir
in der Python-Datei, dem
Anmeldebildschirm und
dem Root-Widget erstellt haben . Die anderen sind Klassen, die
Sie aus Kiv importieren. Wenn wir also nur in Python
codieren würden,
nicht in der Sprache Kiv, müssten
wir so
etwas wie von
Kv dot UixGridAout aus tun und das Grid-Layout importieren Das ist also dieselbe Klasse
wie diese hier drin. Die KV-Datei importiert
diese Objekte jedoch implizit. Sie werden also entweder
aus Ihrer Python-Datei
wie dem Anmeldebildschirm und dem
Root-Widget oder aus
der Kivi-Bibliothek importiert wie dem Anmeldebildschirm und dem Root-Widget oder aus
der Kivi-Bibliothek In diesem Fall importieren wir hier also kein
Rasterlayout. Oder das Gleiche
wäre mit der Taste. Also von KV, UIX diese
Schaltfläche Import-Taste. Das Gleiche gilt für das Text-Widget. Wir importieren
diese Objekte also nicht hier rein. Es geht also um die Objekte. All das sind Objekte, und dann haben Sie diese
Attribute dieser Objekte. Wenn Sie also eine
Python-Shell öffnen und
dieses Grid-Layoutobjekt importieren ,
wie ich es hier gezeigt habe,
und dann das
Grid-Layout in runden Klammern erstellen, werden
Sie feststellen, dass CLS eines der Attribute
des
Grid-Layoutobjekts ist Attribute
des
Grid-Layoutobjekts Das ist also über die Objekte. Nun zur Hierarchie einer
KV-App, sie funktioniert so. In der
Hierarchie steht die App an oberster Stelle. Also dieses App-Objekt hier drin. Dann kommt der Screenmanager, tatsächlich
durch das Root-Widget dargestellt wird. Das Root-Widget
folgt also der App, und dann haben wir den Bildschirm , der
durch den Anmeldebildschirm dargestellt wird. Dieser Anmeldebildschirm ist also
nur ein Kind des Bildschirms. Er verhält sich
genauso wie ein Bildschirm. Übrigens, wir hätten hier
auch
etwas anderes machen können, was ich Ihnen gerade
zeigen werde Sie könnten den
Anmeldebildschirm einfach so passieren. Und dann könnten
Sie hier das Root-Tidget hinzufügen, das sich in der Hierarchie befindet
, es befindet sich über dem Anmeldebildschirm Und dann könnten
Sie auf dem Anmeldebildschirm den Namen Login übergeben Bildschirm einfach so. Und
das könntest du löschen. Das wäre also derselbe Code und Sie erhalten dieselbe Ausgabe, wie Sie hier sehen können. Das zeigt also,
was ich gerade gesagt habe, dass das Root-Widget ein übergeordnetes Element ist und dann kommt ein Anmeldebildschirm
und innerhalb des Anmeldebildschirms haben
Sie ein Rasterlayout, Sie
haben ein anderes Rasterlayout, Texteingabe und so weiter. Um den
Code besser zu organisieren, denn hier im
Root-Widget müssten
wir später
einen weiteren Bildschirm wie einen
Anmeldebildschirm hinzufügen, müssten
wir später
einen weiteren Bildschirm wie einen
Anmeldebildschirm hinzufügen sodass dieser
seine eigenen untergeordneten Elemente hat Dann hätten wir
einen weiteren Bildschirm wie Anmeldefehlerbildschirm den der Benutzer
weitergeleitet würde, wenn bei den
Anmeldedaten
ein Fehler aufgetreten wäre bei den
Anmeldedaten
ein Fehler aufgetreten Der Code würde also
zu komplex werden. Daher
haben wir stattdessen in der den Anmeldebildschirm und in der
Regel auch das
Root-Widget. Und dann geben wir an, dass der
Anmeldebildschirm tatsächlich
ein untergeordnetes Element des hier verwendeten
Root-Widgets ist. Und so fügen wir auf die gleiche Weise weitere
Bildschirme hinzu. Das sollten Sie also im Hinterkopf behalten
, denn es hilft Ihnen, besser
zu verstehen, wie Kiwi funktioniert Und genau das hatte ich
über dieses Video, und ich hoffe, wir sehen uns
im nächsten Video
178. 176 . Einen Bankkonto-Kurs erstellen: Nun, in den vorherigen Vorlesungen
habe ich erwähnt, dass ich ein Programm und eine
Anwendung
erstellen
werde , bei denen wir eine Art Bankkonto verwalten, sodass
wir einen Saldo haben, und dann
einige Operationen anwenden werden , z. B.
Geld vom
Bankkontoobjekt abheben Geld vom
Bankkontoobjekt und auch Geld einzahlen. Ich werde den Wert
und den Saldo in einer
einfachen Textdatei speichern . Das ist also keines
der zehn Programme, die wir
im Kurs entwickeln. Dies dient nur dazu,
Sie mit den
Kursen vertraut zu machen und
sie ein wenig näher zu erklären. Also werde ich hier etwas
Hauswirtschaft machen. Also lass mich hier einen Ordner erstellen. Und lege all diese vorhandenen
Dateien in diesen Ordner. Wir haben also die vorherigen
Dateien hier, und ich werde jetzt einen
neuen Ordner erstellen. Nennen wir dieses Konto. Und in diesem Ordner
habe ich mein Python-Skript. Nennen wir es also so. Wir
haben also diese Python-Datei unter Konto, und wir benötigen auch diese Textdatei. Wir werden den aktuellen
Saldo unseres Bankkontos speichern . Dies wird also eine
triviale Anwendung sein ,
da
Sie im wirklichen Leben die
Bankkontoinformationen,
den Saldo, nicht in einer Textdatei speichern möchten den Saldo, nicht in einer Textdatei Im echten Leben möchten Sie das in einer echten Datenbank
speichern, wie zum Beispiel
Post Gras Aber um das
Objekt oder die Programmierung zu üben , speichern
wir einfach den
Balance-Wert in dieser Datei. Das ist also unser Speicher. Und der Einfachheit
halber werden
wir nur
mit einem einzigen Konto arbeiten. Unser Programm wird also in der Lage
sein,
ein Kontoobjekt zu verarbeiten , denn wenn
Sie mehrere Konten haben, könnte die Lösung davon abweichen. Sie müssten also wahrscheinlich
darüber nachdenken, eine Tabelle zu haben, und vielleicht wäre hier
eine Datenbank notwendig. Lassen Sie uns also über
unser persönliches Konto nachdenken. Sie können dieses Programm
für Ihre persönlichen Notizen verwenden, sodass Sie vielleicht
Ihren Kontostand im Auge behalten möchten und dieses Python-Programm
verwenden können. Und jetzt
ist das Objekt hier das Bankkonto. Und dieses Objekt, wir sollten anfangen darüber nachzudenken, welche Eigenschaften dieses Bankkontoobjekt als Ausgangszustand
haben sollte. Also haben wir über
dieses Minimalobjekt gesprochen, und ein Bankkonto hätte natürlich einen anfänglichen Saldo. Fangen wir also an,
dieses Kontoobjekt zu erstellen und es Konto zu nennen. Sie können es nennen
, wie Sie wollen, aber ich nenne es Konto. Darin ist also die erste
Funktion, die wir
definieren wollen, und wir übergeben uns dort
selbst. Und lass es uns für einen Moment
so belassen. Und wir haben gesagt, dass unser
Bankkontoobjekt ein Saldoattribut haben
wird. Und in unserem Fall haben
wir diesen Saldopunkt TXT, und lassen Sie uns dort einen
Anfangswert erstellen. Um nun eine
Objektinstanz zu erstellen, müssen
wir diesen
Wert abrufen und an
unsere Init-Funktion übergeben , sodass wir dieses Minimalobjekt
konstruieren Da wir eine Datei
haben, müssen
wir nur diese Nummer
aus dieser Datei lesen Und natürlich
möchten Sie hier einen Parameter wie
den Dateipfad übergeben . Also so werde ich
das nennen und jetzt, wenn Sie sich erinnern, in der Bookstore-Anwendung
im Backend-Skript übergeben wir
in der Bookstore-Anwendung
im Backend-Skript
hier auch einen Parameter
an die Init-Funktion Und dann haben wir aus dieser
Datenbankdatei ein
Verbindungsobjekt erstellt dieser
Datenbankdatei ein
Verbindungsobjekt In diesem speziellen Fall wollen wir eine Ganzzahl
erstellen, also eine Zahl aus dieser
Datei außerhalb dieses Dateipfads. Du könntest also so etwas
wie mit Open machen. Also machen wir die Dateibehandlung mit Methoden mit
offenem Dateipfad, und das ist eine Textdatei, also müssen wir unseren
Modus beibehalten, was Lesen bedeutet. Also öffnen wir den Dateipfad, diese Datei im Lesemodus. Als Datei. Das ist also nur eine temporäre Variable , die hier
mit einer Anweisung existiert. Und dann müssen wir aus dieser Datei
lesen. Also so etwas wie File Dot RED. Ja, das ist es. Dadurch
wird die Datei gelesen, aber du speicherst sie
nirgends. Was Sie also tun möchten, ist zu sagen, dass Selbst und Gleichgewicht
dem Dateipunkt Lesen entsprechen Das bedeutet also, dass der Wert in
der Textdatei in dieser
Instanzvariablen
gespeichert wird der Wert in
der Textdatei in dieser
Instanzvariablen
gespeichert der Textdatei in dieser
Instanzvariablen Das ist also eine Instanzvariable. So heißt sie. Eigentlich ist das die
Instanzvariable und das ist das Objekt, also das Account-Objekt. Gut. Das ist fast gut. Und wir müssen dort auch
die Integer-Funktion hinzufügen dort auch
die Integer-Funktion , da diese standardmäßig
als Zeichenfolge gelesen wird. Also müssen wir
diesen Wert in eine Ganzzahl umwandeln. Ja, das sollte funktionieren, und das sollte
das Objekt für uns konstruieren, das Act-Objekt, an das ein
Gleichgewicht geknüpft ist. Und bevor wir hier eine ähnliche
Auszahlungsmethode
und dann die Einzahlungsmethode erstellen . Ich würde es vorziehen, zuerst eine
Instanz dieser Klasse aufzurufen. Ich mache das hier. Sagen wir, sortieren Sie das in
der Account-Variablen. Das wird also das Objekt sein, das Objekt, das aus diesem Blueprint erstellt
wird ,
der
Konto-Blueprint, da müssen Sie dieses Argument
übergeben,
das Argument für diesen Parameter,
nämlich balance Großartig. Und für sich selbst übergibt Python
automatisch die
Account-Objektinstanz. Gut. Dadurch wird nun eine Objektinstanz
erstellt. Und lassen Sie mich
das Objekt hier ausdrucken. Wir sehen also einige Ergebnisse in Aktion. Python, und das ist im
Kontoordner und in Akt Pi. Wir haben einen Fehler erhalten, keine solche Datei oder Verzeichnis für Balance Dot TXT. Und der Grund dafür
ist, dass wir
das Kontoverzeichnis auch
dort übergeben müssen . Also und dieses Mal funktioniert es. Wir mussten das
Verzeichnis dort übergeben weil wir uns in diesem
Ordner im Demo-Ordner befinden, und Sie müssen
zuerst
den Kontoordner übergeben und dann
auf den Rest von TXT zeigen. Und das ist die Ausgabe. Es heißt also Main Dot
Account Object. Also das Account-Objekt
des Hauptmoduls. Und was Min ist, ist wenn Sie ein
Skript ausführen, wie wir es hier getan haben, also mit Python auf das
Skript zeigen, Python weist dem Modul diesen
Namen zu. Dieses Modul erhält also
tatsächlich
diesen Namen und das Skript, aber es
wird als Modul behandelt. Aber wenn Sie dieses Modul importieren. Wenn ich also laufen würde, öffne ich jetzt eine
interaktive Shell. Also aus dem
Kontoordner importieren. Was passiert
, ist , dass Sie auch die
Druckfunktion ausführen lassen. Aber dieses Mal, wenn
Sie eine Datei importieren, also wenn Sie sie nicht
ausführen, wie wir es zuvor mit dem
Python-Konto
gemacht haben, AC, dass Pi, wenn Sie das Modul
importieren, erhält
das Modul den Namen des
Skripts, in das es geschrieben wurde. In diesem Fall ist es also AC
ohne die Erweiterung. Und hier bekommst du auch den Namen des Pakets des Moduls. Pakete bestehen also aus Modulen, und ein Paket ist wie ein Ordner, und da haben Sie mehrere
Module oder ein Modul, wie wir es in diesem Fall haben. Unser Paket hier ist
Account, also Account, und dann hat es dieses Modul, und dann hat dieses Modul diese
Klasse, die Account-Klasse. Das war also etwas, was
ich
Ihnen Pakete,
Module und Klassen zeigen wollte . Großartig. Jetzt werde ich diese Python-Shell verlassen und ein bisschen mit diesem
Skript
herumspielen. Und was wir hier gemacht haben, wir haben den
Objektnamensraum ausgedruckt und den
tatsächlichen Saldo nicht ausgegeben, weil wir den Saldo hier nicht
zurückgeben. Wenn Sie jedoch den Saldo
ermitteln möchten, müssen Sie auf den Saldo zeigen
. Dabei wird eine
Punktnotation verwendet, um auf
das Objekt zu verweisen , das
das Saldoattribut enthält. Schauen wir uns also an, was
wir dieses Mal bekommen. Und ja, 1.000. Also das ist
der aktuelle Saldo. Wie Sie sehen, können
Sie
mithilfe der Punktnotation auf
Attribute Ihrer
Objektinstanz zugreifen der Punktnotation auf
Attribute Ihrer
Objektinstanz . Gut. Lassen Sie uns nun diese
anderen Methoden dort hinzufügen. Und was können wir
mit einem Bankkonto machen? Nun, wir können Geld abheben. Und Sie müssen immer
self in all Ihren Methoden angeben
und dann den Parameter
, und dann den Parameter der für diese
bestimmte Methode gilt. In diesem Fall haben Sie, wenn Sie etwas Geld
abheben, einen Betrag im Kopf
, den Sie abheben möchten. Sie übergeben
dort also den Betrag als Parameter. Nein, nur um klarzustellen, dass du
verstehst, was ich tue. Was ich hier mache, ist, dass ich
einen anfänglichen Saldo habe , der aus dieser Datei gelesen
wird, also dieser Textdatei, und dann möchte ich dem
Benutzer erlauben, Operationen durchzuführen, also Geld
von diesem Guthaben abheben. Und sobald der Benutzer
die Auszahlungsmethode ausführt, möchte
ich
die Saldonummer
in der Objektinstanz aktualisieren in der Objektinstanz Und ich möchte
diesen Saldo noch nicht in meine Bilanzdatei schreiben diesen Saldo noch nicht in meine Bilanzdatei Also möchte ich hier nur
etwas berechnen, zum Beispiel Selbstbalance
entspricht Selbstbalance Also, das ist eine Auszahlung, also abzüglich des Betrags, den
ich abheben möchte Das bedeutet, dass das
Eigengleichgewicht , sagen wir, 100 -100 entspricht, und ich werde in diesem Fall
ein aktualisiertes Guthaben von 900 Wenn ich will, kann
ich
die Datei hier erneut öffnen und die Datei hier erneut öffnen und dann den aktualisierten
Saldo in diese Datei schreiben Das wäre also eine Lösung. Eine konstruktivere Lösung
wäre jedoch wahrscheinlich eine spezielle Methode, die die Änderungen an
der Datei Vielleicht möchten Sie also
etwas Geld abheben und dann innerhalb derselben Sitzung etwas Geld
einzahlen
und dann die
Commit-Methode anwenden, um die Änderungen zu speichern Das ist also die Lösung, für die
ich mich entscheiden möchte. Ja, wir sind
mit der Auszahlungsmethode fertig. Zahlen Sie jetzt selbst
und den Betrag erneut ein. Das ist also eine lokale Variable.
Das ist eine lokale Variable. Sie haben zufällig
den gleichen Namen, aber sie haben nicht viel miteinander zu
tun. Und Selbstbalance entspricht in diesem Fall dem
Selbstgleichgewicht plus dem
Betrag Mal sehen, wofür wir das haben. Und ich werde dieses
Instanzobjekt hier behalten , das generiert
wird. , wir
beharren auf einer Objektinstanz Mit anderen Worten, wir
beharren auf einer Objektinstanz und drucken den aktuellen
Saldo aus Und dann möchte ich etwas
Geld abheben. Von meinem Kontoobjekt. Das heißt, ich wende „Auszahlung“
auf das Kontoobjekt an, und „Auszahlung“ benötigt
zwei Argumente. Also die Objektinstanz, die automatisch übergeben wird, und dann der Betrag
, der 100 sein könnte. Und sobald ich das gemacht
habe, möchte ich den aktualisierten Saldo
ausdrucken . Mal sehen, was es bewirken wird. Ja, 1.000. Also wird eine
Objektinstanz erstellt und du bekommst 1.000 ausgedruckt,
weil du hier 100 hast, und dann nimmst du
100 davon und am Ende hast du 900. Großartig. Wenn Sie das also erneut ausführen, werden
Sie feststellen, dass erneut
eine neue Objektinstanz erstellt
wird. Sie haben also keine 900
mehr
als aktuellen Saldo. Sie haben 1.000. Das bedeutet, dass Sie die Änderungen
in die Datei schreiben müssen , wenn Sie den
Saldo speichern möchten. Und das können wir
mit Methoden tun. Nennen wir es Commit. Und gib el dort weiter. Und mir fällt
kein Parameter ein, den ich
durch
diese Commit-Methode übergeben müsste
, weil wir nur
mit den dort vorhandenen
Variablen arbeiten werden . Also das wäre so
etwas wie mit open, naja, wir müssen den Dateipfad
öffnen, aber wir haben hier ein kleines
Problem, weil eine Dateipfadvariable jetzt
nur noch eine lokale Variable
in dieser Init-Methode ist nur noch eine lokale Variable
in dieser Init-Methode Wenn wir sie also hier übergeben, wird
diese Funktion, diese Methode, sie nicht erkennen Das ist also ein bisschen anders als das andere
Backend-Skript, das wir geschrieben haben, weil wir hier diesen
Parameter hatten, wie wir es hier tun Aber in diesem Fall wurde
dieser Parameter nur innerhalb
der Init-Methode verwendet Also haben wir
ihn nirgendwo anders benutzt. Dafür gibt es also eine Lösung. Eine Lösung wäre,
weiterzumachen und einen anderen Weg zu gehen , nennen
wir diesen Weg hier. Also ein weiterer Parameter
für die Commit-Methode. Wenn wir dann
die Commit-Methode aufrufen wie wir es
bei der Auszahlung getan haben, müssten
wir
den Saldopunkt TXT übergeben. Eigentlich dieser Pfad
zur Commit-Methode. Das würde zwar funktionieren, ist aber immer noch nicht die beste Methode objektorientiertes Paradigma. Also müssen wir nach einer anderen Lösung
suchen. Und das wäre,
diese lokale Variable
und Instanzvariable zu machen . Und um das zu tun, würdest du so etwas wie
Selbst
tun und Dateipfad
entspricht Dateipfad Und das
macht den Dateipfad, verwechseln
Sie das nicht damit verwechseln
Sie das nicht Das ist zufällig dasselbe, aber du kannst hier auch
etwas anderes schreiben, wie alles Das ist also der Parameter
der Einheitsfunktion. Also der Saldo, den TXC auf diesen Parameter legen
wird. Der Pfad dieser Datei
wird also zu diesem Parameter führen. Und dann erstellen Sie
diese Instanzvariable, und
diese Instanzvariable entspricht diesem Pfad. Aber du kannst dieses Ding hier benutzen. Du kannst es in deiner Klasse verwenden, wo immer du
willst. Und in unserem Fall würden
wir es gerne hier verwenden. Also öffnen wir den Self-Dateipfad dieses
Mal mit der richtigen Methode, weil
wir dieses Mal schreiben oder genauer
überschreiben müssen genauer
überschreiben um den
aktuellen Saldo zu überschreiben
, der zum Beispiel
dieser sein sollte Das wollen wir mit dieser
Datei überschreiben. Also als Datei ist das nur eine temporäre
Variablendatei und Dateipunktwiedergabe und Selbstpunktabgleich. Gut, lass uns das versuchen. Und wir haben hier kein Update in
der Datei erhalten , weil ich
vergessen habe ,
die Commit-Methode aufzurufen. Sobald wir also Geld abgehoben haben, drucken
wir es in der Konsole
aus. Und dann das Konto mit
dem Punkt Commit angeben, ohne ein Argument explizit zu
übergeben , weil wir implizit die Objektinstanz
übergeben Gut. Und wir haben dort einen Fehler bekommen: ungültiges Literal für
Ganzzahl mit Basis Zehn Das wäre also die
Ganzzahl in Zeile sechs. Hier wird also der Wert, mit dieser Methode gelesen
wird , nicht in eine Ganzzahl umgewandelt. Und der Grund dafür ist
, dass dieser Wert aus dem
Gleichgewicht
verschwunden ist, und das Lesen
einer leeren Zeichenfolge ist Das ist also eine leere
Zeichenfolge, die aus dieser Datei gelesen
wird, dann versuchst du sie zu konvertieren
und es funktioniert nicht Nun, der Grund, warum wir
diese leere Zeichenkettendatei hier bekommen haben, ist
der vorherige Fehler, also muss unser Argument hier eine Zeichenfolge
sein, keine Ganzzahl. Python hat also die Datei mit der Methode
geöffnet, war dann
aber nicht in der Lage, einen Wert
in diese Datei zu schreiben. Die Datei war also leer. Lassen Sie mich also den
Anfangswert dort schreiben, und dann sollten wir ihn jetzt erneut ausführen
können. Und ja, jetzt haben wir
den aktualisierten Wert. Also nochmal, wir haben die Objektinstanz
erstellt
und dann den aktuellen Saldo ausgedruckt
,
der aus dieser Datei gelesen wurde. Am Anfang waren es 1.000
, Am Anfang waren es 1.000
, und dann haben wir 1.000 abgezogen, also wurde der Saldo aktualisiert, und dann haben wir diese
Änderungen in diese Datei übernommen, sodass wir dort 900 Nun, das Gleiche gilt, wenn
Sie, sagen
wir, 200 hinzufügen und einzahlen möchten sagen
wir, 200 hinzufügen und einzahlen Mal sehen, ob das funktioniert. Uh, ja, das wurde
ausgedruckt. Lass uns die Akte überprüfen. Ja. Also das ist
unser neues Gleichgewicht. Und ja, ich hoffe, das verdeutlicht einige Konzepte der
objektorientierten Programmierung Wenn Sie kreativ sind, können
Sie dieses Skript
erweitern, sodass Sie dort weitere
Methoden hinzufügen und es vielleicht eher zu einer
echten Anwendung
machen können eher zu einer
echten Anwendung
machen So großartig. Und hier
geht es um diese Vorlesung, und in der nächsten Vorlesung werde
ich über Vererbung sprechen, und wir werden dieses Skript
erweitern indem wir dort
Vererbung anwenden. Also rede ich in
der nächsten Vorlesung mit dir.
179. 177. Klassen durch Vererbung erstellen: Fantastisch. Wir sind fast
fertig mit dem Unterricht. Aber es gibt noch ein letztes Konzept
, das du wissen musst, und das ist Vererbung. Vererbung ist der
Prozess, bei dem aus
einer Basisklasse eine neue Klasse erstellt wird. Also eine neue Klasse, die
alle Eigenschaften und
Methoden einer Basisklasse hat , aber auch
einige andere Methoden hat. Also warum machen wir das? Nun, ich werde dir das anhand
unseres Beispiels erklären. Also hier haben wir diesen
Bauplan, also diesen Kurs. Und lassen Sie mich das löschen, um Sie
nicht zu verwirren. Also da haben wir nur die
Klasseninstanzen aufgerufen. Wir haben also diese Klasse, die ein
Bankkontoobjekt für uns
erstellt. Dann können wir Geld vom
Bankkonto abheben und einzahlen. Was ist nun, wenn wir Geld von
diesem Bankkonto
überweisen möchten ? also Geld von unserem Bankkonto Überweisen Sie also Geld von unserem Bankkonto auf
ein anderes Bankkonto. Nun, wir müssten hier
eine Überweisungsmethode hinzufügen. Und dann mach
so etwas ganz Einfaches wie Selbstbalance gleich
Selbstbalance abzüglich des Betrags. Also überweisen wir dort einen
Überweisungsbetrag, von unserem Guthaben hier abgezogen wird Aber soweit ich weiß, können
Sie kein Geld
von Ihrem Sparkonto überweisen Sie können Geld von
Ihrem Girokonto überweisen, aber nicht von einem Sparkonto. Diese Methode wäre also für ein Girokonto nicht
sinnvoll . Und dieses Konto ist ein
allgemeines Bankkonto. Was wir also tun könnten, ist vielleicht eine weitere Klasse zu erstellen, Beispiel diese zu kopieren und eine weitere Klasse
zu erstellen und sie etwas anderes zu
nennen. Und so haben wir all
diese Methoden da. Das ist also eine Lösung. Die andere Lösung besteht darin
, Vererbung zu verwenden. Hier bietet sich also
Vererbung an. Sie leiten eine Klasse
aus einer Basisklasse ab, bei der es
sich um eine allgemeinere Klasse wie diese Kontoklasse hier Lassen Sie uns also eine neue Klasse erstellen. Diese neue Klasse wird als Unterklasse bezeichnet
, und dies wird die Basisklasse sein Also auch hier müssen Sie dieselbe Syntax verwenden, die Sie für die Klasse Q oder dort
verwenden, um eine Klasse
zu erstellen Nennen wir das
Girokonto. Das erste, was wir tun wollen, ist eine Innit-Methode zu erstellen Mit dieser Init-Methode werden
wir wie
dieses Minimalobjekt erstellen , über das ich gesprochen
habe Wie in unserer Basisklasse brauchen
wir auch hier eine Balance aus unserer Datei, also brauchen wir diesen Dateipfad Aber anstatt
diesen Code erneut zu schreiben, wie gesagt,
können Sie, naja ,
zuerst
eine Init-Funktionsmethode erstellen und dort natürlich self
übergeben Sie übergeben immer den
Self-Parameter, egal ob es sich um
Basisklassen oder eine Unterklasse Dann möchten
Sie in dieser Init-Methode die
Init-Methode Ihrer Kontoklasse aufrufen,
was bedeutet, dass, wenn Sie
eine Objektinstanz
Ihrer Prüfklasse erstellen , diese Methode ausgeführt wird,
wenn diese Methode ausgeführt wird Diese Methode führt
die Init-Funktion
Ihrer Account-Methode aus , sodass Sie dieses Minimalobjekt
erstellen, das mit diesem hier identisch
ist aber dann werden wir hier unten einige
zusätzliche Methoden haben. Ein Girokonto ist
das und einige andere Dinge. Und hier
müssen Sie self und
den anderen Parameter übergeben , für
diese Init-Funktion erforderlich
ist Hier übergeben wir also
zwei Parameter, und wir sollten hier
dasselbe tun Und wenn ich das
jetzt ausführe, erhalte ich eine Fehlermeldung. Ich möchte also, dass Sie sehen
, welchen Fehler wir bekommen. Lassen Sie mich also eine
Instanz dieser Funktion erstellen. Also überprüfe ich Oh, ja,
lass uns das ausprobieren. Ähm, hier. Ja. Das ist
im Account-Ordner, also hier, und dann Punkt Pi Lass uns sehen. Das Erste , was das bedeutet,
ist, dass der Dateipfad in Zeile 21
nicht definiert ist,
was diese hier ist. Und der Grund dafür
ist, dass wir
in dieser Funktion keinen Dateipfad
definiert haben . Sie können
das also innerhalb der
Init-Klammern als Parameter übergeben Und dann musst du das auch hier
übergeben. Sagen wir also, zählen Sie den
Saldo Punkt TXT. Gut. Und wir sehen dort
keine Ausgabe, weil
wir nichts ausdrucken. Aber was im Grunde passiert
ist, ist, dass eine Objektinstanz erstellt
wurde
und diese Methode genannt wurde. Und diese Klasse wurde auch
initialisiert. Wenn wir das nun versuchen, der Sinn der Vererbung
darin, zum
Beispiel zu überprüfen, ob auf Methoden
der Basisklasse zugegriffen werden kann, ohne diese Methoden
in Ihre Unterklasse zu
schreiben Nehmen wir an, wir überprüfen
die Einzahlung und geben dort einen
Betrag ein. Also zehn. Wenn wir das jetzt ausführen, erhalten
wir diesen
Attributfehler, der besagt, dass das Prüfobjekt
kein Attribut hinterlegt hat, sodass diese Methode nicht
erkannt wird. Und der Grund dafür
ist, dass wir die
Syntax der Vererbung
noch nicht erfüllt haben. Der Schlüssel hier ist also,
ein Argument an unsere
Prüfunterklasse zu übergeben ein Argument an unsere
Prüfunterklasse zu Und dieses Argument
ist eine Basisklasse, also der Name der Basisklasse Sagen wir, wenn Sie
jetzt dasselbe tun und vielleicht
die Ausgabe ausdrucken , um zu sehen, was
passiert, Self-Punkt-Balance. Entschuldigung, ich wollte sagen, den Saldo
überprüfen. Tut mir leid. Und ja,
jetzt scheint es zu funktionieren. Also wurde diese Methode anerkannt, und das hat dazu geführt, dass von 1.100, was der ursprüngliche Saldo war, auf 1.110 gestiegen
ist also
die Variable Saldo Incess
der Basisklasse ausgedruckt die Variable Saldo Incess
der So zahlen wir also etwas Geld auf unser
Girokonto ein Jetzt wollen wir Geld überweisen, also müssen wir hier
eine neue Methode definieren, nennen
wir diese Überweisung. Übertrage selbst dorthin und auch
einen lokalen variablen Betrag, also als Parameter. Das ist also nur eine
lokale Variable. Es hat nichts damit zu tun
, wenn sie einmal hier sind. Und dann wollen wir die Bilanz
aktualisieren. Also wollen wir etwas
Geld auf ein Konto überweisen. Dieser Betrag wird von unserem
Guthaben abgezogen. Das bedeutet also, dass das
Selbstgleichgewicht dem Selbstgleichgewicht abzüglich des
Betrags Nun, wenn wir dort die neue Methode ausprobieren. Wir sind also an diesem Punkt. Lassen Sie uns 110 übertragen. Ja. Und ich hatte erwartet, 1.100 hier zu haben, aber ich habe diese Nummer. Und der Grund dafür
ist, dass wir die Änderungen nicht früher vorgenommen haben,
als wir etwas Geld eingezahlt haben Als wir
das Skript jetzt ausgeführt haben, wurde von
Anfang
an eine Objektinstanz erstellt und sie
bekam diese Nummer hier, die nicht aktualisiert wurde, weil wir die Änderungen nicht früher
festgeschrieben haben,
aber Sie verstehen schon, was ich meine. Also von diesem Saldo, wenn wir diese
hier abziehen, bekommen wir Das bedeutet, dass die
Übertragungsmethode funktioniert, aber wir müssen dort nur
die Commit-Methode anwenden Auch hier können wir
diese Änderungen übernehmen. Ja, mal sehen, was wir jetzt bekommen. Also von 1.100 möchte ich 100
übertragen, und jetzt erwarte ich, dass
das auf 1.000 aktualisiert wird Lass uns sehen. Ja, 1.000 hier
ausgedruckt und
1.000 auch hier drin. Also das funktioniert super. Außerdem möchte ich, dass Sie über die Vererbung wissen ,
dass Sie
Ihre eigenen Instanzvariablen
für Ihre Unterklasse hinzufügen können Ihre eigenen Instanzvariablen
für Ihre Unterklasse In diesem Fall ist zum Beispiel unsere einzige
Instanzvariable Balance, die
von der Konto-Basisklasse übernommen wurde Aber wir können unsere eigenen
Instanzvariablen hinzufügen. Nehmen wir an, diese Übertragung ist
auch mit einer Gebühr verbunden. Wenn Sie also eine Überweisung tätigen, berechnet
Ihnen
Ihre Bank etwas Geld. Und Sie möchten
diese Gebühr als Parameter angeben. Lassen Sie uns die Dinge
einfach halten und sagen, wenn Sie Geld überweisen, also Saldo minus
Betrag minus Gebühr. Lassen Sie uns dort also keine
Prozentsätze anwenden. Nehmen wir an, wir haben eine Gebühr von 1 USD pro Überweisung Wenn wir nun die
Übertragungsmethode erneut anwenden, erhalten
wir wahrscheinlich
eine Fehlermeldung, da dieser Gebühr hier nur um eine
lokale Variable handelt. Was Sie jetzt also
beantragen müssen, ist, dass Sie diese Gebühr in
eine Instanzvariable
umwandeln müssen ,
was bedeutet, dass eine
Selbstpunkt-Gebühr einer Gebühr entspricht Das heißt, wenn Sie hier
eine Gebühr zahlen, sagen wir, 1$ oder eine andere Währung, und Sie geben sie hier weiter, also wird das hier und das hier hingehört, und das
entspricht der Gebühr, die
Sie hier zahlen Und dann können wir diese Instanzvariable verwenden und sie in dieser Übertragungsmethode verwenden. Großartig. Jetzt sind wir
bei 1.000 und lassen Sie mich das ausführen. Ja. Also 899, und sie
sind hier die gleichen, was 100
-100 abzüglich der Gebühr bedeutet, du bekommst diese Nummer Und ja, ich hoffe,
Sie können sehen, wie nützlich
Vererbung ist, um Unterklassen
aus der Basisklasse zu erstellen Das war's für diese Vorlesung, und wir haben
noch eine Vorlesung vor uns. Und in der nächsten Vorlesung werde ich einige Begriffe der
objektorientierten Programmierung
erläutern. Das wird also ein kurzer Vortrag sein, später helfen wird, wenn Sie sich auf die
Dokumentation beziehen , weil es in OOP eine
ganze Reihe von Konzepten
gibt, in OOP eine
ganze Reihe von Konzepten
gibt,
und ich möchte nicht, dass
Sie damit verwechselt werden. Also ich denke, das ist ein
wichtiger Vortrag. Ja, ich rede später mit dir.
180. 178. OOP-Glossar +++: Hallo nochmal. Und
in dieser Vorlesung möchte
ich
sicherstellen, dass Sie
die Terminologie der
objektorientierten Programmierung in Python kennen . Jetzt haben wir also die Klasse, die hier dieser Bauplan ist, oder Sie können sie
einen Prototyp nennen der die Eigenschaften
eines Objekts
definiert , das im Begriff ist, erstellt
zu werden Das ist also die Klasse,
und dann haben wir die Objektinstanz
oder einfach das Objekt Dieses Jahr ist also ein Objekt. Also ein
Girokontoobjekt, das Daten in diesem
speziellen Dateipfad
speichert und dieses Attribut hat. Es hat also diese Gebühr. Dann haben wir Instanzvariablen, und das sind Variablen
, die innerhalb
der Methoden der Klasse definiert sind ,
wie hier Fault Path. Und auf diese kann
von der Instanz
der Objektinstanz zugegriffen werden ,
die von dieser Klasse erstellt wurde. Dann haben wir auch etwas, das
als Klassenvariable bezeichnet wird. Also Instanzvariable
und Klassenvariablen. Nun, wir haben
in keiner der vorherigen Vorlesungen
eine Klassenvariable erstellt . Also werde ich jetzt weitermachen
und eine erstellen. Lassen Sie uns eines für
unser Girokonto erstellen. Das wäre also so etwas wie sagen
wir, Typ ist gleich zwei Zittern. Eine Klassenvariable
wird also außerhalb
der Methoden dieser Klasse deklariert , und Klassenvariablen werden
von allen Klasseninstanzen gemeinsam genutzt von allen Klasseninstanzen Instanzvariablen werden also nur
von der Objektinstanz gemeinsam genutzt . Lassen Sie
mich das zum Beispiel erklären. Hier ist dies eine
unserer Objektinstanzen, also haben wir hier nur eine
Objektinstanz, aber wir könnten mehr haben. Also kopiere ich das und erstelle hier eine weitere
Objektinstanz. Und ich nenne das, sagen wir mal, das ist Jacks Girokonto. Also werde ich
das und das ersetzen. Und das ist Johns
Girokonto. Und sie haben dort auch ihren
persönlichen Speicher. Sagen wir also Jack Dot
TXT und Joan Dot TXT. Jack hat also 100$
und Joan hat 200$. Gut. Also müssen wir
das ändern, Jack Jack und Joan Und wenn wir
dieses Skript jetzt ausführen, bekommen
wir zwei
Werte ausgedruckt Also minus eins für
diese Abrechnung hier weil Jack also
100$ hatte, aber dann hat er 100 überwiesen
und dann abzüglich der Gebühr von 1$. Und dann hatte er dort
minus 1$. Ihm gehört etwas Geld auf der Bank. Und dann hatte John 200, also hat er jetzt 99. Ich versuche also
zu sagen, dass diese Variablen
nur zu ihrem Objekt gehören. Aber wenn du es jetzt versuchst, überprüft
Jack den Punkttyp. Sie möchten also den Print Jones Punkttyp Print Jones als
Prüfpunkt drucken. Sie werden sehen, dass diese
Klassenvariable von allen
Instanzen dieser Klasse
gemeinsam genutzt wird . Was ist also der Unterschied zwischen Klassen- und Instanzvariablen Klassenvariablen werden selten verwendet daher
müssen Sie sie hier wirklich übergeben. Ein anderes Konzept, jetzt Doc-Strings. Und eine Doc-Zeichenfolge wird normalerweise übergeben, sobald Sie das Schlüsselwort clas
schreiben,
also geben Sie einfach das Schlüsselwort class ein Das liefert die
Erklärung Ihrer Klasse. Nehmen wir an, diese Klasse generiert
Girokontoobjekte. Dann schließt du das
mit drei Anführungszeichen. Das macht also, weißt
du, wenn wir das ausdrucken uns eine unserer
Objektinstanzen schnappen, sagen
wir, Jos Prüfpunkt. Doppelter Unterstrich, Doc, und nochmal doppelter Unterstrich
. Also drucke das aus Wie Sie sehen, wird eine
Dokumentzeichenfolge verwendet , um einige Informationen
über diese Klasse bereitzustellen. Es ist also gut, die Zeichenfolge zu
definieren wenn Sie
Klassen schreiben, damit andere, wenn sie Ihre Klasse verwenden, diese
Operation hier anwenden können,
sie können sehen, worum es in
der Klasse geht. Dies ist besonders nützlich, wenn Sie
Klassen aus Modulen importieren. Also, wenn Sie den Code Ihrer Klasse nicht wirklich
sehen und Sie dies tun können und Zugriff auf die
Dokumentzeichenfolge der Klasse haben. Und dann haben wir ein
Konzept von Dota-Mitgliedern, das eigentlich als Klassenvariablen oder
Instanzvariablen bezeichnet
wird Klassenvariablen oder
Instanzvariablen Das ist also ein Datenelement und das ist auch ein
Datenelement Dann haben wir den Konstruktor, das war diese Init-Funktion Und wie Sie wissen,
die Init-Funktion, also der Konstruktor konstruiert Dann haben Sie
Klassenmethoden, die Sie
auf Ihre Objektinstanz anwenden Transfer ist also eine Klassenmethode. Das ist also auch eine Methode, aber es ist eine spezielle Methode,
also ist es ein Konstruktor Und Instanziierung, falls Sie von Instanziierung
hören, ist
das ein Prozess der Erstellung von Objektinstanzen ist
das ein Prozess der Erstellung von Objektinstanzen Also Instanzen einer Klasse. So wie das ist die Instanziierung
der Klasse. Und dieser hier auch. Und Sie wissen schon, Vererbung ist
jetzt Vererbung, wenn Sie eine Unterklasse
aus einer Basisklasse erstellen Und diese Unterklasse teilt sich die
Methoden der Basisklasse und hat
ihre eigenen Methoden, hat
ihre eigenen Methoden diese Unterklasse spezifisch
sind Manchmal
hört man auch von Attributen, und Attribute sind
das hier Wenn Sie also auf diese Instanzvariablen oder sogar Klassenvariablen oder
sogar Instanzvariablen
zugreifen, können
Sie sagen, dass Sie auf Attribute
Ihrer Klasseninstanz,
Ihres Objekts zugreifen. Und ja, das ist
ungefähr das Vokabular der objektorientierten
Programmierung in Python. Und ich glaube wirklich, dass
ich Ihnen
ein solides Verständnis der
objektorientierten
Programmierung und der Erstellung von
Klassen und Objekten usw. vermittelt ein solides Verständnis der objektorientierten
Programmierung und der Erstellung habe. Wenn Sie immer noch
etwas verwirrend finden, können
Sie
sich die Videos entweder noch einmal ansehen weil ich weiß, dass objektorientiertes Programmieren etwas knifflig ist, aber Sie können sogar Fragen stellen, und ich werde mein Bestes geben, um
Dinge zu erklären , die Ihnen
noch nicht klar sind. Ja, ich hoffe, du
findest das nützlich. Und ich werde
in der nächsten Vorlesung mit Ihnen sprechen, also sind wir mit diesem Abschnitt fertig
und wir sehen uns später.
181. 179. App 7: Mobile Feel-Good-App-Demo +: Hallo, und natürlich willkommen in einem
neuen Bereich. Dieser Abschnitt ist
etwas ganz Besonderes, denn hier werden
wir eine mobile App
erstellen. Bisher haben wir mit
Desktop-Apps oder Web-Apps gearbeitet. In diesem Abschnitt kann die
App, die wir
erstellen werden, jedoch auf Android
- und IOS-Geräten ausgeführt werden, und sie kann auch
auf Desktop-Geräten ausgeführt werden. Wir werden also eine einzige App
mit einer grafischen Benutzeroberfläche
erstellen , Benutzer auf dem Desktop,
auf Android und IOS verwenden können . Diese App wird über eine
Anmeldeschnittstelle verfügen , über die
sich der Benutzer
anmelden und sich auch
registrieren kann , um sich als Benutzer der App zu registrieren. Und dann können sie
einige Knöpfe drücken, um Angebote zu erhalten . Aus der App. Sie werden also sagen, wie
sie sich fühlen, wenn sie sich glücklich, traurig oder geliebt fühlen, damit sie ein Gefühl vermitteln. Und die App wird versuchen
, wenn der Benutzer traurig ist, versucht
die App,
ihn glücklich zu machen, indem sie ein Zitat macht, das für
seinen Gefühlszustand relevant ist. Stimmt das? Also das ist die App. Ich bin mir sicher, dass es interessant wird
. Wir werden
die KeV-Bibliothek benutzen. Es ist eine
Drittanbieterbibliothek für Python
, mit der Sie Apps erstellen können, also auch Desktop- und mobile Apps. Äh, lassen Sie uns eintauchen und ich werde in der
nächsten Vorlesung mit Ihnen sprechen. Wir sehen uns.
182. 181. Erstellen einer Benutzerregistrierungsseite: Zuvor haben wir diesen
Python-Code und diesen Kiv-Code erstellt. Es ist also eine Kiv-App,
die Sie ausführen, indem Sie
den Python-Code ausführen,
nicht den Kiv-Code Also hier, drücke den runden Knopf
und das ist was wir haben wir zu, es ist eine
gut aussehende Oberfläche, aber im Moment ist es ziemlich kalt denn wenn wir diese
Tasten drücken, passiert nichts. Lassen Sie uns also weitermachen und die Anmeldeschaltfläche
implementieren. Wir wollen also, wenn der Benutzer
eine Anmeldeschaltfläche drückt, die Seite,
den Bildschirm zu einem anderen Bildschirm
mit einem anderen Satz von Widgets wechseln . Dazu müssen wir der Anmeldeschaltfläche
einen
Funktionsaufruf zuweisen . Gehen wir also weiter und
gehen zum QV-Code, suchen wir die Schaltfläche „Anmelden“, die sich hier befindet Die Schaltfläche
erhält also dieses Attribut,
das Textattribut, aber sie kann auch
ein anderes Attribut erhalten , das beim
Drücken auf Unterstrich aufgerufen wird Attribut bewirkt, dass ,
wenn der Benutzer die Taste
drückt, Sie,
wenn der Benutzer die Taste
drückt, die
Root-Punkt-Anmeldefunktion aufrufen Vergiss die
Code-Klammern nicht. Also, was ist Root und
was ist Sign Up? Root ist ein spezieller Name, den Sie in einer QV-Datei verwenden
können, und root bezieht sich auf die
Klasse des Regel-Widgets Das Regel-Widget
hier, wo wir uns befinden, ist der Anmeldebildschirm Also die Klasse des Anmeldebildschirms
, also der Anmeldebildschirm. Root bezieht sich also eigentlich
auf die Klasse des Anmeldebildschirms. Und jetzt verwenden wir
diese Punktnotation. Dann verwenden wir die
Methode des Anmeldebildschirms. Melden Sie sich also auf
dem Anmeldebildschirm an, auf dem es keine
Anmeldemethode gibt, aber wir können
eine erstellen. Definieren Sie das Zeichen. Up, verwende den Self-Parameter
für Klassenmethoden. Und dann lass uns vorerst
etwas Einfaches machen. Lass uns einfach ausdrucken. Das Drücken der Anmeldetaste ist nur eine Zeichenfolge, was bedeutet, dass sie auf dem Terminal
ausgedruckt wird .
Lass uns das versuchen Speichern Sie die Kiwi-Datei und
führen Sie die Python-Datei aus. Und dann drücken Sie auf Anmelden und wie
Sie im Terminal sehen können, wird die Zeichenfolge zum Drücken der
Anmeldetaste jedes Mal
ausgedruckt , wenn ich
die Anmeldetaste verwende So einfach ist das also. Verwenden Sie das Attribut beim Drücken, und jedes Mal, wenn die
Taste gedrückt wird, wird die
Registrierung
aufgerufen. Diese Funktion. Was wir jetzt
wirklich tun wollen, ist den Bildschirm zu wechseln. Aber zuerst
müssen wir einen Bildschirm erstellen. Die Art und Weise, wie Sie Bildschirme erstellen,
ist in der Kiwi-Datei enthalten. Wir haben hier also den
Login-Bildschirm. Jetzt wollen wir diesen Anmeldebildschirm erstellen, nennen
wir ihn. Nach der Regel
nutzt ihr die Spalte, ein Fingertipp zum Einrücken Und so wird dieser neue Bildschirm
aussehen. Wir haben also ein Etikett. Wir haben zwei
Texteingabefelder und wir haben eine Schaltfläche. Und alles
befindet sich in einem Rasterlayout. Mit einer Spalte. Und
diese eine Spalte wird einfach eine Ebene mit Text haben. Melde dich für eine
Weltraumreise an. Warum nicht? Sie können
Ihrer Fantasie freien Lauf lassen,
aber achten Sie darauf, dass es sich um Insiderzitate
handelt. Es ist also eine Schnur. Dann kommt eine Texteingabe. Es wird als Hinweistext verwendet. Die Zeichenfolge für den Benutzernamen. Was wird also als Hinweis
in der Textbox angezeigt? Eine weitere Texteingabe mit Hinweis. Text. Du hast es erraten Passwort. Und zu guter Letzt ein Knopf. Mit Text abschicken. Oder Sie können „
Anmelden“ schreiben, was auch immer Sie möchten. Das sind also nur Zeichenketten. Du kannst benutzen, was du willst. Die Idee ist also, dass,
wenn der Benutzer auf
die Schaltfläche Senden drückt , die Daten, also der Benutzername und das
Passwort, an
die Datenbank gesendet werden , in der wir die
Benutzernamen und Passwörter
speichern. Diese Datenbank wird also
lesbar sein, sodass wir sie schreiben können. Wir können dieser Datenbank weitere
Benutzernamen hinzufügen und sie wird auch lesbar sein. Wenn also ein
Benutzer versucht
, sich anzumelden, werden
wir diese Datenbank
lesen, um
zu sehen, ob der
Benutzername und das Passwort, das der Benutzer mit
einer Anmeldeschaltfläche zu senden versucht , in dieser Datenbank enthalten sind oder
nicht. Und diese Datenbank
wird eine JSON-Datei sein, was eine einfache Möglichkeit ist mit Benutzernamen
- und Passwortdaten umzugehen. Richtig. Wenn Sie nun diese Kiwi-Datei
speichern und das Python-Skript
ausführen, passiert
nichts, da die Anmeldeschaltfläche immer noch diese Symbolzeichenfolge
ausdruckt
und der Bildschirm, den wir
gerade erstellt haben, nicht überall hin gesendet
wird , um angezeigt
zu werden Wir geben also keine Befehle zur Anzeige des Anmeldebildschirms Als Nächstes müssen
Sie also den Anmeldebildschirm unter den
Root-Widgets
auflisten , sozusagen die Namensregistrierung Bildschirm. Bildschirme
müssen also einen Namen haben. Und der Grund dafür ist
, dass hier
in der Anmeldeschaltfläche
die Magie haben können, wir hier
in der Anmeldeschaltfläche
die Magie haben können,
Self Dot Manager Dot Current
gleich dem Anmeldebildschirm zu machen Self Dot Manager Dot Current gleich dem Anmeldebildschirm zu Anmeldebildschirm ist also diese Zeichenfolge hier, die
wir gerade erstellt haben Speichern Sie die Kiwi-Datei und führen Sie die Python-Datei aus, um zu
sehen, was vor sich geht Daher kann es sein, dass Sie von Zeit zu
Zeit diesen
Fehler erhalten .
KV-Faktor-Factory-Ausnahme, Anmeldebildschirm für
unbekannte Klassen, was bedeutet, dass es sich um einen Fehler handelt, der in Ihrer KV-Datei
aufgetreten Der Bildschirm für die Klassenanmeldung,
der hier ist, ist unbekannt, weil
es in der Kiv-Bibliothek
keine Klasse KV gibt , wie es bei
Rasterlayoutbeschriftungen der Fall ist Das sind alles Klassen
in der Kiwi-Bibliothek. Anmeldebildschirm ist also keine
Klasse in der KV-Bibliothek,
und es ist keine Klasse, die in der Python-Datei
deklariert ist. Sie müssen also nur eine Klasse für den Anmeldebildschirm
erstellen. Vom Bildschirm erben und
vorerst einfach bestehen, erneut
ausführen und sich anmelden Und das ist unser neuer Bildschirm. Wir haben also die Bezeichnung
zwei Texteingabefelder und eine Schaltfläche zum Absenden erhalten, was vorerst
nichts bewirkt, da dieser Anmeldebildschirm mit der Klasse
verbunden ist , für die
wir gerade die
Anmeldebildschirmklasse erstellt Welche Aktionen auch immer auf dieser Seite, auf diesem Bildschirm vom Benutzer, ausgeführt
werden, sie werden
einigen Funktionen entsprechen , die wir
dem Anmeldebildschirm hinzufügen werden dem Anmeldebildschirm hinzufügen Und lassen Sie mich
diese Zeile hier erklären, Self Dot Manager Dot Current Selbst bezieht sich also auf die Instanz
dieser aktuellen Klasse,
der Klasse, in der sich Self befindet. Also Objekt auf dem Anmeldebildschirm. Anmeldebildschirm ist die Klasse, und self ist das
Objekt, das instanziiert wurde
, die
aus dieser Klasse erstellt wurde Und dann
ist Manager Manager eine Eigenschaft von Screen. Da diese Klasse also vom Bildschirm
erbt,
ist Screen ein übergeordnetes Objekt und der
Login-Bildschirm ein untergeordnetes Und das Elternteil gibt
dem Kind all seine Methoden, all seine Eigenschaften,
all seine Attribute, natürlich
auch den Manager Self kann also auf den Manager
zugreifen, und dann hat der Manager sein eigenes
Attribut, das aktuell ist. Also aktuell vom Manager und vom
Manager des Anmeldebildschirms. Und dieses aktuelle Attribut
erhält den Namen eines Bildschirms,
zu dem
Sie wechseln möchten ist der Anmeldebildschirm, dieser Anmeldebildschirm hier, ein Widget, das wir hier erstellt
haben. Und das ist die Idee. So wechseln Sie mit QV zwischen den
Bildschirmen.
183. 182. Benutzereingaben erfassen: Hallo, nochmal. Was
wir bisher in unserer KV-App haben, ist die
erste Seite der App, die ich als Anmeldebildschirm gewählt habe. Hier melden sich die
Benutzer an und registrieren sich. Und die Anmeldeschaltfläche wurde
nicht implementiert, also das Passwort vergessen und die
Anmeldeschaltfläche funktioniert. Nun, es gibt ein paar
Dinge, die Sie vielleicht Nächstes tun
möchten,
wie zum Beispiel, Sie möchten vielleicht
etwas Entwurfsarbeit leisten , um
einige Leerzeichen zwischen
diesen Schaltflächen,
diesen Texteingaben
und dieser Schaltfläche zu haben einige Leerzeichen zwischen
diesen Schaltflächen,
diesen , oder vielleicht möchten Sie diese
beiden Schaltflächen
kleiner machen und sie einfach als
Links statt als
Schaltflächen mit Quadraten anzeigen . Aber das können Sie tun,
aber was ich lieber selbst
mache, ist, dass ich zuerst ein Mindestdesign erstellen möchte,
was bedeutet, dass ich
dafür sorgen möchte, dass das Design funktioniert. Ich möchte nur, dass es
mir vorerst reicht , die Schaltflächen zu sehen. Mir ist egal, ob sie
zu groß oder zu klein sind. Ich möchte, dass sie arbeiten. Also drücke
ich eine Anmeldetaste, dann möchte ich hier hin
können, oder? Ich verwende einen Namen und ein Passwort. Und wenn ich auf Senden klicke, möchte
ich diese
Daten in der Datenbank speichern. Also möchte ich einen neuen
Benutzer mit diesen Daten erstellen. Und am Ende, nachdem ich alle
Funktionen des Programms abgeschlossen
habe, möchte
ich mit
einem Design herumspielen , damit
es besser aussieht. Lassen Sie uns in dieser Vorlesung also
weitermachen und
die Schaltfläche „Senden“ implementieren ,
sodass diese Daten in einer JSON-Datei gespeichert
werden. Richtig, also lasst uns die Schaltfläche „
Senden“ suchen, die sich
hier befindet , und das
Press-Attribut hinzufügen, das den Wurzelpunkt
ausführt. Der Root ist also eine Klasse für den
Anmeldebildschirm. Dieser hier. Wir werden
die Methode dieser Klasse ausführen. Nennen wir diese Methode „Benutzer hinzufügen“. Okay, lassen Sie uns weitermachen und
diese Funktion zu dieser Methode hinzufügen . Fügen Sie den Benutzer selbst hinzu. Lassen Sie uns vorerst
übergehen. Diese Methode ruft also
die Werte ab,
also den Benutzernamen und
die Passwortwerte, und sendet sie und speichert
sie in der Datei Adjacent. Also, wo sind die Werte? Nun, wir können mit Root-IDs,
Punkt, auf den
Benutzernamen zugreifen . Hier geben wir die ID des Widgets ein, in das der
Benutzername eingegeben wird. Also das Texteingabe-Widget. Es hat keine ID,
aber wir können ihm eine ID geben. AUSWEIS. Nutzername. Ich
sollte nicht in Anführungszeichen stehen, also ist es nur eine Variable. Dann
schreibst du hier den Benutzernamen. Wenn Sie es nun so lassen
und auch root bekommen, identifiziert
das das Passwort. Geben wir dem Passwort also auch eine ID
. ID-Spalte, Passwort,
einfach so. Erstellen Sie dann in der Anzeigenbenutzerfunktion einige Parameter. Es kann ein Passwort verwendet werden. Also genau wie diese Ds, aber es hat nichts damit zu tun. Sie können hier beliebige
Parameternamen haben. Und aus diesem Grund würde
ich gerne das Wort Name P schreiben, um nicht
mit diesen IDs verwechselt zu werden. Lassen Sie mich vorerst nur den Namen U und das Wort P
ausdrucken, nur um zu sehen, was wir bisher haben. In Ordnung, melde dich an. Sagen wir u1p1, ein Passwort.
Warum nicht? Senden Sie ab und wenn Sie
nichts erhalten, haben wir die QB-Datei
vielleicht nicht
gespeichert Die Python-Datei wird automatisch
gespeichert und erneut angemeldet, U one, p one, submit. Ja, einreichen, einreichen. Was wir
im Gegenzug bekommen, ist das, was dem Namen entspricht, und das sind P-Wörter. Das sind also die
Texteingabeobjekte. Wenn Sie nun
den Text möchten, den der Benutzer
in diese Texteingabefelder eingibt, müssen Sie auf
die Texteigenschaft zugreifen. Gleiche gilt für das Passwort.
Speichern, ausführen und schließen Sie dieses vorherige
Fenster, um das neue zu erhalten. Eins P eins, abschicken, und jetzt erhalten wir den tatsächlichen
Text, den der Benutzer eingegeben hat. Auf diese Weise
erhalten wir Werte aus den Texteingabefeldern und senden sie zur
weiteren Verarbeitung an Python. Root bezieht sich also auf
einen Anmeldebildschirm. Benutzer hinzufügen ist eine Methode
auf dem Anmeldebildschirm. Auf dem Anmeldebildschirm befindet sich wieder ein Root. Klassen-IDs sind eine Eigenschaft
des Anmeldebildschirmobjekts,
das tatsächlich
vom Bildschirm stammt Bildschirm erbt sie also an den
Anmeldebildschirm und der
Anmeldebildschirm hat diese IDs, was eigentlich eine
Art Wörterbuch mit
allen in
der Anmeldebildschirm-Regel enthaltenen IDs ergibt allen in
der Anmeldebildschirm-Regel enthaltenen IDs In diesem Fall erhalten Sie also Zugriff auf den Benutzernamen und das Passwort Root identifiziert dieses Passwort, gibt dir Text zu dem
Texteingabeobjekt das ein ID-Passwort hat, und dann mit Text greifst du in
der nächsten Lektion
auf den tatsächlichen Wert davon zu.
Lass uns weitermachen und mit der
JSON-Datei arbeiten, Lass uns weitermachen und mit der
JSON-Datei arbeiten um diese
Daten in der JSON-Datei zu speichern.
184. 183. Verarbeitung von Benutzeranmeldungen +: Hallo, noch einmal, in dieser Vorlesung werden
wir
den Anmeldebildschirm so implementieren , dass, wenn der Benutzer
den Benutzernamen und das Passwort eingibt und
dann auf Senden klickt, diese Daten in der JSON-Datei des Benutzers
gespeichert werden, die ich hier habe. Sie können also entweder
eine leere Datei erstellen und
sie wie Benutzer Dot JSON nennen, oder Sie können meine Datei abrufen, die Sie
in den Vorlesungsressourcen angehängt finden. Und in dieser Datei habe ich
bereits zwei Benutzer. Das sind JSON-Daten. Damit es besser aussieht, können
Sie es formatieren,
wenn Sie Windows
verwenden, Shift Alt F.
Wenn Sie einen Mac
verwenden, verwenden Sie Shift Option F.
Wenn Sie Linux
verwenden, verwenden Sie Strg+Shift I. Wenn Sie diese Kombination verwenden, wird der JSON-Code wie folgt
formatiert Der Grundgedanke dabei ist, dass die App
weitere Benutzer hinzufügt, wenn
der Benutzer auf der Anmeldeseite auf
die Schaltfläche „Senden“ klickt Dies ist im Grunde ein
großes Python-Wörterbuch. Es beginnt hier und es endet hier. Dieses Wörterbuch hat Werte
wie diesen Schlüssel hier. Und der Wert dieses ersten Schlüssels, das ist
also der Schlüssel
des großen Wörterbuchs. Der Wert dieses Schlüssels
ist dieses Wörterbuch. Es ist also ein weiteres
Wörterbuch innerhalb des großen Wörterbuchs, aber
das ist ein anderes Problem. Es kann wie in diesem Fall passieren. Und so
hat dieses Wörterbuch die Daten. Also der Benutzername, es ist wieder Benutzer eins wie dieser. Das Passwort ist Pessach. Das ist also ein vorhandener Benutzer. Ich habe diese Datei manuell erstellt, aber das Programm wird in der Lage sein, diese Datei
auch zu erstellen
und weitere Benutzer hinzuzufügen. Also hier endet der Wert dieses Schlüssels und dann
startet der andere Schlüssel, der andere Benutzer, Benutzer zwei. Das ist Nutzername. Sie können
auch hier sehen, Schritt zwei, und das ist ein Datum, an dem
dieser Benutzername in die JSON-Datei eingefügt
wurde Lassen wir diese Datei hier unten
geöffnet. Drücken Sie den Terminalraum. Also
drückt der Benutzer die Senden-Schaltfläche,
die Senden-Schaltfläche, ruft die Ad-User-Funktion auf, und diese beiden Argumente werden
an den Funktionsaufruf übergeben. Also Benutzer hinzufügen ist dieser hier drin. Also nennst du P Word. Was machen wir
mit diesen beiden Werten , die der Benutzer
in die Textfelder eingegeben hat? Nun, was ich tun werde,
ist zunächst Json als Datei zu öffnen
und die Benutzer dazu zu bringen, sie in ein Wörterbuch zu laden, sodass Benutzer das Gleiche wie json dot load haben. Wir müssen Jason hier eingeben. JSON ist also eine Bibliothek. Und jetzt, nur als
Zwischenschritt, lassen Sie uns die Benutzer ausdrucken, um zu
sehen, was wir bisher haben. Eins, eins,
abschicken und das ist es, was wir bekommen. Das ist es also, was wir derzeit in der JSON-Datei
haben. Und das ist eigentlich so users
ist ein Python-Wörterbuch. Was wir nun mit diesem Wörterbuch machen können
, ist, dass wir einen weiteren Wert hinzufügen können. Also noch ein
Paar aus Schlüssel und Wert, was ziemlich einfach ist. Also sagen wir Benutzer. Welchen Schlüssel müssen wir hinzufügen? Nun, das haben wir von Name. Also werden wir
den U-One-Benutzernamen hinzufügen , den
ich als Benutzer eingegeben habe. Also werden wir dort
einen dritten Benutzernamen haben, und das wird sein Wert
sein, der ein Wörterbuch sein wird. So wie wir für
Benutzer eins haben, dieses Wörterbuch, werden
wir
auch für
U dieses Wörterbuch haben , also den Benutzernamen. Für Key
wird der Benutzername wieder U Name lauten. Und dann
wird das Passwort P-Wort sein. P-Wort. Also sind wir hier. P-Wort, das den Wert P eins bekommen wird
. Und dann, da wir hier nicht viel mehr Platz
haben, werde
ich ein Komma setzen um den Ausdruck
in einer anderen Zeile fortzusetzen Wenn Sie der Meinung sind, dass eine Zeile zu lang ist, können
Sie diese
Zeile
nur dann in mehrere Zeilen aufteilen , wenn sich die Zeile in
Klammern befindet, z. B. im Fall einer
Funktionsdefinition oder in eckigen Klammern, wie im Fall
einer Liste, oder in geschweiften Klammern, wie im Fall In allen drei Fällen funktioniert
der Code einwandfrei Sie können eine Zeile ohne Klammern,
Klammern oder geschweifte Klammern
nicht teilen Klammern,
Klammern oder geschweifte Klammern
nicht Wenn Sie das versuchen, erhalten
Sie
einen Syntaxfehler, sofern
Sie keinen BC-Slash verwenden Ein umgekehrter Schrägstrich ermöglicht es Ihnen, einen Ausdruck
in mehrere Zeilen
aufzuteilen, auch wenn dieser Ausdruck nicht in Klammern, Klammern oder geschweiften
Klammern steht Klammern Das Aufteilen eines Ausdrucks in mehrere Zeilen sorgt Es wird empfohlen,
einen Ausdruck aufzuteilen , wenn er 79 Zeichen
erreicht hat Dies ist jedoch nur
eine Empfehlung. Es hat keine
Auswirkung auf den Code. Also, was kommt als Nächstes? Nun, hat den erstellten Schlüssel erstellt. Der Wert dafür wird Datum und Uhrzeit
sein Lassen Sie uns zuerst Datetime importieren Von Datum, Uhrzeit,
Import, Datum, Uhrzeit. Also die Daytime-Klasse
des Datetime-Moduls. Das ist also die Datetime-Klasse
, die ich hier eingegeben habe. Daytime dot, ich kann dir zeigen, was ich hier erreichen
will Also ab Datum, Uhrzeit, Import, Datum, Uhrzeit, Tageszeit, Punkt jetzt geben
wir dir dieses
Datetime-Objekt Und was wir daraus wollen, ist, dass wir eine Zeichenfolge extrahieren wollen Wir wollen das
Hier, den Monat, den Tag, die Stunden,
Minuten und Sekunden haben. Das gibt uns also das Datum und die Uhrzeit in
diesem Zeichenkettenformat. Das wird also hier reinkommen. Stimmt. Und das ist es. Lassen Sie mich jetzt
wieder Benutzer hier unten drucken. Schließen Sie das vorherige Fenster, melden Sie sich an, eins, senden Sie es ab. Und Sie können jetzt sehen, dass wir
ein weiteres Paar von Schlüssel und Wert haben . Also den UO-Benutzernamen mit dem
Benutzernamen UO-Passwort P eins und erstelle ihn
genau zu diesem Zeitpunkt. Also, was können wir jetzt mit diesem neuen Wörterbuch machen?
Nun, nichts Besonderes. Wir müssen nur
Benutzer-Punkt-JSON öffnen, diesmal
jedoch im
Schreibmodus als Datei,
und wir greifen auf JSON, das
JSON-Modul, zu und speichern das Wörterbuch des Benutzers in der Datei. Und das ist alles Also, was ich an dieser Stelle mache, überschreibe
ich die Benutzer,
die vorhandenen Benutzer, diese JSON-Datei wird also eine komplett neue
Datei An dieser
Stelle wird also eine komplett neue
Datei erstellt, eine leere Datei Und in diese leere Datei werde
ich das
neue Benutzerwörterbuch schreiben, das dieses hier sein wird. Das neue Wörterbuch wird also die vorhandenen Benutzer
enthalten, wie Sie hier gesehen haben,
Benutzer eins und Benutzer zwei, und es wird auch
den aktuellen Benutzer hinzufügen. Ich hoffe also, dass das klar ist. Weißt du, wenn wir das jetzt testen, die aktuelle
Sitzung mit Control C
unterbrechen, den Code
ausführen, uns anmelden,
U eins, P eins, abschicken Also drücke ich den Absenden-Button, jetzt passiert
nichts, weil alles
im Hintergrund passiert, der Benutzer hat
also die
Datei aktualisiert Wenn Sie sich nun die
Benutzer dieser JSON-Datei ansehen, werden
Sie feststellen, dass
es derzeit
einen Fehler im Visual Studio-Code gibt einen Fehler im Visual Studio-Code , der die Dateien nicht aktualisiert, wenn
sie aktualisiert werden. Ich hoffe, dass dies
bald von den Visual
Studio-Code-Entwicklern gelöst wird. Dieses Problem wurde gemeldet. Was wir aber trotzdem tun
können, ist, dass Sie
den Datei-Explorer in
Ihrem Betriebssystem aufrufen können , in dem Sie diese Dateien haben, und Sie können einen alternativen Texteditor
wie Not Pat
verwenden . Ich habe Atom hier, Text bearbeiten. Wählen Sie also einen von ihnen und Sie werden sehen, dass
die Änderungen
im anderen Editor in der JSON-Datei des Benutzers aufgezeichnet wurden. So kannst du sehen, dass
U da ist. Also mit U-Eins, -Pass oder P-Eins und dem
Erstellungsdatum. So fügen Sie der JSON-Datei einen neuen
Benutzer hinzu. Und schließlich, was wir hier hinzufügen
müssen, weil Sie sehen, dass Sie, wenn Sie auf
Senden klicken und nichts passiert, nicht wissen, ob Sie erfolgreich als Benutzer
registriert
wurden oder nicht. Lassen Sie uns also in der anderen Lektion einen weiteren Bildschirm erstellen, angezeigt wird
, wenn der Benutzer Schaltfläche „Senden“
drückt. Wir sehen uns.
185. 184. Erstellen einer Erfolgsseite für die Anmeldung: An dieser Stelle können wir also
Benutzer zur Datenbank hinzufügen, indem sie in diese Textfelder
schreiben und auf die Schaltfläche „Senden“ klicken. Lassen Sie uns nun eine weitere Seite anzeigen , wenn der Benutzer auf Senden drückt. Nun, wir können
das genauso machen, wie wir es getan haben, als wir vom
Anmeldebildschirm zum Anmeldebildschirm gewechselt Also haben wir
das gemacht, indem in die Anmeldefunktion
der Anmeldebildschirmklasse geschrieben
haben, dass dieser Selbstmanager
aktuell dem Anmeldebildschirm geschrieben
haben, dass dieser Selbstmanager entspricht Wir können das
Gleiche hier machen. Die Anzeigennutzerfunktion
wird also aufgerufen, wenn der Benutzer eine Senden-Schaltfläche
drückt. Wir können also Self Dot Manager
Dot Current gleich machen. Nennen wir diesen
Anmeldebildschirm Erfolg. Das wird also
ein weiterer Bildschirm sein, den wir hier auflisten
werden. Melden Sie sich an. Erfolgreicher Bildschirm. Der Name sollte
derselbe sein, den Sie dort verwendet haben. Und natürlich müssen
wir diesen Bildschirm erstellen. Anmeldebildschirm
erfolgreich, eine Kolumne. Und ich möchte, dass diese Seite so aussieht
, dass ich möchte diese Seite ein Etikett „
Anmeldung erfolgreich“
hat. Und dann sollte sie eine
Schaltfläche unter dieser Bezeichnung haben, der Anmeldeseite stehen würde. Der Benutzer kann also
diese Taste drücken und zur Anmeldeseite
zurückkehren , auf der er sich anmelden kann. Also zum Anmeldebildschirm. Daher benötigen
wir zunächst ein Rasterlayout. Wir brauchen nur eine Spalte und dann brauchen wir ein Label. Der Text davon wäre. Anmeldung mit den Codes war erfolgreich, und dann brauchst du eine Schaltfläche. Der Text der Schaltfläche
wäre Anmeldeseite. Und lassen wir es vorerst
so. Ich werde einfach alles
ausführen, um zu sehen, wofür wir das haben. Also haben wir eine
Fehler-Factory-Ausnahme. Natürlich haben wir nicht
den Anmeldebildschirm mit Erfolg. Also müssen wir einen
Anmeldebildschirm für die Klasse „Erfolg“ hinzufügen
, der vom Bildschirm erbt wird, und lassen Sie uns dort weitermachen Führen Sie es erneut aus. Der
Namensbildschirm ist nicht definiert. Ja, ich habe hier einen Text eingegeben, Bildschirm Anmelden drei P drei, Abschicken, Anmeldung erfolgreich, das Label und die Anmeldeseite, was
vorerst nichts tut, weil wir
kein Druckattribut
für diese Schaltfläche haben . Also, ja, um das Ganze abzuschließen, das haben wir getan, um
diesen Bildschirm zu implementieren , um zum nächsten Bildschirm
zu wechseln. Also haben wir zunächst
einen Self-Manager-Bildschirm in
der Anzeigennutzerfunktion hinzugefügt . Dadurch wird
der aktuelle Bildschirm
auf diesen Bildschirm hier geändert . Und dieser Bildschirm
wurde hier definiert und durch
diese Klasse in Python dargestellt. Und das ist alles. Also ,
drei und vier Punkte mussten
wir 12,
drei und vier Punkte hinzufügen. Versuchen Sie nun als Übung, die Anmeldeschaltfläche zu
implementieren. Wenn der Benutzer also auf der Seite die
Anmeldetaste drückt, möchten
Sie sich
anmelden, vier Pi vier. Wenn der Benutzer auf „Anmelden“ klickt, kehren Sie zur Hauptseite zurück, also zur Anmeldeseite, die
hier ist. Versuche das zu tun.
186. 185. Zwischen Seiten wechseln: Lassen Sie mich also schnell die Schaltfläche für
die Anmeldeseite implementieren. Richtig. Die
Schaltfläche auf der Anmeldeseite ist genau hier. Drücken Sie also den
Root-Punkt und gehen Sie zu Login. So nenne ich die Funktion. Wir befinden uns also in der Erfolgsregel des
Anmeldebildschirms, was bedeutet, dass wir zur
Erfolgsklasse auf
dem Anmeldebildschirm gehen und die Funktion
zur Anmeldung
selbst definieren müssen Erfolgsklasse auf
dem Anmeldebildschirm gehen und die Funktion
zur Anmeldung
selbst definieren und natürlich
self, das ist Manager,
das ist aktuell, entspricht dem Anmeldebildschirm, hier ist Wir haben also schon diesen Bildschirm. Wir müssen jetzt keinen
neuen Bildschirm erstellen. Speichern Sie die QV-Datei und
führen Sie sie aus, melden Sie sich an. Ux, P sechs, es spielt keine Rolle, welchen Benutzernamen
und welches Passwort Sie angeben Registrierung war erfolgreich.
Die Anmeldeseite heißt und Sie gelangen zurück
zum Anmeldebildschirm. Sie nun beachten sollten, ist die Richtung des
Übergangs der Bildschirme. Derzeit wird
der Übergang standardmäßig als links bezeichnet. Also meldest du dich an. Die Bewegung besteht also darin, dass der nächste Bildschirm nach links
geht. Also achtest du auf den pH-Wert. Jetzt geht
der nächste Bildschirm so nach links. Und wenn du dich
einloggst, möchtest du vielleicht nach rechts
gehen. Also den
Übergang nach rechts zu ändern, was sinnvoller ist. Wenn Sie das tun möchten, gehen Sie zu der Stelle, an der Sie
den aktuellen Bildschirm einstellen. Deshalb möchten wir
den Übergang des
Anmeldebildschirms ändern . Wenn wir also den
aktuellen Bildschirm als Anmeldebildschirm festlegen, wollen
wir, dass der Manager
die richtige Richtung einschlägt. Führe das aus, melde dich an. Ich werde dort nur ein paar
leere Zeichenketten einreichen,
nur um das Interface schnell
auszuprobieren. Also abschicken, das ist ein neuer Benutzer mit leeren Zeichenketten.
Es spielt keine Rolle. Sie können
später einige Einschränkungen festlegen, wenn Sie möchten. Gehen Sie also zur Anmeldeseite. Und dieses Mal
kommt
der nächste Bildschirm von links
nach rechts. Also, wenn Sie das wollen,
was ich für
sinnvoll halte, dann müssen Sie
diese Übergangseigenschaft
der Manager-Eigenschaft verwenden ,
die eine
Richtungseigenschaft hat, und sie auf rechts setzen. Das ist die Idee.
187. 186. Verarbeitung von Benutzer-Anmeldedaten: Bisher haben wir mit
unserem Programm
die erste Seite erstellt , auf der sich der
Benutzer anmelden kann, und wir haben
auch die
Anmeldeseite erstellt, auf der sich neue Benutzer anmelden und Mitglied
in unserer JSON-Datenbank werden
können In dieser Vorlesung werden wir die
Login-Funktionalität
implementieren Lassen Sie mich Ihnen zeigen, wie die fertige Version
des Programms funktioniert. Ich zeige dir den Code nicht. Noch nicht, nur wie
der Login funktionieren wird. Ignoriere die gut
aussehende Oberfläche, oder das machen wir jetzt später. Jetzt müssen wir
über die Funktionalität nachdenken. Wenn sich der Benutzer anmeldet
, gibt er die Daten ein. Sie drücken auf Login und gehen zu dieser internen
Seite des Programms. Hier haben wir also eine Schaltfläche, die rot wird, wenn wir die
Maus bewegen, und wenn wir darauf klicken, werden wir abgemeldet und wir gelangen
zurück zur Anmeldeseite Wenn Delta falsch
ist, wird ein falscher
Benutzername oder ein falsches Passwort angezeigt Also nochmal, wenn die
Daten korrekt sind
, werden wir auf diese Seite weitergeleitet. Lassen Sie uns in dieser Vorlesung also
weitermachen und diesen Bildschirm erstellen. Ich habe einen Screenshot davon gemacht, also haben wir ihn hier
als Referenz. Also müssen wir hier
einen weiteren Bildschirm in die Liste der Bildschirme aufnehmen. Nennen wir den Bildschirm „
Anmeldebildschirm erfolgreich“. Geben wir in derselben Zeile den Namen
Anmeldescreen Success ein und erstellen Sie dann eine Regel für diesen Bildschirm. Ich werde es einfach
kopieren und einfügen. Und was haben wir hier? Nun, wir beginnen mit
dem Rasterlayout, das eine Spalte hat. Im Moment werde ich nur eine einfache Schaltfläche
bereitstellen. Später werden wir
die Funktionalität implementieren , die Sie
gerade mit dieser Animation zeigen. Wenn Sie die
Maus über die Schaltfläche bewegen, wird
die Schaltfläche rot. Lassen Sie uns vorerst einfach eine einfache Taste
verwenden. Mit Text. Achten Sie auf die Presse. Wir müssen also
eine Erfolgsklasse für den Anmeldebildschirm im Python-Code
erstellen und
dort eine Funktion erstellen , um den Benutzer abzumelden. Also pass auf. Ja,
so möchte ich die Funktion in der Erfolgsklasse für
den Anmeldebildschirm aufrufen Erfolgsklasse für
den Anmeldebildschirm , die wir erstellen werden. Lassen wir den
Button so und dann haben wir ein Label. Wie findest du,
dass das das Etikett ist? Text Wir
fragen also den Benutzer, wie er sich fühlt damit er ein Gefühl eingeben kann, und dann geben wir
ihm einige Zitate,
je nachdem, wie er sich
fühlt, damit sich besser fühlt oder sein Gefühl
verstärkt. Zitate sind eine gute Sache. Sehr kluge Leute haben gut über sie
nachgedacht, also nutzen wir sie.
Nutzen wir sie. Texteingabe. Mit Hinweis? Text. Also hier kannst du schreiben,
was du willst, aber ich möchte ihnen
einen Hinweis geben , damit sie wissen,
was sie hier eingeben können. Also, ohne hier
eine große Beschreibung in
den Hauptteil der
Oberfläche der Seite aufnehmen hier
eine große Beschreibung in zu müssen, die Oberfläche sauber halten wir die Oberfläche sauber halten
und diesen
Bereich hier im Lehrbuch nutzen Also Dinge zum Ausprobieren. Glücklich, traurig, ungeliebt. Ja, das sollte okay sein. Und dann haben wir noch einen
Button mit dem Text Erklären Sie mich. Fühlen Sie sich frei, einen beliebigen Namen zu verwenden. So weit reicht meine
Vorstellungskraft. Und jetzt, beim Drücken, was machen wir, wenn der Benutzer diese Taste drückt? Nun, wenn der Benutzer diese Taste
drückt, werden
wir einen
Text unter der Taste anzeigen. Deshalb
benötigen wir ein Etikett. Und der Text ist vorerst
nur eine leere Zeichenfolge. Fügen wir also später
ein Press-Attribut für die Schaltfläche hinzu. Lassen Sie mich zunächst einen
Klassenanmeldebildschirm für Erfolg
schreiben
, der natürlich
vom Bildschirm erbt und über eine Methode verfügt Loggen Sie sich aus.
Melden Sie sich ab, um den Benutzer abzumelden. Und hier möchte ich zunächst eine Richtung für den
Übergang dieses Bildschirms
definieren. Lass es uns richtig machen. Die Abmeldung geht zurück
zur vorherigen Seite.
Es ist sinnvoll, die richtige Richtung
für den Übergang festzulegen Dann natürlich, Manager, das ist aktuell gleich Wo wollen wir
den Benutzer nach dem Logout hinbringen? Wir möchten den Benutzer
zum Anmeldebildschirm führen. Auch das macht
Sinn, oder? Also Anmeldebildschirm. Also gut, wir haben die Seite. Wir haben die Erfolgsseite für den
Login-Login-Bildschirm erstellt
, und das war diese hier. Lassen Sie mich das schließen, um
mehr Platz für den Code zu haben. Wir haben die Funktionalität
der Anmeldeschaltfläche jedoch noch nicht implementiert. Die u1p1-Anmeldung funktioniert also nicht. Suchen wir also nach der Anmeldeschaltfläche
. Welches ist auf dem Anmeldebildschirm. Ja. Der Anmeldebildschirm. Ja. Also das ist ein
Button-Button-Login. Also, was wollen wir
auf einer Presseveranstaltung machen? Nun, wir wollen eine
Route ausführen, die die Login-Funktion protokolliert, die wir in
der
Login-Bildschirmklasse genau hier haben müssen . Es ist also im Grunde die
gleiche Idee wie bei einem Ads-Nutzer. Eine Funktion, bei der wir
dem Anzeigenbenutzer eine Funktion gegeben ihm den
Benutzernamen und das Passwort zur Verfügung gestellt
haben. Also nochmal, wir machen
dasselbe mit define login. Self und hier
müssen wir zwei Argumente angeben. Das erste
wären Roots, diese IDs, dieser Benutzername, dieser Text. Und das zweite wäre
Root-IDs, Punkt-Passwort, Punkt-Text. Also wir reden hier, tut mir
leid für die Art von hier. Wir sprechen über den
Benutzernamen, den der Benutzer in
das Texteingabefeld eingibt,
und über das Passwort, das der Benutzer in
das Texteingabefeld dem Anmeldebildschirm eingibt. Root bezieht sich also auf
den Anmeldebildschirm auf die aktuelle Regel, in der
Sie den Code hier schreiben. Und wir haben keine
ID für die Texteingabe, also machen wir weiter und machen ID, verwenden den Namen, dasselbe gilt für das Passwort. Und dann nehmen wir diesen Benutzernamen und das Passwort
in die Login-Funktion. Lassen Sie uns Name und
P-Wort als Parameter verwenden. Sie können
einen beliebigen Namen verwenden. Sie können auch
Benutzername und Passwort verwenden. Wie melden wir also einen Benutzer an? Nun, die Idee ist, dass wir die
JSON-Datei, in der wir
die Benutzerdaten haben, öffnen müssen , um sie zu lesen und zu überprüfen,
ob der Benutzername und das
Passwort in dieser Datei enthalten sind. Oder genauer gesagt, wenn dieser Benutzername in der Datei enthalten ist
und er ein Passwort hat, das Passwort, das der
Benutzer in der
grafischen Benutzeroberfläche angibt. Wenn das der Fall ist, wechseln wir den Bildschirm
mithilfe der aktuellen Eigenschaft eines Managerpunkts. Wir schalten den Bildschirm auf den
Bildschirm um, den ich Ihnen gerade gezeigt , den wir gerade gebaut haben und wir
noch nicht gesehen haben, wie er aussieht. Lassen Sie mich das also schnell mit
offenen Benutzern
implementieren , Punkt JSON hat Datei. also im Lesemodus Wenn wir also im Lesemodus
das R nicht so definieren, bedeutet
das implizit, dass
wir die Datei lesen Benutzer, die JSON entsprechen und geladen
werden. Die Datei. Das wird
uns also ein Wörterbuch geben. Benutzer werden das Wörterbuch sein das alle Daten in
der JSON-Datei des Benutzers
enthält. Und dann, wenn Sie Benutzer eintragen. Also, was wir hier machen,
ist, lass es mich dir zeigen. Wir brauchen also diese JSON-Bibliothek und Users wird das
Wörterbuch sein, richtig. sind viele Daten. Und
wenn wir zum Beispiel sagen,
dass 77 Benutzer gibt, kommen
wir
durch, weil U 7
tatsächlich zu den
Wörterbuchschlüsseln gehört. Also hier, U 7, können
Sie den Benutzer ignorieren. Sie sind nur ein Präfix , um anzuzeigen, dass
es sich um Unicode-Daten handelt, aber dies sind die Zeichenketten
innerhalb der Codes U Seven gehört also zu
den Wörterbuchschlüsseln. Sie können sich auch eine
übersichtliche Liste der Schlüssel anzeigen lassen. Damit. Also Benutzer, die sich küssen, sehen, dass wir Sieben
zu diesen Daten gehören. Das ist der Grund, warum wir wahr werden, und wir können das nutzen
und sagen: Ich nutze den Benutzernamen in Benutzern, also überprüfen wir zuerst, ob der
Benutzername in der Datenbank ist. Aber wir müssen auch
überprüfen, ob die Benutzer ihr Passwort gleich
PWord nennen , also das ist unsere
Bedingung. Die erste ist also, dass der
Benutzername existieren muss. Und das zweite ist, dass Sie wissen, die Benutzer, Sie nennen , sagen
wir, sieben, also Benutzer U
sieben entspricht dem. Das gibt uns also das Wörterbuch, das
der Schlüssel U 7 hat. Das ist wie der Wert
, den die Ku-Seven hat. Es ist also ein Wörterbuch.
Und wenn wir unsere Zugriffskette fortsetzen,
verwenden wir ein Passwort. Wir greifen also auf den
Wert des Schlüsselkennworts zu. Jedes dieser Wörterbücher
hat dieses Passwort als Schlüssel, und der Wert dieses Passworts
ist das tatsächliche Passwort Also P sieben in diesem Fall. Wir prüfen also,
ob das Passwort
dieses Benutzers ein Passwort ist,
das der Benutzer hier angibt. Also Passwort, dieser
Text kommt hier rein. Das muss identisch sein, kein Zuweisungsoperator. Wenn das also der Fall ist, verwalten Sie den
aktuellen Status, der der
Anmelde-Erfolgsseite entspricht, dem
Anmeldebildschirm
, den wir erstellt haben. Richtig. Und wir müssen dort auch
eine S-Bedingung hinzufügen, aber lassen Sie mich versuchen, zu sehen, was wir bisher haben, und
den Code zu debuggen , wenn wir
Probleme haben Also sieben P sieben einloggen, und hier ist ein Bildschirm Das ist also eine Schaltfläche zum Abmelden. Wie fühlst du dich? Das Textfeld, das
wir erstellt haben, erleuchtet mich, und das ist der Bereich, in dem
der Text angezeigt werden würde Im Moment funktioniert es nicht,
weil wir der Schaltfläche „
Erklären Sie
mich“ keine Funktion hinzugefügt haben Erklären Sie
mich“ keine Funktion hinzugefügt Lassen Sie mich jetzt die Schaltfläche
Abmelden ausprobieren. Also out ist nicht definiert, wie Sie hier den Fehler sehen können Also unser Logout-Button
, der hier beim Drücken ist, zeigt darauf, dass
wir eigentlich root schreiben sollten, das ist Logout Es zeigt also auf die erfolgreiche Logout-Funktion des
Anmeldebildschirms erfolgreiche Logout-Funktion des
Anmeldebildschirms Das war also ein Problem. Wir haben die Klasse nicht angegeben
, die diesen Out-Button hatte. Also lass es mich noch einmal versuchen. P sieben Einloggen, Lou und wir sind wieder auf der
Anmeldeseite, wenn wir uns abmelden Und wenn wir falsche
Daten eingeben, passiert nichts. Also hier ist, was wir tun
werden. Wir werden direkt unter
der
Anmeldeschaltfläche zwischen
diesen beiden Schaltflächen und
der Anmeldeschaltfläche ein Etikett hinzufügen der
Anmeldeschaltfläche zwischen
diesen beiden Schaltflächen und
der Anmeldeschaltfläche . Also lass uns weitermachen und das tun. Wir sprechen über
den Anmeldebildschirm. Das ist der Login-Button. Fügen wir also das
Etikett mit Text hinzu, es ist vorerst leer. Also speichere das, schließe das
Fenster und führe es erneut aus. Jetzt haben wir
hier einen Platz. Das ist also ein Etikett. Und in diesem Label gehen
wir jetzt, wenn die Daten korrekt sind, wenn die Daten korrekt sind, zu den Erfolgsseiten
des
Anmeldebildschirms . Jetzt müssen wir also auf die ID des Labels
zugreifen. Geben wir also zuerst eine ID
in das Etikett ein, melden wir uns falsch an. Also hier, jetzt müssen wir
auf dieses Etikett zugreifen. Das machst du,
indem du dich selbst benutzt. Self zeigt auf das Objekt auf dem
Anmeldebildschirm. Dann suchen wir nach
den IDs von self. Anmeldung, falsche ID. Das ist also das Label-Objekt. Jetzt müssen wir auf den Text
des Labelobjekts zugreifen und
dem Text einen falschen
Benutzernamen oder ein falsches Passwort zuweisen . Stellen Sie also sicher, dass Sie die
QV-Datei speichern und den Code ausführen. Nur ein paar zufällige Daten, die nicht in der Datenbank
sind Loggen Sie sich ein und wir bekommen das Label
dort wie erwartet Sieben P sieben, einloggen, und wir gehen zur Anmeldeseite. So greifen Sie also auf
Elemente aus der Ki-Datei zu. Wenn Sie sich also in der KivFle befinden, zeigt
root auf die
zugehörige Klasse dieser Regel Also Anmeldebildschirm,
Anmeldebildschirmklasse, diese Namen müssen identisch sein Und wenn Sie sich in
der Python-Datei befinden, zeigt
self auf diese
Klasse für den Anmeldebildschirm der Klasse. Und da der Anmeldebildschirm hier und Anmeldebildschirm dort miteinander
kommunizieren, erhalten und empfangen
sie Daten. Das heißt, das
Self-Objekt kennt die IDs und alle Widgets , die der Anmeldebildschirm enthält. Daher
suchen Sie nach der
falschen Anmelde-ID , um dieses Objekt
auf dem Anmeldebildschirm zu beschriften, und greifen dann auf Text zu. Selfie hat also seine Wurzeln
dort und das war's. Lass uns jetzt in die nächste
Vorlesung gehen und noch
ein paar coole Dinge
über das Interface machen .
188. 187. Dem Benutzer die Ausgabe anzeigen +: Für diese Vorlesung möchte ich
Sie bitten, die Ressourcen
dieser Vorlesung aufzurufen und
die drei Textdateien herunterzuladen. Sie dann im Explorer
hier in Ihrer IDE Erstellen Sie dann im Explorer
hier in Ihrer IDE einen neuen Ordner. Geben Sie ihm einen Namen wie Anführungszeichen und legen Sie diese drei
Dateien dann in diesen DES-Ordner. Sie können Drag &
Drop verwenden, wenn Sie möchten. Ich habe
diese Dateien zum Beispiel irgendwo und werde sie einfach per Drag &
Drop in diesen Ordner ziehen. Sie sehen also, dass sich die Dateien
jetzt im Ordner mit Anführungszeichen befinden. In dieser Vorlesung werden
wir
also in dem Programm, das wir haben vorerst eine dieser drei
unterstützten Füllungen schreiben Sie können später weitere Dateien hinzufügen,
wenn Sie über einige Daten verfügen. Aber das haben wir bisher. Wenn der Benutzer also die Schaltfläche Enlighten me drückt
, möchten
wir
eines der Zitate anzeigen,
die sich in der
Happy TXT-Datei befinden Also eine dieser Zeilen. Manche sind lang, manche kürzer. Wenn der Benutzer also SAD eingibt, dann möchten Sie hier in
diesem Bereich eine der Zeilen
der SAD anzeigen , diese TxD-Datei Das sind auch unsere Zitate. Und so verstehst du die Idee. Und wenn der Benutzer
eine unbekannte Füllung eingibt, zum Beispiel, aufgeregt. Und wenn sie eine Taste drücken, willst
du versuchen, es mit einer
anderen Füllung zu versuchen, weil du dort
nicht alle möglichen
Füllungen abdecken Das ist es also, was wir
in dieser Vorlesung tun werden. Hauptpunkt Pi.
Fangen wir also mit dem Button an. Versuchen Sie, die Schaltfläche
Erklären Sie mich zu finden. Oder zumindest heißt
mein Button so. Diese Schaltfläche ist also Teil der Erfolgsseite des
Anmeldebildschirms. Und wir haben noch kein
Presseattribut. also drücken,
möchten Sie
eine Methode der Erfolgsklasse für den
Anmeldebildschirm ausführen , die ich hier habe. Damit der Anmeldebildschirm erfolgreich
ist, gibt es bereits eine Methode, Logout, die ausgeführt wird wenn diese Taste
gedrückt wird Jetzt wollen wir die Gute-Methode implementieren
. Codieren Sie sich selbst wie gewohnt. Und so muss diese Methode jetzt den Wert
kommunizieren, den der Benutzer
in die Texteingabe eingegeben hat. Also, welche Wurzel hat dieser ID-Punkt. Wir haben keine
ID für die Texteingabe, also geben wir eine ID ein. Das ist also eine Texteingabe , bei der der Benutzer die Füllung
eingegeben hat. Lassen Sie uns also die Füllung dort platzieren. Identifiziert diese Füllung, wir
wollen den Text
dieser Texteingabe erhalten. Also diese Füllung wird hier hingehören. Nennen wir es einfach Füllen, nicht zu verwechseln
mit dem Füllwort. Und das Erste, was wir
vielleicht tun möchten,
ist sehen, ob wir korrekt auf
den Fülltext zugreifen. Also ausdrucken, füllen. Und stellen Sie sicher, dass Sie
das Design speichern , dass die
KV-Datei Login ausführt. Ich konnte mich anmelden,
weil ich
diesen Benutzernamen habe , den ich zuvor erstellt habe. Als ich mich angemeldet habe, habe ich einen Benutzernamen
erstellt , der eine leere Zeichenfolge und eine leere Zeichenfolge
für das Passwort ist. Im Grunde ist es also ein
Benutzer mit einer leeren Zeichenfolge, leeren Zeichenfolge als
Benutzername und Passwort, was funktioniert, weil
ich
keine Einschränkungen für den
Benutzernamen und das Passwort festgelegt habe . Das ist also nur der
Einfachheit halber, wenn Sie es versuchen, wenn Sie
die Anwendung testen. Glücklich erleuchte mich, und
so bekommen wir die Glücklichen. Schnur da. Und wenn
das mit einem großen Alter ist, wirst
du glücklich werden. Das erste, was wir
vielleicht tun möchten, ist , das Feld
in Kleinbuchstaben umzuwandeln Selbst wenn der Benutzer „
zufrieden mit einem Alter in Großbuchstaben“ eingibt, werden
wir
das komplett in Kleinbuchstaben umwandeln ,
sodass wir es
jetzt mit den Namen
in den Textdateien
mit den Dateinamen vergleichen können in den Textdateien
mit den Dateinamen Schauen wir uns nun an, welche
verfügbaren Gefühle uns zur Verfügung stehen. Also weise ich einer Variablen
verfügbare Gefühle zu
und verwende
das Globe-Modul, zu
und verwende
das Globe-Modul um eine Liste von Dateinamen zu erhalten Das
wird mir das geben. Natürlich ein Fehler, weil
ich Glob nicht importiert habe. Es gibt dir also eine Liste
mit allen Dateien. Hier sind alle
verfügbaren Füllungen verfügbar. Wir sind hier bei der Methode „Angebot
einholen“. Jetzt sieht die Liste der verfügbaren Füllungen jetzt wie eine
Liste von Dateipfaden Was ich tun möchte, ist
,
alle Namen dieser
Dateien zu extrahieren , nur den eingestellten Teil Eine Möglichkeit, dies zu tun, besteht darin, das Pfadobjekt
der Path-Leap-Bibliothek zu
verwenden Sie müssen diese Bibliothek nicht
installieren. Es kommt mit Python.
Es ist eine Standardbibliothek. Wenn Sie mit Path einen Pfad
angeben,
z. B. Codes, geben Sie TXT ein und extrahieren Sie dann
den STEM daraus. Ich gebe Ihnen den Namen
der Datei ohne die Erweiterung ohne den
anderen Teil des Pfads. Tatsächlich gibt es
viele Pfadmethoden, und STEM ist eine davon. So können Sie das Suffix,
den Namen der Datei, einschließlich der Erweiterung
usw. Was wir hier jetzt tun können ist, dass wir diese STEM-Eigenschaft nutzen
müssen, und wir müssen sie
auf alle Dateinamen anwenden Um das zu tun, können Sie
ein Mindestmaß an Verständnis gebrauchen. Das heißt, verfügbare Gefühle
entsprechen dem Pfad. Sagen wir Dateiname für Dateiname
in Available Feelings. Und hier möchte ich
die Zeile in mehrere Zeilen aufteilen. Da das in
eckigen Klammern steht, darf
ich die Zeile teilen. Also wollen wir den
Stamm daraus machen. Dann wollen wir vielleicht versuchen
, hier die
verfügbaren Füllungen auszudrucken Stellen Sie außerdem sicher, dass Sie aus dem Pfad importieren
und dann
die App ausführen . Und ich habe eine Fehlermeldung erhalten,
als ich die Taste gedrückt habe Das String-Objekt hat
kein STEM-Attribut. Ja, natürlich,
weil ich es hier getan habe. Anstatt STEM
hinter das Pfadobjekt zu setzen, setze
ich es direkt
neben den Dateinamen. Der Dateiname ist eine Zeichenfolge. Deshalb
bekommst du, dass STR kein STEM hat. Also lass es uns hier reinstellen und es erneut
versuchen. Erkläre mich. So glücklich Set und Loaf.
Das ist es, was wir wollen Jetzt haben wir die verfügbaren
Gefühle in einer Liste. Was kann ich jetzt tun? Ich kann sagen, dass ich mich in
verfügbaren Gefühlen fühle. Wenn dieses Gefühl also in
den verfügbaren Gefühlen
enthalten ist, wollen wir
als Nächstes die Datei öffnen , die dieses Gefühl hat die ein Zitat
für dieses Gefühl enthält. Verwenden wir also einen offenen. Ich werde hier die
Zeichenkettenformatierung verwenden. F. Also Zitate, ich werde
diesen Dateipfad öffnen
, der diesen
Füllpunkt TXT als Datei hat. Also, was mache ich hier? Also, das Ding, was mir das
geben wird, ist, sagen
wir, das Gefühl, dass der
eingegebene Benutzer glücklich war, oder? Also bekommen wir diese Variable.
Sie hat einen Wert. Und wenn wir jetzt diese Zeichenfolge bekommen, erhalten wir den
Dateipfad für diese Füllung. Dieser Ausdruck hier in
diesen geschweiften Klammern wird also durch den Wert
dieser Variablen
der Feldvariablen
ersetzt dieser Variablen
der Feldvariablen Ich hoffe also, dass das klar ist. Und dann wollen wir alle DES,
die ganze Datei mit
der Read-Lines-Methode
abrufen . Das gibt uns also eine
Liste aller Codes. Lassen Sie mich also den Einzug rückgängig machen und
die Codes ausdrucken , um zu sehen, wofür
wir das haben Freut mich, die Zitate waren gut, und das ist eine Liste Also, wie ich dir gesagt habe, Glück ist wenn du denkst und
was du sagst, und so weiter. Und dann wurde es
von Mahatma Gandhi erzählt, und dann hast du ein Komma, und da fängt das
andere Zitat an Also erstens haben wir eine
Liste mit mehreren Zeichenketten, wobei jede Zeichenfolge Also, was können wir jetzt
mit diesem Zitat machen? Hmm. Was wir tun können, ist das Selbst dazu zu bringen
, das zu denken Die Idee dieses Labels, auf dem
wir das Zitat zeigen wollen,
das sich direkt unter der Schaltfläche „Ich
erleuchtet“ befindet Also die Idee, Zitat, Zitat. Zitat, dieser Text. Der Text
dieses Labels wird
also Zufallsprinzip aus
der Zitatliste ausgewählt. Was diese Methode also macht,
ist, dass sie eine Liste als Eingabe erhält. Also eins, zwei, drei, und es gibt jedes Mal,
wenn Sie es ausführen, ein zufälliges Element
aus dieser Liste zurück . Also einfach rein zufällig. Also
bekommen wir eine dieser Zeichenketten,
eines dieser Anführungszeichen, und dieses Zitat wird
als Text des Labels gesetzt. So
funktioniert es also. Und stellen wir sicher, dass wir zufällig importieren. Und wir sind bereit, die App
auszuführen. Ein Login glücklich erleuchte mich. Und wir haben diesen Fehler bekommen, der ein
ziemlich häufiger Attributfehler ist ziemlich häufiger Attributfehler Super hat kein Attribut zum
Abrufen eines Attributs. Dies passiert, wenn die
Python-Datei diese ID, in diesem Fall
die Anführungs-ID, nicht findet . Sie können also sehen, dass der
Fehler in Zeile 61 aufgetreten ist. Also die Leitung da
drin funktioniert nicht gut. Ich glaube, das liegt daran, dass
ich die QV-Datei nicht gespeichert habe als ich sie eingegeben habe, als ich
die ID des Labels hier aktualisiert habe Also habe ich eine ID geschrieben
, aber
die QV-Datei nicht gespeichert . Also
lass es mich noch einmal versuchen. Ich freue mich, dass diese Fehler auftauchen, weil Sie
lernen, sie zu beheben. Erkläre mich. Und ja, also wir bekommen das Etikett hier
drin angezeigt Wenn Sie erneut drücken,
wird diese
Zufallsfunktion eine weitere
Zufallsauswahl aus der Liste auswählen. Manchmal nehme ich an dasselbe Zitat
angezeigt wird,
was meiner Meinung nach in Ordnung ist, dass dasselbe Zitat
angezeigt wird,
was meiner Meinung nach in Ordnung ist,
aber es gibt Möglichkeiten ein anderes
Zitat als das vorherige
anzuzeigen, aber das funktioniert
ziemlich gut, denke ich. Rechnen Sie mit dem Fall, dass es ein langes Zitat
gibt und es außerhalb der
Grenzen des App-Fensters liegt. Das ist also ein Problem, aber kein Grund zur
Sorge denn wir werden später
eine Scroll-Ansicht implementieren, die dieses Label zusammendrückt und es flexibel macht. Indem Sie die Größe des Labels je nach Widget
und App-Größe ändern. Lassen Sie mich das vorerst schließen
und den Ils-Block beenden,
selbst den ID-Code, dem Text entspricht
, um es mit einer anderen Füllung zu
versuchen Lassen Sie mich es noch einmal versuchen und wir sind mit diesem Video fertig Also das funktioniert.
Das funktioniert auch. Und ich fühle mich hübsch. Oh, versuche es mit einer anderen Füllung.
Das unterstützen wir nicht. Und so machen wir eine App. Das wählt zufällig ein Zitat aus. Die Funktionalität des
Programms ist also so gut wie fertig. Was noch zu tun bleibt, ist
,
das Interface und die Buttons und die Zwischenräume zwischen
den Buttons ein bisschen hübsch zu gestalten das Interface und die Buttons und die Zwischenräume zwischen
den Buttons und etwas Animation hinzuzufügen. sind also Dinge
, die dir helfen werden einige Apps für die reale Welt
zu
entwickeln, die modern sind und von den Benutzern angenehm zu bedienen sind und die
du tatsächlich verkaufen kannst. Lassen Sie uns das also in
den nächsten Vorlesungen tun.
189. 188. Die Anmeldeseite stilisieren: Jetzt, da die App-Funktionalität
einwandfrei funktioniert, beginnen
wir mit dem Styling Also machen alle Knöpfe
das , was sie tun
sollen. Nun, außer der Schaltfläche „Passwort
vergessen“, die als
Übung dienen soll, die du lösen musst. Jetzt, im nächsten
Video, werden wir am Styling arbeiten. Das ist also ein Programm, das wir zusammen
gebaut haben, und das ist das
stilisierte Endprodukt In diesem Video in genau
diesem Video werden
wir also am Anmeldebildschirm arbeiten Sie können sie sogar so
skalieren, genau zu sehen
,
wie sie in einem echten Telefon
aussehen werden ,
denn das mehr oder weniger der Größe
eines Telefons, dem Größenverhältnis Lassen Sie uns also diese
beiden Schnittstellen schließen, und ich lasse diese
Schnittstelle
hier offen , um sie als Referenz zu verwenden Wir arbeiten also nicht in
der Python-Datei hier
in der KV-Datei. Das ist ungefähr das Design. Richtig, das Erste, was
Sie hinzufügen möchten, ist etwas Polsterung und etwas
Abstand in diesem Rasterlayout 15, ich werde erklären,
was das bedeutet, natürlich Abstand 2020 Also dieses Grid-Layout, was es ist,
ist, wir haben das Hauptraster-Layout, das ist das gesamte Widget, und dann
hat dieses Grid-Layout die Benutzeranmeldung, beschriftet diese beiden
Texteingaben und diese Schaltfläche. Und hier ist auch ein unsichtbares
Etikett drin. Also wollen wir etwas Abstand hinzufügen, was 15 horizontal bedeutet, was den Abstand
des Rasterlayouts
dieses Rasterlayouts zu den
Außenrändern der App bedeutet dieses Rasterlayouts zu den
Außenrändern der App Sie sehen also, dass wir hier einen Abstand von
etwa 15 haben, und es gibt auch einen gewissen
Abstand, den Sie nicht sehen können, aber hier gibt es eine
vertikale Polsterung zwischen diesem
Etikett und dem Hauptrahmen Das ist also Polsterung, der Außenraum
dieses Rasterlayouts Und dann ist der Abstand 2020 den Abstand zwischen den
Widgets dieser Rasterlayouts
bedeutet Der Abstand ist also eine interne Sache
und die Polsterung ist äußerlich So kannst du dir das vorstellen. Also 20 Pixel zwischen diesen
beiden und 20 auch hier, zwischen diesem Textfeld
und dieser Schaltfläche Nun, Sie können sehen, dass zwischen der
Schaltfläche und dieser Texteingabe tatsächlich
mehr als
20 Pixel Platz zwischen der
Schaltfläche und dieser Texteingabe tatsächlich
mehr als
20 Pixel Aber das liegt daran, dass wir diese Schnittstelle auch in diesem Endprodukt
angewendet haben. Ich habe auch einige
Größen auf die Schaltfläche selbst angewendet. Es gibt also eine Polsterung plus die Reduzierung der
Größe der Schaltfläche Deshalb siehst du hier
mehr Platz. Also lass es uns so sicher aufbewahren. Und dann müssen Sie
die Python-Datei wie immer ausführen. Und jetzt haben wir eine
gewisse Polsterung und gewissen Abstand zwischen
diesen Widgets Wie wäre es,
die Schriftgröße
der Benutzeranmeldung dieses Labels zu erhöhen der Benutzeranmeldung dieses Labels Sie müssen also zum Etikett gehen
und die Schriftgröße auf 20
einstellen. Es muss eine
Zeichenfolge wie dieser SP sein. Jetzt ist das Telefon größer. Lassen Sie uns nun an der
Größe der Anmeldeschaltfläche arbeiten. Sie sehen, dass das etwas zu breit
aussieht. Wie wäre es also,
es etwas kürzer zu machen? Nun, in QV gibt es ein
Attribut namens Größenhinweis, das Sie einem Widget geben können, zum Beispiel einer Schaltfläche hier. Größenhinweis. QV funktioniert
nun so, dass der Bereich standardmäßig proportional zwischen
den Widgets
aufgeteilt ist, was bedeutet, dass wir
hier zum Beispiel das Hauptraster-Layout haben, das
den gesamten Platz einnimmt, weil
es ein Rasterlayout ist Es ist also wie ein einzelnes Kind,
es wird alles bekommen. Dann
hat dieses Rasterlayout zwei Kinder. Es hat dieses Rasterlayout hier und es hat dieses
Rasterlayout hier drin. Und der Bereich zwischen diesen beiden Kindern
wird gleichmäßig aufgeteilt. Und so dieses Rasterlayout, das zweite hat zwei Schaltflächen, die Schaltfläche „Passwort vergessen“
und die Schaltfläche „Anmelden“ Daher können Sie sehen,
dass dieses Rasterlayout hier Hälfte des
Hauptrasterlayouts
hat Und das andere Rasterlayout, das erste
Rasterlayout, hat die andere Hälfte. Das Gleiche gilt
für die
untergeordneten Elemente jedes dieser
beiden Rasterlayouts. Also die Kinder des
ersten Rasterlayouts. Das Label und die Texteingaben, jedem von ihnen wird
wieder der
Platz zugewiesen, den sie verdienen. Hier hatten wir also ein
Label, zwei, drei, vier und ein unsichtbares Label,
also fünf Widgets, und so
haben wir für jedes Widget 20% dieses Platzes. Es gibt jedoch ein
Größenhinweis-Attribut , das ich Ihnen gerade vorgestellt habe, dem Sie
ändern können, wie viel ein Widget von seinem übergeordneten Element
erhält,
also Größenhinweis. Geben wir also einen Wert
von 0,3 und 0,5 an. Zum Login-Button. Was passieren wird, ist, dass die Anmeldeschaltfläche vertikal gedrückt
wird Siehst du, weil wir
einen Wert von 0,5 angegeben haben. Es hat also die halbe Höhe. Und wir haben auch einen Wert von 0,3 angegeben, um es horizontal zusammenzudrücken, aber das
funktioniert nicht, weil es hier an der Seite keine anderen Widgets
gibt. So oder so, der
Login-Button bekommt also wieder den gesamten Speicherplatz. Es wird kein Raum mit
anderen Widgets in dieser Richtung
in horizontaler Richtung aufgeteilt anderen Widgets in dieser Richtung
in horizontaler Richtung Um die Schaltfläche ändern zu können, müssen wir diese Schaltfläche
eigentlich einrücken
und sie zum untergeordneten Element
eines relativen Layout-Widgets machen Wenn Sie das speichern und ausführen, werden Sie
jetzt sehen, dass sich die Position der
Schaltfläche geändert hat Ich habe tatsächlich 0,3, 30% dieses horizontalen Raums, wie Sie sehen können, es ist ein Drittel. Von diesem horizontalen Raum und auch 0,5, 50% der Höhe. Aber wenn Sie diesen
Wert um 0,5 verringern, wenn Sie ihn zum Beispiel um 0,1 reduzieren, erhalten
Sie keine Schaltfläche mit einer sehr, sehr geringen Höhe,
weil dort
ein Etikett mit einer festen Größe steht . Das Minimum, das Sie erhalten können,
ist also die Höhe der
Beschriftung für die Schaltfläche. Nun, wie können wir diesen
Knopf in der Mitte platzieren? Wir müssen einen Pausenhinweis verwenden
, der ein Wörterbuch erhält. Zentrum X 0,5. Und Mitte Y 0,6. Ich habe mit verschiedenen
Werten experimentiert, und diesen habe ich für den besten
befunden Aber noch nicht, weil
diese Leute hier, diese Knöpfe
zu viel Platz beanspruchen Wir können also zu
dem Rasterlayout wechseln , das diese Schaltflächen
enthält. Dieser hier, und wir sagen Größe. Hinweis: 0,20 0,2. Speichern Sie das und sehen Sie, was passiert. Hm. Es sieht also
viel besser aus, also ist der
Größenhinweis ziemlich
magisch, weil man damit
die Größen relativ machen kann. Sie sollten keine feste Größe festlegen
, da es bei Mobilgeräten unterschiedliche
Größen gibt, und es ist besser,
alles relativ groß zu halten. Also, was ich
hier getan habe, ist, dass ich
diesem Rasterlayout einen Abstand von 20% gegeben habe . Also 20% hier, und das hier
sind 80% für das
andere Rasterlayout. Die Taste drückte also,
weil sie versuchte, ihr
Bestes mit den Werten zu tun Bestes mit den Werten , die ich hier
für die Schaltfläche eingegeben habe, diese Anmeldeschaltfläche,
aber sie konnte es nicht tun weil dieses Rasterlayout
zu viel Platz beanspruchte Daher sind 20% gut. Und wenn Sie möchten,
können Sie jetzt einen Abstand
von zehn und zehn und einen
Abstand von zehn und Null angeben von zehn und zehn und einen
Abstand von zehn und Null Das war der alte. Das
ist ein neuer. Das ist also nicht schlecht. Ich habe nur einen gewissen Abstand zwischen den Tasten und eine gewisse Polsterung
relativ zur Außenseite Also der horizontale Raum, dieser, und der vertikale
Abstand vertikal Und darüber hinaus gibt es keine anderen
vertikalen Schaltflächen, also macht das nicht viel Sinn. Null ist also in Ordnung. Und lass mich das schließen. Und zum Schluss lassen wir diese
beiden Schaltflächen wie Links aussehen. Das sind also das vergessene
Passwort und die Anmeldung. Lassen Sie uns die
Hintergrundfarbe,
die derzeit grau ist, in
ein RGB- und Opazitätsformat ändern die derzeit grau ist, in
ein RGB- und Opazitätsformat Also Alpha für Opazität, und es wird ein Wert von 0-1 angenommen Es sind also Dezimalwerte. Sie können 0,1 eingeben und so weiter. Ich gebe eins, eins,
eins und Null ein. Null bedeutet, dass die Hintergrundfarbe vollständig transparent
ist. Ich speichere das und führe es aus. Sie können jetzt sehen, dass das vergessene
Passwort so ist. Wenn ich jedoch
auf die Schaltfläche klicke, scheint
sie
nichts Ähnliches wie die
Anmeldeschaltfläche zu tun . Wir können also mit der
Opazität des Textes
herumspielen Setzen wir es auf den Wert eins, wenn
der Eigenzustand normal
ist, siehe 0,5 Das ist also ein netter Zauber, ich erkläre
dir, wie er funktioniert. Weißt du, wenn
ich auf die Schaltfläche klicke, verstehe
ich, dass ich
auf die Schaltfläche klicke. Was also passiert ist
, dass die Opazität eins ist. Wenn sich der
Selbststatus auf das aktuelle
Widget bezieht, bei dem es sich um eine Schaltfläche handelt Denken Sie also daran, dass root auf die Regel
verwiesen hat, die hier wie der
Anmeldebildschirm aussehen würde. Aber ich habe mich selbst auf genau
diesen Button bezogen. Und wenn du auf eine
Eigenschaft des Grid-Layouts zugreifen möchtest, könntest
du Parent so machen. Selbst, das Elternteil,
würde also
auf das übergeordnete Element der Schaltfläche zeigen ,
was das Rasterlayout ist. Aber
das brauchen wir momentan nicht, also wenn der
Zustand nicht normal ist, ist
dies der normale Zustand
, wenn die Taste nicht gedrückt ist. Es gibt auch andere Zustände
wie „gedrückt“ und „losgelassen“, aber dieser Zustand ist normal. Und andernfalls, wenn der
Zustand nicht normal ist, wie dieser Zustand hier, habe
ich die Taste gedrückt. In diesem Fall möchten wir der Opazität
einen Wert von 0,5 geben. Also diese ganze Sache
hier ist Python-Code. Alles
auf der rechten Seite
dieser Attribute
hier, hier, da. Alles, was es gibt, ist Python-Code. Und zum Schluss ändern wir
die Farbe des Bodens. Sie können dafür ein
Farbattribut verwenden. Lass uns 0.1 machen. Das bedeutet also 10%
Rot, 70% Grün und 100% Blau mit einer Transparenz von eins,
also nicht transparent. Spar dir das. Und ich werde diese drei Attribute kopieren und sie auch der
anderen Schaltfläche
geben, der
Anmeldeschaltfläche, die Datei
speichern, ausführen Und ja,
genau das hatte ich vor. Also melde dich für ein
Passwort an. Ich drücke es. Ich gehe auf die andere Seite,
auf die Anmeldeseite. Also nochmal, das ist die
Oberfläche, die wir bis jetzt für
die Logins haben . Eine letzte Sache, die ich hinzufügen
möchte , ist, dass derzeit, wenn wir einen Benutzernamen eingeben, das Passwort sichtbar ist Stattdessen wollen wir Sterne zeigen. Gehen Sie also zur Texteingabe für das Passwort und greifen Sie auf das Passwortattribut zu
und setzen Sie es auf true. Wenn Sie dieses
Attribut also auf true setzen,
passiert, dass die Texteingabe als Passworteingabe behandelt
wird, sodass das Passwort nicht angezeigt wird. Und danke
, dass du diesem Video gefolgt bist.
In den nächsten Videos werden wir
die anderen Seiten der App stilisieren . Wir sehen uns
190. 189. Die Anmeldeseite stilisieren: Hallo. Was Sie sich
ansehen, ist die Anmeldeseite. Hier auf dieser Seite ist das
Programm, das wir bisher erstellt haben, und so
sollte dieses Programm nach diesem Video aussehen. Lassen Sie uns also weitermachen und unserer Anmeldeseite etwas
Abstand und etwas Abstand hinzufügen unserer Anmeldeseite etwas
Abstand und etwas Abstand Das ist ein Code. Wir sprechen also über den
Anmeldebildschirm. Ich denke, eine Polsterung von 2020 und ein Abstand von 2020
sollten in Ordnung sein Lassen Sie mich also Sign Up ausführen. Also ich denke, das ist in
Ordnung, aber wenn Sie möchten, können
Sie mit
der Polsterung und dem
Abstand herumspielen und vielleicht mit den anderen Größenhinweisattributen
, die ich Ihnen zuvor gezeigt habe also an Ihnen, diesem einen Hinweis auf das
Rasterlayout
und dann weitere Si-Hinweise und dann weitere Si-Hinweise den
Texteingabefeldern zu Ich denke, das
sieht sowieso gut aus, für eine mobile Bildschirmgröße
191. 190. Die Buttons interaktiv gestalten: Hallo, ich freue mich sehr, Ihnen jetzt zeigen
zu können, wie Sie die
Hauptseite der App stilisieren können
, auf der der Benutzer die meiste Zeit verbringen
wird Also die Seite, auf der sie zu diesen Zitaten
kommen. Und hier auf der linken Seite ist, was wir bis jetzt
haben, wie unsere
Hauptseite aussieht. Das ist also die Erfolgsseite des
Anmeldebildschirms. So haben wir
es genannt. Und so wird
die Seite
nach diesen paar Videos aussehen. Zunächst
werden wir also etwas
Abstand und Abstand hinzufügen, um diese Schaltflächen
voneinander
zu trennen.
Das ist also das Erste Die zweite Sache
ist, dass wir
diese große Taste wie
diese schicke Schaltfläche hier aussehen lassen , die ihre Farbe ändert, wenn
wir die Maus bewegen, wenn wir die Maus
über der Taste platzieren Und dann werden wir diesem Labelbereich
hier auch
etwas
Scrollen hinzufügen diesem Labelbereich
hier auch
etwas
Scrollen hinzufügen , sodass der gesamte Text in einem kleinen Bereich angezeigt
wird und der Benutzer scrollen
und den gesamten Text sehen kann Lassen Sie uns also weitermachen und
an einigen Polstern und Abständen
und dann an der Unterseite arbeiten an einigen Polstern und Abständen
und dann an der Bevor wir beginnen, möchte ich, dass
Sie zu den Ressourcen gehen
und die Hoverbl-PY-Datei, die Logout-, Hover-PNG-Datei
und
die PNG-Datei Logout not Hover Dot herunterladen not Hover Dot und
die PNG-Datei Logout Ich werde gleich erklären, was sie sind
. Also das Padding jetzt, Login-Bildschirm erfolgreich Hmm Fügen wir auch die Polsterung von 30,
30 und den Abstand von 30, 30 hinzu. Mal sehen, was wir bekommen Oh ja, es sieht besser aus. Also jetzt die Schaltfläche, die Kiv-Bibliothek hat nicht
nativ ein Objekt, um Hover-Verhalten zu implementieren
, sodass sich etwas ändert,
wenn Sie die Maus bewegen, oder es gibt keine
einfache Möglichkeit Aber jemand hat ein
sehr kleines Submodul namens
hoverbl entwickelt und Sie können diese Datei
abrufen und sie in dasselbe Verzeichnis
wie Ihre Hauptdatei mit Punkt py
legen Sie befinden sich also im selben Ordner. Und dann müssen
Sie
die HoverBLTPI-Datei nicht ändern, also werde ich sie einfach schließen Und dann können wir aus Hoverbl importieren,
wir importieren das Hover-Verhaltensobjekt . Das ist also eine Klasse, Hover-Verhalten
der Klasse in der Hoverbel-Py-Datei mit
dem Punkt Das werden
wir also verwenden. Und die Art und Weise, wie
wir das nutzen werden, ist, gehen
wir hier runter. Und ich werde eine Klasse erstellen
und sie Image Button nennen. Das wird also ein
besonderer Button sein. Es wird kein
einfacher Button mehr sein, sondern ein Bild-Button. Und diese Bildschaltfläche
wird von
der Hover-Verhaltensklasse
und einigen anderen
Klassen erben der Hover-Verhaltensklasse , die ich hier
importieren werde Die Art und Weise, wie wir
diese Schaltfläche implementieren werden
, besteht darin,
zwei verschiedene Bilder zu verwenden Ich habe diese Bilder
in Power Points erstellt. Sie können sie ganz einfach erstellen.
Sie haben diese Symbole. Und du fügst etwas Text hinzu und machst
dann den
Hintergrund transparent. Und so hast du einen
blauen und einen roten. Die zwei verschiedenen Zustände
, die die Schaltfläche haben soll, sind
also ein PNG-Bild. Die Idee ist also, dass diese Schaltfläche keinen
Text enthalten wird. Ich werde ein Bild haben. Daher
müssen wir aus QV Dot X Dot Image,
Import, Image importieren Und schließlich werden
UX-Verhaltensweisen aus QV Dot importiert. Verhalten der Schaltflächen, und das war's. Jetzt erhalten wir das Bild- und
Schaltflächenverhalten und platzieren sie als übergeordnete
Elemente der Bildschaltfläche. Objekt. Und alles, was wir hier tun
müssen, ist einfach zu bestehen. Es ist nur eine Klasse, die diese drei Objekte
zusammenbringt. Um eine Klasse zu erstellen, also die
Bildschaltflächenklasse Attributen, die sich
wie diese drei Objekte verhalten Also
gehen wir dann zur Bildschaltfläche und ich platziere das hier falsch. Es tut uns leid. Also das sollte eigentlich
hier sein, Bild-Button. Wir sprechen über
den Logout-Button, nicht über den Enlighten Me-Button Und wir brauchen diesen
Abmeldetext nicht mehr. Wir brauchen
diesen Abmeldetext also nicht, weil wir unser eigenes Bild
verwenden dem der Text enthalten ist Also entferne das, wenn du Root Lookout
drückst.
Ja, das ist richtig Und die Quelle dieser Bildschaltfläche wird
Logout Hover sein, ich selbst
Punkt Hovert Lookout, Nein, Hover Oh, Punkt PNG, natürlich. Das ist also der
Pfad des Bildes. Also Overt, dieses
Selbstschweben, was es ist, ist dieses Attribut der Verhaltensklasse
Hort Also ist es ein Bowlinggelände. Es könnte entweder
wahr oder falsch sein. Das ist also Python-Code. Ich habe dir gesagt, dass alles
rechts neben diesen Attributen Python-Code ist. Also werden wir eine Quelle angeben, das Abmeldebild mit
dem Mauszeiger
für diese Bildschaltfläche Wenn das wahr ist, wenn der
Mauszeiger darüber bewegt wird, ist es wahr. Das HoverlPifle
erkennt also, ob sich eine Maus über dieser Taste
befindet Andernfalls setzen wir
Logout nicht auf Hover. Also dieser Pfad da. Also lass mich sehen, was passiert. Ja, es funktioniert also
gut, so einfach ist das. Aber der Button nimmt hier
offensichtlich zu
viel Platz ein. Es nimmt also im Grunde ein,
zwei, drei, vier, fünf, 20% in Anspruch, also haben wir fünf Widgets. Jedes von ihnen erhält
20% des Platzes. Lassen Sie uns dann einige
Größenangaben machen. Hinweis zur Größe Ich denke, ein guter Betrag
wäre 0,35,
0,35 . Also lass uns sehen. Ja, ich finde das gut. Und jetzt ist das in der Mitte. Also, wenn du es auf die rechte Seite
stellen willst, willst
du die Position ändern. Und wieder gibt es das
Positionshinweis-Attribut, das ein
Wörterbuch erhält, Mitte X. Ich denke, eine gute Zahl
wäre 0,93 und Zentrum Y. 0,8. das ein
Wörterbuch erhält, Mitte X.
Ich denke, eine gute Zahl
wäre 0,93 und Zentrum Y. 0,8.
Wenn wir das versuchen und schauen, was wir haben, wird
nichts passieren Denn wenn wir diesen
Positionshinweis verwenden, muss sich
das Widget in
einem anderen Widget befinden , das als
relatives Layout bezeichnet wird Wenn du die Kiwi-Datei
jetzt speicherst und die Datei ausführst, wird
das Wunder bewirken Wenn ich die Taste drücke, funktioniert
es nicht. Und der Grund, warum das
nicht funktioniert, verbirgt sich hier
darin , wie wir
diese Muster dieser
Bild-Button-Klasse anordnen . Das Verhalten von unten
sollte das erste sein
, weil diese Reihenfolge die Methoden
dieses unteren Verhaltens verbergen könnte. Lass es mich jetzt noch einmal versuchen.
Pass auf. Jetzt funktioniert es also. Loggen Sie sich erneut ein. Und hier geht es um diese Implementierung von
Bildschaltflächen. Und in der nächsten Vorlesung
wollen wir weitermachen und
diese Scroll-Ansicht
des Labels hier implementieren . Sehen Sie hier.
192. 191. Einen rollbaren Bereich erstellen: Hallo, lass uns weiter an
der Hauptseite unserer App arbeiten. Und so gibt der Benutzer
einige Codes ein. Und wie Sie wissen,
ist dieses Etikett hier, das Display, nicht optimiert. Was wir also
tun müssen, ist, wie Sie sehen, den Text
innerhalb der Ränder der
App zu platzieren, sodass,
wenn das Gerät, auf dem die App läuft,
der Text normal angezeigt
wird, so angezeigt wird,
wie er gerade angezeigt wird. Aber das Handy, wenn es sich bei dem
Gerät um ein Mobiltelefon handelt, wird
es so aussehen. Sie möchten also den Text in
diesem Bereich hier
umschließen , damit der
Benutzer das gesamte Zitat sehen kann. Wir befinden uns also auf der Erfolgsseite des
Anmeldebildschirms und wir sprechen über
das Textgrößenattribut. Lassen Sie uns also die Textgröße auf
Selbstpunktbreite und
Selbstpunkthöhe ändern . Was ist Selbstpunktbreite und
was ist Selbstpunkthöhe? Eigenpunktbreite, Self bezieht
sich auf das aktuelle Widget. Self ist also eigentlich das Etikett, und Breite ist die Breite
des Etiketts, Höhe ist die
Höhe des Etiketts. Der Text
erhält also die Breite und Höhe des Etiketts an der
Stelle, an der er sich befindet, was bedeutet, dass ich die Kiwi-Datei
speichern Also hat jedes Widget hier eine Größe. Und so ist Label eines
von fünf Widgets. Label, Sie haben eine Schaltfläche, Sie haben Texteingabe, Label und Sie haben dieses
relative Layout, und das Etikett
macht hier 20% aus. Es ist unsichtbar, aber wenn es einen Hintergrund
wie diese Schaltfläche hätte, würde
es wie
die Texteingabegröße
und die Größe der Schaltfläche aussehen . Es ist also irgendwo hier drin. Also das ist die Breite und das ist die Höhe, mehr oder weniger des Etiketts. Also, wenn ich SD
sage, versuchen wir, ein langes Zitat zu bekommen. Also das bekommen wir jetzt. Also sieht es besser aus. Wenn wir drücken,
sehen Sie, dass sich der Text innerhalb der
Höhe und Breite des Etiketts befindet. Sie können also sehen, dass ich jetzt, wenn ich das Fenster
zusammendrücke, seine Größe ändere Die Größe des Etiketts wird
dynamisch geändert, ebenso wie die Schaltfläche
und die Texteingabe Die Textgröße spiegelt also auch die Größe des Etiketts
wider,
wie Sie hier sehen können Aber das ist noch nicht genug. Wie wäre es also,
dem Text mehr Fläche zu geben , um ihn vertikal
auszudehnen? Wenn Sie
das tun möchten, möchten Sie Höhe der Textgröße auf „Keine“
setzen. Sie möchten also nicht, dass
es mit dem Etikett zusammenhängt. Also, wenn du
das speicherst, probiere den Code aus. Sie sehen jetzt, dass die Höhe
des Textes größer ist als
die Höhe des Etiketts. Das Etikett ist irgendwo hier. Lassen Sie mich die Größe noch einmal ändern. Die Etikettenhöhe
ist also so hoch, also ist sie irgendwo hier,
und die Texthöhe ist größer als die
Etikettenhöhe. Das ist besser. Wir können den Text sehen, aber
offensichtlich ist der Text überlagernd. Es liegt über anderen Widgets, also ist das natürlich
noch nicht ideal Also, was können wir hier tun? Also, ich denke, wir müssen einen Weg finden,
die Höhe des Etiketts so zu ändern , dass sie der Höhe des Textes
entspricht. In diesem Fall
wäre das so, als hätte man mehr von diesem schwarzen Bereich
hier auf dem Etikett. Also das Etikett hier
oben zu haben und die anderen Widgets über das Etikett zu
quetschen Lassen Sie uns also die Höhe
des Labels so ändern , dass sie der Höhe
des Textes entspricht . Wie können wir das machen? Nun, zuerst brauchen
wir das Etikett Y.
Also die Höhe des Etiketts,
wir brauchen das, um
die Größenangaben zu ignorieren,
was bedeutet, lassen Sie mich
Ihnen zeigen, was das Lassen Sie mich ein anderes Zitat versuchen. Das bedeutet also,
dass die Höhe des Labels nicht mehr 20%
des Rasterlayouts ausmacht, sondern standardmäßig eine feste Größe
von 100 Pixeln hat. Standardmäßig beträgt die Höhe
des Etiketts jetzt also 100 Pixel. Das ist also
dasselbe wie Höhe 100. Wenn ich das jetzt ausführe
, erhalten wir exakt dieselbe Ausgabe. Aber wenn du das auf 400 änderst, also die Höhe des Labels, ist
das das
Höhenattribut des Labels, nicht des Textes. Also, wenn du jetzt siehst, ist
das Etikett ziemlich
größer. Sagen wir Set. Das nimmt
jetzt also viel Platz in Anspruch. Also drückst du es und
du kannst den Text sehen. Aber das ist nicht das, was wir wollen. Wir sagten, wir wollen, dass die
Höhe dynamisch ist. Wir wollen, dass die Höhe
der Höhe
des Textes entspricht. Wenn
wir also das Fenster so
dehnen, wollen
wir, dass diese Schaltflächen
hier unten sind
und wir wollen, dass die
Beschriftung kleiner ist. Der Weg, das zu tun, ist also,
anstatt eine feste
Größe für die Höhe zu
haben, wir wollen
diese Texturgröße selbst bestimmen. Und wir erhalten das zweite Element
dieses Text-Orcis-Tupels. Text oder Größe ist also ein Tupel
, das zwei Elemente enthält. Das erste Element ist die
Breite des Textes. Es ist also ein dynamischer Wert. Es wird sich ändern, wenn
Sie die Größe des Fensters ändern. Der erste Wert ist also die Breite und der
zweite die Höhe Mit diesem Index greifen
wir also auf das zweite
Element des Umsturzes zu. Wenn wir das erste Element wollten, würden
wir hier Null verwenden Wir wollen das zweite,
das ist die Höhe. Also speichern Sie das.
Sie sehen also , das
Etikett ist dynamisch, also ändert es seine Größe je nach
Textgröße. Und wir können den gesamten Text sehen. Und wenn wir
das Fenster auf diese Weise dehnen, haben
wir hier keinen
übermäßigen leeren Bereich, was der Labelkörper wäre. Das ist natürlich nicht
ideal, und es bleibt noch eine Sache
übrig, die wir hier tun können. Was wir tun müssen, ist etwas Platz für das
Scroll-View-Widget zu haben. Und das Label, zusammen
mit seinen Attributen, muss
ich mit der Tabulatortaste einrücken um es als untergeordnetes Element
der Scroll-Ansicht zu haben Scroll-Ansicht befindet sich jetzt also Die Scroll-Ansicht befindet sich jetzt also auf derselben Ebene wie
das andere Widget, die
Button-Texteingabe, das
andere Label usw. Also speichere den Kivfle
jetzt und führe ihn aus. Glücklich. Und so kannst du dort einen Scroller
sehen Traurig. Erkläre mich. Es funktioniert also mit
jeder Art von Text. Wenn der Text kurz ist, wird nicht gescrollt, und wenn der Text länger ist, automatisch
gescrollt Sie können also zum
Ende des Textes gehen. Und so
erstellen Sie eine Scroll-Ansicht, die ein Etikett hat und das
Etikett enthält etwas Text. Ich hoffe es hat euch gefallen und wir sehen uns
im nächsten Video.
193. 192. Die Umgebung für die Bereitstellung der mobilen App vorbereiten: Higen. In den nächsten Videos zeige
ich Ihnen gerne,
wie Sie
aus der
Python-Datei, die wir bereits
in den vorherigen Vorlesungen erstellt
haben, eine APK-Datei erstellen aus der
Python-Datei, die wir bereits
in den können. Eine APK-Datei ist nun eine Datei
, die auf einem
Android-Telefon installiert werden kann , sodass die
App auf Mobilgeräten verwendet werden kann. Derzeit
haben wir nur eine Dot-Py-Datei. Wir haben also die Haupt-Punkt-Py-Datei und die Design-Punkt-KV-Datei. Und wir haben auch eine
Reihe zusätzlicher Dateien wie diese OverLTPyFle und
diese PNG-Dateien sowie die Datenbank,
die in der
Punkt-Json-Datei des Benutzers
gespeichert ist des Benutzers
gespeichert All diese Dateien werden also in einer APK-Datei
gebündelt. Um eine APK-Datei zu erstellen, müssen
wir eine Bibliothek
namens Bildozer verwenden Es ist eine
Python-Bibliothek, mit der wir
installieren können . PIP oder Conda Das Problem ist, dass das Erstellen von
APK-Dateien unter Windows- oder
Mac-Betriebssystemen sehr
schwierig, um nicht zu sagen unmöglich ist Das Beste, was wir tun
können, ist,
ein
Linux-Betriebssystem wie Ubuntu zu verwenden . Aber ich werde Sie nicht
bitten,
Ihr Windows-Betriebssystem oder
Ihr MacOS zu löschen Ihr Windows-Betriebssystem oder
Ihr und
Linux auf Ihrem Computer zu installieren. Jetzt werden wir eine virtuelle Maschine
verwenden, eine Software, die Sie auf macOS oder Windows
installieren können . Und in dieser Software wird sich diese Software wie ein Computer
verhalten. Aber es ist ein virtueller
Computer. Es ist eine Software. In dieser Software können
Sie also Betriebssysteme
wie Linux, Windows oder Mac installieren . In diesem Vortrag werde
ich Ihnen zeigen,
wie Sie Virtual Box installieren. Diese Installation ist einfach, egal ob Sie Windows oder MacOS Also geh einfach zu virtualbox.org. Und klicken Sie auf die
Download-Schaltfläche dann auf
einen der Links Wenn Sie also Windows verwenden, bedeutet
dies, dass das
Host-Betriebssystem Windows ist. Windows wird also das
Ubuntu-Linux-System hosten. Ich bin gerade auf einem
Windows-Computer, also werde ich
auf Windows Hosts klicken. Das gibt mir also die
ausführbare Datei von Virtual Box. Sobald die Datei heruntergeladen ist. Fahren Sie fort und
doppelklicken Sie, um zu installieren. Ich möchte keine Verknüpfung auf dem Desktop oder in der
Schnellstartleiste, aber Sie können
diese Optionen gerne aktiviert lassen. Ja, wir brauchen Internet in dieser virtuellen Box in dieser virtuellen Maschine, dem
virtuellen Computer. Also installiere. Ich würde mich
wieder für Install entscheiden. fertig sind, wird Oracle Virtual
Box jetzt gestartet. Rechnen Sie
damit, dass es eine
Weile dauern wird, und hier ist es. Die Oberfläche
ist also ziemlich einfach. Wir haben hier einige Knöpfe. Wir sind an
dem neuen Button interessiert. Aber zuerst, bevor ich das mache, musst
du zu ubuntu.com gehen Und lade ein
Ubuntu-Betriebssystem herunter. Gehen Sie also zur Download-Schaltfläche, gehen Sie zum Ubuntu-Desktop. Es gibt jetzt zwei Versionen, aber dies ist eine stabile Version, die mit grünem Knopf. Also werde ich das herunterladen. Rechnen Sie damit, dass das
eine Weile dauern wird, denn es sind
ungefähr 2 Gigabyte Ja, das sind ziemlich
viele Daten. Sobald Sie diese Datei heruntergeladen haben, gehen Sie erneut zu Oracle Virtual
Box und dann zu Neu. Vorname, ich nenne
es Ubuntu und Sie werden sehen , dass diese Drop-down-Listen automatisch aktualisiert
werden. Sie möchten hier also Linux
auswählen. Wir installieren ein
Linux-Betriebssystem und Ubuntu 64 Bit. Das habe ich zumindest von ubunto.com
heruntergeladen, aber Ihr System
erkennt
automatisch die Architektur
des Programms Also werde ich
jetzt auf Weiter klicken, die Speichergröße.
Sie sagen, dass die
empfohlene Größe ein Gigabyte für RAM
ist,
aber ich würde sagen, Sie
sollten sich für eine höhere Größe entscheiden, nämlich Wenn Sie nicht viel RAM auf
Ihrem Computer auf Ihrem
physischen Computer haben , sollten Sie sich
vielleicht
für weniger entscheiden und sehen, wie Ubuntu mit
so viel Speicher funktioniert Aber das ist die Idee. Das sind 3.000 Megabyte,
das ist die RAM-Größe auf diesem
Windows-Computer, den ich verwende, und ich gebe
dem virtuellen Linux-Computer 4 Megabyte Das wäre also
die maximale Größe 4 Gigabyte RAM Klicken Sie auf Weiter. Erstellen Sie jetzt eine
virtuelle Festplatte. Erstellen. Sie möchten einen VDI, also klicken Sie auf Weiter. Dynamisch zugewiesen ist in Ordnung. Das liegt wieder an dir. Ich empfehle 20 Gigabyte,
wenn Sie sie haben. Also etwa 20 Gigabyte, aber gib ihm mindestens zehn, oder wenn du nicht viel Speicherplatz auf deiner Festplatte
in deinem Computer hast , dann solltest du dich für
weniger als 5 Gigabyte
entscheiden und schauen, wie aber gib ihm mindestens zehn,
oder wenn du nicht viel Speicherplatz auf deiner Festplatte
in deinem Computer hast,
dann solltest du dich für
weniger als 5 Gigabyte
entscheiden und schauen, wie die Dinge funktionieren. Normalerweise sollten Sie, wenn Ihnen
der Speicherplatz oder der Arbeitsspeicher ausgehen, einige
Popup-Fenster aus
einer virtuellen Box aufrufen , die Ihnen sagen
, dass der Speicherplatz nicht ausreicht,
aber je mehr Speicherplatz, desto Klicken Sie auf Erstellen. Und so haben
wir jetzt hier eine Ebene erstellt. Sie möchten zum Start gehen Und Sie werden aufgefordert, eine Startdiskette
auszuwählen. Sie möchten also hier in diesen
Ordner gehen und dann die ISO-Datei
suchen, die Sie von
ubuntu.com heruntergeladen haben Also das ist einer da.
Klicken Sie auf Start. Nun, dieses Fenster hier ist etwas klein, aber Sie können zur Maschine und zu den Einstellungen
gehen, zur Anzeige gehen. Und hier im Skalierungsfaktor möchten
Sie ihn vielleicht auf 300% erhöhen
. Klicken Sie auf Okay. Und jetzt siehst du, dass der
Bildschirm etwas größer ist. Das ist also der nächste
Bildschirm, den wir haben. Sie möchten zur
Installation von Ubuntu gehen. Es geht hier auf Englisch und dort
auf Englisch für
das Tastaturlayout. Diese Einstellungen sind in Ordnung. Dann möchten Sie Buntu als Festplatte
auswählen und installieren, das einfach all Ihre Programme,
Ihre Fotos und Ihren Computer
löscht ,
alles, was Sie
jemals hatten. War nur ein Scherz. Es geht nur um
die Programme, die Sie in der virtuellen Box
haben,
die wir nicht haben. Dies wäre also der Fall,
wenn Sie
ein vorhandenes
Betriebssystem überschreiben würden , das Sie bereits in
dieser virtuellen Box hatten Es hat also nichts mit
Ihren Programmen in Ihrem
Hauptbetriebssystem zu tun , also Windows oder MacOS Gehen Sie also einfach zu Jetzt installieren. Fahren Sie fort. Wählen Sie Ihre Zeitzone aus. Wählen Sie einen Namen für den Computer aus. Ich melde mich einfach automatisch an, ohne
ein Passwort anzugeben Sie müssen
jedoch
ein Passwort wählen. Klicken Sie auf Weiter. Und das wird
jetzt eine Weile dauern , bis die Dateien installiert
sind. Also bis Ubuntu in
dieser virtuellen Maschine in
dieser virtuellen Box installiert ist , Software. Meine Installation wurde abgeschlossen und ich werde
aufgefordert, neu zu starten .
Deshalb klicke ich
auf Jetzt neu starten. Dadurch wird das
Linux-Betriebssystem neu gestartet, nicht das Host-Betriebssystem
, in meinem Fall Windows. Also einfach Ubuntu
in der virtuellen Box neu starten. Es scheint ein Fehler vorzuliegen, und ich habe gerade die Eingabetaste gedrückt und
die Dinge scheinen zu funktionieren Das ist also Ubuntu. Wenn Sie
die Startup-Anleitung sehen möchten. Klicken Sie einfach auf Weiter. Und fertig. Jetzt möchten Sie vielleicht
zu Oracle Virtual Box gehen, also zur Virtual
Box-Oberfläche und dann zu Computer und Einstellungen und
dann zu General Advanced gehen. Und vielleicht möchten Sie
die Optionen Shared Clipboard und
Dragon Drop aktivieren die Optionen Shared Clipboard und
Dragon Drop Ich habe sie als bidirektional eingestellt, was bedeutet, dass Sie Dateien vom Betriebssystem Ihres
Hosts
kopieren können , also von Windows oder Mac über Linux
nach Ubuntu und umgekehrt Mir ist jedoch aufgefallen
, dass das nicht funktioniert. Wenn Sie diese Aufforderung erhalten, bedeutet dies, dass es
einige Updates für Ubuntu gibt. Aber ich werde dieses Fenster einfach
schließen. Ich gehe also davon aus, dass die Option Kopieren und Einfügen
von Dateien zwischen
den Systemen nicht funktioniert Deshalb werde ich Ihnen
zeigen, was Sie
tun können , um Dateien von Ihrem Host-Betriebssystem auf Ihr Linux auf Ihr
Ubuntu-Betriebssystem zu Das ist also der Ordner, in dem ich alle Dateien habe, die ich
für diese APK-Datei für die
mobile Version des Programms benötige . Es ist also alles, was
wir durchgemacht haben, plus diese Kv Build Dozer
Installer Dot SH-Datei Dies ist eine Datei, die Sie von den Ressourcen
herunterladen können, und ich werde Ihnen zeigen,
wofür diese Datei gedacht ist Aber vorerst werde ich nur
Dropbox verwenden. Ich habe die Projektdateien also bereits in meiner
Dropbox unter Windows. Also der Ordner ist dieser hier. Teaching hat alle Dateien. Ordnung, also werde
ich rechten Maustaste klicken und den Dropbox-Link
kopieren. Also das ist unter Windows. Es ist nicht unter Linux. Es ist
außerhalb von Virtual Box. Eine andere Möglichkeit, dies zu tun
, wäre , diesen Dienst zu nutzen,
Google Dot IO Auf diese Weise können
Sie eine Datei hochladen, und Sie erhalten einen Link Und damit Sie diesen Link verwenden
können, können Sie
diesen Link in Linux einfügen , da
dort ein Browser vorhanden ist. Sie haben Firefox in Linux. Da wir aber nicht
kopieren und einfügen können, müssen
wir diesen Link
manuell eingeben. In meinem Fall werde ich also Drawbox und
usebtle.com
verwenden, um die von mir erstellte URL zu kürzen Das ist also die URL dort. Und geben Sie diese URL in den Browser Ihres
Linux-Betriebssystems ein. Wenn Sie diese Dateifreigabe nicht
nutzen möchten, können
Sie einfach diese URL verwenden, um meine Dateien
abzurufen, sodass Sie
die Dateien
mit dem Browser direkt von
Ihrem Linux-System herunterladen können die Dateien
mit dem Browser direkt von . Gehe zu direkteren Downloads. Datei speichern. Okay. Die Dateien sollten jetzt
heruntergeladen worden sein und Sie können sie in den Dateien
finden. Herunterladen. Klicken Sie mit der rechten Maustaste auf
die heruntergeladene Zip-Datei. Gehe, um zwei zu extrahieren. Sie möchten den Desktop auswählen. Aber klicken Sie
dort auf dieses
neue Ordnersymbol , um einen Ordner zu erstellen. Sagen wir Projekt eins,
erstellen und auswählen. Jetzt sehen wir dieses
Projekt, einen Ordner hier, und da ist der
Unterrichtsordner drin, und das sind die Dateien. Und so lasst uns
dieses Video hier beenden. So installiert man
Visual Box und wie man
Linux in der Virtual Box einrichtet Linux in der Virtual Box und wie man die Dateien in das
Linux-Betriebssystem bringt. Jetzt sind wir bereit,
eine ausführbare Datei für Mobilgeräte zu erstellen , die auf Android ausgeführt werden kann. Also lass uns das
im nächsten Video machen.
194. 193. Eine APK-Datei für Android erstellen: Hallo nochmal. Im
vorherigen Video habe ich Ihnen gezeigt,
wie
man Virtual Box installiert, wie man Ubuntu
in Virtual Box installiert, und dann haben wir
die Projektdateien in dieses
Ubuntu-Betriebssystem transportiert . Jetzt befinden sie sich im
Dateisystem von Ubuntu. Was wir jetzt tun werden,
ist, die Bill Dozer Python-Bibliothek zu verwenden ,
um eine APK-Datei zu erstellen Aber bevor wir
das tun, müssen wir einige Abhängigkeiten im
Ubuntu-Betriebssystem
installieren , da Bulldoser sie benötigt, um diese APK-Mobildatei erstellen
zu können diese APK-Mobildatei erstellen
zu Sie dazu mit der
rechten Maustaste in
dem Ordner, in dem sich die
Projektdateien befinden, Klicken Sie dazu mit der
rechten Maustaste in
dem Ordner, in dem sich die
Projektdateien befinden, und öffnen Sie
das Terminal Das öffnet also
das Linux-Terminal. Sie werden dieses
aktuelle Verzeichnis sehen. Dort befinden sich also Ihre Dateien. Wenn Sie LS verwenden, werden Sie feststellen
, dass dies die Dateien sind. Der Hauptpunkt Pi ist also da. Stellen Sie sicher, dass
das genau Main Dot Pi heißt , weil Bill Dozer diese Datei sehen
muss Und diese Datei sollte das Hauptprogramm
haben. Ich brauche diese
Screenshot-Datei nicht, also werde ich sie einfach entfernen
, wie Sie sehen können, die Screenshot-Datei
ist nicht mehr da. Um die geöffneten
Fenster auf Ubuntu zu finden, gehen Sie zu Aktivitäten. Sie werden sehen, dass das Terminal geöffnet ist und der Datei-Explorer
ebenfalls geöffnet ist. Klicken Sie auf das Terminal. Dadurch wird das Terminalfenster
zurückgebracht. Jetzt sehen
Sie unter diesen Dateien diesen Kiv
Bulldozer-Installationspunkt Sie können den
Inhalt dieser Datei
mit CAT sehen und
den Namen der Datei eingeben Das ist also, was diese
Datei enthält. Im Grunde
sind dies Anweisungen
zur Installation vieler Abhängigkeiten, einschließlich Python,
Belser und Kiwi, da dieses Linux-System auch
kein Kiwi hat Also geh hier runter. Wir sind wieder hier, klicken Sie auf Bash und drücken Sie die
Tabulatortaste, um den Namen automatisch zu
vervollständigen Das ist also der Name
der SH-Datei. Klicken Sie auf Enter. Geben Sie das Passwort
für Ihr Ubuntu-System ein. Dies ist ein Passwort, das Sie bei der
Installation von Ubuntu
erstellt haben. Ubuntu hat Sie
nach einem Benutzernamen und
einem Passwort gefragt und rechnen Sie damit, dass
dies eine Weile dauern wird. Ubuntu lädt
diese Pakete jetzt aus
dem Internet herunter und das Internet wurde bei der Installation von Ubuntu automatisch aktiviert, sodass ich
keine manuelle Konfiguration
der Internetverbindung vornehmen musste . Manchmal
erhältst du einige Warnungen, aber du kannst sie ignorieren. Dies ist kein stabiler
Prozess,
da viele
Abhängigkeiten damit verbunden sind und manchmal
Fehler auftreten, wenn wir
die APK-Datei erstellen , sodass diese Datei manchmal nicht erstellt
wird. Es ist kein einfacher Prozess, aber du kannst die Fehler lesen, was sie sagen, und
vielleicht bei Google suchen, um zu sehen worüber andere
über diesen
bestimmten Fehler sprechen . Es gibt keine Garantie
, dass es funktioniert. Davon abgesehen ist Linux
das beste
Betriebssystem, um diese APK-Pakete erstellen
zu können . Endlich
hat die Installation
meinen Computer auf meinem
virtuellen Linux-Computer abgeschlossen . Der nächste Schritt ist optional. Vielleicht möchten Sie
die App ausprobieren, die Sie haben. Verwenden Sie dazu Python, den Befehl
Python Three, Mindas Pi, die Datei,
die wir verwendet haben Die App funktioniert einwandfrei mit
Python. Lass es uns ausprobieren. Ja, es funktioniert gut. Ja, mach das Fenster zu. Und als Nächstes wollen
wir eine Bull
Dozer-Spezifikationsdatei
erstellen Dazu verwenden wir Bull Dozer, also den Befehl Bull Dozer darin Okay, das hat diese
Bilozer-Punktspezifikationsdatei erstellt. Sie können dieses Fenster minimieren und diese Datei im
Dateisystem
finden Sie können diese Datei ignorieren.
Das brauchen wir nicht. Das waren nur ein paar
Notizen, die ich benutzt habe. Also Bulloser Dot Spec, Sie können darauf doppelklicken und
es wird
mit der Texteditor-App geöffnet mit der Texteditor-App Hier haben wir also die Möglichkeit,
einige Parameter der App zu ändern , die wir erstellen werden Lass uns den Titel angeben, wie fühlst du dich? Sie können einen Namen
für das Paket wählen, aber verwenden Sie dort keine Leerzeichen. Ich überlasse es einfach meiner App. Und Sie möchten hier aufhören, welche Erweiterungen soll
das Paket enthalten? Wir haben also Pi-Dateien. Wir haben auch einige PNG-Dateien und wir haben auch JSON-Dateien. Das
wollen wir also mit einbeziehen. KV-Datei auch, aber sie ist schon da. Also KV ist schon da und dann geh weiter runter. Das wird
also Version 0.1 sein. Es ist unser erster Einsatz, und dann
willst du hier vorbeischauen. Also, welche Anforderung
hat Ihr Paket? Nun, mal sehen, welche Bibliotheken. Welche
Bibliotheken von Drittanbietern haben wir in unserer PI-Hauptdatei? Wir haben also die QV-Datei. Hoerbl ist eine lokale Datei. Es ist keine Bibliothek eines Drittanbieters. Diese lokale Datei ist
in der Projektdatei enthalten, sodass Sie
das nicht in den Anforderungen deklarieren müssen ,
und das ist alles, was wir haben. JSON und Globe sind
Standard-Python-Bibliotheken, daher enthalten sie auch
Python Random und Path Leap. In der Builders
Dot Spec-Datei müssen
wir also nichts
anderes als
Python Three und KV hinzufügen anderes als
Python Three und KV Gehen Sie hier runter, Sie möchten alle Ausrichtungen
aktivieren, nicht nur Portraits
auf dem Handy Das ist in Ordnung. Und diese Version hier sollte auf acht geändert werden. Und das ist alles. Stellen
Sie sicher, dass Sie die Datei speichern, klicken Sie auf Speichern oder Strg S ,
schließen Sie und kehren Sie dann
zum Terminalfenster zurück. Und jetzt müssen wir
nur noch den Befehl ausführen
, der
hoffentlich die APK-Datei erstellt . Das heißt, Saucer Android erstellen, debuggen Irgendwann werden wir Sie fragen
, ob
Sie die Lizenz akzeptieren möchten, um die Lizenz zu
akzeptieren, Y
drücken und dann die Eingabetaste drücken Das ist zunächst in meinem
System gescheitert. Wenn das der Fall ist, sollten
Sie vielleicht
zurückgehen und sich den Fehler
ansehen , da dies nur allgemeine Meldungen
sind. Wenn Sie
nach diesen Farben suchen möchten, möchten
Sie hier
die obere rote Meldung suchen. Dieser Befehl ist fehlgeschlagen. Ich denke, das liegt daran, dass wir Version acht
angegeben haben. Lassen Sie uns versuchen, zur Blows
- oder Spezifikationsdatei zu gehen und diese zu ändern , diesen Wert zu
löschen und ihn durch arm 64
V eTA zu ersetzen. Fügen Sie ihn dort ein Und außerdem
haben wir vergessen,
ich glaube, wir haben vergessen,
die Punkt-TXT-Erweiterung hier zu
den akzeptierten Erweiterungen hinzuzufügen die Punkt-TXT-Erweiterung hier zu
den akzeptierten Erweiterungen Punkt TXT, weil Punkt TXT die Datei
ist, in der wir diese Anführungszeichen
haben. Stellen Sie also sicher, dass Sie dies speichern ,
schließen und erneut
zum Terminal wechseln. Dieses Mal werden wir erneut
versuchen,
die APK-Datei mit
Bulldozer Android zu erstellen die APK-Datei mit
Bulldozer Aber dieses Mal werden wir
die saubere Flagge hinzufügen . Und dann debuggen Die Clean-Flagge stellt also
sicher, dass
die bisherigen Bemühungen, das APK-Paket
zu erstellen, nicht beeinträchtigt Herr Moderator, auch hier müssen
wir
eine Weile warten, bis der
Verpackungsprozess abgeschlossen ist. Diesmal werden Sie jedoch
nicht
aufgefordert, die Lizenz zu akzeptieren, und der Vorgang ist möglicherweise schneller als zuvor.
Warten wir also ein bisschen. Also
wurden die zweiten Build-Versuche in meinem Linux abgeschlossen, gehe zum Ordner. Ben hat den Ordner erstellt. Darin
sollten Sie also die
APK-Datei finden können . Das ist
ungefähr dieses Video. Im nächsten Video werde
ich mir ein Android-Gerät besorgen
und
Ihnen zeigen, wie Sie
diese APK-Datei auf einem
Android-Gerät installieren . Wir sehen uns.
195. 194. Installiere die APK-Datei auf Android: Der nächste Schritt besteht also darin, diese APK-Datei herunterzuladen
, sie auf ein Android-Gerät
zu laden
und zu installieren, damit
wir mit
der App auf dem eigentlichen
Mobilgerät spielen können . Jetzt können Sie hier
kreativ sein, wie Sie diese Datei auf
Ihr Mobilgerät
übertragen können. Es wäre einfacher,
wenn dieses Linux-System Ihrem
physischen Computer installiert
wäre, nicht in einer virtuellen Box. Wenn Sie also im wirklichen Leben die Entwicklung mobiler
Apps mit Python
ernst nehmen
möchten , möchten
Sie vielleicht Ubuntu
auf
Ihrem Computer installieren , um einen Linux-Computer zu
haben. Sie könnten dies
mit Dual-Boot tun, wenn Sie einen Windows-Laptop
oder PC haben, und in diesem Fall könnten
Sie
Ihr Mobiltelefon
mit einem USB-Kabel verbinden, könnten
Sie
Ihr Mobiltelefon
mit einem USB-Kabel verbinden sodass Sie die Dateien
problemlos auf Ihrem Mobilgerät platzieren können. In diesem Fall möchte ich
eine allgemeine Lösung haben , die für alle
funktioniert. Also werde ich diese Datei in
diesen Go File Dot IO-Dienst
hochladen . Also klicke dort und gehe zu Bin. Das ist die Datei. Hochladen. Und jetzt können Sie diesen Link
hier abrufen, den Download-Link, und Sie können ihn in
den Browser Ihres
Mobilgeräts einfügen. Hallo. Lassen Sie mich Ihnen
jetzt zeigen, wie Sie
die APG-Datei auf einem
Android-Gerät installieren die APG-Datei auf einem
Android-Gerät Das ist also die Go File Dot IO-Webseite, auf die ich die APK-Datei
hochgeladen habe,
damit ich sie auf
meinem Mobilgerät teilen kann Das ist eine der Möglichkeiten. Mein Browser zeigt also
auf diesen Dienst. Ich gehe zum Herunterladen. Drücken Sie die Download-Schaltfläche. Also heißt es Herunterladen. Wenn die APK-Datei heruntergeladen
wird, werden Sie gefragt, ob Sie sie installieren
möchten. Drücken Sie also auf Installieren. Android fragt Sie, ob Sie diese App installieren
möchten oder nicht da Sie normalerweise aus Sicherheitsgründen keine Apps installieren
möchten, von denen Sie nicht wissen,
woher sie stammen Also diese App, wir bauen diese App, also wollen wir trotzdem
zur Installation übergehen Ich habe die Nachrichten-App installiert. Wenn Sie
die App zum Scannen
an Google senden möchten ,
möchte ich das nicht tun. Also sende nicht. Drücken Sie also Fertig und suchen Sie
die App. Also hier ist die App. Ich werde
darauf klicken. Es wird geladen. Und zwei U eins, P eins, einloggen. Glücklich. Klicken Sie auf Erklären mich und Sie sehen, dass die
Nachrichten angezeigt werden Es funktioniert also. Ich hoffe, das funktioniert gut für dich. Ich hoffe, Ihnen gefällt der Prozess. Wenn der Build in Ihrem Fall nicht
erfolgreich war, schauen
Sie sich bitte die
häufig gestellten Fragen um zu sehen, ob Ihre Frage
dort beantwortet wurde, und Sie können versuchen den Build-Prozess erneut
mit dem Bildoser Benutze immer die Option „Reinigen“, dann sehe ich dich
in den nächsten Videos
196. 195. Web-Scraping mit Python & Beautiful Soup: Hallo und willkommen in diesem
interessanten Bereich. Abschnitt lernen Sie
Web-Scraping diesem Abschnitt lernen Sie
Web-Scraping mit Python In dieser Vorlesung wollte
ich erklären, was Web
Scraping bedeutet Web Scraping bedeutet also,
das Web nach Informationen zu durchsuchen,
oder mit anderen Worten, Informationen aus Webseiten zu extrahieren Nehmen wir an, Sie möchten
Informationen über Immobilien extrahieren Informationen über Vielleicht möchten Sie die Preisentwicklung
über Zeit und Ort
wissen . Und ich glaube nicht, dass es
einige nette Excel-Dateien mit
gut strukturierten Daten gibt , die
Sie
herunterladen und sofort
Datenanalysen durchführen können . In Wirklichkeit sind solche
Daten über
HTML-Webseiten von
Immobilien-Websites verteilt HTML-Webseiten von
Immobilien-Websites In unserem Beispiel. Sie müssen sie also
verschrotten und in ein strukturiertes Format wie Excel- und Excel-Datei,
CSV,
Pandas DataFrames oder andere tabellarische Formate bringen in ein strukturiertes Format wie Excel- und Excel-Datei,
CSV,
Pandas DataFrames Und das in ein
gut strukturiertes Format zu bringen ,
wird als Web Scrapping bezeichnet, und Python ist darin hervorragend Insbesondere werden wir
eine Python-Bibliothek
namens Beautiful Soup verwenden . In diesem Abschnitt
stelle ich Ihnen Beautiful Soup vor, und wir werden
einige Informationen von
einer einfachen Webseite extrahieren , während ich Ihnen zeige, wie
Beautiful Soup funktioniert. Im nächsten
Abschnitt, also sobald wir die
Lektionen
dieses Abschnitts gelesen
haben, werden wir fortfahren und
einige
Immobilieninformationen
wie Immobilienadressen
und Immobilienpreise,
die Gegend und andere
Merkmale von Immobilien extrahieren einige
Immobilieninformationen
wie Immobilienadressen
und Immobilienpreise, . Wir werden
diese Informationen
von einer großen Immobilien-Website extrahieren . Also, ja, das ist ungefähr das,
was Scraping ist. Ja, ich werde
in der nächsten Vorlesung mit dir sprechen.
197. 196. So funktioniert Web-Scraping +: Wie funktioniert Web
Scrapping überhaupt? Wie kann Python
die Informationen
von einer Webseite abrufen und als Text
speichern, damit Sie sie bequem
analysieren können ? Nun, dieser Text
, den Sie hier sehen. Das ist also eine Beispiel-Website, und eigentlich
ist diese Domain für Beispiele reserviert. Aber es ist eine normale
Webseite, die mit
HTML und CSS und anderen
Webentwicklungstools erstellt wurde . HTML ist also das, was die Elemente,
den Text und alles andere
rendert Im Browser. Zum Glück können
Sie jetzt den Code
jeder Webseite sehen , indem Sie
zum Seitenquelltext gehen ,
wie ich es hier getan habe. Das ist also der Code,
der HTML-Code, so wie Sie ihn sehen, er wird hier
mit HTML-Tags geöffnet und
hier geschlossen. Das hat also den Titel
der Webseite, das ist diese hier, die
Beispieldomain und so weiter Und das Wichtigste ist,
dass Sie wissen das SML-Skript aus
SDML-Elementen besteht Diese Zeile hier
ist also ein SML-Element, also ist es ein Metaelement, und dann haben wir
Divisionselemente, das ist dieses hier Wir haben dieses Jahr
Absatzelemente. Und diese werden Tags genannt. Also das Div-Tag und das Abschluss-Tag der
Division. Also öffnendes
Abteilungs-Tag, Division-Tag. Und dann haben wir das Body-Tag. Hier befindet sich also
der sichtbare Teil der HTML-Seite der
Webseite Also alles, was du in den Body-Tags platzierst, wirst
du dort sehen Wenn Sie hier also ein
Beispiel für eine Domain haben, ist
diese Domain so
eingerichtet,
dass sie verwendet werden kann usw., hier sehen
Sie den Text Diese Domain ist so eingerichtet
, dass sie für usw. verwendet werden kann. Daher
sind die HTML-Elemente der Schlüssel für Web-Scrabbing. Im Grunde genommen wollen
Sie also, sagen
wir, Sie wollen den Text der
Age-One-Tags aus allen
DIF und allen Unterteilungen
extrahieren Age-One-Tags aus allen
DIF und allen Unterteilungen Sie sagen Python also, Sie sagen Python, dass
es zu
allen Age-One-Tags gehen und den Text dieser Tags
extrahieren soll. Python wird das tun.
Zuallererst müssen
Sie jedoch das
gesamte Skript in Python laden, und dazu
verwenden Sie die Anforderungsbibliothek. Anfragen ermöglichen es
Ihnen
also, eine Python-URL wie example.com anzugeben, und Python
wird alle Texte abrufen Sobald Sie diesen Text haben, werden
Sie die
wunderschöne Soap-Bibliothek verwenden , um alle
Elemente aus dem Text zu extrahieren Also zum Beispiel die Prüfung, der Text in den HD-Hone-Tags. Und dann können Sie
den extrahierten Text in
Variablen in Python-Wörterbüchern
oder Pandas-Datenrahmen speichern ,
und zwar überall dort, wo Sie ihn für Ihre Bedürfnisse
nützlich finden Das ist also das Konzept und Sie können den
gleichen Quellcode,
wie Sie vielleicht schon
wissen, von der Inspektion aus sehen wie Sie vielleicht schon
wissen, von der Inspektion aus Klicken Sie also mit der rechten Maustaste auf Inspect
und Sie sehen das. Also hier ist
dieser Quellcode, aber Sie sehen ihn übersichtlicher. Wenn Sie also zum Beispiel Maus
über die Body-Tags fahren, das entsprechende Element auf wird
das entsprechende Element auf
der Webseite
hervorgehoben, sobald Sie es sehen Wenn Sie das also erweitern, sind Sie
jetzt bei Tags und so weiter
am Rand Auf diese Weise können Sie tatsächlich die Namen der Steuern für
die Elemente
sehen , die
Sie extrahieren möchten. Wir werden also das
Inspektionsfenster verwenden um den
Quellcode unserer Webseiten zu verstehen Das ist also ungefähr das
Konzept des Web-Scrappings. Und wir sehen uns in
der nächsten Vorlesung, wo ich eine
Webseite in Python lade und wir dann
einige einfache Daten
von der Webseite extrahieren werden . Also nur um dir den Einstieg Request-Bibliothek und die
wunderschöne Soap-Bibliothek zu erleichtern. Also lass uns weitermachen.
198. 197. Web-Scraping-Beispiel mit Python: Wie Sie sehen, ist es
ziemlich einfach. Und absichtlich habe ich
versucht, eine einfache
Webseite für Sie zu finden. Also los geht's. Ich wollte dich vorerst nicht
mit vielen Inhalten ablenken vorerst nicht
mit vielen Inhalten Später können Sie
Informationen von einer großen
Website mit vielen Daten abrufen Informationen von einer großen
Website mit vielen Daten Lassen Sie uns also vorerst versuchen, zu greifen. Nehmen wir an, wir möchten
die Namen der
Städte von dieser Seite extrahieren . Wenn Sie also MIP folgen möchten, geben
Sie bitte diese Adresse in Ihre Adressleiste mit dem
Punkt HTML am Ende Also haben wir hier
nur drei Städte, die
wir extrahieren werden Aber der Code, den wir schreiben
werden, funktioniert hier
mit einer beliebigen Anzahl von Zeilen. Ich werde das
IPython-Notebook
oder das Jupiter-Notebook verwenden ,
wie es jetzt heißt, also wurde es in JPeter Notebook
umbenannt also die rechte
Maustaste, klicken Sie und öffnen Sie
Ihre Befehlszeile JPter Node Book. Und ich werde ein kostenloses
Python-E-Book erstellen. Großartig. Das erste, was Sie tun
möchten, ist, diesen Quellcode in Python zu
laden. Der Weg, das zu tun, besteht darin, die Anforderungsbibliothek zu
verwenden. Wenn Sie
das also nicht installiert haben, können
Sie es einfach mit PIP install oder ähnlichen Anfragen Ich habe es schon, also bin ich
schon zufrieden. Der Vorgang ist jedoch sehr einfach, sodass Sie bereits wissen, wie Sie Pakete mit PIP
installieren Und du brauchst auch die
schöne Suppenbibliothek. Um das zu installieren, müssen
Sie
erneut PIP install sagen und nicht Beautiful Soup, sondern Bs steht
für also Beautiful Soap Four Das ist also die neueste Version
von Beautiful Soap. Und dann. Sie möchten also Anfragen importieren, und als Erstes
möchten Sie den Quellcode laden. Und dann fangen wir an, nach
HDML-Tags zu suchen und
Elemente aus diesen Tags zu extrahieren Aber lassen Sie mich auch
wunderschöne Seife importieren. Also aus BC BC Four,
importieren. Wunderschöne Suppe. Das ist also die Syntax.
Du importierst den schönen
Suppenkurs von BC Four. Wenn Sie Python 2 verwenden, sollte
dies
etwas anders sein. Sie möchten also wunderschöne
Seife direkt wie folgt importieren. Okay, Alt Enter und
gehe zur nächsten Zeile. Also um eine Webseite zu laden. Es ist gut, eine Variable zu erstellen, damit Sie den
Quellcode der Webseite in diese Variable laden können. Also gleich Anfragen Punkt
Holen Sie sich also die G-Methode. Sie zeigen also auf die Bibliothek
und dann auf die Get-Methode. Und alles, was Sie hier übergeben müssen ist die URL der Webseite
, die Sie laden möchten. Also in diesem Fall pythonhw.com. Beispiel Punkt-HTML. Also vergiss den HTML-Code nicht. Dies ist nur eine statische Webseite, also sollten Sie
die ICML dort übergeben Jetzt sollte dies
ein Anforderungsobjekt erstellen. Also sind wir immer noch nicht da. Und was Sie tun möchten,
ist den Inhalt dieses Anforderungsdatentyps abzurufen und ihn vielleicht
in einer anderen Variablen zu speichern. Also der Inhalt, der in
einer solchen C-Variablen gespeichert ist. Und wenn Sie jetzt überprüfen möchten,
was das sieht, werden Sie feststellen,
dass es sich um einen Byte-Datentyp handelt. Und du kannst
es ausdrucken, wenn du willst. Auch wenn
das nicht sehr gut aussieht, ist
das tatsächlich der
Quellcode, den Sie hier sehen. Wir haben also das Head-Tag und die HTML-Tags und
alles andere da. Und jetzt
kommt hier die schöne Suppe ins Spiel. Die Anfrage lädt
also nur den
Quellcode der Webseite, aber in einer sehr verschlüsselten
Form, wie Sie hier sehen Nun, wenn Sie das schön
machen und die Elemente und den Text
und
alles aus
diesem Quellcode
extrahieren möchten, sollten
Sie wunderschöne Seife verwenden Also alles, was Beautiful
Soup tut, ist
diesen Quellcode zu analysieren und dir das
zu geben, was du willst geben Ihnen also die Elemente des HTML-Textes, an denen Sie
interessiert sind Sie haben diesen Inhalt also bereits
geladen, und jetzt möchten Sie
vielleicht eine Variable erstellen
und sie Suppe nennen. Und das würde der schönen Suppe
entsprechen und raten Sie mal, was Sie hier weitergeben
möchten. Nun, das wäre der Inhalt. Und vielleicht noch ein Argument. Sie möchten also
den Parser angeben , den Sie zum Analysieren dieser
Daten verwenden möchten Das ist normalerweise
der HDML-Parser. Das ist es also, was Sie fast
immer verwenden möchten. Wenn Sie das nicht angeben, erhalten
Sie eine Warnung, aber die Dinge werden trotzdem funktionieren. Also gebe ich es normalerweise dort weiter. Und wenn Sie
das getan haben, dann führen Sie das L aus. Wenn Sie wissen, geben Sie dort Soup Prettify mit leeren
Klammern Sie werden den Quellcode
der Webseite in
übersichtlicher Form sehen der Webseite in
übersichtlicher Form Beautiful Soap ist also
darauf trainiert,
diese Tags tatsächlich zu erkennen und
sie dann
für das menschliche Auge visuell darzustellen . Dies dient jedoch nur
zur Veranschaulichung. Normalerweise müssen
Sie die
Pretty Phi-Methode nicht oft verwenden, denn eine bessere
Methode, um diesen Code zu sehen, besteht, wie ich bereits erwähnt habe,
darin, mich die Zelle löschen zu lassen. Das brauchen wir nicht.
Eine bessere Möglichkeit , diesen Quellcode zu sehen, besteht darin,
auf Ihre Webseite zu gehen und zu überprüfen. Hier sehen Sie eine
bessere Syntax des HTML-Codes Also hier wirst du das sehen. Wir haben hier drei Abteilungen. Mit einer Klasse für Städte. Wir haben hier noch ein paar
Abteilungen, aber das ist es, was uns
interessiert. Der Körper ist also alles. Und wenn Sie eine
dieser Abteilungen erweitern, werden
Sie feststellen, dass wir ein H-Two-Tag
haben, also ein Überschriften-Tag, und auch ein Absatz-Tag. Also P-Tag und H-Tag zwei. Und auch die andere Abteilung, die hier ist, hat
dieses H-Two-Tag und
das Absatz-Tag. Und Tokio hat auch
das Gleiche. Also ist es jetzt unsere Pflicht, die Namen
dieser Elemente zu ermitteln. Also das wären die H2, der Text der H-Zwei-Tags
in den Tags der Stadt. Also
fangen Sie natürlich an, darüber nachzudenken durch diese Felder
zu iterieren , die eigentlich Unterteilungen sind Sie möchten also hier, hier und hier
alles durchgehen und extrahieren,
was Sie extrahieren möchten Also gehen wir zurück zum Code, und was Sie tun möchten, ist eine Methode namens find A
auszuführen. Und was Sie
suchen, sind Divs Devs, aber es gibt vielleicht viele Divs auf
der Also
haben wir hier zum Beispiel zwei weitere Divs. Und wir wollen nicht, dass diese gefunden
werden. Wir
wollen nur diese drei. Aber diese drei haben, wie
Sie sehen, ein gemeinsames Klassenattribut
, das den Städten entspricht. Das wollen wir uns zunutze machen. Und wir geben hier ein Wörterbuch,
das besagt, dass Klasse
gleich Städten Okay, lassen Sie mich hier
eine Variable erstellen, alles
aufrufen und ausführen Wenn Sie jetzt
alles drucken, werden Sie sehen, dass die Abteilungen aus dem Quellcode
extrahiert wurden. Also aus der Suppe, das war
der gesamte Quellcode. Und ich möchte, dass du es
dir hier genauer ansiehst. Sie können hier sehen, dass
die erste Division durch Kommas getrennt
ist Und dann beginnt die zweite
Division. Also für Paris ist Paris die zweite und sie endet hier und
dann beginnt Tokio hier. Also haben wir eine Liste
mit drei Elementen, eines für jede Abteilung. Wenn Sie nun
nur das erste Element
mit diesem Klassenattribut,
self cities, suchen nur das erste Element
mit diesem Klassenattribut,
self cities, möchten, sollten Sie die Find-Methode verwenden. In diesem Fall erhalten
Sie also keine Liste, sondern
nur die Code-Division
für die erste Division , was zufällig ein Tag-Element von Beautiful Soup ist. Es ist also keine schlichte Saite, sondern eine besondere, sagen
wir mal, eine besonders
schöne Seifenschnur. Diese schöne Seife
kennt also ihre Struktur, sie weiß
also, welche Elemente oder wo sich die Tags befinden und wo sich der
Text befindet und so weiter. Damit diese schöne Suppe
Ihnen
die Informationen geben kann , nach denen
Sie suchen. Also nochmal, also extrahierst du
das erste Element. Eine alternative Methode zum Extrahieren des ersten
Elements besteht darin, das erste Element logisch zu extrahieren, sodass wir hier
alle Elemente haben, indem wir die Listenindizierung verwenden Also dieses Objekt, das
ich Ihnen gerade gezeigt habe, das technische Objekt von Beautiful
Soup, unterstützt Also führst du das aus. Und in diesem Fall, wie Sie sehen, extrahieren
Sie das erste
Element des Tag-Objekts, oder Sie könnten es so machen, also schnappen Sie sich alle. Also hier hast du sie alle, und Null ist die erste. Du verstehst die Idee. Okay,
aber was ist, wenn du nur die H-TO-Tags
aus dieser D-Klasse haben willst? Nun, in diesem Fall sollten
Sie auf das Objekt verweisen und dann
die Fine-Methode erneut anwenden. Und dieses Mal würden Sie
das H-2-Element haben wollen. Und in diesem Fall
haben Sie kein Klassenattribut, also müssen Sie es so
belassen. Und Sie erhalten eine Fehlermeldung, weil
ich hier
nicht auf diese Abteilung gezeigt habe, sondern auf
die Liste. Enthält all diese Abteilungen. Python versucht, die H-Zwei
zu ermitteln, aber diese Ergebnismengenmethode hat dieses H-Zwei-Element nicht. Sie möchten also auf das erste
Element der Liste
zeigen,
und das gibt Ihnen das H-2-Element
mit
dem Text und dem Text,
was einer Liste ähnelt, sodass Sie dort
eine Nullindizierung durchführen möchten Und wenn Sie nur London wollen, fügen Sie Text hinzu und
Sie erhalten London Also das ist es, was
wir wollten, oder? Um die Städte zu extrahieren. Also haben wir London extrahiert. Also, wie wäre es mit der Extrahierung von
Paris und Tokio? Nun, wie Sie sich vorstellen können, müssen
wir vier Schleifen verwenden Aber lassen Sie mich zunächst zusammenfassen,
was wir hier getan haben. Also haben wir den
Inhalt hier oben geladen, das ist dieser hier,
und dann haben wir
diesen Inhalt mit der Methode
Beautiful Soup geladen diesen Inhalt mit der Methode
Beautiful Soup Und eine schöne Suppe
macht diese Suppe so
schön, dass sie die Etiketten
erkennt. Und was wir
dann getan haben, ist, dass wir diesen Inhalt gefunden und daraus extrahiert
haben. Wir haben alle
Divisionselemente extrahiert. Also zusammen mit den Tags und den Attributen und
dem darin enthaltenen Text. Alles innerhalb
dieser Abteilungen mit einer Klasse entspricht Städten Dann können wir für jedes
dieser Elemente dieser Liste erneut
eine Find-All-Methode ausführen So können wir die Tags für die Untersteuer
dieser Division finden. Und in diesem Fall
haben wir das H-Tag gefunden. Und dann schnappen wir uns das
erste Element der Liste, was in diesem Fall zufällig eine Liste mit nur einem Element war. Also
muss jede dieser Abteilungen ein H besteuern. Oder
Sie könnten einfach
find hier verwenden und ohne diese Indizierung zu
verwenden Dies ist jedoch eine allgemeine Methode. Dann wenden wir
dort das Textattribut an, um den
Text aus diesem Element zu extrahieren. Also haben wir London. Also müssen wir dasselbe tun, aber in diesem Fall durch Iteration Also für, sagen wir, den Artikel in
O, den Sie ausdrucken möchten. Also Artikel hier ist dieser hier. Das wäre also der erste Artikel. Sie möchten also den Artikel ausdrucken,
den Sie gefunden haben. Und Sie möchten zum Beispiel die
beiden H-Tags von diesem ersten
Objekt finden . Also zwei H-Tags, und dann müssen Sie
diesen Null-Index da drin anwenden, und Sie wollen den Text
daraus holen, und das war's. Hier sind die Daten. Alternativ könnten Sie hier einfach P
übergeben und Sie
erhalten die Absätze. Also dieser ist hier, der Text. Das ist also die Idee Webseiten in
Python zu
laden und
sie mit wunderschöner Seife zu analysieren und Texte
aus der Webseite
zu extrahieren Es tut mir leid, wenn ich dieses Zeug ein bisschen wiederholt
habe, aber ich
möchte wirklich sichergehen, dass Sie die Kernkonzepte verstehen Auf der anderen Seite,
wenn du das
sehr einfach findest , würde ich sagen, lass uns zu den nächsten
Vorlesungen übergehen, wo wir einige Informationen
von einer fortgeschritteneren Website
extrahieren werden , und wir werden
Links und nicht nur Text extrahieren Das ist also ein
Programm aus der realen Welt und ein sehr
interessantes Also werde ich später mit dir reden.
199. 198. App 8: Web-Scrapping-App-Demo ++: Hallo, willkommen in
diesem neuen Bereich. Und wie hier in
der ersten Vorlesung üblich, werde
ich Ihnen nur
eine Demonstration
des Programms geben , das
Sie erstellen werden. Und so werden
Sie dieses Programm am
Ende dieses Abschnitts zur Hand haben. Und ja, während meiner
Arbeit als Freelancer habe
ich einen
Anstieg der Nachfrage nach Daten aus dem Internet
von verschiedenen Kunden festgestellt, und diese Daten können
für verschiedene Zwecke verwendet werden Zum Beispiel
benötigen Sie möglicherweise Immobiliendaten von Immobilien-Websites
wie dieser hier,
oder Sie benötigen möglicherweise Unternehmen,
also eine oder Sie benötigen möglicherweise Unternehmen, Liste von Unternehmen, und Sie möchten vielleicht in den
Gelben Seiten oder sogar in
Informationen aus Wikipedia danach
suchen Gelben Seiten oder sogar in
Informationen aus Wikipedia Das Problem ist, dass diese
Websites
Ihnen keine CSV-Datei mit
den Daten geben Ihnen keine CSV-Datei mit , nach denen Sie
suchen. Also machen sie das nicht. Und was Sie in diesem Fall
tun möchten, ist , Daten
von diesen Websites zu Und ja, möglicherweise benötigen Sie Daten
für verschiedene Zwecke. Und das können wir tun. Wir können Web-Scrapping machen. Der Prozess wird also
Webscrapping genannt. Das können wir mit Python machen. Python ist also perfekt dafür. Im Grunde genommen
erhalten Sie diese Daten und
speichern sie in einer Tabelle,
wie hier in einem
Pampas-Datenrahmen, und Sie können sie auch einfach in der
Ausgabe exportieren Ja, in diesem Abschnitt werden Sie
Web-Scrapping auf dieser
Immobilien-Website durchführen Web-Scrapping auf dieser
Immobilien-Website Mit Python werden Sie also eine Suchabfrage
an einem bestimmten Ort
durchführen. Python wird also nach Daten suchen und dann diese Daten abrufen und sie in
dieser Tabelle speichern und dann,
ich werde sagen, dann in einer
Out-Food-CSV-Datei. Also ist alles automatisch. Und vielleicht
möchten Sie verschiedene
Attribute von der Website abrufen . In unserem Fall haben wir also
diesen Satz von Attributen. Und ja, Sie können
diese Daten in einer einzigen
Programmrunde abrufen . Aber natürlich
müssen Sie zuerst dieses Programm erstellen, und genau das werden
wir in den nächsten Vorlesungen tun. Das ist also sehr nützlich. Und neben dem
Erlernen von Web-Scrapping werden
dadurch auch Ihre
Python-Fähigkeiten im Allgemeinen verbessert Und ja, lassen Sie uns damit beginnen und ich werde
in der nächsten Vorlesung mit Ihnen sprechen
200. 199. Die Webseite in Python laden: Da, ich freue mich, wenn
du dir das ansiehst Es ist toll, dass du
es im Kurs so weit geschafft hast. Und in dieser Vorlesung, in den
nächsten paar Vorlesungen, lernst
du, wie man
Daten von dieser Website Das ist also eine
Immobilien-Website, und was sie tut,
sie listet Immobilien auf, die
zum Verkauf oder zur Miete stehen Also
sagen wir im Grunde Rock Springs. Es gibt dort tatsächlich ein
paar Felsquellen, sagen wir
also Wyoming
Rock Springs in Wyoming Also suchen wir dort nach
einigen Immobilien. A in Wyoming und es heißt, es habe 28 Angebote gefunden Es ist also eine ziemlich kleine
Stadt, eine kleine Stadt. Die Idee ist also, dass
Sie lernen, wie
man Daten
von jeder dieser Eigenschaften dann
berechnet werden kann, ist, dass Sie dort
die Adresse und
die Anzahl der Wetten, Immobilie hat, sowie
die Anzahl der
Bäder und so weiter Und Sie erhalten auch die
Quadratfuß der Immobilien. Falls das verfügbar ist. Immobilien haben das
also nicht, also müssen wir auch
damit rechnen. Außerdem löschen Sie Daten
von mehreren Seiten. Wir haben also zehn Immobilien
hier auf dieser ersten Seite. Und dann haben wir auf der nächsten
Seite zehn weitere, und dann auf der drittletzten Seite haben
wir den Rest
, der acht sein sollte, also insgesamt 28. Nein, normalerweise gehe ich davon aus,
dass Sie über
die Anfragen und die
schönen Soap-Bibliotheken Bescheid wissen . Sie hätten also an den
vorherigen Vorlesungen teilnehmen sollen , in denen wir
Daten von einer einfachen Webseite gesammelt haben. Das war
also ein triviales Und ich glaube
, dass
Sie nach diesem Beispiel am Ende damit enden, Aus diesem Grund möchte
ich, dass Sie lernen
, echte Daten zu löschen Das ist also eines
der echten Programme , die wir
in diesem Kurs entwickeln Und in dem Skript, das
wir gerade schreiben werden, wirst
du dort mit einigen echten
Programmierproblemen konfrontiert werden, was sehr wichtig ist, um deine Fähigkeiten,
deine Python-Fähigkeiten,
auszubauen. Nur ein Problem. Bevor
Sie Daten von einer Website löschen, sollten Sie die
Datenrichtlinien dieser Website lesen Daher haben sie möglicherweise einige Richtlinien
gegen die Verwendung oder den
Abruf ihrer Daten Ich verwende das für
Bildungszwecke, also glaube ich, dass Sie dasselbe tun
werden. Das sollte also kein Problem sein. Also lass uns weitermachen und das Programm
schreiben. Und ich werde das
Jupiter-Notizbuch verwenden. Ich schlage vor, dass Sie dasselbe tun. Dadurch wird also eine
Jupiter-Notebook-Datei erstellt. Also verwende ich Python drei. Nennen wir das Century 21. Großartig. Sie wissen jetzt also, dass das
allererste , was Sie tun möchten,
wenn Sie ein Programm schreiben, vielleicht die Bibliotheken importieren
, die Sie verwenden werden. Sie werden also Anfragen
und wunderschöne Seife verwenden. Also von By Four Import. Großartig. Gehen Sie jetzt zur nächsten Zeile. Und gehen wir zurück
zur Website. Das Erste, worüber
Sie jetzt nachdenken sollten, ist, wie laden wir den
Quellcode der Webseiten? Und jetzt
ist das eigentlich ein bisschen kompliziert. Ich meine, nicht sehr kompliziert, aber es unterscheidet sich von der statischen Webseite, die wir in den
vorherigen Vorlesungen
gestrichen Also hier werden wir
,
wie gesagt, drei Seiten verschrotten, und das
Gute daran ist, dass jede dieser
Seiten eine eindeutige URL hat Wenn Sie also hier auf
der Hauptseite sind, sehen
Sie, dass die URL
einfach einfach ist Aber wenn Sie dann nach einem Ort suchen, also schauen Sie sich
jetzt die URL an, wenn ich suche, wird sich
die URL ändern. Also ging es an Immobilien in
Rock Springs und Wyoming. Also das ist die Zeichenfolge, also für den Ort
, den Sie suchen, Rock Springs und WY und Sie haben hier noch
etwas anderes , dessen Sie sich bewusst sein müssen Die Idee ist also, dass du
jetzt diese URL bekommst. Also zuerst werden wir nur
die erste Seite verschrotten. Und sobald wir das verstanden haben, denken wir über
die nächsten Seiten Weil die nächsten
Seiten identisch sind, ist die Struktur
also dieselbe, aber wir werden nur
eine Schleife schreiben , um
durch die nächsten Seiten zu iterieren Lassen Sie uns also weitermachen und die erste
Seite entladen. Nehmen wir an, request dot
get here ist die URL. Und wir wollen den Inhalt dieses
Anforderungsobjekts. Also dieser Inhalt. Und
lass es uns ausdrucken. Also ein einfacher Test dort. Mm hmm. Mm hmm In Ordnung, meine
Internetverbindung funktioniert also. Das ist alles, was wir
über diesen Code wissen , weil
wir ihn nicht lesen können. Wir wollen also zum nächsten Verkauf gehen und
den Code lesbarer machen
. Also müssen wir hier das
wunderschöne Suplibrar verwenden. C und der Parser, der HTML Parser ist . Und vielleicht Suppe ausdrucken. Sei hübsch fünf. Nun, lass uns sehen. Also das ist die Seite. Manchmal werden Sie möglicherweise von der Webseite
rausgeschmissen, also sollten Sie
sicherstellen , dass die Seite korrekt geladen
wurde. Also könnte ich vielleicht hierher gehen
und nach etwas suchen. Also Winchester, ich
suche nach Winchester. Ja, die Seite scheint also korrekt geladen
worden zu sein. Und das Schöne brauchen
wir da nicht. Also lass mich das
Notizbuch dort reinigen. So konnten wir die
Seite mit Anfragen korrekt laden. Und was kommt jetzt als Nächstes?
Nun, als Nächstes müssen wir die
Struktur der Webseite verstehen. Also müssen wir
das Inspect-Tool in unserem Browser verwenden, und das werden wir in der
nächsten Vorlesung tun. Also sieh mal.
201. 200. Div-Elemente extrahieren: Großartig. Gehen wir also auf unsere Seite. Also haben wir dort nach
Arbeitsfedern gesucht. Und was wir jetzt tun wollen
, ist die
Struktur der Webseite zu verstehen. Also verwenden wir dort das Inspect-Tool. Und die Logik ist, dass Sie sozusagen durch all
diese Boxen iterieren
möchten Also schnappen wir uns den HTML-Code
dieser Boxen und dann gehen wir in diese
HTMLs hinein Also iterieren wir
durch diese HTMLs. Und dann finden wir die Tags für die Daten, die
wir abrufen möchten Das bringt uns zu dem Punkt , dass wir nach
den Elementen suchen sollten , die diese Boxen
identifizieren. Wenn ich hier noch einmal nachsehe, werde
ich sehen, dass diese halbe Box dieses Div mit dieser ID
enthält. Und eigentlich will ich
eine obere Ebene,
also will ich, dass die gesamte Box da ist. Also, wenn ich jetzt hier hingehe, sieht
das so aus, als ob die
ganze Kiste hier ist. Also hier drinnen
sollten die Daten sein. Das ist das Bild.
Und das ist der Preis. Also, hier ist ein Text
für den Preis, und wir haben diesen Preis als Klasse für das H-Vier-Tag, das hier diese Zahl erzeugt Das ist also die
erste Div-Division. Und dann sollten wir das nächste Div
irgendwo dort
haben , hier. Also Eigenschaftszeile,
Eigenschaftszeile hier, Eigenschaftszeile, wieder
Eigenschaftszeile. Also die Klasse Property
Row und nochmal hier. Und lass mich das hier aufschreiben. Also docken wir es unten an ,
damit wir
die gesamte Kiste dort sehen können. Okay, so. Also los geht's. Was ich also später
verschrotten und
in einer CSV-Datei oder
Excel-Datei mit Pandas speichern möchte speichern später
verschrotten und
in einer CSV-Datei oder
Excel-Datei mit Pandas ist, dass ich den
Preis, die Adresse, die Anzahl
der Betten,
die Anzahl der Bäder,
die Fläche des Grundstücks
und auch die Grundstücksgröße erhalte Anzahl
der Betten,
die Anzahl der Bäder, , wenn es viel gibt Manche Immobilien sind dort also
nicht geladen. Also haben wir da einen Trick, und du wirst
lernen, wie man ihn knackt. Also das sind die
Daten, die ich von jeder Immobilie abrufen werde . Und lassen Sie mich das hier nochmal
aufstellen. Und du kannst entweder hier
klicken und es dir ansehen, damit es direkt
zu den Elementen geht, also zum Preis, oder manuell gehen, was wahrscheinlich besser ist, weil es dir hilft, die Website,
die Struktur der Webseite
besser zu verstehen . Das ist also ein Preis,
und dann hier unten, hier drinnen, sollten die Adresselemente stehen, die
wichtigsten Informationen. Das sind die Wetten. Wenn wir das also erweitern, werden
Sie sehen, dass hier
der Text für die Adresse ist. Es hat also eine Spanne von
mit diesem Klassennamen. Und das hier ist
der Name der Stadt und der Code für den Bundesstaat und auch die
Postleitzahl. Großartig. Aber zuerst muss
ich, wie gesagt, diese
Eigenschaftszeilenklasse des Div durchgehen. Also lass uns das hier machen. Und Sie wissen, dass Sie
eine Methode namens final haben, die für
das Soup-Objekt gilt. Also fertig, und das
generiert eine Liste mit
allen Dif-Elementen , die eine Klasse von
was Property row haben Ja, es ist Property Row. Grundstückszeile mit
Großbuchstaben R, das ist alles. Also werde ich das eingeben und ausführen. Also, was kannst du tun? Also, drucken Sie es alle aus und sehen Sie
vielleicht, was Sie bekommen. Also fängt es ganz am Anfang
der allerersten Einteilung in die
Grundstückszeile an. Das wäre also
der erste Preis, das war dieser
hier oben, hier. Dann sollte
hier nach dem Ende der ersten
Division ein Komma hier nach dem Ende der ersten
Division Aber wie dem auch sei, wenn du sie nicht manuell
finden willst , kannst
du etwas tun Sie können die Länge
dieses Gesamtobjekts ermitteln, das wie eine Liste
ist, es ist nicht gerade eine Liste. Eigentlich ist es
ein Ergebnismengenelement der B 4 der
Beautiful Soup Library, aber es hat
genau wie Liste zwei eine Längenfunktion. Also Länge, und du bekommst zehn. Und wir haben genau zehn
Ergebnisse für jede Seite. Also erste Seite hier, zweite
Seite zehn Ergebnisse und so weiter. Nun, das ist wie eine Liste, es gibt
also keine gute
Methode, aber es sind Elemente. Nehmen wir an, das erste Element, dieses Element hat eine endgültige Methode. Also, genau wie Sie es
mit der schönen Suppe tun, also wenden Sie die
Methode an, eine letzte Methode, eine schöne Suppe, um Tag-Elemente zu
finden, Sie können dasselbe für die
Elemente der A-Liste tun. Nennen wir
die Ergebnismenge sozusagen eine Liste. Und das bedeutet, dass Sie
eine gute Methode auf
diesen Quellcode anwenden können . Schauen wir uns also den Preis an. Nun, Sie können
zur Inspektion gehen oder einfach hier
nachschauen, wenn das ist, das ist nicht viel Code. Also ich habe den Preis hier gefunden. Also haben wir die H
vier Tags, H vier. Und es hat auch einen
Immobilienpreis und eine Preisklasse. Also lass uns das weitergeben. Sie können sich
dafür entscheiden, das nicht zu bestehen. Das Problem, auf das Sie
stoßen können, wenn Sie
den Klassennamen nicht übergeben , ist, dass
Python
diese auch extrahiert, wenn Sie
andere H-Four-Tags im Code haben , wenn Sie
andere H-Four-Tags im Code . Sie müssen also angeben
, welches H Four Sie möchten. Also geben Sie den Preis an, finden Sie, und hier ist der Preis Das ist also ein Preis, aber auch
mit den Etiketten. Und das ist eigentlich
eine Liste, wie Sie sehen. Da wir nur
einen Preis für jede Immobilie haben, dürfen
wir
in diesem Fall die Find-Methode verwenden. Das würde
uns also
zumindest keine Ergebnisse liefern , sondern das eigentliche
technische Element. Das heißt, wir können hier jetzt ein Textobjekt
anwenden und erhalten dort diese
flippige Zeichenfolge Im wirklichen Leben sind die Dinge also nicht so
einfach, wie Sie sehen, aber zum Glück ist dieses
ganze Objekt
tatsächlich eine Zeichenfolge Es ist also eine einfache Python-Zeichenfolge. Das heißt, Sie können
String-Methoden auf dieses Objekt anwenden. Lassen Sie mich das kontrollieren,
um den Typ zu entfernen. In diesem Fall
wollen
wir also wollen
wir all diese Zeichen
entfernen. Und eine Möglichkeit, das zu tun, über die
ich nachdenke, ist das Ersetzen. Sie möchten also den
Backslash N durch nichts ersetzen. Übergeben Sie
dort einfach eine leere Zeichenfolge und sehen Sie, was Sie bekommen. Okay, diese Leute von dieser Century 21-Website haben beschlossen,
uns das Leben schwer zu machen. Aber wie wäre es mit einer Bewerbung? Wie Sie sehen, haben wir dort etwas
Leerraum, also ersetzen wir den
Leerraum durch nichts und wir erhalten die tatsächliche Zeichenfolge. Großartig. Wir wissen also irgendwie, dass die Dinge derzeit gut
funktionieren. Und vorerst
drucke ich nur die Ergebnisse aus. Wie ich bereits erwähnt habe, ist
es sinnvoll, zuerst
Print-Anweisungen zu verwenden , wenn Sie Ihre Programme
erstellen, und dann diese
Print-Anweisungen durch
andere Funktionen zu ersetzen , die
Sie für
die Daten verwenden möchten , die Sie abrufen, oder andere Objekte, mit denen
Sie arbeiten. In unserem Beispiel
hier werden
wir später einige
Pandas-Methoden hinzufügen, um diese Werte abzurufen und
sie in eine CSE-Datei zu senden Das ist also eines der ersten
Dinge, die ich sagen möchte. Die zweite Sache ist, dass wir hier jetzt den Wert
des ersten Elements abrufen. Und jetzt fangen wir an,
darüber nachzudenken, effizient zu sein. Also müssen wir das tun,
anstatt
alle anderen Elemente wie die Immobilienadresse und
den
Immobilienstatus usw. zu extrahieren alle anderen Elemente wie die Immobilienadresse und
den
Immobilienstatus usw. zu Vielleicht ist es gut, tatsächlich
mit dem Aufbau unserer For-Schleife zu beginnen. Wir wissen jetzt also, dass
einzelne Werte korrekt extrahiert
werden. Aber jetzt wollen wir
sicherstellen, dass eine Schleife, die all diese
Eigenschaften durchläuft, auch funktioniert Und fangen wir an die Schleife in
der anderen Vorlesung zu
schreiben Aber lassen Sie uns diesen Code vorerst tatsächlich
organisieren. Also hier ist ein Trick, den Sie in Jupiter anwenden
können. Also gehe ich zur ersten Zelle
und bin im Befehlsmodus. Sie drücken also Escape, um in
den Befehlsmodus zu gelangen ,
und Shift und J, Sie wählen die andere Zelle aus. J, wählen Sie erneut die andere Zelle aus, oder Sie können mit K nach oben gehen, also J, J, J. Und was ich jetzt
tun möchte, ist all diese Zellen
in einer einzigen Zelle
zusammenzuführen. Und um das mit
Shift-Taste zu
tun, drücken Sie Shift M, und Sie bekommen alle Zellen zu einer
einzigen Zelle zusammengefügt. Das ist also eher eine
Frage der Präferenz, aber es ist gut, ein
sauberes Notizbuch dabei zu haben. Das ist also, was wir bisher gemacht haben. Lassen Sie uns weitermachen und die Schleife in einer anderen Vorlesung durchgehen. Wir sehen uns.
202. 201. Die Adressen der Eigenschaften abkratzen: Wir haben also die gesamte
Suppe von der Webseite, was eigentlich
der Quellcode ist Und wir haben auch den Quellcode der Divisionen mit der
Klasseneigenschaftszeile. Und jetzt konnten wir
den Immobilienpreis nur für die erste Division ermitteln. Also nur für die erste Box hier, um alle Boxen zu bekommen, müssen
wir iterieren Also DD, das zu löschen. Und vier,
sagen wir, Artikel aus Legierung. Und eigentlich
möchte ich das alles hier
ausdrucken lassen , damit Sie sehen
können, was alles ist. Wenn Sie
das also für einen Moment vergessen, können
Sie sehen, was es ist. Es ist also wie eine Liste. Also alles zum Artikel hier. Also werden wir hier die
Druckmethode verwenden. Aber ich würde es gerne am Ende
schreiben , weil ich dort jetzt keine Klammern
hinzufügen möchte. Es ist also gut, vorerst weniger
Klammern zu haben, damit Sie diesen klareren
Code
sehen können, den eigentlichen Code. Wir gehen also
das erste Element durch, das ist diese Unterteilung hier, und wir wollen
die Find-Methode auf
dieses Element anwenden oder nur
die Find-Methode weil wir hier nur
ein H Vier haben. Finden wir also, und wir
wollen die H4 finden, die eine bestimmte Preisklasse hat Und was wir dann von
diesem Produkt
erwarten , ist der Text Und Sie haben gesehen, dass der Text dort etwas chaotisch
war, also wollen wir die
umgekehrten Schrägstriche durch nichts ersetzen und dann dort noch einen Da war also Platz und wir haben ihn durch nichts ersetzt Also ist es dieselbe Zeile wie hier. Und dann
willst du das ausdrucken. Fügen Sie dort also eine gedruckte Erklärung hinzu. Und ja, das ist es.
Mal sehen, wie das läuft. Hmm. Das ging schnell Also 725, 452. Lecker. Das ist gut Ordnung. Lassen Sie mich
das löschen, um Platz zu sparen Also haben wir hier alle
schon definiert. Also müssen wir es hier nicht hinzufügen. Und lassen Sie uns jetzt gehen und dieses Zero-Gateway
extrahieren.
Das sieht nicht gerade nach einem guten Beispiel aus. Ignorieren wir das also und
extrahieren wir diese Adresse hier. Also Winchester Boulevard, und das wäre
Inspection Mm hmm Also das hat ein Span-Tag mit einer Klasse von Prop Aber Sie können sehen
, dass es hier noch eine weitere Klasse gibt, nämlich den Zusammenbruch von
Requisit-Adressen Also zwei Klassen, das
ist die Adresse und das ist der
Name der Stadt Und schau, ob du noch andere
Requisiten hast, die Adresse kollabiert nicht. Nein, tun wir nicht. Also prop
Adresse kollabieren Lassen Sie uns hier eine weitere
Aussage hinzufügen. Gegenstand. Diese Adressen sind also wieder
in dieser Methode enthalten. Also Artikel finden. Wenn Sie dieses
Mal Fine statt Fine Ole verwenden, wird
das Script beim ersten Auftreten von
Prop Address Collapse abgreifen beim ersten Auftreten von
Prop Address Collapse abgreifen Es gibt Ihnen also die Adresse des
Winchester Boulevards und ignoriert
die zweite Also wird es Rock Springs ignorieren. Also das bedeutet, dass wir Fine O verwenden
müssen. Und wenn
Sie diese erste Zeile haben wollen, würden
Sie
den Null-Index an
diese Ergebnismengenliste übergeben diese Ergebnismengenliste dann einen Index von eins
für die nächste Zeile. Also werden wir das tun. Das war ein Span-Tag mit der Klasse Prop
Address Collapse Lassen Sie mich das ausdrucken, um zu
sehen, was wir bis jetzt haben. Also, hier ist
der Preis für die erste Immobilie, und dann holen wir uns hier die
Ergebnisliste, die eigentlich aus zwei Elementen besteht. Also die Adresse hier und dann der Name
der Stadt mit einer
Landesvorwahl hier und der Postleitzahl. Also das heißt, wir müssen hier einen Null-Index
anwenden, wenn du
den ersten haben willst, okay? Und dann, ähm, lass uns sehen. Also hier ist das
erste, das erste Element. Wenn du das zweite willst,
willst du es hier in die Phasen kopieren und eins
hier weitergeben Führen Sie aus. Und los geht's. Ah, ich schätze, du willst den Text, also willst du
die Textmethode dort anwenden. Hm. Großartig. Und nur der
besseren Übersicht halber fügen
wir am Ende der Schleife eine weitere
Zeile hinzu, um
eine leere Zeichenfolge zu übergeben. Jetzt können Sie die
Blöcke klarer sehen, und wir haben dort zehn Blöcke. Ziemlich genial, nicht wahr? Gehen wir jetzt los und ermitteln
die Anzahl der Betten und
die Anzahl der Bäder. Das ist also ein Span-Tag
mit einem Klasseninformationsbett. Und Bäder. Und hier ist das andere Spinnglas. Falls Wert, Vollbad. Also, hier haben wir ein Problem. Nein, wir müssen hier vorsichtig sein weil wir
die Anzahl der Bäder hier ermitteln müssen, die in den B-Tags steht. Aber die Anzahl der Bäder
ist auch in den B-Tags enthalten. Sie können also weitermachen und
eine gute Methode direkt
in diesem Level anwenden . Also direkt unter O. Aber das würde wahrscheinlich
einige Probleme bereiten , weil Sie dort mehrere Bs
haben. Und so hast du auch den Bereich
, der auch ein
bisschen markiert sein sollte. Spannen Sie den Unterricht. Ja,
es ist ein bisschen auffällig. Also manchmal hat man drei B-Tags, manchmal hat
man mehr. Es kann also zwei
Lösungen geben. Sie können entweder davon ausgehen
, dass Wetten immer
die ersten sind , und Sie können einen Index von Null
an die Ergebnisliste
übergeben. Sie bekommen also Betten
und dann bekommen Sie Vollbäder mit einem Index von eins und zwei für diesen Quadratfuß hier
und drei für diesen. Aber ich würde es vorziehen, es
konstruktiver zu machen. Also würde ich gerne zuerst
diese Ausgaben-Tags extrahieren, dann gehe ich in jedes der Spend-Tags und extrahiere
den Wert innerhalb des B-Tags. Also haben wir Zeit für ein Infobett und für ein Vollbad, und
das ist dieses hier. Ja, das ist sogar als dritter
aufgeführt. Also die Betten sind die
ersten und Quadratfuß, die Fläche ist die zweite und
dann die vollen Betten und so weiter. Wir müssen also nicht
über die Reihenfolge nachdenken. Wir müssen uns nur
die Klassennamen schnappen. Also Info, das
bedeutet, dass du auf den
Artikel zugreifen willst, okay, in diesem Fall. Also, du willst die Spanne herausfinden, und lass uns zuerst die Betten machen, was das Informationsbett war. Also lass es uns zuerst ausdrucken
, um zu sehen, ob du startklar bist. Und so bekommst du keine für
die erste Immobilie. Es gibt also keine
Daten für Betten und Bäder, also können Sie
nichts dagegen tun. Manchmal müssen Sie einfach
keine Daten akzeptieren. Und dann ist hier der Code, also der Quellcode für den
nächsten. Nun, hier ist ein Trick. Wenn Sie die
Textmethode auf dieses Objekt anwenden, also sollte es hier sein, dieser Text, erhalten Sie eine Fehlermeldung. Und schau genau hin
, was der Fehler sagt. Es heißt also, dass ein Objekt ohne Typ keinen Attributtext
hat. Dieses Objekt ohne Typ
war hier, also keines, was
ein spezielles Objekt ist und für das keine
Textmethode verfügbar ist. Also musst du damit
rechnen. Und die Art und Weise, wie Sie
diese Ausnahmen zählen , besteht darin,
eine Try-and-Accept-Anweisung zu verwenden. Sie müssen also diese gedruckte
Aussage hier mit try
beifügen Also versuche das, wenn es funktioniert. Wenn es dieses
andere Zeug hier nicht macht. Also was ist Pass. Also ignoriere diese
Nichttypen dort einfach. Versuchen Sie also noch einmal,
die Textmethode tatsächlich aus diesem Span-Text herauszuholen. Und wenn das nicht verfügbar ist, fahren
Sie einfach mit der nächsten
Iteration der Schleife fort Also lass uns das versuchen. Und
ja, jetzt funktioniert es. Nun, wie Sie sehen können, haben wir
den Text für das B-Tag, aber auch den Text
des Span-Tags. Das ist also der
Text des B-Tags, und das ist der Text
des Span-Tags. Also, wenn das in Ordnung für dich ist, kannst
du es so lassen. Aber ich hätte gerne nur
die einfache Nummer. Und um das zu tun, müssen Sie
vielleicht die Suchmethoden anwenden. Wir haben also wieder diesen Quellcode, also müssen wir ihn
in diesem Quellcode finden. Wir müssen das Bt-Tag finden, das keinen Klassennamen hat, also lassen wir es so und wir müssen den
Text aus diesem Bit-Tag extrahieren. Und das gibt dir nur
die Nummer. Also vier, vier, fünf und so weiter. Also das ist gut.
Lassen Sie uns jetzt dasselbe tun. Also kopiere ich den gesamten
Block und wir machen dasselbe für
die Anzahl der Bäder. Lassen Sie uns hier Platz machen. Und für die Anzahl
war das so die Größe der Fläche. Und diese andere Sache hier. Also halbe Bäder. Also rechnen wir auch damit. Also Info Quadratfuß, Info Quadratfuß da. Wir gehen so hierher. Dann haben wir Info
Value Vollbad. Und noch eins für die Halbbäder. Das wäre also Info
Value Halb Bath. Ausführen. Wir haben da ein Problem
mit Einkerbungen Also Troy, dieser ist gut. Dieser ist auch hier nicht
gut. Sie müssen also
die Aussagen nach Troy
und dem Autor der Aussage einrücken die Aussagen nach Troy und dem Autor der Aussage Also führe es aus und lass uns sehen. Gut. Also vier Betten und dann
vier Bäder dort. Aber dann haben wir hier die
Gegend oder das Grundstück. Also die Reihenfolge ist so nicht
sehr gut. In dem Fall
wollen wir hier keinen Pass schreiben, aber vielleicht wollen wir keinen drucken. In diesen Fällen also drucken, nichts, drucken, nichts. Hier gilt das Gleiche. Hinrichten. Und jetzt sieht es besser aus. Jetzt wissen wir also, in
welcher Reihenfolge wir wissen, dass wir in dieser Immobilie vier Betten
haben und die Größe der Fläche nicht verfügbar
ist, und dann haben wir vier Bäder. Und dann haben wir
keine Informationen über
die Halbbäder dort. Also das sieht gut aus. Und ich möchte hier
aufhören und in der nächsten
Vorlesung weitere Daten sammeln.
Ja, lass uns weitermachen.
203. 202. Spezielle Elemente kratzen: Da sind wir wieder. Und
wir haben dieses Skript, das diese Ausgabe erzeugt. Wir haben also einige Attribute
für jede dieser Eigenschaften. Insbesondere sind die Attribute
dieses Blocks hier. Also Preis, Adresse und einige Attribute wie die
Anzahl der Wetten und so weiter. Jetzt möchte ich noch weiter gehen und die Grundstücksgröße für
jede Immobilie
extrahieren , wann immer dieses
Attribut verfügbar ist. Wie Sie hier sehen, haben
einige Immobilien keine große Grundstücksgröße. Und obwohl die Grundstücksgröße
ein wichtiges Merkmal ist , das
man von einer Immobilie kennen lernen muss, ist es
in diesem Fall auch ziemlich schwierig, es aus dieser Webseite zu
extrahieren. Und der Grund dafür ist, dass
Sie, wenn Sie sich den Quellcode ansehen, feststellen werden, dass dies der
Name der Attribute ist, also die Losgröße, und
das ist der tatsächliche Wert, den
wir extrahieren wollen. Und beide gehören zu
dieser Abteilung. Also die erste Zeile
dort. Diese Abteilung hat den Klassennamen
Spaltengruppe. Jetzt haben wir eine weitere
Spaltengruppenklasse, also eine weitere Division mit der Spaltengruppenklasse
hier in der zweiten Zeile. Wenn Sie sich dann
eine andere Eigenschaft ansehen, also eine weitere Eigenschaftszeile. Sie werden sehen, dass sich diese Aufteilung
in
Spaltengruppen hier wiederholt. Wenn Sie also eine
Schleife schreiben, um
die Span with Feature Name
Class
für alle Eigenschaften
zu extrahieren die Span with Feature Name
Class
für alle Eigenschaften , könnten Sie für diese Eigenschaft die tatsächliche Grundstücksgröße ermitteln. Aber für diese andere Methode würden
Sie wahrscheinlich das
Alter der Immobilie ermitteln, aber Sie würden
die Grundstücksgröße erwarten. Sie würden das Alter der Immobilie ermitteln, weil das Alter der Immobilie dort
der erste
Merkmalsname ist. Und die Grundstücksgröße ist auch
der erste Merkmalsname. Also mit der Feature-Ename-Klasse
in der zweiten Eigenschaft. Dies ist also einer der Fälle , in denen Sie
über alternative Lösungen nachdenken müssen. Wenn Sie also auf die Methode der
Spaltengruppe zeigen, also sagen Sie, finden Sie alles in der Division
mit der Klasse Spaltengruppe, und darin den
Feature-Namen mit dem Index Null suchen, erhalten
Sie die ersten Zeilen. Das weißt du. Lassen Sie uns jetzt eine Lösung
finden. Nun, wie wäre es,
all diese Spaltengruppen durchzugehen? Und dann überprüfen wir
, ob der Text der Feature-Gruppe
der Losgröße
entspricht, geben mir
dann den Text
im Feature-Namen also in dieser speziellen
Iteration Wenn also in dieser speziellen
Iteration die Feature-Gruppe der
Grundstücksgröße entspricht oder sie eine Zeichenfolge für die
Losgröße im Text enthält, geben
Sie mir in dieser aktuellen Iteration den Textwert
des Feature-Namens Also brauchen wir hier eine Schleife. In unserer großen Schleife. Also diese große Schleife hier, nennen
wir sie die
große Schleife,
durchläuft jede dieser Zeilen. Dann innerhalb
der aktuellen Iteration
dieser großen Schleife Nehmen wir an, die
aktuelle Iteration
würde diese Eigenschaft durchlaufen Darin gehen wir also zu
den Unterteilungen der Spaltengruppen über. Nehmen wir an, vier, nennen wir diese variable Spaltengruppe in der aktuellen
Variablen Element. Also nochmal, Artikel, wie wir es dort gemacht haben. Ich finde eigentlich alles. Sie möchten also
Abteilungen mit
einem Klassennamen in der Spalte Gruppe finden . Gruppe. Und lassen Sie mich schnell die Spaltengruppenvariable
ausdrucken. Also nur um zu sehen, was
wir bisher haben. Und los geht's. Also das sind die Daten, die wir haben, und dann geht es los. Lass mich hier rauf gehen. Hier ist der Quellcode für jede der Abteilungen der
Spaltengruppen. Also die erste Division, die
zweite Division und so weiter. Das sind also Funktionen , die
diesem Header hier entsprechen. Und dann haben wir einen
Architekturstil
, den wir nicht brauchen. Wir haben den Dachtyp, also druckt
Python
bei jeder Iteration diese Zeilen
aus Nun, was wir mit diesen Zeilen
machen wollen, lassen wir den Ausdruck
dort für eine Weile stehen Was wir
mit diesen Zeilen machen wollen ist, sie noch einmal durchzugehen Wir werden also
durch dieses Div iterieren und wir werden durch
dieses andere Div iterieren und wir werden
sehen, dass wir den Text des Feature-Namens für
diese aktuelle Iteration erhalten,
wenn der Text
oder die Feature-Gruppe in dieser aktuellen Iteration die
Zeichenketten-Lotgröße
hat in dieser aktuellen Iteration die Zeichenketten-Lotgröße Also nochmal, wir brauchen
hier vier Schleifen. Welches wird jede
dieser Abteilungen für Spaltengruppen durchlaufen . Es wird also auch auf das Feature-Group-Element
und das
Feature-Namen-Element zugreifen . also den Feature-Namen
der
Feature-Gruppe ein und wir müssen dort
eine ZIP-Funktion verwenden. Wie Sie sich vielleicht erinnern, wird eine ZIP-Funktion
, bei der
es sich um eine integrierte
Python-Funktion handelt
, verwendet , um durch zwei
Listen gleichzeitig zu iterieren Hier geben Sie also
die Tolist in
die Zip-Funktion Und unsere beiden Listen wären
die erste, wäre eine Spaltengruppe, die alle Bereiche
findet,
also eine Spanne mit einem
Klassennamen oder einer Feature-Gruppe In ähnlicher Weise müssen wir auf
die Spaltengruppe zugreifen , in der Poll gefunden wurde, und wir benötigen erneut das span-Tag Aber dieses Mal benötigen wir eine
Klasse von Feature-Namen. Verwechseln Sie diese Variablen also nicht
mit diesen Klassennamen. Und hier schließt
die Zip-Funktion. Also diese Klammer hier. Also
nach den vier Statements brauchst
du die Spalte hier. Okay. Nun, was
möchten Sie für jede Feature-Gruppe tun? Nun, lassen Sie uns zum Beispiel vorübergehend den
Text der Feature-Gruppe
ausdrucken . Und auch den Punkttext
des Feature-Namens. Und lass mich das löschen. Diese Spaltengruppe hier
entspricht also all
diesen Unterteilungsblöcken. Also führe das aus. Wir haben hier
eine ungültige Syntax
und suchen nach dem Pfeil. Ja, hier ist ein kleiner Pfeil. Also dieser hier weist
uns auf diesen Charakter hin
, der eigentlich eine halbe Spalte ist. Aus irgendeinem Grund habe ich dort
eine Semikolon eingefügt,
also sollte es eine
Spalte sein, kein Okay, lassen Sie mich das noch einmal ausführen. Also hier ist, was wir bekommen. Für die erste Eigenschaft haben wir zum Beispiel die vorherigen Attribute
ausgedruckt. Also nein, nein, nein, für
diese erste. Und dann haben wir hier
den Feature-Gruppentext und hier ist der
Feature-Namenstext. Und in ähnlicher Weise haben wir hier den
Feature-Gruppentext für die nächste
Feature-Gruppe und den Feature-Namen. Und dann haben wir dort die
nächste Eigenschaft, die dort tatsächlich ziemlich
viele Attribute hat. Heizgas. Und hier ist etwas, das
Sie jetzt wissen sollten. Sie sollten sich dessen bewusst sein. Lassen Sie mich noch einmal die
Century 21-Website öffnen. Rock Springs. Wie Sie sehen können, hat
die zweite Eigenschaft nicht so
viele Attribute. Es hat also alte Geräte
und Keller, aber keine schlechten Eigenschaften
und Kühlung usw. Diese zusätzlichen Attribute sind also irgendwie im
Quellcode dieser Webseite versteckt, und Sie können auf
sie zugreifen, wenn Sie gehen Also, wenn Sie auf den Link
der Webseite der
jeweiligen Immobilie klicken . Also hier sind alle Attribute
, die wir hier sehen. Also zählen Kamine
zwei Kamine. Hier ist die Anzahl der Kamine. Und Sie können auch sehen, dass
die Grundstücksgröße auf
der
Immobilienwebseite aufgeführt ist . Also hier ist es. Was eigentlich eine gute Sache ist. Wir sind also in der Lage, alle Attribute
einer Immobilie zu
extrahieren , ohne Immobilien-Webseite, den Eigenschaftslink, aufrufen zu müssen. Das ist also eine gute Sache. Und was wir jetzt tun müssen, ist, die gedruckte
Abrechnung für eine Weile dort zu
lassen, und wir müssen das überprüfen. Also hier unter der Vierer-Schleife, wenn die Losgröße in der
Merkmalsgruppe dieser Text ist. Befindet sich zum Beispiel die Zeichenfolge mit
der Losgröße innerhalb dieser Merkmalsgruppe? Wenn ja, dann gib mir das
Feature mit dem Namen Text. Also wird es mir
den Wert hier geben. Wenn nicht, dann
tu einfach nichts. Also lassen wir den Loop so wie er ist. Lassen Sie mich jetzt
diese Funktion löschen, die Druckfunktion,
die wir
zuvor ausgeführt haben, und diese ausführen. Also los geht's. Wir haben hier nichts. Das sind frühere Attribute. Und dann haben wir hier vier
Attribute und dann haben wir 0,221 Hektar Hier haben wir einen halben Hektar. Okay, das sieht jetzt gut aus, und ich
möchte jetzt die nächste
Vorlesung durchgehen, in der Sie lernen wie Sie diese
Druckanweisungen loswerden und all diese Attribute
tatsächlich in einer Tabelle speichern können,
also in Pandas Datenrahmen, dann exportieren wir den
Datenrahmen einfach in eine CSV-Datei oder
Excel-Datei, was auch immer Sie Wir werden
dort also
eine Preisspalte und eine Adressspalte, eine Bundesstaatenspalte mit einer Postleitzahl und auch Spalten mit diesen Attributen der
Losgröße haben. Also lass uns weitermachen.
204. 203. Extrahierte Daten in CSV-Dateien speichern: Lassen Sie uns nun darüber nachdenken, wie
wir all diese Werte hinzufügen können. Also diese Werte in einem
Datenrahmen, Pandas-Datenrahmen. Also dachte ich darüber nach, etwa eine,
zwei, drei, vier, fünf, sechs,
sieben plus acht
Spalten in dem Datenrahmen zu
haben ,
zwei, drei, vier, fünf, sechs, sieben plus acht
Spalten in dem Datenrahmen Und dann hätten Sie für jede
Zeile, zum
Beispiel für den Preis, 725.000 für diese und dann die nächste
für 152.000,
und so weiter, bis alle
Eigenschaften Ich hoffe also, dass die Struktur
klar ist und wie man das jetzt macht. Nun, eine Lösung wäre vielleicht
durch den Datenrahmen
zu iterieren, aber das ist eine kostspielige Lösung Das nimmt viel
Zeit in Anspruch, daher
kann der Prozess langsam werden, wenn
Sie durch
Datenrahmen iterieren , da Datenrahmen nicht dafür ausgelegt
sind, sie zu
durchlaufen Es ist also wahrscheinlich besser , einen
Datenrahmen aus dem
Python-Wörterbuch oder vielleicht aus einer Liste
von Wörterbüchern zu erstellen Python-Wörterbuch oder vielleicht aus einer Liste
von Wörterbüchern zu Und
genau das werde ich tun. Bei jeder Iteration füge
ich diese Werte einem Wörterbuch
hinzu Also fange ich zum Beispiel
mit dem ersten Wörterbuch an. In der ersten Iteration
habe ich also einen
Preisschlüssel und den Wert des Preises als erstes
Paar des Wörterbuchs, und dann
wäre das nächste Paar desselben
Wörterbuchs der Adressschlüssel und
der Adresswert Und dann gehen wir zum nächsten Paar über. Also fügen wir hier das dritte Paar und dann ein viertes Paar als fünftes, sechstes und siebtes und achtes. Kombinieren Sie also in
der
ersten Iteration ein Wörterbuch mit acht Paaren Dann muss
ich in der nächsten Iteration ein weiteres
Wörterbuch mit denselben Schlüsseln erstellen Wörterbuch mit denselben Wir hätten also wieder den Preis
und den Wert für diesen Preis, der dem
Wert einer zweiten Immobilie entsprechen würde Also baue ich ein
zweites Wörterbuch und dann ein drittes Wörterbuch
und so weiter, bis alle zehn
Eigenschaften hier verbraucht sind. Also werde ich am Ende
zehn Wörterbücher haben. Jetzt müssen Sie
diese Wörterbücher auch irgendwo speichern,
denn wenn Sie einfach Wörterbücher durchlesen
und sie
bei jeder Iteration verlieren, dann haben Sie nichts getan. Also werden wir diese Wörterbücher in einer Liste speichern
. Das Erste, was
Sie vielleicht tun möchten, ist, dass Sie
jede Iteration mit
einem leeren Wörterbuch beginnen möchten ,
damit Sie die Schlüssel-Wert-Paare zu
diesem
Ausdruckswörterbuch hinzufügen können Schlüssel-Wert-Paare zu
diesem
Ausdruckswörterbuch Sobald Sie also
ein leeres Wörterbuch erstellt haben, können Sie
diese gedruckten Anweisungen ersetzen Sie würden also sagen der
Preis als Schlüssel das erste Wörterbuch verwenden,
und das wäre gleich. Wenn wir die Klammern nicht brauchen, diese auch. Also das ist es. Ebenso können Sie dies als Adresse
tun. Entferne das hier wieder. Nennen wir diesen Ort. Wir erstellen
Schlüssel also spontan,
also Preis, Adresse und Lokalität, und wir weisen
diesen Schlüsseln wieder spontan Werte zu diesen Schlüsseln wieder Vielleicht wäre es also sinnvoll, den Preis hier unten
zu haben. Also beginnen wir mit Adresse, Ort und dann dem Preis Das wären die Betten. Und wenn es keine Betten gibt, dann musst du auch
keine für die Betten weitergeben. Und dann wäre
das wiederum die Fläche, die wieder diesen entspricht. Das Gleiche gilt für die Fläche,
nein, wenn es keine Fläche gibt und hier noch
eine. Vollbäder. Lass mich das kopieren. Keiner. Und es
wären heiße Bäder. Entspricht keinem. Wir haben
hier ein Printsegment, das wir nicht benötigen. Hier gehen wir also den Namen
jedes Gruppenmerkmals durch , wenn Losgröße im Merkmalsgruppentext steht, dann nennen wir
das Losgröße. Entspricht dem Text des Feature-Namens. Und lassen Sie uns diese
Print-Anweisung entfernen. Und so haben
Sie am Ende dieser Schleife Ihr
erstes Wörterbuch. Am Ende der
ersten Iteration haben
Sie also Ihr
erstes Wörterbuch Jetzt möchten Sie dieses
Wörterbuch irgendwo speichern. Also lass es uns in einer Liste speichern. Normalerweise müssen Sie also eine Liste außerhalb
der Schleife
erstellen , dort eine
leere Liste. Und dann wollen
Sie am Ende der Schleife
, genau hier, das Wörterbuch anhängen Sie erhalten also eine Liste mit
mehreren Wörterbüchern. In diesem Fall
erhalten Sie eine Liste mit
zehn Wörterbüchern .
Lass uns das ausführen Wir haben da eine ungültige
Syntax, Bads. Ich habe vergessen, den
Zuweisungsoperator da zu haben, und richtig. Diesmal kein Fehler. Lass uns L hier drucken. Und es sieht gut aus. Sie können also die
Länge überprüfen. Also sind es zehn. Nun, wenn Sie
diese Liste von Wörterbüchern
in einen Datenrahmen werfen wollen , diese Liste in einen Datenrahmen, nun, Sie müssten Pandas verwenden, und dann
entspricht DF dem Pandas-Datenrahmen Und hier müssen wir
eine wirklich lange Aussage schreiben .
Ich jogge Sie müssen nur die
Liste dort übergeben und Sie erstellen einen Datenrahmen aus dieser
Liste von Wörterbüchern Lassen Sie uns also den Datenrahmen überprüfen. Und bumm, hier sind die Daten. Und wie Sie sehen können, haben wir sogar
Nan-Werte erhalten , wenn
es keine große Losgröße gibt. Pandas versteht also, wenn es keine Daten in
den Wörterbüchern gibt Also
hatten wir hier zum Beispiel keine große Menge,
und Pandas weist dem einen Wert zu, der nicht nach Nan ist, den Sie, wenn Sie möchten
, einfach durch einen Wert
ersetzen können,
der
kein wenn Sie möchten
, einfach durch einen Wert
ersetzen können, ersetzen Dann musst du viel arbeiten,
um das in einer CSV-Datei zu speichern. Eine wirklich lange Aussage. Okay, ich lege die CSV-Datei
rein und sie sollte startklar sein. Lass mich das überprüfen. Hier ist eine Datei. Und
hier sind die Daten. Es sieht also gut aus. Großartig.
Nun, was kommt als Nächstes, wenn wir, wie Sie sich
vorstellen können, die Eigenschaften
aller Seiten abrufen müssen . Also zweite Seite und dritte Seite. Also werden wir das in der
nächsten Vorlesung machen. Wir sehen uns.
205. 204. Durch mehrere Webseiten crawlen +: Großartig. Also haben wir das Drehbuch für eine Seite zum
Laufen gebracht. Also für die erste Seite, aber da haben
wir vielleicht mehrere
Seiten. Für Rock Springs haben
wir also drei Seiten
mit 28 Auflistungen. Also 28 Immobilien, die
dort zum Verkauf oder für private Zwecke aufgeführt sind. Eigentlich stehen sie zum Verkauf, also Häuser zum Verkauf. Das ist also die zweite Seite
mit zehn weiteren Immobilien, und dann haben Sie dort
die letzte Seite, die
acht Immobilien haben sollte. Wir haben also insgesamt 28. Nun, das ist eine kleine Stadt, also gibt es dort nicht
viele Angebote, aber bei großen Städten wirst
du viele Seiten haben. Und das Skript, das wir erstellen
werden, um
Immobiliendaten von diesen Seiten zu extrahieren Immobiliendaten von diesen Seiten funktioniert mit einer beliebigen
Anzahl von Seiten. Wie gehen wir vor, um
Daten von allen Seiten abzurufen? Nun, da gibt es keine Magie, aber es gibt einen einzigen Trick Weißt du, wenn du
erneut nach Rock Springs suchst, wirst
du dort eine erste URL sehen, die wir in Python geladen haben. Ich glaube, ohne
das wäre K gleich Eins. Es war nur so. Ich bin mir nicht sicher, was
das bedeutet hat, aber wie dem auch sei, vielleicht
lag es daran, dass ich
wieder nach Rock Springs gesucht habe. Also das ist die erste Seite. Die Logik hinter dem Extrahieren von
Daten von den anderen
Seiten besteht darin , dass wir
die anderen Seiten
ebenfalls in Python laden müssen , indem wir erneut request verwenden Also, genau wie hier, haben
wir die erste Seite geladen Jetzt müssen wir einen
Weg finden, die anderen Seiten zu laden. Wir können entweder jede der 300 Seiten, in diesem Fall
drei Seiten, manuell
durchgehen in diesem Fall
drei Seiten und die URL kopieren, oder wir können
versuchen, einen Weg zu finden. Um also die Regel herauszufinden, ob es eine Regel gibt, dass sich die URL ändert, wenn Sie
zwischen den Seiten wechseln, und da ist es
wahrscheinlich immer eine Regel. Also müssen wir das herausfinden. Also bin ich auf die zweite
Seite gegangen, und wie Sie sehen, sich die URL
jetzt geändert,
mit einer Erweiterung. Also ist T gleich Null
und C ist gleich Null. Wenn Sie zur dritten Seite gehen, sehen
Sie, dass sich die URL
vor 20 nicht geändert hat, aber C wurde auf 20 geändert Wenn Sie jetzt erneut zur
ersten Seite gehen, werden
Sie feststellen, dass S gleich Null
ist. Wenn Sie also direkt nach
Rock Springs suchen, erhalten
Sie dort die Basis-URL
ohne diese Erweiterung. Und wenn Sie dann
manuell
zur ersten Seite wechseln, indem Sie hier auf
die Nummer eins klicken, werden
Sie
in die Regel aufgenommen, die die URL
ändert, wenn Sie
sich durch alle Seiten bewegen. Das heißt, wir können diese
URL verwenden, um die erste Seite abzurufen, und dann können wir die URL
durchgehen. Und ändern Sie diesen Wert
während der Iteration auf zehn. Erhöhen Sie um zehn. Also ab 010 und 20, und wenn wir mehr Seiten haben, wären
das 30 und so weiter. Also hoffe ich, du verstehst die Idee. Lass uns jetzt weitermachen
und mal sehen, also lass uns dort eine Basis-URL speichern. Wir sollten
so etwas ohne die Nummer sein. Das ist also die Statistik-URL. Und bevor wir nun den
Quellcode mit Anfragen anfordern, versuchen
wir zunächst, eine
URL zu erstellen und sie auszudrucken. Also verwenden wir
wie immer eine Print-Anweisung , um Dinge auszuprobieren. Nehmen wir an, für eine
Seite im Bereich sollte
der Bereich bei Null
beginnen, bis wir
drei Seiten hatten, und die letzte Seite hatte eine von 20. Geben Sie also vielleicht 30 ein und wiederholen Sie dann
mit einem Zehnerschritt Also werden
wir bei jeder Iteration um zehn erhöhen Machen Sie sich vorerst keine Gedanken über
die Anzahl der Seiten. Im Moment geben wir nur manuell
einen Wert ein, damit wir wissen, dass es drei Seiten
hat, also gebe ich dort 30 ein. Aber später werden wir
dies in eine Variable ändern
, die eine Reihe von
Seiten von der Website übernimmt Wenn
Sie also statt Rock Springs New York hätten und wahrscheinlich 200 Seiten
bekommen würden Sie wollen also die
Nummer der letzten Seite 200 nehmen und dann
etwa 200 mal 20 weitergeben, also erhalten Sie 2000 und Sie erhalten
eine Schleife, die auf Null,
Zehn und bis zu 2000 geht . Also machen wir das
später. Vorerst drucken? Basis-URL plus. Nun, diese Seitenvariable
würde eine Ganzzahl erhalten. Also müssen wir diese Ganzzahl
mit
der String-Methode in eine Zeichenfolge
konvertieren . Und dann geht die Seite hinein. Also lass uns das ausprobieren. Ana, das sind die Drei Könige. Lass mich einen von
ihnen öffnen. Los geht's. Und das ist die zweite Reihe von
Ergebnissen. Es ist also Seite zwei. Großartig. Lass mich das schließen. Aber natürlich
interessiert uns
das Drucken nicht, also
wollen wir die URL nicht drucken. Wir wollen den
Quellcode von ihnen bekommen. Was Sie also tun möchten, ist Anfragen zu
entsprechen. Sie befinden sich also innerhalb der Schleife, und später werden wir diese
Schleife mit dem anderen Code zusammenführen. Konzentrieren wir uns also vorerst darauf. Holen Sie sich die Basis-URL plus die
Zeichenfolge der Seitenzahl. Und gleich darauf
möchten Sie den Inhalt der
Anfrage abrufen und auch die Suppe zubereiten. So schöne Suppe,
C- und HTML-Parser. Lassen Sie uns vorerst
versuchen, die verschönerte Version
des
Soup-Objekts auszudrucken . Großartig Und das hat eine Weile gedauert, aber hier ist das Ergebnis. In der ersten Iteration haben
wir also die URL
von dieser Funktion, von
der Druckfunktion, ausgedruckt , und dann haben wir die
verschönerte Version des Quellcodes
für die erste URL bekommen, die ziemlich lang ist Also wie dem auch sei, du verstehst die Idee. Also das scheint zu funktionieren, aber was wir vom
gesamten Quellcode brauchen. Wir haben also den
Quellcode aller drei Seiten. Wir müssen also nicht den
gesamten Quellcode drucken, sondern wir müssen nur die Unterteilungen
der Eigenschaftszeilen extrahieren. Also, genau wie hier,
haben wir die Suppe
für die erste Seite bekommen und dann haben wir dort eine
All-Variable erstellt. Also machen wir hier dasselbe. Aber dieses Mal
sollte es eingerückt sein, weil
es sich in einer Schleife befindet Also alles und die
Aufteilung der Eigenschaftszeilenklassen, das sieht gut aus. Also wenn du es ausdruckst, nur um alles zu
überprüfen, hier ist das Ergebnis. Also die erste URL ausgedruckt, und dann haben Sie
diese Abteilungen. Und dann haben Sie hier auch ziemlich
viele Daten. Also, was Sie jetzt
tun möchten, ist, den
ganzen Code, den
Sie gerade dort gebaut haben, zu holen den
ganzen Code, den
Sie gerade dort gebaut haben, und vielleicht diesen zu
löschen und die gesamte Zelle zu löschen, und Sie möchten den Code hier platzieren
. Großartig. Als Nächstes hast
du das für eine Seite gemacht und jetzt
durchblätterst du alle Seiten Sie
möchten also den
ganzen Block auf der rechten Seite einrücken , sodass dieser Block Teil
der vier Schleifen wird Drücken Sie also die Taste und
schließen Sie die Klammer , um den ausgewählten Text einzuziehen Also, diese Schleife hier wird so oft
laufen, wie
es Seiten gibt Also, was können wir jetzt tun? Nun, wir können den Code ausprobieren. Also lass mich
diese Shift Enter ausführen und wir müssen hier ein bisschen warten. Also das sieht so aus, als ob es funktioniert. Also sollten
wir an dieser Stelle
die L-Liste
mit allen Daten haben . Und hier konvertieren wir diese
L-Liste in einen Datenrahmen. Also lass uns das ausführen. Und dann
führen wir hier den Datenrahmen aus. Also lass uns jetzt sehen. Jep Und so haben wir 425 Zeilen
, weil wir bei Null anfangen. Aber wir hatten tatsächlich 28
Angebote. Das bedeutet also, dass diese
letzten drei Immobilien hier nicht aufgeführt wurden , weil dort etwas
passiert ist. Wir sind hier also auf Seite drei, und die
letzte erfolgreiche war Wen Avenue. Also suchen wir nach der Wende Avenue,
hier ist die Wende Avenue. Es hat also eine Adresse und
den Ort Sook Springs. Und dann die nächste, da ist nur die Lokalität In diesem Fall könnten
Sie
also versuchen, eine Ausnahme
hier im Code zu behandeln Für diesen
hier könnten wir also sagen,
versuchen, das zu tun und zu
akzeptieren, dass dCalit gleich nichts ist Und jetzt führe ich das noch einmal aus. Hoffen wir, dass wir dort keinen Fehler
bekommen. Ja, das wurde
erfolgreich ausgeführt. Führe das auf dem Datenrahmen aus. Und lass uns sehen. Ja, jetzt scheinen
wir dort 28 Reihen zu haben. Also das scheint zu funktionieren. Und das Letzte, was Sie tun
möchten, ist, wissen Sie, anstatt diesen
Bereich hier manuell zu übergeben, könnten
wir tatsächlich
eine Variable hinzufügen , die eine Seitenzahl
erkennt. Und alles, was wir tun müssen, ist
auf unsere Website zu gehen. Lass mich das entfernen. Sie möchten also herausfinden, wo diese letzte Zahl gerendert
wird. Das ist also
der Indikator für die Anzahl der Seiten. In diesem Fall haben wir also drei
Seiten, schauen Sie sich das an und das
bringt uns zu diesem Punkt. In diesem Fall
heißt es eigentlich Seite, aktuelle Seite. Gehen wir also zur ersten
Seite. Und lass mich das schließen. Wir sollten also auf
der ersten Seite sein , wenn wir zum
ersten Mal
am Drehbuch sind . Und auf dieser ersten Seite wollen wir uns den
Inhalt der ersten Seite schnappen, und dann wollen wir
wissen, welches Element dort in
der letzten Zahl steht. Wir sehen also, dass das das
A-Element mit der Klassenseite ist. Und hier ist der Text also drei. Das sollte eigentlich das letzte Element mit
einer Seitenklasse sein. Sie werden dort also
einige Elemente
mit Seitenklasse haben , und dies sollte das letzte sein. Ja. Also das
sollte der letzte sein. Also behalten wir das im
Hinterkopf und gehen hierher, und was wir jetzt tun können ist, oder holen wir uns die
Seitenzahl hier drin. Also Seite, nennen wir
diese Seitenzahl. Das wäre gleichbedeutend mit Suppe. Die Suppe wird also den
HTML-Code der ersten Seite enthalten. Also dieser hier
, der keine Ajax-Anfrage ist Es ist also ganz einfach auf
dieser Seite. Deshalb wollen wir alle A-Elemente mit
einer Klasse finden. Von Seite. Also wenn ich es ausdrucke, nur
um zu sehen, was wir bis jetzt haben, Seitennummer, um zu sehen, wo Sie ein paar Elemente
haben. Aber die letzte ist
die letzte Seitenzahl. Also drei, das brauchen wir. Also müssen wir uns das
letzte Element der Liste schnappen, das heißt minus eins, einen Index von minus eins und Text. Und ja, wir haben drei hier. Und deshalb müssen wir
diese Zahl jetzt in 30 umwandeln. Und die Art, wie Sie das machen, ist
nur Seitenzahl mal Zehn. Das würde dir also 30 geben. Also, fast weil
diese Seitenzahl eigentlich eine Zeichenfolge
ist, geben
Sie hier eine weitere Klammer ein. Also ist es der Typ Zeichenfolge. Und das bedeutet, dass Sie hier
eine Ganzzahl hinzufügen müssen. Sie möchten
diese Zeichenfolge also in
eine Ganzzahl konvertieren und sie
dann mit zehn multiplizieren , sodass Sie 30 erhalten. Also das sollte jetzt funktionieren, und alles sollte
funktionieren, glaube ich. Also lass mich das ausführen. Die URL wird
ausgedruckt und das Script fertig gestellt. Wenn Sie hier also nicht den Busy-Text
vor dem Titel
Ihrer Datei
haben , bedeutet
das, dass das
Skript ausgeführt wird. Jetzt haben wir das nicht mehr,
also ist das Skript fertig. Führe das aus. Und das sind unsere Ergebnisse und exportieren
Sie sie in eine CSV-Datei. Und lass uns nachschauen.
Also habe ich das CSV eingegeben. Und hier sind die Daten. Wir haben hier also keinen Ruf. Nein, alles sieht einzigartig aus. Damit ist dieser Abschnitt
von Web-Scrabbing geschlossen. Also, wenn du
andere Lokalitäten finden willst, so habe ich das
für Rock Springs versucht, aber du kannst es auch mit
anderen Lokalitäten versuchen Sie müssen also nur die URL
ändern oder Sie könnten sogar eine Benutzereingabe implementieren,
sodass der Benutzer einen Namen eingibt, und dann konstruieren Sie die URL und übergeben
die URL dann hier. Also brauchen wir das nicht, räumen Sie das auch auf. Und wenn du willst, kannst du
diese Zelle mit dieser verbinden. Sie können also das
gesamte Skript in einer Zelle ausführen. Und das kannst du auch speichern. Laden Sie es also als Python-Datei und Sie erhalten den gesamten Quellcode. Also das Python-Skript. Und plus diese Zeilen, aber
mit einem Befehls-Hashtag. Und Sie können es
als ganzes Skript ausführen. Ich hoffe, dir gefällt das. Ich weiß, das war ziemlich
viel zu verdauen. Und wenn Sie Fragen haben, stellen Sie sie
bitte. Ich würde mich freuen, dir helfen zu können. Ich hoffe, Sie haben
viel daraus gelernt, und wir werden mit
den nächsten Abschnitten fortfahren, sodass wir noch sehr
interessante Dinge zu tun haben. Und wir sehen uns später.
206. 205. App 9: Django & Bootstrap Blog und Übersetzer-App +: Hallo, willkommen zu einem sehr
informativen Vortrag, insbesondere über diejenigen, die
daran interessiert sind, Webanwendungen mit Python zu erstellen. Wie Sie vielleicht wissen, wird
Python für
andere Zwecke verwendet als für die Automatisierung
von Routineaufgaben in Ihrem Job Nehmen wir an, Sie möchten automatisch
PDF-Berichte generieren, automatische
E-Mails
versenden usw. Dann können Sie Python für Datenanalyse und -visualisierung, Datenwissenschaft und
maschinelles Lernen, aber auch für die Webentwicklung verwenden. Also
Webanwendungen mit Python erstellen. Und hier
möchte ich aufhören und Ihnen
erklären, wie genau Python in der Webentwicklung verwendet
werden kann in der Webentwicklung verwendet
werden und welche
Python-Web-Frameworks Sie verwenden sollten. Also habe ich gerade das
Wort Web-Framework erwähnt. Also, was ist ein Web-Framework? Nun, mit Python können Sie
Anwendungen entweder mit
einfachem Python oder mit einem der Python-Web-Frameworks erstellen Anwendungen entweder mit
einfachem Python oder mit einfachem Python oder , denen es sich im Grunde um
Python-Bibliotheken handelt , die Sie mit PIP
installieren Und diese Web-Frameworks
erleichtern das Schreiben von
Webanwendungen mit Python. Jetzt kann ich Ihnen sagen, dass das
Erstellen einer Web-App ohne Verwendung eines dieser
Web-Frameworks so
ist, als würde man das Rad neu erfinden Denn wenn Sie kein Web-Framework
verwenden, müssen
Sie im Grunde den gesamten Code
neu schreiben, den
die Autoren
dieser Web-Frameworks geschrieben dieser Web-Frameworks Stattdessen installieren wir einfach
diese Web-Frameworks und verwenden dann diesen Code Das ist in den
Web-Frameworks enthalten. Und dieser Code besteht normalerweise aus
Dingen wie der Bearbeitung HDP-Anfragen und der Bereitstellung von
Webseiten im Browser Also routinemäßige Aufgaben auf niedriger Ebene. Aber anstatt uns
mit dieser Aufgabe zu befassen, möchten
wir uns darauf konzentrieren
,
die Funktionalität und Praktikabilität
unserer Webanwendung Also das Erstellen der Eingabefelder, zum Beispiel
für unsere Formulare, Senden von Benutzern von einer Webseite zur anderen, also solche
Dinge Sie sollten also
ein Web-Framework verwenden. Ich denke, wir haben den Punkt
klargestellt , dass Sie
ein Web-Framework verwenden sollten. Die nächste Frage ist nun, welches der
Web-Frameworks Sie verwenden sollten? Nun, es gibt viele
Web-Frameworks für Python, aber ich werde mich nur
auf drei davon konzentrieren, nämlich Flask,
Jango und nur Pi Fangen wir mit FLASK an. FLASK ist ein Web-Framework, das normalerweise für die Erstellung
kleiner Webanwendungen Nehmen wir zum Beispiel an,
Sie möchten nur
einen kleinen Übersetzer erstellen , von einer
Sprache in eine andere
übersetzt Denken Sie an Google Translate. Wenn Sie nur diese
Webanwendung wollen, bei der die Leute
zu Ihrer Domain gehen ,
sagen wir, translator.com, und Sie haben nur
diese beiden Felder dort, geben die
Leute den Text in
einer Sprache in das erste
Feld ein und erhalten die Ergebnisse Also die Übersetzung
in der anderen Box. Also das wäre eine kleine App. Ein anderes Beispiel wäre
eine App, in der Sie
beispielsweise JPG-Bilder
in PNG-Bilder konvertieren . Die Leute laden also ein Bild
in JPG hoch oder umgekehrt. FLASK kümmert sich also um
all das Hochladen
und Verarbeiten im Hintergrund Im Hintergrund benötigen
Sie natürlich neben FLASK wahrscheinlich eine
Bildverarbeitungsbibliothek Sie müssen also Pip installieren,
Flask
installieren und vielleicht Pip CV Two
installieren,
also öffnen Sie CV, um die Verarbeitung Aber das Bereitstellen der Website zur Web-App wird mit FLASK
erledigt FLASK erhält also
das Originalbild und das
Ausgabebild von OpenCV und stellt Ausgabebild zum
Herunterladen Das sind also kleine Web-Apps. Verstehen Sie mich jetzt nicht
falsch mit FAS, Sie können auch
größere Webanwendungen erstellen und was ich mit größeren
Webanwendungen meine Größere Web-Apps, ich
meine Dinge wie, sagen
wir, Sie haben eine
Blog-Website, auf der Sie jede Woche oder etwa
alle zwei Tage Blogs
hinzufügen Sie haben also vielleicht
mehrere Autoren , die Inhalte für Ihr Blog schreiben. Für diese Block-Website. Wir werden also
verschiedene Blöcke haben, und all diese Blöcke
müssen in einer Datenbank gespeichert werden. Nun, Flask kann
das natürlich, aber Jango würde das besser machen Jango würde das besser machen weil es
einfacher ist, mit
Datenbanken mit Jango zu arbeiten , weil es ein besseres Abstraktionsniveau hat Mit FAS können Sie das also
auch mit FAS machen,
aber es ist mehr aber Sie müssen mehr
Routineaufgaben für FAS erledigen. Und Jango würde
es Ihnen auch ermöglichen, diesem
Website-Projekt weitere Apps hinzuzufügen diesem
Website-Projekt weitere Apps Also haben wir das
Beispiel von Blöcken genommen. Sie werden Blöcke
auf Ihrer Website haben, aber vielleicht möchten Sie eine weitere Funktion
hinzufügen. Nehmen wir an, Sie möchten dort einen Übersetzer
hinzufügen. So kann Jango auch einen Übersetzer
erstellen. Zusätzlich zu dieser bestehenden Website. Aber wenn Sie nur einen Übersetzer alleine
bauen wollen, dann wäre Jango übertrieben Was meine ich damit? Damit meine ich, dass
Jango
für kleinere Web-Apps mehr Arbeit benötigt, um ein Jango-Projekt einzurichten Es erfordert mehr Arbeit. Aber sobald Sie
ein Jangle-Projekt eingerichtet haben, laufen die Dinge reibungslos Aber für kleinere Apps ist
es gut, einfach
eine Fask-Anwendung zu erstellen. Es ist sehr einfach, eine zu erstellen. Das ist also der Unterschied
zwischen Jango und FASC. Jetzt kommt Just Pi. Just Pi ist ein sehr neues Framework. Und warum habe ich Just Pi in dieses Set von
drei Web-Frameworks aufgenommen? Nun, Just Pi ist etwas ganz Besonderes. Was meine ich damit? Nun, mit FAS und Jango müssen
Sie auch HTML
und CSS kennen, um Web-Apps
erstellen zu können , weil jede Webseite, die
Sie im Internet sehen
, auf HTML basiert Also der ganze Text und die
Eingabefelder und Schaltflächen. All diese sind in
HTML-Code eingebaut, was sehr einfach ist. Hab also keine Angst vor HTML. Es ist eine sehr leicht zu erlernende
Sprache. Aber ich sage nur
, dass Sie das Frontend
einer Webseite nicht mit Python
erstellen können . HTML ist also für das Frontend. Und dann soll CSS verschönert werden, um das Aussehen
dieser HTML-Elemente zu verschönern Also die Textfelder,
der Text, die Farben, all das kann mit
CSS schöner aussehen CSS ist also auch eine Sprache , die auch sehr
einfach zu erlernen ist Sie müssen also
etwas CSS- und HTML-Code schreiben und diesen Code in HTML- bzw.
CSS-Dateien
speichern und diese Dateien
in Ihre Web-App einfügen, sei es in Jango oder Flask Nun, hier kommt
JSPI ins Spiel. JSPI können Sie Web-Apps
erstellen, ohne eine
Zeile HTML und CSS schreiben zu Aber Juspi ist sehr neu. Es ist ein neues Framework, ein
Web-Framework. Und wie gesagt, das Gute an Jpi ist, dass Sie kein HML und CSS
schreiben müssen, da JSPI einige
spezifische Python-Objekte hat Nehmen wir an, es hat
ein DIF zum Erstellen dieser Abteilungen, in das Sie Texte und
ähnliches einfügen
können, oder es hat ein Button-Objekt, ein
Python-Button-Objekt, um
eine Schaltfläche auf der Webseite zu erstellen Der Nachteil
dabei ist natürlich, dass Sie nicht sehr
flexibel sind, wie Sie es mit FLASK und Jango wären Auch hier würde ich sagen, dass Jpi
auch für kleine Webanwendungen geeignet ist auch für kleine Webanwendungen geeignet Wenn Sie eine
Blog-Website mit vielen Inhalten erstellen möchten, ist
Just Pi nicht die beste Wahl Es funktioniert nicht so
gut mit Datenbanken
wie Jango oder FLASK Aber auch hier gilt: Wenn Sie
nur
eine kleine Web-App erstellen möchten und weder CSS noch HTML kennen, dann könnte Juspi
besser sein als FLASK Das war also ein Überblick über drei Web-Frameworks für Python. Nun
werden all diese drei
Web-Frameworks im
Kurs dieses Kurses behandelt. Wir werden also
mindestens eine Web-App
mit jedem dieser
drei Web-Frameworks erstellen , und es mag verlockend sein,
dass Sie
sich nur die Videos des
Web-Frameworks ansehen möchten , die Ihnen gefallen, aber ich würde empfehlen, keines
dieser Web-Frameworks zu überspringen Das heißt,
wenn Sie Webentwicklung mit Python
betreiben
möchten , ist es eine gute Idee, mit verschiedenen
Web-Frameworks vertraut zu sein . Jedes der Frameworks
macht die Dinge anders, sodass Sie
viel über Webentwicklung lernen werden. Zum Beispiel macht FASC die Dinge etwas niedriger und roher,
und das hilft Ihnen, die
Webentwicklung aus
einer tieferen Perspektive zu verstehen Webentwicklung aus
einer tieferen Perspektive Aber dann lernst du etwas
über Jango und wirst den hohen Grad an
Abstraktion
zu schätzen wissen, den Sie werden es zu schätzen wissen, wie einfach es ist, Änderungen
an Ihren Web-Apps vorzunehmen Wenn Sie Jango wegen
dieser hohen Benutzerfreundlichkeit verwenden. Jango versteckt also einige
Dinge vor dir, was die Dinge einfacher macht, aber du wirst
einige dieser Dinge nicht verstehen Deshalb solltest du
auch Flask lernen. Und es macht auch
sehr viel Spaß, Jus Pi zu lernen. Und ich würde Juspi
vor allem
jemandem empfehlen , der nicht daran interessiert ist, ein
wichtiger Webentwickler zu werden Vielleicht sind Sie ein Datenanalyst, möchten
aber einfach eine Web-App erstellen in der Sie einige Daten,
einige Visualisierungen
in dieser Web-App zeigen einige Visualisierungen
in dieser Web-App In diesem Fall könnte Jus Pi tatsächlich die beste Wahl
sein. Aber wenn du
ein reiner Webentwickler sein willst, dann willst du
Jangle und Flask lernen Wenn Sie dann eine Web-App erstellen
müssen, können
Sie einfach eines der
Web-Frameworks auswählen, das
für dieses Projekt am besten geeignet ist , oder vielleicht das Web-Framework
, das Sie besser kennen Warum nicht? Ich hoffe das hilft.
Ich rede später mit dir.
207. 206. Eine virtuelle Umgebung einrichten: Hallo. In diesem Video erfahren
Sie, wie Sie eine virtuelle
Python-Umgebung erstellen und verwenden. Was ist also eine
virtuelle Python-Umgebung? Nun, es ist nur eine Kopie
Ihrer Python-Installation. Also, mit anderen Worten, eine Kopie
Ihres Python-Interpreters. Wenn Sie also
Python von python.org
oder von Anaconda herunterladen , Sie einen Python-Interpreter herunter Jetzt machen wir eine Kopie davon. Warum machen wir eine Kopie? Denn mit Python können wir verschiedene Programme
schreiben. Und für jedes Programm müssen
wir möglicherweise unterschiedliche Pakete
installieren,
also unterschiedliche Bibliotheken. Und normalerweise installieren wir diese Bibliotheken in unserer
Python-Hauptinstallation. In dem Interpreter, den wir von python.org oder Anaconda
bekommen haben
, wird er auch als globaler Interpreter bezeichnet Aber indem wir für
jedes Programm, das wir gebaut haben, eine Kopie erstellen, installieren wir Bibliotheken nur für Dies
hat vor allem den Vorteil von Webanwendungen, denn wenn Sie eine Webanwendung erstellen, werden
Sie sie später auf
einigen Online-Servern bereitstellen Und wenn Sie eine Kopie
des Interpreters erstellen und
dann die Bibliotheken,
die Sie in
dieser Kopie benötigen, in dieser
virtuellen Umgebung installieren Bibliotheken,
die Sie in
dieser Kopie benötigen, in , haben Sie eine übersichtliche Liste der Bibliotheken,
die
Sie installiert haben Sie können also eine
Liste erstellen und diese Liste dann dem Server geben , auf
dem Sie
Ihre Webanwendung bereitstellen werden Dieser Server ruft also die Liste der Bibliotheken aus dieser
Liste ab und installiert sie. Der Vorteil dabei ist, dass Sie mit Ihrer globalen
Python-Installation viele, viele Bibliotheken hätten. Dieser Server
müsste also
all diese vielen Bibliotheken installieren . Was keine gute Idee ist. Warum also nicht
einen Interpreter für
jedes Python-Projekt haben einen Interpreter für
jedes Python-Projekt Jetzt, wo wir unsere Jango-App erstellen, werden
wir
zunächst
eine virtuelle Umgebung mit Visual Studio-Code erstellen zunächst
eine virtuelle Umgebung mit Visual Studio-Code So machst du
es. Zuallererst öffne
ich Visual Studio-Code. Das ist also die Willkommensseite. Ich habe noch
kein Projekt erstellt. Also werde ich ein Projekt
erstellen, bei dem Sie
im Grunde nur
einen Ordner, ein Verzeichnis öffnen. Im Visual Studio-Code. Gehen Sie also zu Datei und
dann zu
Ordner öffnen oder öffnen,
je nachdem , welches
Betriebssystem Sie verwenden. Das kann also entweder ein
offener oder ein geöffneter Ordner sein. Klicken Sie dort und suchen Sie dann einen leeren Ordner, den Sie vorher hätten erstellen
sollen. Ich habe diesen leeren Ordner
Jangoblock Translator erstellt. Sie sehen, es ist völlig leer. Also drücke ich auf Öffnen und der Ordner wird
geöffnet. Hier siehst du hier in meinem Explorer-Baum auf
Visual Studio-Code. Jetzt, wo wir den Ordner haben. In diesem Ordner werden
wir also
alle Dateien für
unser Jango-Projekt ablegen , einschließlich der Kopie des
Python-Interpreters Also die virtuelle Umgebung. Um diese Kopie zu erstellen, gehen Sie wie folgt vor. Zuallererst müssen
Sie also
ein Terminal öffnen und zuerst eine Überprüfung durchführen. Stellen Sie also sicher, welche
Python Sie verwenden. In meinem Fall verwende ich also einen Befehl, Python 3.9
, und der öffnet Python. Das ist also ein globales Python, das auf meinem Computer
installiert ist. Ich bin mir also sicher, dass dieser
Befehl einwandfrei funktioniert. In Ihrem Fall
könnte es nur Python ohne 3.9 oder Python drei sein. Es hängt davon ab, was Sie verwendet
haben. Also, wo auch immer Sie es
benutzt haben , ich werde
diese interaktive Shell beenden. Das war also nur, um den Python-Befehl
auszuprobieren. Jetzt weiß ich, dass das funktioniert, also kann ich Python 3.9 machen. Also keine Leerzeichen hier. Dann ein Leerzeichen, die Flagge, dann V, dann NV. Also, was ist das? Nun, VNV ist eine Bibliothek
, die installiert ist. Standardmäßig ist es eine
Standardbibliothek für Python. Es wird mit Python geliefert. Also benutze ich diese Bibliothek. Wenn Sie also diesen Befehl verwenden, Python 3.9 oder Python, und dann dieses Flag verwenden, bedeutet
das, dass Sie diese Bibliothek
als Python-Skripte
ausführen werden . Und dann ist dieses Ende der Ordner , in dem die Kopie des
Python-Interpreters abgelegt wird Drücken Sie also die Eingabetaste. Und Sie sehen sofort, dass N dieser Ordner hier erstellt wurde. Und wenn ich diesen Ordner erweitere, werden
Sie sehen, dass sich hier mehrere
andere Ordner befinden,
und in dieser Ablage hier werden
Sie sehen, dass wir die ausführbare Python-Datei haben
. Das ist also eine Kopie von Python. Es kann entweder
nur als Python oder Python
Three oder Python 3.9 verwendet werden. Aber ich zeige Ihnen jetzt, wie Sie
dieses Python anstelle
eines globalen Python verwenden können. Also mach nichts
mit diesem Ordner. Denn was wir
jetzt tun wollen, ist,
einen Standard-Python-Interpreter
für dieses spezielle Visual
Studio-Code-Projekt auszuwählen einen Standard-Python-Interpreter für dieses spezielle Visual
Studio-Code-Projekt Um das zu tun, möchten Sie zur Befehlspalette gehen
. Sie können das mit
Tastenkombinationen tun, auf dem Mac wäre
es Command Shift, P, drücken Sie alle drei gleichzeitig. Unter Windows
wären es Strg, Shift, P, sodass dieses Feld angezeigt wird, und dann können Sie
dort Select Interpreter eingeben Das wollen wir also mit dem
Python Select Interpreter verwenden. Das sind Befehle. Klicke da drauf. Und du wirst diese Liste sehen. Ich habe also verschiedene
Pythons in meinem System. Eine davon ist diese
visuelle Umgebung hier, die ich gerade installiert habe, und das ist die, die ich wählen möchte.
Also drück dort. Und jetzt solltest du hier
unten sehen, dass Python 3.9 0.6 in meinem Fall
mit diesem Ordner. N ist der Ordner. V ist die Bibliothek für virtuelle
Umgebungen. Dies wird jetzt
als Standard-Python verwendet. Bedeutet das? Nun,
das heißt, wenn du jetzt Python hier eingibst, aber zuerst dieses
Terminal schließt und ein neues öffnest, also um eine Aktualisierung von
terminal, new terminal zu haben, wirst
du sehen, dass jetzt vor diesem Tag hier, der mir sagt, ich
soll hier etwas schreiben,
ich habe das in Klammern Das bedeutet, dass diese virtuelle
Python-Umgebung verwendet
wird. Wenn ich jetzt einfach Python eintippe, Python 3.9 0.6
dieser wird
Python 3.9 0.6
dieser virtuellen Umgebung verwendet. Lass mich aussteigen. Ich kann auch Python 3.9 eingeben
und dasselbe wird verwendet. Jeder dieser Befehle hier, Python, Python drei
oder Python 3.9. Stellen Sie also sicher, dass Sie das dort
haben. Also, wie funktioniert das? Weil es wie Magie aussieht. Nun, es funktioniert so. Lassen Sie mich dieses Terminal wieder schließen und
ein neues, neues Terminal öffnen. Sie sehen also, dass wir hier einen Befehl
haben, der vom Visual Studio-Code
ausgeführt wird vom Visual Studio-Code
ausgeführt , wenn Sie ein neues Terminal öffnen. Es heißt also source, was ein Befehl zur Aktivierung
der virtuellen Umgebung ist. Also Quelle und dann der
Pfad zur Aktivierungsdatei. Sie sehen, es ist der
Jangoblock-Übersetzer, das ist dieser Ordner N B Aktiviert. NBN aktivieren. Diese Aktivierungsdatei
wird ausgeführt, und das ist der
Befehl, der
die Umgebung auf diese
virtuelle Umgebung festlegt die Umgebung auf diese
virtuelle Umgebung Das bedeutet auch, dass
Sie Python
sowohl von hier aus als
interaktive Python-Shell verwenden können , als
auch, wenn Sie jetzt eine Datei schreiben
möchten. Sagen wir also, erstellen Sie eine Datei. Also sei vorsichtig hier. Ich
werde Hello PY schreiben. Ich sage, seien Sie vorsichtig
, denn was passiert, ist, dass diese Datei
in meinem NV-Ordner erstellt wurde. Das ist also keine gute Sache. Sie möchten den F-Ordner nicht
berühren. Also werde ich
diese Datei löschen und neu erstellen. Um zu vermeiden,
dass sich die Datei im Nfle befindet, sollten
Sie zuerst die Esc-Taste drücken Dadurch wird der Fokus
aus dem NF-Ordner entfernt Dann können Sie hierher gehen
und die Datei erstellen. Jetzt siehst du, dass die Datei in diesem Stammverzeichnis
erstellt wurde, also Jangle Block
Translator Hello Dot PY Und wenn ich hier „Print
Hello“ sage, dann ist das richtig. Und jetzt kann ich
diese Datei mit diesen
grünen Dreiecksohren
mit rundem Boden ausführen diese Datei mit diesen . Drücken Sie darauf und die Datei wird mit der virtuellen
Umgebung Python
ausgeführt. Sie sehen hier also, was im Hintergrund
passiert ist. Um es noch einmal zusammenzufassen:
Die virtuelle Umgebung wurde
verwendet, Die virtuelle Umgebung wurde als wir
die Python-Shell öffneten. Es wurde auch verwendet, als wir die Python-Datei
ausgeführt haben, und es wird auch verwendet, wenn wir Pakete von Drittanbietern
installieren. Sagen wir also, PIP installiere
Jango, um Jango zu installieren. Dieser Jango wird
für dieses spezielle Python installiert, nicht für unser globales Python Und ich kann dir das beweisen,
indem ich zu N und dann zu
Lip gehe und du wirst sehen, dass Jango gerade zu den
Drittanbieter-Paketen hier
hinzugefügt wurde zu den
Drittanbieter-Paketen hier
hinzugefügt Also JangoT ist das, was
wir gerade installiert haben. Um diese Warnung zu beseitigen, möchten
Sie
diesen Befehl möglicherweise wie
vorgeschlagen ausführen . Python 3.9
oder Python direkt, PIP install, dash,
dash, upgrade,
PIP, um sozusagen das
virtuelle PIP lokal zu aktualisieren Richtig. Und jetzt, wenn ich dieses Projekt
schließe, öffne
ich es wieder. Dann kann ich zu
meinem vorherigen Projekt zurückkehren ,
indem ich entweder diesen aktuellen
Abschnitt hier verwende, also darauf klicke,
oder indem ich zu Datei, Zuletzt
geöffnet gehe und
das Projekt dort suche. Oder eine dritte Möglichkeit wäre,
erneut zu Datei, Öffnen und dann wieder
zu diesem Ordner zu wechseln, also zum Stammverzeichnis. Also das sind und hallo
Punkt PY und drücke Öffnen. Und dasselbe Projekt
wird wieder geöffnet, aber Sie müssen
das aktuelle Terminal schließen und ein neues öffnen. Um die
virtuelle Umgebung im
neuen Terminal zu aktivieren, sehen
Sie jetzt
dieses Ende hier. Und natürlich können Sie diese Datei jetzt
auch erneut ausführen, und die virtuelle
Umgebung wird zum Ausführen und
Abrufen der Ausgabe
verwendet. So können Sie die virtuelle Umgebung
im Visual Studio-Code
verwenden . Danke.
208. 207. Django-Projekt erstellen: Hallo, willkommen zurück. In diesem Video zeige
ich Ihnen, wie Sie ein
Jango-Projekt erstellen Was ist ein Jango-Projekt? Nun, wenn Sie
eine Web-App mit Jango erstellen, möchten Sie
zunächst ein Jango-Projekt
erstellen, bei dem es sich um eine Reihe von
Dateien handelt,
die
automatisch von Jango eine Reihe von
Dateien handelt,
die
automatisch von generiert werden Das werde ich dir jetzt
zeigen. Das sind also die Projektdateien. Aber dann können Sie diesem Projekt
Apps hinzufügen. Sie haben also ein Projekt, aber Sie haben möglicherweise mehrere Apps. In unserem Fall werden
wir zum Beispiel ein Projekt haben, aber dann werden
wir auch die Block-App
und die Übersetzer-App haben . Also zwei Apps, ein Projekt. Lassen Sie mich Ihnen nun zeigen
, wie Sie das Projekt erstellen. Dazu müssen Sie Jango installiert
haben und vorzugsweise
eine virtuelle Umgebung haben Ich habe dir
im vorherigen Video gezeigt, wie man
eine virtuelle Umgebung erstellt im vorherigen Video gezeigt, wie man
eine virtuelle Umgebung Ich habe jetzt diesen Ordner, das Stammverzeichnis, den Ordner
, der eine virtuelle Umgebung hat, die LOT-PY-Datei, die ich löschen werde
, weil wir sie nicht mehr benötigen. Also habe ich Jango installiert. Das heißt, ich kann jetzt
ein Projekt mit dem Befehl
jango admin erstellen ein Projekt mit dem Befehl
jango admin Jango enthält also
einige Befehle, mit denen verschiedene
Operationen mit Jango ausgeführt
werden können verschiedene
Operationen mit Jango ausgeführt
werden Also Jango admin erstellt mit diesem Befehl zusammen mit dem Befehl start project ein Jangle-Projekt,
und dann müssen Sie
einen Namen für ein neues Verzeichnis angeben,
das Jango erstellen
wird und dann müssen Sie
einen Namen für ein neues Verzeichnis angeben ,
das Sagen wir meine Seite. Und
dann Leerzeichen und ein Punkt. Der Punkt bedeutet, dass
der aktuelle Ordner
, der Jangled
Block Translator
ist, ein Projektordner ist, sodass die
Dateien in diesem Verzeichnis abgelegt werden Also führe diesen Befehl aus. Und dieser Ordner und diese
Datei werden erstellt. Und dieser Ordner enthält einige
andere Dateien. Also, was sind diese Dateien jetzt? Nun, wir haben diese Init-Datei, die eine leere Datei ist, und hier
drin ist sie optional Vielleicht können Sie später Dinge
platzieren, die sofort
ausgeführt werden sollen, wenn das Programm gestartet wird, wenn
die Web-App gestartet wird Also werde ich
das jetzt lassen, wir werden es leer lassen. Und dann haben wir diese
SG-Datei, sosg dot PY. Dies ist eine Konfigurationsdatei , die Sie möglicherweise
später ändern möchten , wenn Sie Ihre
Jangle-App auf einem SG-Server bereitstellen, und es gibt auch
einen anderen Servertyp Es hängt also davon ab, wo Sie es einsetzen
werden. Der andere Typ ist Wiz
G Server oder Wiz G, wenn dir dieser hier gefällt Das ist also die andere
Konfiguration, abhängig davon auf welcher Art von
Server Sie Ihr Jango-Projekt so platzieren , dass es sich auf einem
Online-Produktionsserver befindet ,
sodass es jeder sehen kann Und dann haben wir die
Einstellungen dieser PY-Datei. Dies wird alle
Einstellungen enthalten, also zum Beispiel die Zeitzone, den Ort der statischen Dateien
wie Bilder und CSS-Dateien, wir werden diese behandeln. Also ändere diese nicht. Und dann haben wir die
URL, das ist die PY-Datei. Dies wird im Grunde
die URL Ihres Projekts enthalten, wie die URL
gerootet werden soll und so weiter. Das war also meine Seite, und dann haben wir diese PY
verwaltet. Das ist eine Datei, die Sie normalerweise
nicht ändern, also wird sie so bleiben. Dies ist jetzt nützlich, wenn Sie Ihre neue
Python-Website starten. Also haben wir gerade
eine Jangle-Website erstellt und wir
können sie sehen, sodass wir die App
starten können , indem wir
Python Manage ausführen, das ist PY Also führen wir diese Datei mit Python aus und verwenden das Serverargument
Run. Führen Sie aus, dass wir diese Warnung
haben. Wir werden
das gleich beheben. Das ist also die Website URLNow. Wenn Sie Strg oder
Command drücken und dann dort klicken
, wird Ihre neue Website geöffnet Es gibt
jetzt also nicht wirklich
eine App und keine benutzerdefinierte App , da wir sie später hinzufügen werden Aber im Grunde bedeutet das
, dass es funktioniert. Um die Ausführung der App zu beenden, sollten
Sie am Terminal Control
C drücken. Und jetzt diese Nachricht hier. Nun, diese Nachricht
besagt, dass wir einen
SQL-Befehl ausführen müssen. Nun, das ist eine gute Sache
mit Jango, weil Sie nicht wirklich eine SQL-Abfragesprache
ausführen müssen Sie können einfach Python
Manage PY migrieren. Drücken Sie darauf und Jangle führt diese
Abfragen für Sie aus. Im Grunde sind dies also
Abfragen, die
einige Standardtabellen,
Datenbanktabellen, erstellen einige Standardtabellen,
Datenbanktabellen, Sie können auch sehen, dass eine
neue dbdt S Three-Datei
erstellt wurde , als wir
Python manage PY Migrate ausgeführt haben Mit diesem Befehl wurde
also eine SQL-Datenbankdatei erstellt, und Jango
verwendet standardmäßig SQL Three, aber Sie können auch Postgrad-SQL
verwenden Aber das kannst du tun.
Das können Sie ganz einfach auf dem
Produktionsserver
tun. Lokal ist es gut, SQLite Three
zu verwenden, was nur eine Datei ist und
alle Daten vorhanden sind, alle Tabellen Ihres
Projekts werden da sein Dieser Befehl hat also diese Datei
generiert. Außerdem wurden
alle Änderungen angewendet, die für die
Anfangsphase der JangoPject-Erstellung
erforderlich waren Es wurden also einige Tabellen erstellt, und später
möchten Sie vielleicht weitere
Änderungen an Ihren Tabellen vornehmen Ich zeige Ihnen, wie Sie
neue Tabellen mit
Jango und nicht mit SQL erstellen neue Tabellen mit
Jango und nicht mit SQL erstellen Mit Python ist
es also sehr einfach. Und sobald Sie eine
Tabelle im Python-Code erstellt haben, müssen
Sie diesen Befehl ausführen. Das übersetzt also Ihren
Python-Code in SQL-Abfragen. Sie müssen also keine
SQL-Abfragen mit Jango schreiben. Sie müssen nur einen einfachen Python-Code schreiben
. Ich zeige dir
, wie das geht, wenn wir die App später erstellen. Im Moment kann ich Ihnen zeigen, welche Tabellen
in dieser Datei erstellt wurden. Wenn Sie darauf doppelklicken, wird
es nicht angezeigt da Visual Studio-Code keine
SQLite-Datenbanken anzeigt Sie benötigen ein geeignetes Programm , um diese Datenbank zu sehen. Sie
müssen es nicht sehen. Ich möchte Ihnen nur
zeigen,
welche Daten darin zu Lernzwecken enthalten sind. Also habe ich hier ein Programm namens
DB Browser for SQL Light. Sie können
bei Google danach suchen und es installieren oder einfach hier sehen,
was ich tun werde. Sie benötigen dieses Programm nicht nur , um die Daten aus Neugier zu sehen. Sie möchten also die Datenbank
öffnen. Also das ist DB Sculi, drei
, dass wir die Datei haben. Sie sehen also, dass es hier mehrere Tabellen
gibt. Das sind eigentlich Tabellen,
die die Admin-Oberfläche betreffen . werden also noch keine Tabellen für Dinge wie
Blöcke oder andere Funktionen
erstellt Blöcke oder andere Funktionen , die wir
für unser Jango-Projekt haben werden Dinge in Jango werden also in Datenbanken
gespeichert, und Jango verwendet standardmäßig Culi
Three,
wie ich Ihnen bereits gesagt habe Jede dieser Tabellen enthält natürlich Daten, sodass
Sie Daten durchsuchen und diese Tabellen durchsuchen
können und Im Moment sind sie einfach leer, weil Sie sehen,
es ist einfach leer. Wir haben der Admin-Oberfläche noch keine Benutzer
hinzugefügt. Also, was ist die
Admin-Oberfläche? Wie auch immer? Nun, lass mich den Server
nochmal starten. Gehe auf die Website. Und wenn du zur URL gehst, also nach dem Port, machst
du Slash und dann Admin Geben Sie ein, Sie werden
dieses Login-Feld hier sehen. Sie benötigen den Benutzernamen
des Administrators und das
Passwort des Administrators. Derzeit haben wir noch keinen
Admin-Benutzer erstellt. Das ist auch der Grund, warum Sie sehen, dass
all diese Tabellen leer sind. Also keine Daten.
Es gibt also Tabellen, aber es gibt keine Zeilen
in diesen Tabellen. Später
werde ich Ihnen zeigen, wie
Sie einen Admin-Benutzer erstellen. Warum brauchen wir die
Admin-Oberfläche überhaupt? Nun, wir haben gesagt, dass wir eine Website erstellen werden , die Blogs enthält. Nun, wer wird diesen Blogs
Inhalte hinzufügen? Sind Sie der Entwickler oder vielleicht einige Autoren
, die Inhalte schreiben? Also diese Autoren, es
gibt zwei Möglichkeiten, diese Inhalte zu
schreiben. Entweder gehen sie zu Ihrem
Visual Studio-Code-Projekt und dann zeigen Sie ihnen die Python-Dateien mit dem
Inhalt oder die HTML-Dateien, der Inhalt
geschrieben wird, oder eine intelligentere Möglichkeit besteht darin, eine benutzerfreundlichere
Oberfläche zu haben, in der Sie diese Inhaltsfelder haben
und Optionen
zum Ändern der Also Schaltflächen und Toolboxen
und solche Dinge. Also ein echtes
Textverarbeitungserlebnis wie Microsoft Word oder
andere Textverarbeitungsprogramme So ist es für Autoren einfach, dieser Website kontinuierlich
Inhalte hinzuzufügen . Also gibst du diesen Autoren und mir Login-Benutzernamen und ein
Passwort, damit sie dann auf deine Website gehen
und hinzufügen
können, dass wir uns im nächsten Video die Admin-Oberfläche
ansehen werden. Das hatten wir also vorerst. Danke fürs Folgen.
Ich werde später mit dir reden.
209. 210. Datenbankmodell für die Blog-App erstellen: Hallo nochmal. In diesem Video werden
wir unseren Modellen einige Codes
hinzufügen , diese PY-Datei. Wie ich Ihnen erklärt habe, hat
eine Seite, eine Webseite, ein Modell, eine Ansicht und eine CML-Vorlage Das Modell ist also
in dieser Trio-Struktur niedriger. Deshalb werden wir
mit den Modellen beginnen. Was wir
erstellen müssen, ist eine Klasse, die einen Blockpost
darstellt. Nennen wir das also einen Beitrag. Nun, Post ist kein einfacher Kurs. Post sollte eine Klasse sein, die vom Modellmodul
erbt. Das macht diese
Klasse also zu einer Modellklasse. Modul ist also eine spezifische
Klasse, die von den Jango-Autoren, den Entwicklern von Jango, entworfen wurde
und Datenfelder enthalten
soll Was meine ich damit?
Nun, wir haben zum Beispiel gesagt, dass wir ein Titelfeld
wollen. Eine Webseite ist ein Titel. Wenn der
Ersteller des Inhalts also einen Titel erstellt
, wird dieser Titel im
Titelfeld
der Beitragstabelle gespeichert . Sie haben also gezeigt, dass ich
Ihnen diesen DB Viewer gezeigt habe
, ein Programm zum Anzeigen Daten, um die Daten
einer SQL-Datenbank anzuzeigen. Die SQL-Datenbank ist also diese
hier, DB Q drei, und dieser Beitrag wird
eine neue Tabelle in der Datenbank db dot
Sculi Three erstellen eine neue Tabelle in der Datenbank db dot
Sculi Three Das sind derzeit die
Tabellen, also gibt es hier keine Post-Tabelle, aber Sie werden sehen, dass eine
erstellt wird , wenn wir diese Tabelle
fertig stellen Also Titel ist jetzt Models
Was ist ein Titel? Ist es ein Pflegebereich? Ja. Ich denke, dieser Typ
würde zu einem Titel passen. Das ist also ein
Datenbankfeldtyp, und er erhält ein maximales
Längenattribut. Sagen wir, 200 Zeichen. Es wird also ein
Lehrbuch geben, das
bis zu 200 Zeichen für
den Titel des Blogs zulässt bis zu 200 Zeichen für
den Titel des Blogs Was haben wir dann noch? Inhalt. Also der
Körper des Blocks. Also, hier würde ich mich nicht für das Feld
Care entscheiden, weil das eher
für Dinge mit kleinen Textstücken
konzipiert ist . Das wäre eher
wie ein Textfeld. Und das kannst du
leer lassen. Und was sonst? Nun, Datum, Erstellt,
vielleicht sollten wir
Module Dot Date Time Field sein . Sie sehen also, dass
dieses Modellmodul von Jango all
diese Felder bereit hat Ein Datums-/Uhrzeitfeld wäre also jetzt
automatisch hinzugefügt gleich true, was bedeutet, dass wenn
der Inhaltsersteller einen neuen Block-Beitrag
von der Admin-Oberfläche aus erstellt , also
einen Titel, einen Inhalt schreibt Und dann wird es dort eine Schaltfläche zum
Speichern geben die
sie diese Schaltfläche zum Speichern drücken können und der Beitrag wird live geschaltet. Wenn sie drücken, wenn
der Inhaltsersteller diese Taste
drückt, wird
diese Klasse instanziiert und generiert das
aktuelle Datum und die aktuelle Uhrzeit, und das aktuelle Datum
und die aktuelle
Uhrzeit werden in
das Feld Erstellungsdatum der Beitragstabelle in
der
Datenbank db Suli Three eingefügt das Feld Erstellungsdatum der Beitragstabelle in
der Datenbank db Suli Die Datenbank hat mehrere Tabellen, pos ist eine der Tabellen, post hat Eines der Felder ist das. Okay, ich hoffe, das ergibt Sinn. Dann haben wir ein Slunk-Feld, das
den Teil der URL
nach der Domain aufzeichnet den Teil der URL
nach der Domain Also, wie gesagt, wenn deine Domain
example.com ist und es in deinem
Blogbeitrag um Hunde geht,
dann ist die Schnecke Slash Die vollständige URL
wäre also example.com slash DGS. Und hier schreibt der Nutzer,
der Ersteller der Inhalte, einfach Hund oder
wo immer er
will Der
Ersteller des Inhalts gibt
den Slug also in der Admin-Oberfläche ein , genau wie er es mit
Titelinhalten und anderen
Eingabefeldern dort tut Titelinhalten und anderen
Eingabefeldern dort Also Slug wären
wieder Models Punkt Slug-Feld. Es gibt also eine
spezielle Klasse, die das Slug-Feld in
Jangle
darstellt und als Slug-Feld Geben wir vielleicht eine maximale
Länge von 200 an. Es ist sinnvoll, keine sehr langen Schnecken zu
haben. Auf diese Weise kann der Ersteller
des Inhalts keine Slugs
eingeben, die länger
als 200 Zeichen sind Und es muss einzigartig sein,
also einzigartig ist gleichbedeutend Wenn admin, also der Ersteller des Inhalts einen Slag
eingibt, der
schon einmal eingegeben wurde, würde
das die Erstellung des neuen Slogs nicht
zulassen , da Sie nicht zwei Seiten
mit derselben URL haben können Ich würde alles durcheinander bringen. Daher
lässt dieses Argument nicht zu, dass doppelte URLs erstellt werden Dann haben wir den
Autor die Variablennamenmodule dieses Mal mit vier
Punkten verfassen Warum? Weil wir diesen Wert aus
einer anderen Datenbanktabelle beziehen werden
, die bereits von Jango erstellt wurde, und wir können ihn
von jangodt
Ctrip dot abrufen von jangodt
Ctrip Von Modellen importieren. Also von diesem Import,
Benutzer, richtig. Das ist auch eine Klasse, du kannst sie sehen, wenn
ich mit der Maus Und deshalb brauchen
wir in den
beiden Argumenten hier den Benutzer. Ohne
die Klammer Im Grunde
bedeutet ein
Fremdschlüssel-Feldtyp also , dass
der Wert dieses Datenbankfeldes aus einer anderen
Datenbanktabelle
stammt In diesem Fall handelt es sich um eine
Benutzerdatenbanktabelle. Und dieses Feld erstellt auf der Admin-Oberfläche
eine Dropdown-Liste in der der Inhaltsersteller zwischen
verschiedenen Benutzernamen
wählen kann . Es passiert also automatisch. Wir möchten jedoch
einige Parameter zum Löschen
des Verhaltens angeben , das
beim Löschen des Benutzers auftritt. Dieser Benutzer wird also aus
der ursprünglichen Datenbanktabelle gelöscht. Also kaskadieren, aber du
brauchst das nicht, also lösche das und
lass es einfach so Also, was bedeutet das? Nun, das bedeutet, dass, wenn ein Benutzer aus
der Benutzerdatenbanktabelle gelöscht wird, auch
die Benutzerbeiträge gelöscht werden. Das ist es, was Cascade tut. Ich lösche dieses Komma hier, und das letzte Feld, das wir hinzufügen
wollen, ist Status, der Status des Beitrags, was
Modellen dieses Integer-Felds entsprechen würde Auf der Admin-Oberfläche wird
es eine
Status-Dropdown-Liste geben
, die zwei Optionen enthält Entwerfen und veröffentlichen. Der Ersteller des Inhalts
könnte also wählen, ob diesen Artikel entweder
als Entwurf oder als veröffentlicht
speichern möchte. Das würde es also
für Inhaltsersteller einfacher machen , Blogs zu
organisieren, weil sie einen Artikel
als Entwurf speichern
könnten und wir
dann in unserem Jangle Bedingung stellen
könnten,
solche Artikel,
die den Status Entwurf haben,
nicht zu veröffentlichen , sondern nur diejenigen, die den Status veröffentlicht
haben Das wäre also eine gute Möglichkeit, zwischen den beiden
Arten von Beitragsartikeln zu unterscheiden Wir müssen also Wahlmöglichkeiten haben, was einer Variablen entspricht, sagen
wir, Status
und was ist Status? Nun, Status muss eine
Variable sein, die wir hier erstellen müssen. Also ein Status, der einem
Sturz von zwei Stürzen entspricht. Einer wäre,
sagen wir, null Forellen. Die andere
wäre eine Veröffentlichung. Und der Standard
wäre vielleicht Entwurf. Null steht also für Entwurf und Eins für Veröffentlichen. den Administrator und den Ersteller der
Inhalte wird nun entweder Entwurf oder Veröffentlichung
in der Drop-down-Liste angezeigt, und damit ist
unser Kursbeitrag abgeschlossen Stellen Sie jetzt sicher, dass Sie diese Datei
speichern, Datei speichern oder Command
S oder Control S, und dann müssen Sie hier etwas
tun Wir müssen dieses
Modell auf unsere Datenbank anwenden. Also müssen wir
einige SQL-Abfragen ausführen. Aber wie ich bereits erwähnt habe, müssen
Sie
SQL-Abfragen nicht explizit ausführen. Sie müssen lediglich zwei Befehle ausführen Python Manage Punkt PI führen
Migrationen durch.
Wenn Sie sich also
das DB-Browserprogramm ansehen, Wenn Sie sich also
das DB-Browserprogramm ansehen dem wir die Daten sehen, haben
wir vorerst keine Tabellen
namens Posts, auch wenn ich diese Aktualisierung aktualisiere, gibt es keine solchen Aber jetzt sehen Sie, was
passieren wird, wenn ich diesen Befehl ausführe. Okay, hier passiert etwas,
Migrationen wurden angewendet, also wurde die
Datenbankstruktur geändert, und dann müssen wir einen weiteren Befehl
hinzufügen,
nämlich dass Python
Punkt PY verwaltet und diesmal migriert Also diese und jene
wenden wir SQUAR-Abfragen an, die diesem Modell
entsprechen Wenn ich jetzt hierher gehe,
aktualisiere, wirst du sehen diese Tabelle als Blockpost
hinzugefügt wurde Der Name dieser Tabelle wurde also unter Verwendung des Anwendungsnamens Block
und Unterstrich
erstellt, Sol Jango
macht das automatisch, und dann nach dem Unterstrich
Post, was der
Name des Moduls ist Wenn ich also diese Tabelle auswähle, siehst
du jetzt, dass wir
diese Datenbankfelder haben Hier sehen wir also alle
Felder, die wir erstellen. ID ist ein Feld, das automatisch
erstellt wird, aber wir haben
Titelinhalt, Erstellungsdatum, Slog-Status und
Autoren-ID. Richtig. Damit ist die
Erstellung unseres Modells abgeschlossen. Jetzt müssen wir eine Ansicht erstellen. Lass uns das im nächsten Video machen.
210. 213. Aufrufe in Djago: Hallo. Zuvor haben wir eine HTML-Vorlage
erstellt, die grundsätzlich
für die
Darstellung des Inhalts
im Browser verantwortlich ist. Aber diese HTML-Vorlage sollte
irgendwie mit dem
Modell verbunden sein , das in der PY-Datei enthalten ist. Diese HTML-Vorlage enthält
einige Variablen, die
darauf warten, mit
Inhalten mit Werten gefüllt zu werden Titel muss also
aus der Datenbank kommen, aus der SQL-Datenbank, das ist diese Datei hier. Deshalb müssen wir einen
Weg finden, die Vorlage
mit dieser Datenbank zu verbinden. Und da in Python dieser Klassenbeitrag
der
Repräsentant dieser Datenbanktabelle ist , müssen wir Block
that HTML mit diesem Klassenbeitrag verbinden . Hier bietet sich die
Ansicht eines Zwischenhändlers an. Also gehen wir in Ansichten hinein und
erstellen eine Ansicht. Nennen wir das Blockansicht. Du kannst es aufrufen,
wo immer du willst. Das ist nur ein Name
für die Klasse. Aber ich möchte
diesen Namen von
den anderen Klassen unterscheiden , damit du die Dinge
leichter verstehen kannst. Also Klassenblockansicht. Es ist eigentlich eine sehr einfache
Klasse. Sie sollte eine Modellvariable bekommen. Jango erwartet also von dieser Klasse, dass es
eine Modellvariable gibt, und diese Modellvariable
sollte auf
den Namen des Moduls zeigen den Namen des Moduls , das mit dem Block
verbunden werden soll Im Grunde haben wir also wieder eine Modulvariable
und auch eine Vorlage Namensvariable. Das
ist es also, was diese Klasse macht. Das ist alles. Es verbindet
das Modell mit der Vorlage. Das Modell wird post sein, aber post ist kein importierter
Name in diesem Namensraum, also müssen wir ihn
aus Modellen importieren, post importieren. Sie sehen jetzt, dass der Beitrag verfügbar ist. Daher ist diese
Zeile jetzt gültig. Und der Vorlagenname,
alles was Sie tun müssen, ist einfach den Namen über die Vorlage zu geben, was
Blog-Punkt-HTML ist. Und das ist alles. In Ordnung, so weit, so gut. Wenn wir
den Server jetzt
mit Python betreiben , verwalten Sie diesen PY Run-Server,
aber seien Sie vorsichtig. Ich bin hier nicht in einer virtuellen
Umgebung, also schließe das und öffne ein neues Terminal und verwalte erneut Python
diesen PY Run-Server. Und manchmal bekommst du Fehler
wie diesen hier, Templates Dear OS ist in den Einstellungen nicht
definiert. Gehen wir also zu den Einstellungen, wir sind einfach hier, und wir brauchen offensichtlich OS
die Betriebssystem-Standardbibliothek, die Verzeichnisoperationen
mit Ordnern und Dateien durchführt. haben wir gebraucht,
als wir
die Variable Templates
zuvor hier als Liebe deklariert haben. Speichern Sie die Datei und führen Sie sie erneut aus. Diesmal wurde der Server gestartet. Das ist also die Startseite, aber es gibt keine anderen
Webseiten als diese. Wenn Sie beispielsweise zu Hunde gehen, erhalten
Sie eine Fehlermeldung wegen Hunden
oder Katzen. Natürlich haben wir
nichts, weil wir
keine Einträge in unserer
Blocktabelle in der Datenbank haben . Im nächsten Video werde ich einige Dummy-Daten
über ein Programm
namens DB-Browser für SQL Light in
unsere Datenbanktabelle eingeben über ein Programm
namens DB-Browser für SQL Light in
unsere Datenbanktabelle namens DB-Browser für SQL Light Wenn Sie dieses Programm nicht haben oder es nicht installieren möchten, ist
das in Ordnung, da dieses
Programm nur optional ist, aber Sie können es kostenlos installieren oder bei Google danach
suchen Normalerweise möchten wir
die Daten über Admin eingeben, aber nur zum Testen möchte
ich
jetzt schnell einige Daten haben, möchte
ich
jetzt schnell einige Daten haben damit ich Ihnen erkläre, was vor
sich geht, und Sie verstehen, wie
die Dinge funktionieren. Wir sehen uns also im nächsten Video.
211. 214. URL-Muster: Hallo. Zuvor haben wir eine Ansicht
erstellt, bei eine Klasse
handelt,
die das Modell mit einer Vorlage verbindet. In diesem Video möchte
ich nun
einige Dummy-Daten in
unsere Datenbanktabelle eingeben einige Dummy-Daten in
unsere Datenbanktabelle Unsere
Datenbankdatei ist also DQ drei und enthält mehrere
Tabellen Ich möchte den DB-Browser für
SQLite verwenden und dann
die Datenbank öffnen Und dann ist das
ein Stammverzeichnis und gehe zu db cul Three
und doppelklicke dort Dann möchten Sie
Daten durchsuchen und die Tabelle mit den
Blogbeiträgen suchen Das sind also die Felder
der Datenbanktabelle. Sie möchten
sie etwas erweitern, um sie besser sichtbar
zu machen, ebenso wie das Erstellungsdatum, Slug-Status des Beitrags, also Entwurf oder Veröffentlichung, und die Autoren-ID, die eine Zahl sein könnte Der erste Autor, der
erstellt wird, hat also eine Vorstellung
von einem und so weiter Lassen Sie uns also manuell eine neue Tabellenzeile
eingeben. Wie ich Ihnen bereits sagte, sollte
dies natürlich über die Admin-Oberfläche eingegeben werden. Aber vorerst wollen
wir nur zum Testen zu dieser Schaltfläche gehen, drücken und schon wird eine neue Tabellenzeile
eingefügt. Die ID wurde also
automatisch generiert. Also für die erste
Reihe wird es eine sein. Für die zweite wird es
automatisch zwei inkrementieren. Zwei und so eins. Also lass uns etwas
für den Titel hinzufügen wie Hunde und Inhalt. Hunde sind gut. Das reicht vorerst. Datum der Erstellung. Das
sollte ein Format wie 2022 haben, 12 für den Monat, zehn für
den Tag des Monats, Schnecke So wie das. Dogs and Jungle kümmert sich um die Erstellung
der kompletten URL. Also example.com, es
wird einen Schrägstrich hinzufügen und dann wird es den
Hund nach dem Schrägstrich hinzufügen Status, das war
Entwurf oder veröffentlicht. Sie sehen also,
wir haben Null oder Einsen. Geben wir also eine für die
veröffentlichte Autoren-ID ein, den ersten Benutzer der Datenbank, wir haben bereits
einen Superuser erstellt. Dieser Benutzer hat also die ID eins. Richtig. Sobald Sie das getan haben, möchten
Sie
Änderungen in die Datenbankdatei schreiben. Ordnung, und dann können Sie
einfach die Datenbank schließen und die Zeile ist da. Lassen Sie uns nun diesen Slug, diese URL
, mit unserer
Views Blockansicht verbinden URL
, mit unserer
Views Blockansicht Um das zu tun, musst du in
deinen Blockordner gehen und mit der
rechten Maustaste klicken und
zu Neue Datei gehen und
eine L dot-py-Datei-URL erstellen Und hier
möchten Sie Import-Ansichten
vom aktuellen Standort
importieren. Also importieren wir
das Views-Modul. Es ist eine Datei, aber wenn Sie Dinge
importieren, die ein Modul sind, wird
daraus ein Modul. So nennen wir es. Views ist jetzt hier verfügbar, und wir müssen auch
etwas anderes aus der Jango-URL importieren,
ein Modul, URL ist ein weiteres
Modul des Jangoimport-Pfads Und wir brauchen jetzt diesen Pfad
, der eine Funktion zum Erstellen
einer Liste mit URL-URL-Mustern ist einer Liste mit URL-URL-Mustern Also teile ich das auf
, weil es unterschiedliche
URL-Muster enthalten
kann Das erste Muster, an dem wir interessiert
sind,
wird also durch
die Pfadfunktion erstellt Also, was ist das Muster? Nun, es ist Schnecke, Säule
und nochmal Schnecke, mit dieser Klammer zum
Öffnen und Schließen Wenn der Benutzer also eine bestimmte URL
besucht, lassen Sie mich hier etwas
aufschreiben Zum Beispiel example.com
Slug,
sie schreiben natürlich wie Hunde, aber Hunde,
wir sagen Jango, er soll im Schneckenfeld nach Hunden
suchen Also geht Jango zu unserer
Tabellendatenbanktabelle und sucht
in jeder Zeile nach
Hunden in jeder Zelle Also wird
es in jeder Zeile
des Schneckenfeldes nach Hunden suchen Und wenn es eine
Zeile mit Hunden findet, wird
es Blockansicht
ausführen, die Klammer
löschen und
Blockansicht als Ansicht markieren Also führe diese Klasse als Ansicht aus. Und wir müssen hier noch etwas
anderes angeben, das wir später verwenden werden. Es ist ein Name.
Was eine Zeichenfolge sein sollte, sagen wir, Blockansicht. Dies ist ein Name, den wir
möglicherweise später benötigen, daher ist es eine gute Idee
, ihn jetzt hier zu haben. Ich hoffe also, dass du
mir bis jetzt folgst. Wir müssen auch etwas
anderes in Bezug auf URLs tun. Sie sehen, dass es
eine andere URL gibt, die eine PY-Datei ist, aber sie befindet sich auf meiner Website, die die Konfigurationen
des Dschungelprojekts enthält, nicht die Jungo-Apps Diese Datei sieht also schon
so aus. Sie wird
automatisch von Jango erstellt, und hier ist diese hier auch eine
URL-Mustervariable, genau wie diese hier,
URL-Muster, URL-Muster Aber das
will jetzt etwas über die URLs
der Block-App wissen Bei jeder App, die Sie erstellen, möchten
Sie also das
URL-Muster hier deklarieren. Nach dem Komma
erstellen wir also ein weiteres Listenelement
, diesmal Pfad, es muss so aussehen Also eine leere Zeichenfolge, die das
Home-Verzeichnis bezeichnet. Also wenn das
Home-Verzeichnis besucht wird und dann etwas anderes
nach dem Schrägstrich vom Benutzer in die
Adressleiste des Browsers
geschrieben wird vom Benutzer in die
Adressleiste des Browsers
geschrieben und etwas anderes von den Blogs
definiert wird Blog ist der Name der App. Blockieren Sie also, dass der
Ordnername hier reinkommt, URL. URL ist der Name der
URL PyFleo, die Block-App. Also Blog-Punkt-URL. Du könntest hier auch
etwas anderes schreiben. Du könntest
zum Beispiel MyBlocks schreiben , in diesem Fall würde
Jango Benutzer erwarten Kein example.com-Schrägstrich Dogs,
sondern example.com-Schrägstrich myBlocksSlash sondern example.com-Schrägstrich Aber das wollen wir nicht, also lassen wir es so
. example.com Schrägstrich DOG. Jetzt bekommen wir diesen Fehler. Include ist nicht definiert, und wir müssen es aus den
Importpfaden und Include von
Jungle URLs eingeben . Speichern. Stellen Sie außerdem sicher, dass
Sie alle Dateien speichern. Also speichere das auch. Steuerelemente, speichern Sie auch die
Ansichten. Also alles, was Sie mit
diesem schwarzen
Visual Studio-Code sehen , bedeutet, dass er noch nicht gespeichert
wurde Schauen wir uns nun an, welche Fehler wir bekommen: Typ Objektblockansicht hat kein Attribut als Ansicht,
schauen wir, was hier vor sich geht Das passiert in dieser Datei, also blockiert USPI den Schrägstrich
URL PY, der hier steht Diese Klasse hat dieses Attribut
also nicht .
Lass uns einen Blick darauf werfen. Diese Klasse hat dieses Attribut natürlich
nicht. Sie hat nur Modell- und
Vorlagennamenattribute. Keine Methode, die als Ansicht aufgerufen wird. Das liegt daran, dass ich
vergessen habe,
von einer speziellen View-Klasse zu erben , die wir importieren müssen Von Jango aus also von Jangle
Dot Vs Import Generic und dann von Generic aus können
wir auf die
Detailansicht zugreifen,
ohne die Klasse für die
Detailansicht zu löschen Also lösche die Klammer. Das bedeutet also, dass diese
Klasse tatsächlich eine View-Methode Sie können also mit der rechten Maustaste klicken
und zur Definition gehen. Und natürlich gibt es hier
keine Methoden, aber es erbt von
einigen anderen Methoden Wenn wir also zur Basisdetailansicht
gehen, gehen wir zur Definition, das
erbt auch von diesen beiden Also vielleicht hat View
diese View-Funktion. Ja, wir haben es gefunden. Also
das ist die Methode. Es gibt also eine
Vererbungskette, und wir haben jetzt
über unsere Blogansichtsklasse Zugriff
auf diese Methode . Richtig. Speichern Sie diese Datei. Und jetzt ist es an der Zeit,
unsere App auszuprobieren und Sie möchten
zu dieser URL gehen Das ist
also zu erwarten. Die Homepage ist also noch
nicht konfiguriert. Wir haben keine
URL-Muster, die Jangle
sagen, was zu tun ist, wenn
Leute die Homepage besuchen Was du
stattdessen suchen solltest, ist einer deiner Blöcke. Also momentan haben wir Hunde, die Hunde schlacken.
Erinnerst du dich daran? Ich habe es in die Tabelle eingefügt und wir erhalten diesen Fehler. Vorlage existiert nicht. Ein leicht zu behebender Fehler bei Hunden. Also hat Jango erkannt, dass wir einen Hundeeintrag in
der Datenbank
haben , denn wenn
Sie es für Katzen versuchen würden, würden
Sie einen weiteren Fehler bekommen Diesmal bekamen Sie also, dass
die Seite nicht gefunden wurde, und Jango hat diese Muster ausprobiert und
keine Schnecke für Katzen gefunden Hunde sind also etwas anderes, aber die Vorlage wurde nicht gefunden Also Blog-Punkt-HTML. Dies ist normalerweise ein Problem bei Fehlkommunikation
mit Jangle Jango ist also nicht in der Lage
,
den Pfad von Blockpunkt-HTML zu finden den Pfad von Blockpunkt-HTML Also lass uns nachschauen.
Blockpunkt-HTML ist hier korrekt. Die Ansicht hat den
Namen also korrekt, und dann schauen wir uns die Einstellungen
an. Vorlagen. Der Name
ist hier korrekt. Das sieht also gut aus, aber
wenn Sie hier nach oben scrollen, haben
Sie die Template-Variable. Und das hat jetzt einige
Parameter für Vorlagen. Und einer dieser
Parameter ist DRS. Das sind also Schlüssel
dieses Wörterbuches. Bend Derski. Der DrSki erwartet einen Wert, und derzeit ist es
eine leere Liste, aber Sie müssen hier
die Liste der
Vorlagenverzeichnisse deklarieren die Liste der
Vorlagenverzeichnisse In diesem Fall haben wir also nur
eines, weil Sie mehr haben könnten, aber wir haben eines, also müssen wir das beim Speichern deklarieren und wir
erhalten diesen anderen Fehler.
Die Vorlage
deer is not defined, natürlich, weil wir
sie hier verwenden , bevor wir sie definiert haben Also schneide das von dort ab und
setze es über seinen Verwendungszweck. also über dieser
Template-Variablen Geben Sie sie also über dieser
Template-Variablen einfach hier
aus. Sicher. Und unser Server
wurde unterbrochen, also wollen wir ihn erneut ausführen. Python verwaltet diesen
PY Run-Server. Mal sehen, was wir dieses
Mal bekommen. Gehe zum Browser. Und hoppla, wir kriegen den Block. Hunde, Hunde sind gut und bearbeite den Namen des
Autors. Es funktioniert gut. Damit ist dieses Video abgeschlossen. Lassen Sie mich das zusammenfassen,
damit Sie wissen, wo Sie bisher
stehen Wir können die Bedenken bezüglich
der Benutzer-URL ausräumen. Wenn sie also beispielsweise den
Schrägstrich TOC von example.com eingeben, wird
dieser URL-Punkt PY ausgelöst, wodurch die
Ansichten und Module bereitgestellt Es verbindet also die
beiden miteinander, um Daten aus der Datenbank
abzufragen abzufragen Diese Daten werden mit
geschweiften Klammern in der HTML-Vorlage in
diese Variablen eingefügt mit
geschweiften Klammern in der HTML-Vorlage in
diese Variablen Und diese
werden dann natürlich im
Browser für den Benutzer gerendert Und wie Sie
dieses Mal gesehen haben, habe ich gerade einige
Daten manuell mit
einem Drittanbieterprogramm eingegeben , das auf drei SQL-Datenbanken
zugreift Aber normalerweise wollen
wir, wie Sie in den nächsten Videos
sehen, Daten über
eine Admin-Oberfläche abrufen Also das
werden wir als Nächstes tun. Wir werden
die Admin-Oberfläche erstellen und dort einige Daten eingeben.
212. 215. Ansichten der Admin-Benutzeroberfläche erstellen: Willkommen zurück. Bisher konnten
wir diese Webseite mit Jango erstellen
und in diesem Video werden
wir an
der Admin-Oberfläche arbeiten Insbesondere werden
wir eine Option hinzufügen, Blogbeiträge
über die Admin-Oberfläche hinzugefügt
werden können Dafür benötigen Sie also
einen Benutzernamen und ein Passwort. Denken Sie daran,
dass wir das zuvor erstellt haben, aber wenn
Sie das vermissen , können Sie jetzt mit
dem Befehl Python
erstellen. Verwalte Punkt PY, erstelle einen Superuser. Ich habe das schon gemacht, also werde ich das nicht noch einmal tun. Deshalb werde ich den Server
starten und zur Admin-Oberfläche gehen und mich mit meinen Anmeldeinformationen
anmelden. Jetzt siehst du, dass
wir hier nur neue Benutzer und neue
Gruppen erstellen können , aber keine Beiträge. Was wir also tun müssen,
ist, zum Code zu
gehen und dann zum Blog
und dann zu Admin PY zu gehen. Jetzt wollen wir also ein Modell
erstellen. Hier wollen wir unsere Modelle
registrieren, was das
Postmodell in den Modellen PY ist. Also dieses hier, wir wollen das aus Admin PY
importieren, also aus diesem Modell den Beitrag importieren. Dann wollen wir
das mit Admin registrieren , die Seite, die sich
mit Kleinbuchstaben registriert, und dann geht der Beitrag los. Ohne die Klammern,
also nenne nicht post, sondern deklariere es einfach dort Speichern Sie diese Datei und
überprüfen Sie die Admin-Oberfläche. Also aktualisiere, und du solltest jetzt Beiträge hier
sehen. Wenn Sie also auf
AD klicken, fügen Sie den Titel hinzu. Nehmen wir an, CATs Katzen
sind auch gut. Die Schnecke könnten Katzen sein
oder wo auch immer du willst. Überarbeitet den Autor
und lässt ihn veröffentlichen. Sie sehen also, das
sind alle Felder von
Modellen, die PY mit den Titeln Content
Slog, Autor und Status betitelt Also entwerfen oder veröffentlichen.
Klicken Sie auf Speichern. Gehen Sie dann zum Browser
und gehen Sie diesmal zu CATS, und Sie sehen, dass der neue Beitrag
gerade da ist, so einfach ist das. Nun, das ist optional,
aber wenn Sie möchten, können
Sie
hier einige Spalten hinzufügen , um einige
Details zu diesen Beiträgen hinzuzufügen. Den Erstellern von Inhalten wird
diese Ansicht also angezeigt, wenn
sie Beiträge erstellen. Du solltest ihnen also die
Arbeit erleichtern, damit sie hier an
dieser Stelle neue Blöcke
finden können . Zuallererst
möchten wir sehen, dass
der Name jedes Blogs Post-Objekt
eins, Post-Objekt zwei ist. Das macht es sehr
schwierig, den
gewünschten Beitrag
für den Ersteller des Inhalts zu finden . Wie können wir hier also
den Titel anstelle
dieses wenig hilfreichen Namens anzeigen den Titel anstelle
dieses wenig hilfreichen Namens Aber zuallererst,
woher kommt das? Was denkst du über das Post-Objekt? Es scheint mir, dass Post Post der Name
der Model-Klasse ist. Das ist also eigentlich der
Name dieser Klasse. Python, wenn Sie eine Klasse haben und
sie einfach
ausdrucken, diese Klasse ausdrucken, Python druckt einfach den
Namen dieser Klasse aus. Ich glaube, das weißt du. Lass mich dir
zeigen, was ich meine. Lassen Sie mich also eine
Python-Shell öffnen und Sie haben eine Klasse. Nennen wir diesen Beitrag auch. Einfach bestehen. Wenn
Sie also Post drucken, erhalten
Sie diese Art von Ausgaben oder sagen Sie einfach Post, das Gleiche. Also versucht Jango,
eine String-Repräsentation
dieses Klassenposts zu bekommen eine String-Repräsentation
dieses Klassenposts Aber wir können das ändern, indem eine magische
Methode
hinzufügen. Es heißt STR. Eigentlich heißt es Unterstrich,
STR, Unterstrich, Unterstrich. Also doppelte führende und
nachfolgende Unterstriche. Klammern steht self als erstes Argument, Spalte,
und
das sollte jetzt
eine bessere Repräsentation
dieser Klasse liefern , was wäre self self
repräsentiert eine Klasse selbst,
und title ist ein Attribut Dieser Titel wird ausgedruckt wenn die Pose ausgedruckt
wird Also wenn ich das speichere, gehe ich zu Admin. Auffrischen. Wir erhalten die Titel der
einzelnen
Blogbeiträge, Katzen und Hunde. Wenn du
hier nebenbei
noch mehr Inhalt hinzufügen
möchtest , solltest
du zum Adminbereich gehen und hier eine neue Klasse
erstellen. Nennen wir diese
Klasse Post Admin, die
von Admin Model Admin erben sollte Das ist also so, dass es keine Argumente
braucht. Model Admin ist eine Art von Klasse, genau wie wir Modelle haben, die für normale Klassenmodelle
modellieren. Wir haben spezielle Admin-Modelle, also erben wir davon, und diese erwarten jetzt eine Listenanzeigevariable,
falls Sie diese übergeben wollen,
die ein
Tuple mit Zeichenketten sein sollte, und die Zeichenketten sollten die
Namen der Modellfelder sein Also, was möchtest du dort nebenbei
zeigen? Hier. Wir haben den Titel schon, also lassen Sie uns die
Erstellungsdaten und den Autor zeigen. Ja. Lass uns das machen. Also Datum der Erstellung.
Das ist der Name. Ja, Erstellungsdatum und
Autor in Admint PY Author. Nein. Okay, das haben wir gemacht, aber das ist nur ein
Kurs, der herumschwirrt. Jango weiß nichts
über diesen Kurs. Also wollen wir Jango irgendwie sagen , dass Jango das Projekt diese Klasse berücksichtigen
muss, also müssen wir diese Klasse
registrieren Das versuche ich zu sagen. Also poste dort Admin,
nur die Klasse. Du musst es nicht so nennen. Machen Sie dort etwas Platz für die Sichtbarkeit und speichern Sie es und laden
Sie es erneut Und das ist die
Ansicht, die wir bekommen. Ich weiß also, dass es nicht
ideal ist, aber ich werde es reparieren. Das Datum, an dem der Beitrag erstellt
wurde, und der Autor. Titel ist also verschwunden, denn wenn Sie diese
Listenanzeigevariable angeben, ignoriert die
Admin-Oberfläche den Klassennamen, sodass die
Klassendarstellung hier nicht ausgedruckt wird, sondern alles,
was Sie hier angegeben haben. Daher müssen
Sie als ersten Titel diesen Namen
hinzufügen. Die Reihenfolge der Saiten
hier wird also von Jango respektiert. Jetzt haben wir also Titel,
Erstellungsdatum und Autor Falls du dich fragst, warum das Erstellungsdatum
für Hunde leer ist, nun ja, das liegt daran, dass
ich,
wenn du dich erinnerst, manuell
ein RO für die Hunde eingegeben habe. Blogbeitrag, und offensichtlich
habe ich das richtige
Datumsformat nicht manuell eingegeben. Deshalb
weiß Jango nicht, was er hier anzeigen soll. Aber wenn du einen Beitrag auf
dem richtigen Weg über
die Admin-Oberfläche erstellst , kann
Jango automatisch das aktuelle Datum
generieren, das war's für dieses Video Als Nächstes kümmern wir uns um die Homepage, da sie
derzeit nicht existiert Lassen Sie uns die Homepage
im nächsten Video erstellen. Sehen Sie hier.
213. 216. Erstellen der Homepage: Hallo, willkommen zurück. Zuvor haben wir zwei
Blogbeiträge
erstellt, Katzen und Hunde. Unsere Homepage funktioniert
jedoch nicht. Wie fügen wir also eine Homepage hinzu? Lass uns das in diesem Video machen. Im Moment werden wir
die Dinge einfach halten. Wir werden
nur eine Homepage haben steht
, dass dies eine Homepage ist. Aber später werden
wir
automatisch eine Liste von
Blogbeiträgen auf der Homepage generieren . Lassen Sie uns vorerst nur
eine einfache HTML-Seite ,
damit Sie das Erstellen
neuer Seiten im Dschungel üben können. Oh, Sie wissen mehr oder weniger,
wie die Dinge jetzt funktionieren, aber lassen Sie uns das wiederholen. Also wo fangen wir an? Beginnen wir mit der Erstellung
eines Moduls, einer Ansicht
oder einer HTML-Vorlage, sodass Sie möglicherweise immer noch nicht
wissen, wo Sie anfangen sollen. Aber ich würde vorschlagen, dass Sie diesem Ansatz
folgen. Denken Sie immer an den Benutzer. Also löse das
Problem vom Benutzer aus. Was der Benutzer sieht, ist der HTML-Code. Dann gehen Sie in den Stufen nach unten,
bis Sie das Backend erreichen, die Modelle
oder die Ansichten. Beginnen wir also mit dem Aufbau der Seite, indem wir an den Benutzer
denken. Daher müssen Sie
eine HTML-Vorlage erstellen , um diese dem Benutzer zu
zeigen. Gehen Sie also zu Vorlagen und klicken Sie mit der
rechten Maustaste darauf und gehen Sie zu Newfle. Dann wird
die Homepage normalerweise als
Indexpunkt-HTML bezeichnet Dies ist eine Standardmethode, aber Sie können auch jeden
anderen Namen schreiben, den Sie möchten Also werde ich das
Indexpunkt-HTML behalten. Nochmals, das Tok, dann hast du HTML-Tags und solche
Body-Tags. Lass uns hier etwas
statischen Text schreiben. Das ist die Homepage. Aber wie kann der Benutzer diese HTML-Vorlage
bekommen? Was machen sie? Nun, sie geben eine URL
direkt in ihren Browser ein. Ich meine, sie könnten diese URL
auch bei
Google finden oder sie direkt in ihren Browser eingeben
. Für uns spielt es keine Rolle, aber sie müssen
irgendwie eine URL in ihren Browser eingeben, die wie example.com wäre.
Das ist eine Homepage Also müssen wir zu den
URLs unserer Blog-App gehen. Also diese URL, das ist
PyFile, nicht die URL, das ist eine PY-Datei von meiner Site. Damit sind wir fertig
. Wir sind reingegangen. Wir haben Jango von der URL erzählt, das ist PyIL unserer
App und das ist alles Wir schließen das jetzt und
arbeiten an der App-URL. Also die Blog-URL, die diese Liste von
Path-Funktionsaufrufen enthält. Diese Funktion wird also mit zwei Argumenten
aufgerufen, einem hier, einem hier ,
drei, und
einem dritten hier drin. Jetzt müssen wir also einen weiteren Aufruf
hinzufügen. Pfad. Diesmal ist es
nur eine leere Zeichenfolge. Vorher, nach dem
Domainnamen, hatten wir den Slug. Aber jetzt, nach dem
Domainnamen, haben wir nichts mehr. Also lass es einfach eine leere
Zeichenfolge da. Ein Komma Oh, jetzt haben wir Ansichten. Okay? Also gehen wir zu unserer Roadmap über,
eine Seite zu veröffentlichen Also Views, wir wollen jetzt
eine weitere Ansicht in Views PY erstellen. Also lass
es uns einfach zuerst hier schreiben. Wir werden es Home View
nennen. Homeview Dots View wird also die Methode dafür
sein. Also müssen wir Aview aufrufen. Geben wir ihm einen Namen, damit wir ihn vielleicht später verwenden können Home Underscore-Ansicht,
eine Zeichenfolge, richtig? Und dann erstelle eine Ansicht. Also eine neue Klasse. Die Startansicht der Klasse stammt aus der generischen Detailansicht. Eigentlich sollte es nicht daraus
kommen, aber lassen wir es vorerst
so. Und das Modell jetzt. Nun, diese Seite hat nicht
wirklich ein Modell. Es braucht eigentlich kein
Modell, denn seht ihr, das ist
nur eine statische Seite. Es werden keine Daten aus einer Datenbank wie Blockpunkt-HTML abgerufen. Sie sehen, im Blog-HTML holen
wir uns diese Daten
aus der Datenbank Dies ist hier nicht der
Fall, sodass Sie Ansichten ohne Modelle haben
können Alles, was Sie hier tun möchten, ist Vorlagenname, der dem Namen Home entspricht,
tut mir leid, Index-Punkt-HTML. Das heißt,
wenn Benutzer diese URL aufrufen, ruft
diese Ansicht diese Vorlage auf
, sodass aufrufen, ruft
diese Ansicht diese sie
im Browser des Benutzers
gerendert wird . Das ist es. Stellen Sie sicher
, dass Sie speichern, diese PY verwenden, stellen Sie sicher, dass Sie die URL PY speichern, stellen Sie sicher, dass Sie das
Indexpunkt-HTML speichern. Und dann probiere die Seite aus. Das ist also die Homepage, und sie scheint ein Problem zu haben. Jetzt tauchen also Probleme auf. Es heißt, dass in der Startansicht
ein Abfragesatz fehlt. Sie müssen also
das Home-View-Modell definieren. Das Problem dabei
ist, dass
dies in Ansichten nicht der richtige
Ansichtstyp für Ansichten ist , die einfach eine Vorlage
rendern, ohne Daten
aus einem Modell abzurufen. Daher möchten Sie in
diesem Fall stattdessen eine Vorlagenansicht verwenden. Speichern und aktualisieren. Und das ist die
Homepage. Es funktioniert. Du kannst es sehen, wenn ich es vergrößere. Richtig. So können
Sie also weitere Seiten hinzufügen. Und Sie können jetzt auch
den Unterschied zwischen
verschiedenen Ansichtstypen verstehen . Also Detailansicht und
Vorlagenansicht. Vorlagenansicht bedeutet
, dass Sie nur eine Vorlage rendern
müssen ,
ohne Daten aus meinem Modell Dies ist eine komplexere Ansicht , in der Daten aus Modellen abzurufen. Dies ist eine komplexere Ansicht
, in der Daten aus Modellen
abgerufen und an Vorlagen weitergegeben werden. Im nächsten Video werde
ich Ihnen zeigen, wie Sie einen weiteren Ansichtstyp
verwenden, im Grunde dazu verwendet wird
, eine Liste von Objekten zu
erstellen, in unserem Fall
eine Liste von
Blogbeiträgen. Wir sprechen im nächsten Video mit dir.
214. 217. Erstelle die Info-Seite: Zuvor haben wir eine
Homepage für unsere App erstellt. Jetzt wollen wir
diese Homepage entwickeln und
die Liste der Blogbeiträge auf
der Homepage anstelle
einiger statischer Informationen anzeigen die Liste der Blogbeiträge auf . Bevor wir also die
Detailansicht für Blogseiten und die
Vorlagenansicht für
die Indexseite verwenden , möchten wir
jetzt
einen anderen Ansichtstyp verwenden , um
eine Liste von Blogs anzuzeigen. Die Vorlagenansicht ist dafür nicht die
beste Wahl. Daher können wir
dies löschen oder wir können
es behalten und für die Seite „Über uns“ verwenden. Nehmen wir an, unsere Website
sollte eine Seite über
uns haben , auf der Sie
einige Informationen über
das Unternehmen oder sich selbst schreiben können . Schauen wir uns also an, wie wir das ändern
können. Lassen Sie uns mit dem Index,
der HTML-Seite beginnen und sie
in Ansichten in etwa umbenennen.
Wir wollen den Index in
about umbenennen, um den Namen
der HTML-Vorlage widerzuspiegeln,
und auch die Startansicht
vielleicht in die
About-Ansicht ändern und dann zu L Punkt py gehen und die Startansicht in About-Ansicht ändern, diese Klammern löschen
und die Startansicht zur diese Klammern löschen
und die Startansicht Und jetzt wollen wir der Seite „Über uns“
ein anderes URL-Muster geben Über uns“
ein anderes URL-Muster Wir sollten über einen solchen
Schrägstrich sprechen. Speichern Sie eine URL, die PY ist, speichern Sie Ansichten, die PY sind, und das ist
überall auf dem Server Oh, ich bin nicht in einer
virtuellen Umgebung, also schließe das Terminal und öffne ein neues und drücke dann die obere Pfeiltaste, um den Server erneut
auszuführen. Die Homepage
ist jetzt also nicht mehr gültig,
aber die Angabe, mit
einem Schrägstrich zu enden, ist gültig Also sollte sie mit einem Schrägstrich enden. Andernfalls erhalten Sie eine Fehlermeldung. Aber diese Seite ist jetzt gültig. Also diese Seite, nehmen wir an,
das ist die Info-Seite. Richtig, speichern Sie das, aktualisieren Sie es
und wir sehen die Änderung. Es geht also darum, eine
weitere Seite hinzuzufügen. Lassen Sie uns im nächsten Video die
HTML-Seite mit dem
Indexpunkt erneut
mit neuen Inhalten erstellen HTML-Seite mit dem
Indexpunkt erneut
mit neuen Inhalten Ich zeige dir also eine Liste
von Blogs.
215. 218. Blog-Beiträge auf der Homepage auflisten: Hallo. In diesem Video werden
wir die Homepage hinzufügen und
eine Liste von Blogbeiträgen
auf dieser Homepage anzeigen . Fangen wir also noch einmal aus
der Sicht des Benutzers an. Also wollen wir für den
Benutzer einen Index dieser
HTML-Vorlage mit einem Doctype,
HTML-Tags und Body-Tags haben HTML-Vorlage mit einem Doctype,
HTML-Tags und Body-Tags Was fügen wir dann hier ein? Also, Tags mit
geschweiften Klammern und Prozentzeichen, und dieses Mal machen wir eine Liste mit vier Schleifen und
vier Posts in Posts Und dann machen wir hier etwas, und dann beenden wir diese Schleife und vier hier drinnen,
wir machen etwas anderes Ich erkläre dir, was
Post-Liste ist und was Post auch ist. Aber im Grunde
haben wir dann hier die Variablen, das könnten der
Titel des Beitrags und der Inhalt des Beitrags sein. Und vielleicht nein, der Inhalt eines Beitrags
wäre zu umfangreich, um ihn zu zeigen, aber wir könnten Autor sagen. Das wird also nur
eine Liste von Blöcken sein. Wir wollen den Inhalt
in dieser Liste nicht
anzeigen , weil
er zu viel wäre. Also Beitragstitel, Autor des Beitrags. Nun, was ist eine Beitragsliste? Beitragsliste ist eine Ansicht, die wir
in Ansichten definieren müssen, die PY sind. Also noch eine View-Klasse. Liste der Klassenbeiträge, der Name muss
sozusagen dasselbe Format haben wie dieser hier. Wir haben
hier die Post-Underscore-Liste mit Kleinbuchstaben verwendet hier die Post-Underscore-Liste mit Kleinbuchstaben Jetzt müssen wir Post in
Camel verwenden . Die Listen von P
und L sind in Großbuchstaben Das erbt von der
generischen Punktlistenansicht. Das ist also
eine weitere Art von Ansicht. Wir hatten eine detaillierte Ansicht zum Rendern von HTML-Vorlagen, die Daten aus einem Modul
abrufen. Wir hatten eine Vorlagenansicht, um
HTML-Vorlagen ohne
Daten aus einem Modell zu rendern , und wir haben diese Listenansicht, die auf das
Rendern mehrerer Datenzeilen,
in diesem Fall mehrerer Beiträge, spezialisiert ist . Dieser Klassentyp
erwartet nun eine Abfragesatzvariable, die Post entsprechen sollte. Post ist das Modell. Also sei vorsichtig hier. Es ist nicht die Aussicht.
Es ist nicht die Blogansicht. Es geht natürlich nicht um die Ansicht, es ist das Modell von Blogs, das Sie bei PY
in Modellen finden können. Auf dieses Modell verweisen wir hier also. Wir versuchen hier die Objekte
abzufragen. Also die Zeilen dieses Postmoduls. Ohne die Klammern wollen
wir
einen Filter anwenden und vielleicht alle Objekte
abrufen, vielleicht einen Filter wie
Status gleich eins anwenden ,
was für steht Lass es mich dir zeigen.
Also Status, wir sprechen über dieses Feld. Wir wollen also diese Beiträge, diese Blogbeiträge, die den Wert
Eins für den Status haben. Der Status hat entweder Nullen oder Einsen. Eins steht also für Veröffentlichen, Null steht für Entwurf Wir wollen dort also
nur die Beiträge anzeigen , die Statuswert Eins
veröffentlicht wurden. Und vielleicht möchtest du sie nach welchem Feld
ordnen? Also haben wir
vielleicht ein Datum erstellt . Also Datum erstellt. Das ist also die
Beziehung zu den Modulen und die Beziehung zu den
Vorlagen sind jetzt Vorlagen Nennen Sie Eagle HTML mit zwei
Indexpunkten, richtig? Also haben wir die Vorlage erstellt,
die so aussieht. Wir haben die Ansicht erstellt, müssen
aber auch etwas mit der URL
machen. Wir haben hier also einen Artikel,
hier zwei Artikel. Wir brauchen hier ein Komma
und fügen ein drittes Element hinzu, nämlich die Homepage Also eine leere Zeichenfolge. Und wir wollen von den
Ansichten, die wir bekommen wollen, aber die
Beitragslistenansicht, die Beitragsliste. Beitragsliste ist eine Klasse, also wollen wir sie als Ansicht haben. Rufen Sie die Methode also als
Ansicht aus der Beitragsliste und geben Sie ihr einen Namen wie wen? Jetzt denke ich, dass wir
bereit sind,
den Browser auszuprobieren und die Homepage zu
besuchen. Aber stellen Sie zuerst sicher, dass
Sie alles speichern. Diese, die URL, die PyFle,
der Index, die HTML-Datei
und die Views, die PyFile Speichern Sie diese und sehen Sie, ob die App
läuft, sie läuft. Also besuche die Homepage
und es funktioniert. Also Hunde, Katzen, haben es getan. Ja, das sind die
beiden Blogbeiträge. Nicht sehr ansprechend, aber
das kannst du mit etwas HTML ändern. Zum Beispiel
möchten Sie hier vielleicht den Titel
in zwei H-Tags einfügen . Und der Autor,
vielleicht in P-Tags. Also hier drin. Sag Reloads und es sieht ein bisschen besser Die Reihenfolge ist nun, dass die älteren Beiträge oben und die neueren Beiträge am Ende stehen Wenn Sie
das also ändern möchten, ist das sehr einfach. Gehen Sie einfach zu Views that PY und Sie wollen den Abfragesatz
ändern, die Reihenfolge nach, indem Sie einfach
ein Minus hinzufügen , so dass
das die Jango-Syntax ist, und dann aktualisieren, und
Kats ist jetzt ganz oben, der neueste Blockpost Das sieht also gut aus, aber ich denke, hier fehlen zwei
Dinge einen sollte jeder von
ihnen einen Link haben , auf den der Benutzer
klicken und zu
diesem bestimmten Blockbeitrag wechseln kann . Und zweitens fehlt
hier etwas Styling. Das sieht also ziemlich schrecklich aus. Wir müssen etwas Styling anwenden, und dafür werden wir
Bootstrap verwenden Das ist eine CSS-Bibliothek, und sie macht einfach Dinge Webseiten sehen also viel besser aus. Als Nächstes fügen wir hier eine URL
hinzu, die mit URL-Tags zu tun hat. Sie werden
also lernen, wie man URL-Tags verwendet, und als Nächstes fügen wir etwas
Bootstrap-Stil hinzu. Wir sehen uns
216. 220. Bootstrap zu Django hinzufügen: Hallo, willkommen zurück. In diesem Video erfahren
Sie, wie
Sie von hier zu diesem gelangen. Also werden wir mithilfe
der Bootstrap-Bibliothek, einer CSS-Bibliothek
,
einige CSS-Stile hinzufügen mithilfe
der Bootstrap-Bibliothek, einer CSS-Bibliothek
,
einige CSS-Stile Bootstrap macht es einfach, Ihre HTML-Dokumente zu
stilisieren, und heutzutage ist es
ein Muss, eine modern
aussehende Website zu haben Gehen wir also dahin, wo wir es mit unserem Code
gelassen haben. Dies ist der Index des
HTML-Dokuments , das diese Webseite
rendert, und mit diesem
Dokument werden wir in dieser Vorlesung arbeiten Wir werden das tun,
indem
wir uns die
Bootstrap-Dokumentation ansehen Versuchen Sie also, Bootstrap zu googeln, und das erste Ergebnis sollte
die offizielle Bootstrap-Webseite sein die offizielle Bootstrap-Webseite Also ein paar Worte zu Bootstrap. Wissen Sie, CSS ist
etwas, das normalerweise irgendwo in einem Ordner
abgelegt wird
, den Sie statisch nennen werden Sie erstellen also einen Ordner
im Projektverzeichnis
im Stammverzeichnis und nennen ihn statisch. Und innerhalb der statischen erstellen Sie
normalerweise eine Datei
wie Main Dot CSS. Und in diese Datei
schreibst du etwas CSS-Code. Dieser CSS-Code sieht im Grunde so aus. Sagen wir P und dann haben Sie ein paar geschweifte Klammern wie diese, und dann sagen Sie zum Beispiel Farbe
Blau und dann Schriftgröße 17 Pixel Das wäre CSS. Natürlich würde es, wie gesagt,
in einer CSS-Datei platziert werden . Es gibt zwar auch eine
Möglichkeit, diesen Code einfach einzufügen und ihn in
das HTML-Dokument zu
integrieren. So oder so, es macht
dasselbe. Mit diesem Code erhalten
wir zum Beispiel alle P-Tags und färbt sie blau in blau ein. Der Text wird also blau sein und die Schriftgröße des
Textes wird 17 Pixel betragen, und so weiter, Sie haben andere
Eigenschaften wie diese. Wenn wir jetzt Bootstrap verwenden
, verwenden wir Code,
der bereits geschrieben wurde Ich spreche also wieder über
CSS-Code. Die Bibliothek hat also CSS-Code, und dann verwenden Sie diesen Code einfach, indem Sie auf
etwas verweisen, das als Klasse bezeichnet wird. Wenn Sie
zum Beispiel Bootstrap verwenden möchten und wir
werden das tun, dann würden Sie
sagen, dass Klasse gleich P hübsch ist Nehmen wir zum Beispiel an,
dass dieser Absatz, dieser Code auch
irgendwo einen Namen haben würde Also sagen wir P hübsch. Das wäre also in Bootstrap-Dateien
, die wir installieren Und dann müssen
wir in unserem Code nur auf diese
Bootstrap-Klasse verweisen,
um diese
Attribute auf diesen Absatz anzuwenden
, der in diesem Fall der Name des Autors
wäre Sie werden es also in Aktion sehen. Lassen Sie mich das
und das auch löschen. Richtig. Und gehen wir zurück
zur Bootstrap-Website Es gibt also zwei Möglichkeiten , Bootstrap
in Ihr Projekt aufzunehmen entweder um
es zu installieren oder Sie können
diese schnellere Methode
mit JS Deliver verwenden diese schnellere Methode
mit JS Und hier haben Sie die Anleitung,
wie Sie Bootstrap einbinden können. Also müssen wir
die CSS-Datei einbinden,
die, wie ich Ihnen gesagt habe, gesamten CSS-Code
enthält Also sollten wir diesen Code hier kopieren und
einfügen. Ich kann
hier einfach auf Kopieren drücken, um den Code zu erhalten. Und platziere es in den Head-Tags vor all
den anderen Stylesheets. Also Headtags, wir
haben hier keine Headtags, aber wir können sie erstellen. Kopf, so.
Also dazwischen fügen
wir den Link ein, mit einem Tag, Link-Tags, öffnen dort, schließen hier. Dann müssen wir auch
die JavaScript-Datei platzieren. Also Punkt JS, du kannst es sehen. Und um das zu tun, müssen
Sie das erneut kopieren. Unter Bundle
gibt es also mehrere Optionen, aber Bundle ist die
beste. Also kopiere. Und das musst du platzieren. Platzieren Sie also eines der folgenden
Skripts am Ende
Ihrer Seiten, direkt vor
dem schließenden Body-Tag, direkt vor dem
schließenden Body-Tag. Also einfach hier. Und das ist es. Speichern Sie nun diesen Index
in der HTML-Datei, stellen Sie sicher, dass die App
läuft, und besuchen Sie sie, und Sie werden bereits einen Unterschied
bei den Telefonen feststellen Die Links sind also
etwas hellblau und die Schrift ist größer Und so können Sie
Bootstrap in Ihre App aufnehmen. Folgen wir nun noch einmal
dem Tutorial. Also hier haben wir eine
Starter-Vorlage. Es beginnt also hier mit diesem HTML-Tag vom Typ
Dokument, HML-Lang-Deklaration
und den Head-Tags Also werde ich das kopieren und das
durch das ersetzen. Also das erste HML-Tag, dann haben wir die, das und
das Metatags Wir haben diesen Link bereits eingefügt, sodass wir nur
diese beiden Metatags benötigen Unter dem Head-Tag, hier
unter dem Head-Tag. Also Meta Meta, der Link zu
den Bootstrap-CSS-Dateien. Und der Titel, das ist optional. Es hat also nichts mit Bootstrap
zu tun, aber wir können auch einen Titel angeben, nennen
wir das Blockposts Die Titel-Tags befinden sich auch
in den Head-Tags. Die Head-Tags schließen
hier und hier, dann haben wir die Body-Tags. Hallo Welt, das ist optional. Hier haben wir das Skript
, das wir bereits aufgenommen haben, dieses hier drin, also ist
alles okay. Richtig. Also hier unten wird erklärt, was all diese Tags
bewirken, falls du das lesen willst. Was ich jetzt tun möchte,
ist Bootstrap zu benutzen. Das sind also die Anforderungen, die Links, die wir
in die Metatags einfügen, aber jetzt wollen wir die
eigentlichen Funktionen von Bootstrap nutzen Also die eigentliche Bibliothek. Was ich
normalerweise machen werde, ist Bootstrap.
Was Sie tun, ist, dass Sie ein Haupt-DIV-Tag
haben Was dort beginnt und dort endet, wo dein Inhalt endet Also hier unten und ich
werde das Div ausrichten. Also Div öffnen, Div
mit einem Schrägstrich Div
und den Klammern schließen mit einem Schrägstrich Div
und den Klammern Also das ist unser ganzer
Inhalt, richtig, was sich in dem widerspiegelt , von der Katze bis zur letzten,
die hier gestorben ist. Und dieses Div sollte jetzt
eine Klasse haben , die doppelten Anführungszeichen entspricht. Und in diese Anführungszeichen schreibst
du Container. Dies ist eine der
Hauptklassen von Bootstrap,
und Sie sehen, dass
ich die Seite und die Dokumente hier speichere und
die Seite aktualisiere, Dokumente hier speichere und
die Seite aktualisiere und wir sehen bereits einen
Unterschied Was Bootstrap
mit diesem Container macht, ist, dass dieser Container ein CSS-Code ist irgendwo
in dieser CSS-Datei
gespeichert ist, und dieser Container hat
im Grunde einen gewissen Rand, gewissen Abstand zwischen dem Text und
dem Bereich Die Seite reagiert also auch
bereits. Wenn Sie es also sehen, bewegt es sich, es passt die Breite
des Browsers Als Nächstes möchte ich jetzt
für jeden der Beiträge Folgendes tun, also die Beiträge sind Katzenkot, also das ist ein Beitrag mit einem Link beim Namen des Autors,
das ist ein weiterer Beitrag Also möchte
ich für jeden dieser Beiträge eine weitere Abteilung erstellen. Also von dort bis
vor Ende vier, also hier und vielleicht ist es eine
gute Idee, sie einzuziehen, sie beim Tippen so
auszuwählen,
um sie einzuziehen. Im Grunde sind diese beiden also
Teil dieses Div-Elements. Also das ist jetzt ein Element. Also, was ich
tun werde, ist, eine Kartenklasse
zuzuweisen . Also, wo kriege ich das her? Nun, in Bootstrap können
Sie zum Beispiel sehen, ob Sie zum Layout gehen, wie Sie
Ihre HTML-Dokumente organisieren, Sie sehen, Sie Container haben
und Sie sehen, dass Sie
hier
die Container-Klasse haben, die wir bereits Wenn Sie dann zu Komponenten
und dann zur Karte gehen, werden
Sie feststellen, dass Sie
Ihre Inhalte in
dieser Art von Karten organisieren können Ihre Inhalte in
dieser Art von All diese Elemente
hier sind also eine Karte. Sie sehen Klassenkarte, und genau das mache ich
auch hier. Also lege ich einen Beitrag
in die Karte. Wenn ich das jetzt speichere und aktualisiere, siehst
du, dass es um jeden Beitrag eine
Art Rand gibt. Und das können wir
verbessern, indem wir es auch zuweisen. Nach einem Leerzeichen hier machen wir drei, was für „imaginieren“ steht, um
jedes dieser beiden Felder herum Stellen Sie sich also vor, 33 ist jetzt eine
CSS-Einheit oder besser gesagt, eine Abstandsebene. Sie können also nachlesen, wie die Margen
unter Dienstprogramme stehen sollten. Hier geht es um Abstände, also Abstände, Sie werden sehen, M zum Beispiel
für Rand
steht, und dann haben Sie die Ebenen. Also eins, zwei, drei, vier,
fünf, es geht also
darum, etwas Platz zu schaffen. Gehen wir nun zurück zum
Kartenbeispiel hier. Dann haben wir also dieses Bild. Wir brauchen jetzt keine Bilder. Also dieses Bild hier, das brauchen
wir nicht. Aber dann haben wir den Kartenkörper. Es gibt also ein weiteres Div
in diesem Kartenklassen-Div. Also Div und wir holen uns das
und wir platzieren es hier. Also so,
wieder in Delle, diese beiden. Also, diese Klasse
entspricht dem Hauptteil der Karte. Und dann haben wir noch
einen anderen Kartentitel. Das ist also ein Titel der Karte
, in unserem Fall wäre
es Katzen und Hunde,
was bedeutet, dass wir hier einen Titel hinzufügen
könnten. Also schau mal, was ich
machen werde, Div. Also das wäre Klasse
gleich dem Kartentitel. Und drinnen würden
wir diesen Titel posten. Ich weiß, dass ich das duplizieren werde, aber ich werde dir sagen warum Also poste den Titel und aktualisiere ihn. Also, ja, wir haben
Katzen hier, Hunde hier. Aber es ist besser,
vielleicht H zwei statt DIV zu verwenden. Also H zwei da, und vergiss nicht,
das auch auf H zwei zu ändern. Es öffnet sich hier, es
schließt sich hier. Also aktualisiere ich und das ist
ein Titel, das ist ein Titel. Nach dem Titel
hätten wir vielleicht den Text. Also dieser Text hier
, der Kartentext bekommt. Ein Div. Und das wäre
Post-Dot-Inhalt, richtig. Das ist also unser Text. Wir möchten etwas
Text unter dem Titel anzeigen. Und das entspricht, wie gesagt
, dem Kartentext. Speichern Sie die Aktualisierung, um die Änderungen zu sehen. Ja, der Inhalt
ist also auch hier. Als Nächstes möchte ich
diesen Link entfernen, indem ich ihn in eine Schaltfläche
ändere. Sie sehen also, dass
wir hier diesen Boden haben. Das ist also ein A-Tag
und diese Klasse. Also, was können wir damit machen? Lassen Sie uns eine Klasse zuweisen, von der es BTN und dann BTN primär
war. Lassen Sie uns das jetzt speichern
und aktualisieren, um zu
sehen, dass Katzen Katzen
auch gut sind und die Schaltfläche Da es sich um eine Schaltfläche handelt, möchten
wir den Titel des Beitrags
hier nicht mehr
anzeigen . Wir wollen so
etwas wie „Mehr lesen“ anzeigen. Sicher, aktualisieren.
Ja, sieht besser aus. Vielleicht möchten wir
unter dem Inhalt ein Div hinzufügen. Vielleicht möchten wir
ein anderes Div haben, in dem wir sagen,
dass der Autor diesen Autor veröffentlicht, oder? Dieser. Und wir
entfernen jetzt den P-Text, da wir keine
zwei Autorenfelder wollen .
Also entferne das. Und das wäre auch die
Kartenklasse, die dem Kartentext entspricht. Sicher. Sieh dir die Änderungen an. Ja, Katzen, Katzen sind gut, um Texte zu
verfassen und mehr zu lesen. Jetzt siehst du, dass diese Tauchgänge etwas zu
nahe beieinander liegen Also das Inhalts-Div, das Autoren-Div, das
Button-Div auch Wenn Sie das ändern möchten, können Sie
Divs in Absätze umwandeln Also P statt DF P, P, P auch hier Sicher aktualisieren, und es
sieht jetzt ein bisschen besser aus. Die Knöpfe sehen
für mich ein bisschen groß aus. Das liegt daran, dass dieser Text
hier ein H-Zwei-Element ist. Wenn Sie also möchten, dass der
Text kleiner ist, möchten
Sie die beiden H-Tags,
das öffnende Tag und
das schließende Tag, entfernen . Sicher aktualisieren, und
es sieht besser aus. Die Seite reagiert auch sodass Sie den Browser verkleinern können Das ist ungefähr dieses Video. Im nächsten
werde ich
Ihnen die Jangle-Template-Tags vorstellen Ihnen die Jangle-Template-Tags Im
nächsten Video erfährst du, worum ihnen geht. Wir sehen uns dort.
217. 222. Vorlagen-Vererbung: Hallo. Bisher haben
wir mit unserer Website diese Homepage erstellt. Sie können es auf
der Homepage sehen, und wir haben auch die
About-Seite. Also Slash aboutSlash
Das ist die About-Seite, die natürlich kein
Bootstrap-Styling hat, weil wir das Styling
nur auf den Index
dieser HTML-Vorlage anwenden nur auf den Index Und wir haben auch die
Blog-Punkt-HTML-Vorlagen, bei denen es sich um eine dieser
Seiten für Katzen oder Hunde handelt Also drei Vorlagen,
eins, zwei, drei. Jetzt müssen wir einen Weg finden, durch die Website zu navigieren Das ist zum Beispiel, wie geht man vor, wie kann der Besucher von dieser
Seite zur Info-Seite gelangen? Nun, normalerweise wird dies über
eine Navigationsmenüleiste
implementiert , die sich hier
irgendwo oben befinden könnte. Und du könntest auf
den Link klicken und zu dieser Seite gehen. Das werden wir jetzt
in diesen Videos machen. Wie können wir das umsetzen? Weil die
Navigationsmenüleiste auf jeder Seite sein sollte. Eine Möglichkeit, dies zu tun, besteht darin, das Navigationsmenü zu
erstellen, das mit HTML erstellt wurde. Eine Möglichkeit besteht darin, den HTML-Code für dieses Navigationsmenü auf
jeder dieser HTML-Seiten zu codieren. Aber das
widerspricht natürlich den trockenen Prinzipien, also
trocken, was für „Wiederhole dich
nicht“ steht. Deshalb
werden wir die
Vererbung von Vorlagen verwenden. Was ist Vorlagenvererbung? Nun, es funktioniert so. Die Komponente, die sich wiederholen
wird. In unserem Fall
wird die
Navigationsmenüleiste also in
einer einzigen Datei bleiben Und dann die anderen Dateien, bei denen es um Blog und Index geht, diese Dateien bekommen die andere Datei, in
der sich das Navigationsmenü befindet. Und das wird
als Vorlagenvererbung bezeichnet. Sehen wir uns also in
Aktion an, wie es funktioniert. Klicken Sie also mit der rechten Maustaste auf
Vorlagen und gehen Sie zu Neue Datei und schreiben Sie
so etwas wie Basispunkt-HTML. Basis-HTML wird
die Navigationsmenüleiste enthalten. Um nun ein
Navigationsmenü
in HTML zu erstellen, verwenden Sie das Nav-Tag Also öffne und schließe es, und dann hast du darin
ein anderes Div geöffnet und geschlossen. Und in diesem Div haben
wir die UL, die
eine Liste von Menüelementen erstellt. Der erste Menüpunkt
wäre also L I Right. Und dann haben wir noch einen. Also zu Hause, wir haben über
uns. Ja, das ist alles. Also der erste Menüpunkt, der zweite Menüpunkt. Also
das wäre für wen. Deshalb platzieren
wir in
dem ersten LI-Tag, der nach einer Liste sendet , einen Tag
, der einen Link erstellt. Das Gleiche gilt für den nächsten
hier, ein Tag, richtig? In der ersten befindet sich ein Etikett. Also genau hier sagen wir
HRF, diese Eigenschaft, die als Wert in
Anführungszeichen die URL zur
ersten Seite
haben wird , also dieses Tag URL. Einzelner Code. Nun, jetzt müssen wir uns die
Blog-URL ansehen und den Namen der URL für die
Homepage ermitteln, nämlich Home. Das gehört also hier rein, nach Hause. Das Gleiche tun wir für
so about View. Lassen Sie uns das auch hier kopieren und
in das erste H-Tag einfügen. Vorsichtig. Hier ist ein Leerzeichen, etwa
bei Underscore-Ansicht Jetzt müssen wir
etwas anderes tun. Wir müssen zu
Indexpunkt-HTML gehen und vom ersten Body-Tag bis zur
allerersten Zeile
ausschneiden, sie ausschneiden und hier oben einfügen
. Machen Sie etwas Platz und
fügen Sie sie dort ein. Gehen Sie erneut, um den
HTML-Code zu indizieren, und schneiden Sie erneut
ab, beginnend mit dem
schließenden HTML-Tag, einschließlich des schließenden Body-Tags, einschließlich des
Skript-Tags von Bootstrap Schneide sie aus, gehe zur Basis des HTML-Codes und gehe bis zum Ende. Machen Sie etwas Platz, fügen Sie es ein. Jetzt
wird Basispunkt-HTML das übergeordnete Element sein. Also haben wir über die Vererbung von
Vorlagen gesprochen. Das ist jetzt das übergeordnete Element und der
Index, dass HML das Kind ist, das
das aus dem Basispunkt-HTML beziehen wird Eigentlich ist jede Seite,
nicht nur der Index, sondern auch was HTML betrifft, Blockpunkt-HTML Alle Blogbeiträge werden also all diese Informationen aus dem Basis-HTML
erhalten. Dadurch können wir
Bootstrap auch auf jeder
einzelnen Webseite anwenden Bootstrap auch auf jeder
einzelnen Und jetzt müssen Sie
jeder Ihrer Seiten,
wie zum Beispiel dem Index, mitteilen , dass HTML erweitert werden muss, also sagen
Sie, durch ein
Template-Tag wie dieses, erweitern Sie einfache Anführungszeichen auf den
Grundpunkt Also kopiere das und füge es auch
in etwa HTML ein. Und auch hier müssen wir
die Body-Tags darauf löschen und das einfach sagen
und zu Blockpunkt-HTML
übergehen. Löschen Sie außerdem Body-Tag, HTML-Tags, Doc-Tags,
fügen Sie das ein, löschen Sie
das schließende
HTML-Tag und das schließende
Body-Tag löschen, speichern, speichern. Dann gehen wir zu
Basispunkt-HTML und am Ende, also nach dem Navigationsmenü, wollen
wir
wieder ein Template-Tag machen und sagen Inhalt blockieren. Und auch das Gleiche. Also ein Template-Tag und
blockierter Inhalt. Also, was ist das? Nun, im Grunde, H-Webseite. Denken Sie also daran, was der Besucher auf der Website
sieht. Sie sehen oben eine
Navigationsmenüleiste, die hier
drin ist, oder? Und dann sehen sie den
Inhalt, bei dem es
sich um den Beitrag über Katzen,
den Katzeninhalt oder,
im Fall von etwa, um den
Inhalt der A-Seite handeln könnte sich um den Beitrag über Katzen, den Katzeninhalt oder,
im . Unter dem Menü befindet sich
also der Inhalt. Das ist also der Inhalt. Und jetzt müssen wir uns
diesen variablen Inhalt merken und
zum Beispiel diesen HTML-Code indexieren, und dann sagen
wir darunter Inhalt blockieren. Und es endet wieder
mit Blockinhalten. Das heißt, wie Sie sehen, wird
das Basispunkt-HTML
erweitert, sodass es die Daten
aus dem Basis-HTML bezieht, und dann dieses Ding
zwischen den Blöcken,
die Inhalts-Tags von dort
bis dorthin, werden irgendwie
mit dieser Basis-HTML-Seite
kombiniert, sodass es im
Browser als komplette Seite gerendert wird mit dieser Basis-HTML-Seite
kombiniert, werden irgendwie
mit dieser Basis-HTML-Seite
kombiniert, sodass es im
Browser als komplette Seite gerendert Und hier geht es um die Vererbung von
Vorlagen. Es ist ein bisschen schwer zu verstehen. Schauen wir uns also an, ob wir jetzt einige Fehler
gemacht haben. Wir werden das
Ergebnis sehen. Ja, natürlich. Es heißt also, erweitern, hast du vergessen, dieses Tag zu registrieren
oder zu laden? Nun ja, erweitern liegt daran, dass Jangos darin nicht erkannt werden, weil
es erweitert Blog-Punkt-HTML wird also
erweitert, Basispunkt-HTML. Lassen Sie uns dasselbe für
die anderen Seiten tun und diese ebenfalls speichern und speichern. Ja. Dies ist eine
Base-Dot-HTML-Vorlage Suchen wir nach dem nächsten Fehler. Okay, nicht schlecht. Also wir sehen hier etwas, aber wir sehen keinen Text. Also gehen wir zurück und reparieren das. Ich basiere auf Punkt-HTML. Also hier haben wir den Link. Aber wir haben keinen Text. Also lasst uns dafür zu Hause sagen
und dafür über uns. Also wenn aktualisieren. Und ja, wenn wir jetzt etwas sehen, lesen Sie weiter über uns. Es bringt uns zur Seite Über uns. Geh nach Hause. Über uns geht es
nach Hause. Großartig. Wir sehen
den Inhalt hier nicht, also korrigieren wir das
für die Seite At HTML Weil wir es nicht sehen
, weil wir
diese Blockinhalts-Tags nicht haben diese Blockinhalts-Tags Also blockiere Inhalte hier und hier, aber dieser
sollte mit Block,
sicher, sehr frisch sein, und das
ist der Inhalt eines Bootes. Nun, wenn du
willst, dass das hübscher ist, musst
du
es natürlich in das div-Tag einfügen und Class Container,
Safe, Refresh sagen , und jetzt
geht es irgendwo dazwischen Und du kannst es auch noch besser
machen. Das ist also ein Hauptunterschied
, der
alles enthält . Das wäre so
etwas wie H zwei. Und dann könnten wir
weitere Unterschiede mit Inhalten hinzufügen. Das ist der Inhalt wie dieser. Das Navigationsmenü sieht jetzt also nicht sehr hübsch aus, weil wir
kein
Bootstrap-Klassen-Stil auf dieses Element angewendet haben kein
Bootstrap-Klassen-Stil auf dieses Element Sie haben also NAF ohne Klasse, D ohne Klasse, UL,
LI und A, außerdem
ohne Klassen, kein
Bootstrap-Styling Also lass uns das im
nächsten Video machen. Wir sehen uns dort.
218. 223. Bootstrap-Styling auf das Navigationsmenü anwenden: Wir kommen wieder. Lassen Sie uns dem
Navigationsmenü jetzt
etwas Styling hinzufügen. Also kehren wir zu Basispunkt-HTML zurück. Und der erste Artikel ist
NOV. Zuallererst wollen
wir all diese auswählen
und sie eins und zwei einrücken Es sollte also
unter dem Body-Tag eingerückt sein. Stimmt? Fangen Sie also
mit NAV und der gleichen Klasse an, ich kenne einige
Klassen von Bootstrap, und Sie können
Beispiele auch online finden Also Nov Bar, es gibt an,
dass es sich um einen Nov-Balken handelt. Verwenden Sie also das Nov-Balkenlicht im
Navbar-Stil für die Farbe und das
Hintergrund-BG-Licht, haben Sie etwas Schatten und
dann müssen Sie auch angeben, dass Klasse eine Eigenschaft
von NOV ist und auch nach dem Mantel, hier müssen Sie
eine weitere ID angeben, die der Haupt-NOV
entspricht hier müssen Sie
eine weitere ID angeben, die der Haupt-NOV
entspricht Das wird also von
JavaScript von Bootstrap verwendet. Dann
wird das nächste Div eine Klasse
von Collapse Nova Collapse haben von Collapse Nova Collapse Das sind also verschiedene
Klassen und eine Idee von Nov Boar Responsive Dann haben wir die UL-Klasse. Nvbnuvt. ML steht für Margin Left
und hat einen Wert von zwei. Schließlich ist die
LI-Klasse ein NOV-Item. Das ist also ein Menüpunkt und das war's. Speichern Sie das und sehen Sie
, was sich ändern wird. Okay. Nicht schlecht. Nun, die A-Tags, damit die Links nicht besonders gut
aussehen, aber der Balken selbst sieht mit einem Schatten
gut aus. Lassen Sie uns also das
Styling der A-Tags vornehmen. Also eine Klasse, die der Marke
Navbar entspricht, sicher. Erneut laden. Zuhause sieht gut aus, aber über uns nicht Also lass uns dasselbe für den anderen so machen. Ja, es sieht gut aus. Ja, wir müssen es ein bisschen nach rechts stellen. Und eine Klasse P drei,
die dem ersten A-Tag hinzugefügt wurde, sollte funktionieren. Also speichern, aktualisieren und schon
geht es weiter nach rechts. P drei bedeutet also, dass Sie es diese A-Klasse herum auffüllen, und Sie sollten
dasselbe für die anderen tun. Also P drei, speichern, aktualisieren. Das ist das Navigationsmenü. Jetzt, hier unten, wollen wir
mehr Platz zwischen
dem Navigationsmenü und diesem
Inhalt haben. Lass uns das reparieren. Ich denke, das würde
funktionieren, indem das Navigationselement zur Klasse
des
Navigationselements hinzugefügt wird. Wir könnten ein MB von drei hinzufügen. B steht also für Margin Bottom. Auffrischen. Und ja, jetzt ist es besser. Also ist
jetzt etwas Platz unter dem Menü, der Navigationsmenüleiste. Und das war es auch schon. Ich hoffe, das macht Sinn, und ich werde
dir später eine SMS schreiben. Danke.
219. 224. Demo der Django-Übersetzungs-App: Hallo, willkommen zurück zu
einer weiteren Videoserie. In der Serie
werden wir
eine Übersetzer-Web-App mit Jango erstellen eine Übersetzer-Web-App mit Jango Diese Web-App,
Jango-App, wird also Teil
unseres Jango-Website-Projekts sein unseres Jango-Website-Projekts Die Website hat bereits eine Block-App, auf die wir über die Startseite
zugreifen können Das ist also nur eine
Skizze der Website. Und wir hatten auch
diese Seite über uns, die auch Teil
dieser Block-App ist. Nein, Translator wird
eine zweite App sein , die wir dieser Jango-Website
hinzufügen Und es gibt drei Gründe, warum ich diese
Übersetzer-App in unser JangoPject Der erste Grund ist, das,
was Sie bisher gelernt haben, noch einmal zurückzuspulen. Sie lernen also, wie Sie diese Block-App
erstellen. Aber jetzt möchte ich den Prozess
der App-Erstellung
noch einmal durchgehen Prozess
der App-Erstellung
noch einmal , weil wir bereits
eine App erstellt haben, aber wenn man eine weitere App erstellt, sieht
man die Dinge aus einer
anderen Perspektive und lernt besser, da bin ich mir sicher. Das ist also ein Grund, den Prozess
der App-Erstellung zu überarbeiten. Der zweite Grund
ist dann, etwas über
Jango-Formen zu lernen , denn
in dieser Jango-App werden
wir
zwei Textfelder haben In einem gibt der Benutzer den Begriff ein, die Sätze, die übersetzt werden
sollen Und im zweiten Fall
werden sie den
übersetzten Text sehen. Also werden wir
Englisch als erste Sprache
und dann eine andere Sprache
als übersetzte Sprache verwenden . Wir werden später über
dieses Detail sprechen. Die Idee hier ist also, dass Sie etwas über Formulare lernen
werden. In Jango, weil dieses Ding
hier eigentlich ein Formular ist. Also ein Formular, das es
Benutzern ermöglicht , einige
Daten, etwas Text, einzugeben und dann eine Anfrage auszuführen,
bei der es sich eine Post-Anfrage handelt Also posten sie einige
Daten auf den Server. In diesem Fall wird es
der Text sein, in den sie hier
schreiben werden. Also
wird der Server, Jango, diesen Text abrufen und eine Python-Bibliothek verwenden, um diesen Text
in eine andere Sprache zu übersetzen Dann wird Jango
die Daten an den Benutzer zurücksenden. Also das hier wird das
Eingabefeld des Formulars sein, und das wird das
Ausgabefeld des Formulars sein Auch hier war die Überarbeitung des
App-Erstellungsprozesses ein Grund und das Kennenlernen von
Formularen ein weiterer Grund Und der dritte Grund, warum
ich
diese Videos haben möchte, ist, Ihnen zu
zeigen, wie Sie Inhalte
verarbeiten, die der Benutzer
an unsere Jangle-App sendet Ähm, also in diesem Fall
wird es der Text sein, und du wirst sehen, wie man die Bibliothek
organisiert
, die
diesen Text in Dateien verarbeitet , und wie
man diesen Text bekommt und wie
man ihn an den Benutzer sendet,
denn mit unserer Block-App verarbeiten
wir nicht wirklich
Benutzerinhalte, aber dieses Mal werden wir Also mach dich bereit und ich werde in den nächsten
Videos mit dir
sprechen. Es ist hier.
220. 225. Der Schritt der Django-App-Entwicklung: Hallo. In diesem Video werde
ich
die Schritte erwähnen, die Sie unternehmen
sollten, um diese
spezielle Übersetzer-App zu erstellen. Und diese Schritte gelten auch für alle anderen Apps, die
Sie erstellen möchten. , möchten
Sie zunächst Was Sie also
tun möchten, wenn Sie
eine Idee oder einige Anforderungen
zum Erstellen einer App haben , herausfinden, ob es
möglich ist , diese
bestimmte Web-App zu erstellen. Zum Beispiel wollen wir
diese App erstellen, die, sagen
wir, vom
Englischen ins Deutsche übersetzt sagen
wir, vom
Englischen ins Deutsche Zuallererst
möchten Sie die Frage beantworten, ob es möglich
ist, einen Text zu
übersetzen, also eine Zeichenfolge, die auf Englisch
ist Kannst du es
in einen deutschen Text übersetzen? Also füge ich noch einmal eine Saite ein, aber die deutsche Version
dieser Originalzeichenfolge. Kannst du also
Text mit Python übersetzen? Und dafür sollten Sie
im Internet und vielleicht in
oscoFMS
recherchieren , bis Sie vielleicht ein Python-Paket finden, das leicht
machen würde Oder Sie könnten auch
Ihr eigenes Paket erstellen, was für
diese spezielle Aufgabe eine
Menge Arbeit bedeuten sollte , da das Übersetzen von Sprachen Also habe ich bei Google
recherchiert
und herausgefunden, dass eine gute Paketbibliothek
dafür Google Trans ist, die im Grunde
auf der Google
Translate-API aufbaut auf der Google
Translate-API Mit Google Trans können
Sie also eine Zeichenfolge angeben und Google Trans
erhält die Übersetzung von Google Translate und gibt eine Zeichenfolge
in der Zielsprache zurück. Also Problem gelöst. Es ist möglich,
über Python zu übersetzen. Wir haben also grünes Licht, um unsere App
weiter zu erstellen. Als Nächstes
möchten Sie
eine leere Jango-App erstellen eine leere Jango-App , was wir im nächsten Video
tun werden Und danach möchten Sie dem Top-Bottom-Ansatz folgen, der darin besteht
, vom Standpunkt
des Benutzers aus zu denken Anstatt also Ihre Module
durchzugehen, ein Modell zu
erstellen oder
vielleicht eine Ansicht zu erstellen, möchten
Sie das erstellen, was
der Benutzer sehen möchte, nämlich die HTML-Vorlage Der erste Schritt wäre also, eine HTML-Vorlage
zu erstellen, und dann diese Vorlage, dieser HTML-Code muss
auf eine bestimmte URL gerendert werden. Als Nächstes möchten Sie also
die URL Ihrer App konfigurieren ,
und danach möchten
Sie die URLs verbinden und diese URL möchte
eine bestimmte Ansicht auslösen. Als Nächstes
möchten Sie eine Ansicht erstellen. Für die Ansicht wird
im Grunde die in diesem Schritt
erstellte HMLU erstellt und an
diese URL gesendet Dann möchten Sie
ein Modell erstellen, das die Daten enthält ,
die in die HDML-Vorlage eingefügt
werden Und in diesem Schritt sollten wir die Struktur
unserer Web-App bereits mit HTML
erstellt haben unserer Web-App bereits mit HTML und das Textfeld
ist bereit für Text Dann können wir diesen
Text abrufen, damit wir
diesen Text abrufen und ihn übersetzen und in eines
der Textfelder
zurückgeben können diesen Text abrufen und ihn übersetzen und . Das sind also die Schritte
, die wir unternehmen werden. Im nächsten Video werden
wir also
die Jango-Web-App in unserem
bestehenden JangoPject erstellen die Jango-Web-App in unserem
bestehenden JangoPject Ich werde
im nächsten Video mit dir sprechen.
221. 224. Eine leere App-Struktur für die Übersetzer-App erstellen: Hallo. In diesem Video
werden wir
eine neue App in unserem
bestehenden Janga-Projekt erstellen eine neue App in unserem
bestehenden Janga-Projekt Schauen wir uns zunächst an,
wie die Website aussieht. also in meinem Terminal
sicher, dass Ihre virtuelle
Umgebung aktiviert ist. Meins liegt nicht daran, dass ich
diese Klammer hier nicht vorne habe diese Klammer hier nicht vorne Aber wenn ich ein neues Terminal erstelle, das Plus-Symbol
verwende oder zu
EminalNW gehe , ist meine virtuelle
Umgebung jetzt aktiviert, sodass ich Python sagen
und diesen
PY-Run-Server verwalten kann diesen
PY-Run-Server verwalten Gehen Sie zu dieser Website, und so sieht die
Website jetzt aus, und wir werden hier
einen weiteren Menüpunkt haben, der
die Übersetzer-App enthalten wird Also lasst uns an die Arbeit gehen.
Lassen Sie uns die App erstellen, den Server
daran hindern, mit Control C zu laufen und Python ausführen, Punkt PY
verwalten, die App starten und der App dann einen Namen geben. Führen Sie zum Beispiel Translator aus und ein neues
Übersetzer-Verzeichnis wird erstellt. Sie können es
hier sehen. Es ist also im selben Verzeichnis wie Block. Block befindet sich im Stammverzeichnis. Translator befindet sich auch
im Stammverzeichnis,
wie Sie hier sehen können. Sobald Sie
eine App mit der Start-App erstellt haben, möchten Sie
diese App in den Einstellungen meiner Website registrieren. Gehen Sie zu den Einstellungen Punkt PY JangoPject-Einstellungen und Sie möchten zu Installierten Apps gehen Bevor wir
hier bei
der Erstellung der Blog-App einen Block hinzugefügt haben, möchten
wir jetzt nach dem Komma ein jetzt nach dem Komma ein weiteres Element
zu dieser Liste der installierten Apps hinzufügen Es ist also eine Zeichenfolge, und
der Name
ist oder Translator, ja Das sollte also den Namen
deiner App und den Namen
des Verzeichnisses hier widerspiegeln . Speichern Sie die Einstellungen, die ich mache. Und so erstellt man
eine neue leere App in Jungo. Im nächsten Video
werden wir mit der
Erstellung unserer HTML-Vorlage beginnen .
Also wir sehen uns dort.
222. 222: Zuvor haben wir
in unserem Jangle-Projekt
eine neue leere App erstellt . Der nächste Schritt ist nun. Dieser Schritt ist also abgeschlossen. Erstellen Sie eine leere Jangle-App. Die nächste besteht darin, HTML zu erstellen. Also, wie gesagt, was wir wollen, ist, dass wir hier einen neuen Menüpunkt
haben wollen
, den wir später
erstellen werden, aber zuerst
wollen wir die Seite erstellen. Dann fügen wir diese Seite
zur Menüleiste hinzu. Die Seite
wird also einfach sein. Es wird
hier
ein Textfeld und rechts ein weiteres
Textfeld
und irgendwo darunter eine Schaltfläche Es wird also erwartet, dass der Benutzer einen Text auf Englisch
eingibt, und wenn er dann die
Taste drückt, wird
dieser Text sagen
wir, ins Deutsche
übersetzt Also werden wir
Deutsch als unser Beispiel wählen. Natürlich können Sie
die App später verbessern, indem eine Option
hinzufügen, um auch
andere Sprachen auszuwählen. Aber vorerst
werden wir es
einfach halten, uns auf Formulare zu konzentrieren. Das wird ein Formular sein
, das wir erstellen werden. Beginnen wir mit der Erstellung einer
HTML-Datei unter Vorlagen. Klicken Sie also mit der rechten Maustaste auf Vorlagen und gehen Sie zur
Datei. Also neue Datei. Vielleicht
wäre Translator Dot HTML ein guter Dateiname. Jetzt wollen wir diese
beiden Textfelder und die Schaltfläche erstellen. Aber anstatt den HTML-Code
hier einzugeben , während Sie sich das Video ansehen, kopiere
ich einfach den Code, den ich bereits
erstellt habe, und füge ihn
hier ein und erkläre ihn Ihnen Damit es gut aussieht, füge
ich jetzt auch den
Link zum Bootstrap Quelle, damit die
Textfelder gut aussehen. Und Sie finden diesen Code im
Anhang zu dieser Vorlesung. Also speichere ich ihn und
klicke dann mit der rechten Maustaste hier und gehe im Finder oder
im Windows Explorer zu Reveal Dann kann ich darauf doppelklicken. Und so sieht es aus. Wir haben also diese beiden
Textfelder, die vom Benutzer erweitert
werden können vom Benutzer erweitert
werden Der Benutzer kann hier Text eingeben, kann hier auch Text eingeben. Aber dieser hier wird im Grunde dazu dienen, die Ausgabe zu zeigen. Aber wie dem auch sei, der Benutzer kann
dort
auch Text eingeben und die Ausgabe ändern,
wenn er möchte und so weiter. Und die Schaltfläche „Senden“ übersetzt diesen
Text in diesen Also jetzt funktioniert
es natürlich nicht. Erwarte nicht, dass dieser Button
etwas tut , weil er
nicht mit Jango verbunden Lassen Sie mich Ihnen erklären,
was der Code macht. Also dieser Link hier ist nur vorübergehend in dieser Datei , weil wir
ihn normalerweise nicht brauchen. Also werde ich es löschen. Wir brauchen es nicht
, weil dieser Link bereits in
Basispunkt-HTML ist . Also
dieser hier drin. Und dieses Bootstrap-Stil
wird auf
alle Vorlagen angewendet , die Basispunkt-HTML
erweitern Derzeit erweitert der
Übersetzer HML diese
Vorlage jedoch nicht Fügen wir also das
Tag hinzu, das erweitert, sodass es in
Anführungszeichen als Basispunkt HTML erweitert Und dann
wollen wir den Text auch
noch einmal machen und Blockinhalt sagen. Da und
hier drin schließen und Inhalt blockieren. Einfach so. Diese Datei erhält
also den
Code von Base Dot ML, und dieser Code
wird mit diesem Code kombiniert , um
die gesamte Seite, einschließlich der Navigationsleiste, bereitzustellen. Also die Menüelemente
auf der Webseite. Also das haben wir hier. Wir haben diesen Klassencontainer, das Haupt-Div,
das alles enthält, also fängt es hier an
und endet hier. Und im Inneren
enthält dieses Div ein Formular. Das Formular beginnt also
hier und es endet hier. Das Formular beinhaltet also sowohl die
Textfelder als auch die Schaltfläche. Also das hier ist eine Reihe. Es fängt hier an.
Es endet hier. Also im Grunde
ist diese Zeile hier eine Abteilung, die
all diese beiden Boxen
und nochmal die Schaltfläche enthält . Und innerhalb dieser Division
mit der Klassenzeile haben
wir auch diese Division, die der erste Textbereich ist. Dieser Aufruf SM six
definiert also, dass dies tatsächlich eine Spalte dieser
Zeile dieser Zeile ist. Das ist also die erste
Spalte, die diesem Textfeld
entspricht ,
dieser Spalte hier. Und dann
enthält die nächste Spalte,
die hier ist, das andere
Textfeld und die Schaltfläche Textbereich bedeutet hier also
dieses Textfeld, und Eingabe mit der Klasse BTN
bedeutet hier diese Schaltfläche. Also Textbereich,
erster Textbereich, Textbereich, zweiter Textbereich und Eingabe der Schaltfläche. Das ist es. Also nochmal, das Formular hat jetzt, Sie sehen, es hat eine
Aktionseigenschaft, die dieses Template-Tag hat
, das ich hier geschrieben habe. Also, was hier vor sich geht
, ist , dass, wenn die Taste gedrückt wird, also diese
Senden-Taste gedrückt wird, etwas passieren wird. Und was passiert, ist, dass
diese URL besucht wird. Das ist keine URL.
Es ist der Name eines URL-Musters, das wir später erstellen
werden. Sie werden sehen, wie das funktioniert. Und die Methode ist eine Post-Methode, was bedeutet, dass
der Benutzer
einige Daten sendet und erwartet, dass Datenprozess vom Server
zurückerhält. Den Rest haben wir bereits erklärt. Also die Abteilungen und der Textbereich mit dieser
Klasse Bootstrap-Klasse Zeilen bedeutet, dass es standardmäßig drei
Textzeilen hat, also eine, zwei und
drei Textzeilen Also die Höhe dieses Textbereichs. Dieser Name wird später verwendet, um
auf diesen Textbereich von
Jango
zu verweisen , um den Text dieses Textbereichs abzurufen und ihn im Dschungel zu verarbeiten
, sodass wir
den anderen Textbereich und die
Eingabeschaltfläche mit dieser
Klasse von Bootstrap haben den anderen Textbereich und die
Eingabeschaltfläche , der Typ ist submits,
was bedeutet, dass, wenn
diese Taste gedrückt wird, dieses Formular, das
Formular gesendet wird Also senden wir die Daten, in diesem Fall
den Originaltext des Benutzers, und value ist der
Name der Schaltfläche. Also einreichen, einreichen. Und das war's. In Ordnung. Wir haben also HTML, aber wir müssen eine URL definieren ,
über die der Benutzer
auf diese bestimmte
HTML-Webseite zugreift. Lassen Sie uns also auch die URLs
im nächsten Video konfigurieren.
223. Benutzereingaben über ein Formular erhalten und verarbeiten: Hallo, willkommen zurück. Zuvor
haben wir diese Webseite erstellt, die gut aussieht, aber im Moment macht sie
nicht viel. Welchen Text
Sie auch immer dort eingeben, Sie drücken auf Senden und
nichts passiert. Der Text verschwindet also. Also lasst uns das umsetzen. Aber zuerst
müssen Sie
die beiden HTTP-Anfragen verstehen , die
hier stattfinden. Die erste HTTP-Anfrage erfolgt, wenn
der Benutzer die URL eingibt, sagen
wir example.com
slash translate Slash oder diese IP des lokalen Hosts,
wie es in diesem Fall ist, und das ist Und diese Anfrage wird von diesem URL-Muster
bearbeitet, und natürlich auch von Diese beiden werden also zu einer URL
zusammengeführt,
nämlich example.com
slash translate slash Es wird aber auch eine weitere
Anfrage gestellt,
und zwar, wenn der Benutzer die Schaltfläche Senden
drückt Es wird auf eine andere URL zugegriffen, und das ist die
, die Sie in
Translator Dot HTML in dieser
Zeile hier sehen . Sie sehen also, dass
diese URL besucht wird, wenn
die Taste gedrückt wird. Also Übersetzer-Ansicht, was wiederum dieselbe URL
ist, also
Übersetzer-Rezension, was dem
Schrägstrich translataS von example.com entspricht, richtig? also
die URL derzeit über
eine GT-Anfrage wie diese aufrufen, wenn Sie einfach Ihren
Browser aktualisieren oder die URL eingeben
und die Submin-Schaltfläche drücken, wird der Benutzer
zu derselben müssen wir ändern
. Wir müssen die beiden
Anfragen
trennen und
unterschiedliche Aktionen ausführen , je nachdem ob der Benutzer
eine GET-Anfrage oder eine Post-Anfrage stellt. Wenn der Benutzer
eine Post-Anfrage stellt, möchten
wir den
Text von hier abrufen und die großgeschriebene
Version in diesem anderen Feld
anzeigen Also lass uns das machen.
Was wir tun müssen, ist, uns in unseren Ansichten zu
unterscheiden. Wir müssen unterscheiden, ob Methode
Request Dot um eine Post-Anfrage
handelt. Wenn das der Fall ist, wollen
wir den
Originaltext oder
den Eingabetext abrufen , den der
Benutzer hier eingibt. Und wir bekommen es über
das Anforderungsobjekt
Dot Post und hier, was kommt hier rein? Nun, hier sollten wir
den Namen dieses Textbereichs eingeben
, der in meinem
Fall mein Textbereich ist. Also hier
geht mein Textbereich als Zeichenfolge hinein. Also, wenn das der Fall ist,
tun Sie das, sonst geben Sie
die Seite so zurück, wie sie ist. Also sonst heißt es, wenn es sich bei der
Anfrage um eine Get-Anfrage handelt. Wenn es sich also um eine Post-Anfrage
über die Schaltfläche handelt, holen
wir uns den Originaltext
aus dem Textbereich
und drucken ihn aus, nur um zu sehen, wie er Originaltext
aussieht. Andernfalls geben
wir bei
einer Abrufanfrage die
Seite einfach so zurück, wie sie ist. Also Übersetzer-Punkt HTML. Speichern. Und
schauen wir uns zuerst das Neuladen Und wir bekommen diesen Fehler. Es hat keine Attributmethode, weil es Methode sein sollte. Es tut uns leid. Speichern und erneut besuchen. Translate ist unser UL Translate. Und lass uns
etwas schreiben, einreichen. Und lass uns sehen, was wir jetzt im Terminal
bekommen. Ich sehe also, dass AAAA
ausgedruckt ist, oder? Diese Zeile wurde ausgeführt. Aber danach haben wir einen Fehler bekommen. Es heißt, dass der Übersetzer die
Übersetzeransicht ansieht. Diese Ansicht, diese View-Funktion
hat also kein
HTTP-Objekt zurückgegeben, was wahr ist. Wir erhielten also eine Post-Anfrage , als wir auf
die Schaltfläche „Senden“ drückten, aber hier wurde nichts
zurückgegeben. Also sollten wir etwas zurückgeben. Und das ist auch ein
Render-Funktionsaufruf
, der eine Anfrage als
Argument zur Übersetzung des HTML-Codes erhält. Und jetzt müssen wir hier auch noch etwas anderes
übergeben, nämlich die Ausgabe. Bisher haben wir gesehen, dass das funktioniert. Wir haben die Texte
des Benutzers erfolgreich abgerufen, aber wir wollen
etwas mit diesem Text anfangen. Sagen wir zum Beispiel Ausgabe, Sie gehen zum Originaltext. wir zunächst an, wir setzen
es, wie Nehmen wir zunächst an, wir setzen
es, wie gesagt, in Großbuchstaben Was wir dann hier in
der Render-Funktion übergeben ,
ist ein Wörterbuch, das so aussieht Sagen wir Ausgabe, Text. Das ist also ein Schlüssel, eine Zeichenfolge, und sie hat als Wertausgabe. Also diese Variable,
der Text in Großbuchstaben. Jetzt speichern wir das und
gehen dann zu Translator Dot HTML. Und in diesen zweiten Textbereich, zwischen dem ersten Angriff auf den
Textbereich
und dem Angriff auf den schließenden
Textbereich, fügen wir
hier eine Vorlagenvariable ein, es
sich um ausgegebenen Text handelt. Also dieses Ding hier drin. Also der Wert davon, das wird
in diesen Textbereich eingefügt. Mal sehen, ob
das funktionieren wird. Stellen Sie also eine Get-Anfrage. Wir erhalten die Webseite
erfolgreich, schreiben etwas, reichen es ein und wir erhalten die großgeschriebene Version
dieses Textes. Es funktioniert also Diese großgeschriebene Version
des Textes stammt also aus
diesem Ausgabetext Und so benutzt man
HTML-Formulare mit Jango. Bevor wir dieses Video schließen, möchte
ich Ihnen ein Problem
mit unserer App zeigen . Wie Sie sehen können, schreiben
Sie hier einen
Text, senden ihn ab, aber der Originaltext
verschwindet, nachdem
der Benutzer den Text eingereicht Also lass uns das beheben.
Es ist sehr einfach zu machen. Lassen Sie uns zunächst verstehen,
warum das passiert. Wenn Sie also erneut zu Views gehen, müssen
wir „Ich bitte
um Gleichberechtigte“ posten, und in diesem Fall senden
wir die Ausgabe
zurück an die Seite, aber wir senden nichts anderes Das wird also ein neues Rendering sein. Es werden die Textfelder,
die beiden Textbereiche
des Übersetzer-HML, gerendert , aber einer davon
bleibt leer ,
da dies sozusagen eine Aktualisierung
der Seite sein wird Wenn Sie also
den Originaltext
auch auf der Webseite haben
möchten , müssen Sie hier im
Wörterbuch
ein neues Paar hinzufügen hier im
Wörterbuch
ein neues Paar Nehmen wir an, das
wäre Originaltext. Als Zeichenfolge. Der Schlüssel und der Wert davon wären also
Originaltext, die Variable. Also dieser hier drin. Kopiere diese Zeichenfolge und gehe
zu Translator Dot HTML. Und hier, im
ersten Textbereich, platzieren
wir eine Vorlagenvariable. Darin befindet sich der Originaltext. Also genau wie dieses Textfeld haben
wir auch dieses. Und so einfach ist das, speichern Sie im übersetzten HTML, speichern Sie auch die Ansichten H Punkt PY und der Server wird neu gestartet Also jetzt wurde der Server neu gestartet. Wir wissen also, dass die Änderungen jetzt übernommen
werden Aktualisieren Sie die Seite,
schreiben Sie etwas hier, senden Sie sie ab, und sowohl der
Originaltext der Ausgabetext verbleiben
auf der Webseite Damit ist der Jango-Teil abgeschlossen. Wir haben also eine funktionierende Web-App. Und jetzt
müssen wir den
Text nur
noch mit einem anderen Paket übersetzen,
anstatt ihn mit
Großbuchstaben ihn mit In diesem Fall werden wir
das Google Trans-Paket verwenden das Google Trans-Paket Also lass uns das
im nächsten Video machen. Danke,
dass du mir bisher gefolgt bist. Wir sehen uns dort.
224. Fertigstellen der Übersetzer-App: Willkommen zurück und lassen Sie uns mit dem letzten
Push unserer App beginnen. Derzeit gibt diese App
die großgeschriebene
Version eines Textes zurück die großgeschriebene
Version eines Textes Lassen Sie uns nun den
Text übersetzen, den der Benutzer hier eingibt. Dazu öffnen wir
ein neues Terminal, um Google Trans zu
installieren. Derzeit gibt es
jedoch ein
Problem mit dieser Bibliothek, die Installation einer
Alpha-Version der Bibliothek behoben werden kann durch
die Installation einer
Alpha-Version der Bibliothek behoben werden kann. Sie können die Alpha-Version mit
dem, was ich gerade eintippe, installieren . Sie könnten also versuchen, haben Sie
keine Angst davor, eines von beiden auszuprobieren. Also entweder Google Trans
oder was auch immer funktioniert. Wenn Sie also eine installieren und ausprobieren, funktioniert sie nicht. Installieren
Sie dann die Alpha-Version,
und diese Alpha-Version überschreibt die vorherige
Version, die Sie installiert haben. Also kein Schaden angerichtet. Was auch immer funktioniert, benutze es. Für mich habe ich herausgefunden, dass
diese Version funktioniert. Also 4.0 0.0 Dash R C eins ausführen. Und ja, es wurde installiert. Dann kann ich versuchen, es zu benutzen. Also habe ich es für
meine virtuelle Umgebung installiert. Also sei vorsichtig
damit. Sie sehen NFR. Es wurde aktiviert, als ich es mit PIP
installiert habe. Also jetzt kann ich das ausprobieren. Ich kann eine Python-Shell öffnen. Und das funktioniert so,
dass Sie die
Übersetzerklasse aus Google Import importieren. Dann erstellen Sie eine
Übersetzungsinstanz. Wenn Sie diese Übersetzerklasse verwenden und dann aus dieser Instanz herauskommen, sagen
Sie
Übersetzung, die Text gleich übersetzt. Nehmen wir an, wie hast du Python in Anführungszeichen
gelernt? Es wird also als Zeichenfolge
und als Test für die
Zielsprache geliefert . Sagen wir DE für Deutsch, du findest diese Abkürzungen bei Google, also
Sprachabkürzungen D steht für Deutsch. Und wenn Sie einen
Text daraus aufrufen,
erhalten Sie die deutsche Version
dieses Begriffs dieses Satzes. Die Bibliothek
arbeitet also für mich. Jetzt möchte ich
diesen Code irgendwo
in meiner Jangle-App in
der Übersetzer-App schreiben in meiner Jangle-App in
der Übersetzer-App In solchen Fällen
möchten Sie
also eine separate Datei in der Übersetzer-App erstellen eine separate Datei in der Übersetzer-App sie vielleicht Translate That PY
nennen Hier drin möchten Sie
aus Google Import importieren, Übersetzer. Was wir tun wollen, ist
vielleicht eine Funktion,
translate, zu erstellen , die
einen Text als Parameter erhält. Diese Funktion wird in den Ansichten PY
verwendet. Wir werden
diese Funktion hier aufrufen, was
ungefähr so sein wird. Übersetzen Sie aus Punkt Import. Dann wird die Ausgabe diesmal Translate Dot Translate
sein. Der Text wird Originaltext sein. Übersetzen ist also diese Funktion. Translate ist also ein Modulname, also translate dot PY und
translate ist eine Funktion. Also Text, dann,
sagen wir Übersetzer, gleich Übersetzer,
die Instanz, dann Übersetzung gleich Übersetzer Punkt übersetzen
Text gleich Text, Ziel
entspricht der Zeichenfolge DE und dann
Übersetzungspunkttext zurückgeben Dies ist ein Übersetzungsobjekt, und Sie müssen
die Texteigenschaft daraus extrahieren ,
um die tatsächliche Zeichenfolge zu erhalten Speichern Sie das und speichern Sie auch das. Und lass uns die App ausprobieren. Und es funktioniert. Also haben wir die Übersetzung auf
Deutsch bekommen, wie Sie sehen können. Richtig. Schließlich
wollte ich hier jetzt auch
einen Menüpunkt für unseren Übersetzer hinzufügen, damit
wir einfach darauf zugreifen können. Um das zu tun, gehen Sie
zu Base HTML und kopieren Sie einfach eines davon,
eine Steuer, kopieren Sie es und
fügen Sie es hier ein. Das wird
also ein Übersetzer sein. Und das ist der Name der URL,
die Sie von hier abrufen
können, URL ist PY, kopieren Sie sie, gehen Sie zur Basis des HTML-Codes,
fügen Sie sie dort ein, speichern Sie und hier ist der Artikel. Das ist also die Website. Damit ist dieses
Jangle-Projekt abgeschlossen. Ich hoffe, Sie haben daraus gelernt, und ich glaube, das sollte
ausreichen , um Ihnen den
Einstieg in Jango zu Also haben wir einige
der sehr wichtigen
Funktionen
von Jango behandelt der sehr wichtigen
Funktionen , nämlich den Umgang mit
Datenbanken und das Abrufen von
Benutzereingaben aus den Formularen, die Verarbeitung dieser Eingaben
und die
anschließende Rückgabe der
Ausgabe an den Also vielen Dank fürs Folgen
und wir sehen uns wieder. Tschüss.
225. 230. Demo von App 10: Geocoder Web App +: Großartig. Wie Sie vielleicht wissen, nähern
wir uns dem
Ende des Kurses, und dieser,
das ist der letzte Abschnitt des Kurses, in dem Sie
Ihre zehnte Anwendung erstellen. Dieser spezielle ist etwas Besonderes. Das Besondere ist nicht
die Anwendung selbst, denn jede Anwendung
ist eigentlich etwas Besonderes. Das Besondere an
dieser Anwendung ist , dass Sie diese eigenständig
erstellen werden. Das ist also in
Form eines Projekts. Du musst das von
Grund auf neu erstellen. Und Sie haben
im Laufe des Kurses
alle Fähigkeiten erlernt , also die Fähigkeiten, die für
die Erstellung dieser
speziellen Anwendung erforderlich sind . Und in diesem Video
wollte ich
Ihnen zeigen, was diese Anwendung macht,
und dann können Sie nach diesem Video
sofort mit der Erstellung
beginnen . Im nächsten Video zeige
ich Ihnen dann die Lösung. Ich zeige Ihnen also den Code auf
dem Video und erkläre, was der Code bewirkt
und welchen Ansatz ich beim Erstellen
der Anwendung verwendet habe. Aber nein, ich hätte
diese Videos
genauso aufnehmen können, wie ich es mit
den anderen neun
Anwendungen im Kurs gemacht habe, aber ich wollte wirklich, dass du etwas selbst
machst, und das wird
dir für zwei Dinge dienen. Zum einen
machst du etwas eigenständig, und du wirst
eine Menge daraus lernen. Und zweitens können Sie das als Portfolio
verwenden. Das ist eine ziemlich nette
Webanwendung. Aber das ist schwierig. Ich meine, ich wäre
überrascht,
jemanden zu sehen , der das zu
100% machen würde, es sei denn, Sie sind ein
Genie. Ich meine das wirklich ernst. Aber Sie sollten in der Lage
sein, das, sagen
wir, bei etwa 50% zum Laufen zu bringen . Wenn Sie dafür sorgen, dass es zu 50% funktioniert, dann haben Sie aus dem Kurs wirklich
gelernt. Also, was meine ich mit 50%? Also, du kannst
irgendwo anhalten und um Hilfe bitten. Vielleicht haben Sie
dort einen Fehler und können ihn
nicht verstehen und für die Zukunft nicht lösen
, oder Sie
wissen einfach nicht, was Sie als Nächstes tun sollen. In solchen Szenarien können
Sie also einspringen und eine
Frage im Q&A-Bereich Also im
Diskussionsbereich des Kurses. Ich sage, frag
mich nicht sofort. Ich meine, ich mag Fragen, aber es ist gut für dich, die Probleme selbst zu
lösen. Weißt du, Programmieren ist schwer. Ich meine, oft braucht
man
nur eine Pause,
wie einen Kaffee oder Tee, um sein Gehirn zu erfrischen
und es zum Nachdenken zu bringen. Und dann könnten Sie plötzlich feststellen,
dass Sie dieses Problem lösen Aber wenn das nicht
funktioniert, bin ich hier, um dir zu helfen. Stellen Sie einfach eine Frage und
ich antworte innerhalb eines Tages. Und meine Empfehlung:
Versuchen Sie jetzt, bei Null anzufangen. Schauen Sie sich nicht
sofort den Code oder
die Vorlesungen an , die wir im Kurs
durchgemacht haben. Versuchen Sie stattdessen, Ihre
Gedanken auf einem Blatt Papier festzuhalten. Schreiben Sie einige Schritte auf,
z. B. Schritt eins, erstellen Sie die
Benutzeroberfläche, Schritt zwei, ein bisschen Skript, das
mit den Daten zusammenhängt und eine Ausgabe
generiert, und erstellen Sie dann die Flasche, Struktur und so weiter Und dann gehst du und implementierst
sie Schritt für Schritt. Wenn Sie dann auf Lager sind, ist
es völlig in Ordnung, sich die Ressourcen anzusehen. Ich mache es die ganze Zeit. Also, was ist diese Anwendung? Nun, das ist eine
FLASK-Anwendung ,
die vom Benutzer eine CSV-Datei erwartet, die mindestens
eine Spalte mit dem Namen Adresse haben sollte Hier ist zum Beispiel eine CSV-Datei. Und Sie können sehen, dass wir dort
eine Adressspalte haben, also sollte der Benutzer dort
eine Spalte namens Adresse,
benannte Adresse haben. Entweder mit einem
Klein- oder Großbuchstaben A, es spielt keine Rolle. Sie sollten Ihre
Anwendung also so aufbauen, dass sie
sowohl Adressen mit einem kleinen A als auch Adressen mit einem
großen A erkennt sowohl Adressen mit einem kleinen A als auch Adressen mit einem . Jetzt kann der Benutzer eine
solche Datei hochladen, indem er hier auf die Schaltfläche „
Datei auswählen Und Sie können sehen, dass Supermärkte
dort hochgeladen wurden. Und sobald der Benutzer
diese Datei hochgeladen hat, drückt er auf Senden Und diese Tabelle wird angezeigt. Sobald der Benutzer also eine solche Datei
hochlädt, das Backend Ihrer Anwendung, liest
das Backend Ihrer Anwendung,
also das Python-Skript
diese Datei fügt eine Breite
-
und Längengradspalte hinzu, die aus
der Adressspalte berechnet werden Wir sprechen also über Geokodierung und Sie wissen, wie
man Das lernst du im Kurs
im Bereich Pandas. Und wie Sie sehen, wird die
Ergebnistabelle auf
der Webseite angezeigt , sobald der Benutzer auf
die Schaltfläche „Senden“ klickt, und Sie können die
beiden Spalten darin sehen Und schließlich möchten Sie
dem Benutzer
auch ermöglichen ,
die CSV-Version herunterzuladen. Also eine Datei, die diese Daten
enthält. Und deshalb müssen Sie hier wie ich einen
Download-Button
anzeigen. Sobald der Benutzer auf
Herunterladen klickt, wird
eine Datei heruntergeladen.
Das ist eine Datei. Wir haben
dort auch einige leere Zellen, weil Python nicht in der Lage
war, sodass der
Geokodierungsdienst diese Adresse nicht nach
Breiten- und Längengrad
geokodieren konnte diese Adresse nicht nach
Breiten- und Längengrad
geokodieren Also ja, dafür musst du
zählen und dann einfach ein paar Nicht-Werte
an diese Zellen
übergeben Nun, bald könnten Sie auf Probleme
stoßen, zum Beispiel, wenn der Benutzer andere Dateien
hochlädt, also ändern wir das so, dass wir statt Adresse
hinzufügen ,
und ich werde das speichern Ich habe also keine
Adressspalte mehr in dieser Datei, lassen Sie mich sie
erneut hochladen. So wie das. Einreichen. Und in diesem Fall möchten
Sie
dort eine Nachricht mit der Aufschrift anzeigen , dass
Sie bitte sicherstellen, dass Sie eine Adressspalte in
Ihrem CSV-Ordner haben oder
etwas Ähnliches. Sie möchten also nicht, dass das Programm abstürzt, um dort
einen Flaschenfehler anzuzeigen Also ja, du musst
versuchen,
einige Fehler darin zu akzeptieren .
Und das ist es. Zu diesem Zeitpunkt haben Sie einen Geokodierungsdienst
erstellt. Ich hoffe, ich habe mich
mit den Erklärungen klar ausgedrückt. Aber wenn Sie Fragen haben, stellen
Sie sie bitte. Ich wünsche dir viel Glück
bei diesem Projekt. Es wird hart sein, aber Spaß machen, und es geht nur um Beharrlichkeit Wenn Sie sich also dazu
verpflichten, werden Sie es tun. Das nächste Video ist gefährlich , weil ich dir dort
die Lösung zeigen werde. Bitte schauen Sie es sich
als letzten Ausweg oder schauen Sie es sich an, um Ihre fertige
Bewerbung mit meiner zu vergleichen. Und wenn Sie
Ihre Lösung mit meiner Lösung vergleichen, sollten Sie auch Ihre Lösung mit meiner Lösung vergleichen, nicht erwarten, dass sie
identisch sind. Das werden sie niemals sein. Ich meine, es gibt verschiedene
Möglichkeiten, eine Bewerbung zu stellen, und meine kann besser sein als deine oder
umgekehrt. Also bitte behalte das im Hinterkopf. Und ja, genau das wollte
ich sagen. Ich hoffe, dir hat mein Kurs gefallen. Ich freue mich auch, wenn
Sie die Bewertung hinterlassen haben. Ich sehe mir alle Bewertungen an und schätze sie sehr. Also ja, vielen Dank, und
ich werde später mit dir sprechen.
226. 231. Teil 1 von Aufbau der Geocoder-Web-App: Hallo, willkommen zu
dieser neuen Vorlesung. Ich hoffe, es fiel
Ihnen leicht die
Geokodierungs-App zu erstellen Ich weiß, das
hätte schwierig sein sollen, aber wenn du
einen bestimmten Punkt durchgemacht hast , ist
das auch toll In dieser Vorlesung erfahren
Sie jetzt zwei Dinge. Die erste Sache ist, dass Sie
den Anhang in den
Ressourcen dieser Vorlesung finden . Dort finden Sie alle Dateien
, die den Code
für diese Web-App enthalten. Insbesondere
finden Sie vier Verzeichnisse, also statische Vorlagen, Uploads und visuelle Dateien sowie
eine App Dot Py-Datei Jetzt habe ich hier zufällig
vier App-Dateien. Aber im Grunde ist die
letzte Version die endgültige Version. Das ist also die erste Version,
in
der ich nur ein paar
Funktionen im Python-Skript hinzufüge, und dann habe ich noch mehr
zu diesen Funktionen hinzugefügt und dann noch ein paar mehr, und dann habe ich hinzugefügt. Und dann habe ich schließlich
etwas mehr Code hinzugefügt , der die Anwendung
vervollständigte. Das ist es also, was du bekommst. Und das findest du in einer Zip-Datei. Also bitte
laden Sie das herunter. Ja, das ist das Erste, was
Sie in dieser Vorlesung bekommen werden, die Zip-Datei
des Lösungscodes. Und die zweite Sache ist, ich werde jetzt weitermachen und erklären wie ich dieses Problem angehe, und ich werde dir
den Code zeigen und was ich zuerst
baue und zweitens
drittens und so weiter. Das sind also die vier Versionen. Ich habe Version eins,
als ich etwas Code hinzugefügt habe, zwei, drei und vier. Lassen Sie uns das
für einen Moment ignorieren, denn das Erste, was ich
erklären möchte, ist die Benutzeroberfläche. Also fangen wir zuerst
am Frontend an. Als Erstes
habe ich jedoch eine
Verzeichnisstruktur erstellt. Also habe ich einen
leeren statischen Ordner,
Vorlagen und
Uploads und einen virtuellen Ordner erstellt Vorlagen und
Uploads und einen virtuellen Statik und Vorlagen
sind also Standard für
FLASK-Anwendungen Und der Upload-Ordner wird
nur der Ordner sein , in dem ich
diese Zwischendateien generiere , die die Anwendung Benutzern
zum Herunterladen zur Verfügung stellt Das werden Sie gleich sehen. Ich habe auch dieses
virtuelle Ordnerlabor erstellt, das eigentlich das Verzeichnis
der visuellen Umgebung ist. Also habe ich das mit
Python mit dem N-Flag Virtual Virtual für den
Namen des Verzeichnisses gemacht. Wenn Sie das also ausführen, erhalten
Sie dieses Verzeichnis mit einer Neuinstallation von Python und PIP und anderen
eingebauten Bibliotheken Und dann habe
ich
Flask installiert und Pandas installiert, weil Sie
Pandas
benötigen , um die
Daten zu lesen, die der Benutzer
übermittelt, und Sie möchten dort einige Spalten
berechnen. Außerdem benötigen Sie Geopy,
um diese Werte aus dem Pandas-Datenrahmen übermittelt, und Sie möchten dort einige Spalten
berechnen. Außerdem benötigen Sie Geopy,
um zu geokodieren Und das sind die drei Bibliotheken von
Drittanbietern Bibliotheken von
Drittanbietern Nachdem ich diese
leeren Verzeichnisse erstellt hatte
, bestand der zweite Schritt darin, die Benutzeroberfläche zu
erstellen. Also habe ich im Vorlagenordner
eine HEML-Vorlage
mit Indexpunkt erstellt Vorlagenordner
eine HEML-Vorlage
mit Indexpunkt Das
war also zunächst ganz einfach. Es enthielt also nicht
so viel Gutes. Das enthielt einfach so etwas wie einen Titel und einige Überschriften und
auch ein Grundformular Und anfangs habe ich
nichts in die Handlung eingebaut. Wenn der Benutzer also etwas abschickt, hatte
ich diese Schaltfläche zum Abschicken und ich hatte auch diesen
Dateityp für Eingaben drin Wenn Sie sich also an die Datei erinnern
können, ist das ein Formular. Wir haben diese Dateieingabe
und die Schaltfläche „Senden“. Also diese beiden und auch eingeschränkte
Einreichung von Dateien nur im CSV-Format. Und das ist ein Formular. Ich hatte das am Anfang nicht, also werde ich es vorerst nicht
erklären. Ich werde das später durchgehen.
Ja, das war Interface. Später habe ich
diese Haupt-CSS-Datei erstellt. Also hier findest du das
CSS-Styling für die Webseite. Ich werde jetzt nicht darauf eingehen. Das ist ziemlich selbsterklärend. Also haben wir CSS zu
Beginn des Kurses gemacht. Und diese Datei ist unter den anderen Dateien
auch in
den Ressourcen enthalten , aber ich erwarte nie, dass
Sie dasselbe Design haben. Sie haben also vielleicht
verschiedene Dinge, einige Farben oder
Größen und so weiter Und dann machst du
weiter und referenzierst den CSS-Bezug zu den Head-Tags Ja, im Grunde
habe ich das in diesem zweiten Schritt gemacht. Also im ersten Schritt ein Verzeichnis
erstellen und im zweiten Schritt
die Basisschnittstelle erstellen und
das CSS-Tolling hinzufügen Wenn Sie einfach
den HTML-Code erstellt haben
und später, wenn Sie Ihre Anwendung
fertiggestellt haben, haben Sie eine CSS-Datei erstellt Das ist auch völlig okay. Oder selbst wenn Sie direkt mit
der Python-Datei angefangen haben, ist
das auch in Ordnung. Einige Entwickler beginnen am Frontend und andere
am Backend. Das ist völlig okay. Sobald ich die Oberfläche hatte
, habe ich eine App-Datei
erstellt. also Diese vier Versionen sind also nur zur Demonstration
für dieses Video gedacht Also habe ich es für verschiedene
Dateien gemacht, um Ihnen
die Phasen zu zeigen , die ich durchlaufen habe,
um meinen endgültigen Code zu erstellen Also Version eins, das habe
ich im Grunde gemacht. Ich habe diese Bibliotheken importiert. Also habe ich aus FAS
die übliche FLASK-Klasse
und normalerweise die
Render-Template-Methode importiert , um HTML-Vorlagen zurückzugeben Und ich wusste, dass meine Bewerbung einige
Benutzereingaben beinhaltete,
also einige also einige Daher habe ich dort auch die
Request-Methode
und dann die Sent-File-Methode eingefügt , mit der eine Datei zum Herunterladen an
den Browser gesendet wird . Und ja, das ist über FAS, und dann wollen wir Daten
geokodieren, oder? Also lade ich es von
Geo Pi auf Programmierer hoch, ich gebe es nominierend
ein Sobald ich
die Abhängigkeiten eingegeben habe, habe ich hier
eine FAS-Instanz erstellt
und dann drei Funktionen ,
die vorerst
nichts tun Die erste
wäre also die Homepage, wie Sie hier mit diesem Backslash Und ich nenne diesen
Index, die Funktion, und ich gebe einfach die
Rendervorlage zurück Und hier ist natürlich Index
Dot HML. Dadurch wird also
die Homepage gerendert,
bei der es sich um Indexpunkt-HML handelt Das nächste, was
Sie erwarten könnten, ist, dass sich der Benutzer auf Ihrer Webseite
befindet Und sobald der Benutzer
die Herbst-Auswahltaste drückt,
eine Datei auswählt eine Datei auswählt und dann auf Senden drückt. Was Sie tun möchten, wenn
sie auf die Schaltfläche Senden klicken ,
ist,
dass Sie diese Datei jetzt in Python laden und das
als Pandas-Datenrahmen lesen möchten,
und Sie möchten
eine Koordinatenspalte berechnen, in der Sie den Breiten - und Längengrad
aus
der
Adressspalte mit Geo Pi berechnen - und Längengrad
aus
der Adressspalte mit Geo Pi Dann möchten
Sie aus der Koordinatenspalte den
Breiten- und Längengrad berechnen Das haben wir bereits im Kurs
im
Panel-Bereich gemacht , und dann möchten
Sie irgendwann einen
Datenrahmen zurückgeben und
diesen Datenrahmen über eine
Rendervorlagenmethode senden . Sie möchten diesen
Datenrahmen hier unten senden. Wir sprechen
hier also davon eine
Funktion zu erstellen, die all das tut. Es liest also den CZ-Fall
und verarbeitet es mit Panels, und dann zeigt es die Tabelle an. Die ASO-Tabelle für den Datenrahmen. Und ich habe die Sutter-Funktion erstellt und die Erfolgstabelle aufgerufen Wenn Sie sich erinnern,
muss der
Methodenparameter post entsprechen, da wir
eine Post-Anfrage erwarten Und dann haben wir noch
eine weitere Funktion. Ich nenne diesen Download Herbst. Das ist also die URL, Erfolgs-Dash-Tabelle, und
das ist ein Funktionsname. Dass wir noch eine weitere URL und eine weitere Funktion
an diese URL angehängt haben. Also nenne ich das Download. Wie gesagt, jedes Mal, wenn
der Benutzer etwas tut, möchten
Sie einen Dekorator
und eine damit verbundene Funktion erstellen und eine damit verbundene Funktion Also zuerst
macht der Benutzer eine Einreichung, und Sie möchten diese in
dieser Funktion erfassen Erfolgstabelle, und als Nächstes drückt
der Benutzer drückt die Download-Schaltfläche, die hier unten angezeigt
wird. Und das muss
eine weitere Funktion in Python auslösen, und das muss die Methode
send file in Python auslösen, damit wir die
Datei an den Benutzer senden. Das heißt, wir brauchen hier eine weitere
Funktion namens Download. Zumindest habe ich es so benannt. Wie dem auch sei, lass uns zu
Version zwei gehen, Null. Sehen Sie sich also den Unterschied
hier und hier an. Die Indexfunktion
bleibt dieselbe. Das ist also alles, was wir für den
Index tun. Es ist ziemlich einfach. Wir geben einfach den ursprünglichen
Index zurück, der eine ML-Vorlage ist. Und dann habe ich hier
eine Menge Code hinzugefügt. Und im Grunde suchen wir nach der Anfrage. Wenn wir eine Post-Anfrage erhalten haben, erhalte ich die Datei
mit dem Punkt, an dem die Anfrage fällt, und die Datei hier ist der Name. Die ganze Eingabe ist hier drin. Also ja, was
passiert ist, dass, wenn der Benutzer auf die
Schaltfläche „Senden“ klickt,
eine URL ausgelöst wird, und dann ist diese URL die URL für die Funktion „Erfolgreiche
Unterstrichtabelle Also diese Funktion
hier. Das heißt diese Funktion wird ausgeführt, und dann erstellen wir dort
einen Datenrahmen
, der den Herbst dieses Jahres liest , den wir vom
Benutzer bekommen, aus dem Benutzerformular. Und dann nominieren wir das und erstellen dort eine
Datenrahmenspalte. Sie kennen das aus dem Abschnitt
Pandas mit der
Apply-Methode und wenden dann den
Geocode auf die Adressspalte Und dann erhalte
ich aus der
Koordinatenspalte eine Breitengradspalte, und ich verwende eine
Lambda-Funktion, um
den Breitengrad aus jeder
Koordinatenzeile zu extrahieren und dort auch nach
n Werten zu zählen Und dann brauche ich
diese Koordinatenspalte nicht. Also lösche ich das einfach
mit der Drop-Methode und konvertiere
es dann in eine CSV-Datei. Hier generiere ich eine CSV-Datei. Dies ist die Ausgabe, die wir dem Benutzer geben
möchten. Und ich sortiere das
im Upload-Ordner. Sie müssen also nur den Pfad dorthin
übergeben,
der relative Pfad
lädt So nenne ich das.
Im Moment später werde ich etwas
Fortgeschritteneres tun. Nennen wir es
vorerst geokodiert, dieses CSV. Und was das dann tun wird, es wird eine Vorlage zurückgeben, also wird es den
Index dieser Vorlage zurückgeben Aber wenn Sie dann hier nachschauen, lassen Sie mich das
für eine andere Ansicht öffnen. Ja, hier haben wir eine Abteilung. Ordne den Ingwer der Syntax zu
, die ich dort verwende. Also füge ich
die BTN-Variable hinzu
und ignoriere
, wenn sie fehlt Nun, das ist
anders als hier oben. Hier gebe ich
HML als Zeichenfolge zurück. Und hier gebe ich
eine HML-Vorlage zurück. Die Syntax ist also anders. Und das unterscheidet sich auch
von der Verwendung von Extend. Wenn wir also ein Layout erweitern, erweitern
Sie ein Layout, wenn Sie möchten, dass,
sobald der Benutzer die HD Melt-Vorlage besucht, den Index
, den HM Meltem Plate aufruft, sagen
wir, den Index, den HM
Meltem Plate andere HML-Vorlagen
anzeigt Es wird also erweitert,
sobald der Benutzer diesen Index und nicht die
HTML-Seiten der Homepage
besucht Das ist anders
, weil wir nicht möchten, dass dies sofort
angezeigt wird Deshalb
sagst du, ignoriere Fehlendes, also ignoriere es,
wenn es fehlt. Und fügen Sie es nur ein
, wenn der Benutzer diese URL der
Erfolgs-Dash-Tabelle
besucht. Und wenn der Benutzer das besucht, also wenn der Benutzer auf Senden drückt, nachdem er eine Datei eingereicht hat, dann möchten Sie diese
Download-HTML-Vorlage rendern. Was das also enthält,
ist eine Schaltfläche hier. Sie möchten
dort eine Schaltfläche generieren, die,
Sie wissen schon, im Herbst, abschicken sollte . Also ja, du bekommst diese
Download-Datei
da drin und du
bekommst auch die HTML-Tabelle Der Datenrahmen
hat also eine HML-Tabelle. Also die erste Zeile,
die zweite Zeile, die erste Zeile, die zweite Zeile Wie dem auch sei, dieser untere Teil ist jetzt an eine Referenz
angehängt, die darauf hindeutet, dass, wenn
der Benutzer auf Herunterladen drückt, die URL für die
Python-Download-Funktion besucht wird Also gehen wir hierher und diese URL der
Download-Funktion wird aufgerufen Ich weiß, was wir tun wollen,
wenn der Benutzer diese URL besucht ist, dass wir die Methode Datei
senden zurückgeben möchten Eigentlich sollten das geokodierte
CSV-Dateien mit Punkten hochladen. Also wollen wir dem
Benutzer die Datei schicken, die wir hier oben
in dieser Funktion
generiert haben hier oben
in dieser Funktion
generiert Wir möchten das unter
dem
Namen youfle dot CSV an den Benutzer senden unter
dem
Namen youfle dot CSV an den Benutzer Und auch als Anlage dazu, ihr kennt diesen Code aus
den vorangegangenen Vorlesungen Und das ist ungefähr der
Download dieser SML-Vorlage. Und wir sind im Grunde fertig. Ich meine, Sie können mit
dieser Version des Programms durchkommen , und es wäre fast ausgezeichnet,
wenn Sie so weit gehen würden. Möglicherweise haben wir damit jedoch einige
kleine Probleme. Das Problem wäre,
wenn Sie eine Datei wählen, eine CZ-Datei, die keine
Adressspalte enthält, also eine Spalte mit dem Namen Adresse, dann könnten Sie
diese Datei als Datenrahmen laden,
und wenn Sie dann versuchen, eine neue Spalte mit dem Namen Koordinaten im
Datenrahmen zu erstellen,
und dann versuchen, auf
eine bestehende Spalte mit dem Namen
Adresse im Datenrahmen zuzugreifen eine bestehende Spalte mit dem Namen
Adresse im ein Python wirft einen Pfeil und stoppt
die Anwendung. Das heißt, wenn der Benutzer die URL der Erfolgstabelle
besucht, wird ihm
eine Fehlerseite angezeigt. Und das ist nicht sehr
benutzerfreundlich. Stattdessen könnten Sie hier
einige Funktionen hinzufügen, die
prüfen, ob es sich bei dem Datenrahmen eine vom Benutzer
eingegebene Datei handelt, sodass Sie die
Datei als Datenrahmen lesen möchten. Sie dann im Datenrahmen, Prüfen Sie dann im Datenrahmen, ob Sie
eine Adressspalte haben. Wenn Sie eine haben, machen
Sie weiter und führen die Berechnungen durch. Wenn Sie dies nicht tun, geben Sie dem Benutzer etwas
zurück. Anstatt also DF in HTML
zurückzugeben, geben
Sie eine Nachricht zurück, die
besagt, dass
Sie leider keine solche
Spalte oder so standardmäßig haben. Also ja, ich werde dir den Code
dafür in der nächsten
Vorlesung zeigen . Also, sieh mal
227. 232. Teil 2 von Aufbau der Geocoder-Web-App +: Großartig. Wir sind in Version zwei, und ich werde jetzt versuchen,
schnell zu sein und Ihnen
Version drei zu zeigen . Das
ist Version drei. Ich habe
diese Funktionalität implementiert, bei der ich überprüfen möchte, ob Datenrahmen
eine Adressspalte enthält, indem ich eine
Try-and-Expect-Anweisung hinzugefügt habe. Im Grunde genommen, wenn Sie den Unterschied sehen
können ist, dass ich die Datei erhalte und dann versuche, diese Datei zu
lesen. Oder das könnte auch
außerhalb eines Try-Schlüsselworts liegen. Das wäre kein Problem und C auch
außerhalb eines
Try-Schlüsselworts. Dies ist jedoch immer noch
besser, da Sie möglicherweise auch nach Benutzern suchen
möchten, die keine
CSV-Dateien senden. Hier
überprüfen wir also tatsächlich
, ob der Benutzer eine CSV-Datei
einreicht. bedeutet jedoch nur, dass die Datei in der Dateispur eine punktuelle
CSV-Erweiterung hat. Das bedeutet
jedoch nicht, dass es sich bei der Datei tatsächlich um CSV handelt. Sie haben also vielleicht, sagen wir, eine MP Four-Datei und Sie haben die
Erweiterung in CSV geändert, aber das ist immer noch
eine MP Four-Datei. Sie wollen also,
ähm, Sie wollen
DF in den
Try-and-Expect-Block aufnehmen . Wenn Python nicht in der Lage ist einen Datenrahmen
aus einer Epi-Datei zu
erstellen, wird ein Fehler ausgegeben Das
passiert also tatsächlich, wenn Sie EpiourFle übergeben, Sie könnten es nicht als
Datenrahmen lesen Also ja, du willst das hier
einfügen, dann gibst du dasselbe zurück, also habe ich hier nichts geändert Sie geben den gleichen
Vorlagenindex bei HML und senden die HML
dorthin und die Schaltfläche Sofern nicht ein Fehler vorliegt, geben Sie
den Index zurück, nicht HML, sondern möchten dann anstelle
der HML-Tabelle diese
Meldung Und natürlich möchten Sie dort
keine Download-Schaltfläche zurückgeben .
A, das sollte reichen. Und das ist ungefähr Version drei. Das waren also die Unterschiede. Also, Version vier,
was ich da habe. Nun, wenn Sie hier sehen, haben wir diesen geokodierten CSV-Herbst Nun, das ist eine Zeichenfolge. Das bedeutet, dass für
alle Benutzer,
die Daten einreichen, eine
Geocode-CZ-Datei erstellt wird Das kann zu Problemen
führen, denn wenn zwei Benutzer gleichzeitig
Daten senden, kann es zu
Namenskonflikten kommen. Was Sie
hier also tun könnten, ist,
ein Datat-Modul zu verwenden , um eindeutige Namen für
jede generierte Datei zu generieren Und genau das habe ich getan.
Also hier ist Version vier. Ich habe das
Tageszeitmodul hier eingefügt und dann generiere ich hier die
geokodierte CSV-Datei, also DF zu CSV-Dateiname Und ich habe diesen Dateinamen hier
global gemacht, weil ich auch über die
Download-Funktion hier darauf
zugreifen möchte die
Download-Funktion hier darauf
zugreifen Also nochmal, ich möchte das hier
generieren, ich generiere einen Dateinamen. Dann
haben wir im Dateinamen die Upload-Zeichenfolge, die das Verzeichnis verweist , in dem sich
diese Datei befinden wird. Und dann haben wir den Schrägstrich. Und dieses Plus
sollte eigentlich nicht da sein. Also direkt nach dem Schrägstrich haben
wir den Dateinamen. Und das wäre,
wissen Sie, wir haben das Jahr und dann den Monat und dann den Tag
und dann die Stunde und die
Minuten und Sekunden
und Millisekunden Und dann die
Punkt-CSV-Erweiterung im Dateinamen. Also ja, das ist für
jeden Benutzer
ziemlich einzigartig , weil wir da
Millisekunden haben Aber lassen Sie mich Ihnen zeigen, wie
das tatsächlich aussieht. Auch hier
wählt der Benutzer eine Datei aus, sendet, und wenn er auf Senden drückt, generiert
ein Python
den Datenrahmen und
generiert auch die CC-Datei. Also in dieser Zeile hier. Und Sie können diese
CC-Datei jetzt im Upload-Ordner finden. Das wurde also früher generiert, und das ist die Datei Das ist die Datei, die
wir gerade generiert haben. Wenn der Benutzer dann
auf Herunterladen
klickt, wird diese Datei heruntergeladen, aber mit Ihrem Dateinamen
, der hier dieser ist. Was jedoch passiert, ist, dass die Funktion den
Pfad der Datei, die sie im Browser herunterladen
muss, abruft und
den Fallnamen aus
dieser globalen Variablen bezieht Deshalb übergebe ich
das als globale Variable ,
damit ich auf
den Wert zugreifen kann
, der hier generiert wird Ich kann auf diesen Wert
von einer anderen Funktion aus zugreifen Und ja, das ist meine Version
der Anwendung. Ich weiß, dass das nicht
wie deine Version ist. Ich hoffe, du warst
so nah wie möglich dran, und es wäre toll, wenn
du es besser machen würdest als ich. In beiden Fällen bin ich mir sicher, dass der Versuch, diese
Anwendung zu lösen, Ihre
Fähigkeiten zur Problemlösung in Python hätte
verbessern sollen Ihre
Fähigkeiten zur Problemlösung in Python hätte
verbessern , denn das wird Sie
zumindest positionieren, also definieren wir Ihr Level,
Ihr Python-Level, damit
Sie
die Lücken füllen können , von denen Sie
wirklich denken, dass sie
nicht Ihre Stärken sind . Es ging um diesen
Vortrag, und wir sehen uns.