Transkripte
1. Curse Einführung: Willkommen bei PyTon
Visually Explain, einem Kurs, der Ihnen das
Programmieren mit PyTon beibringen soll In diesem Kurs verwenden wir
visuelle Darstellungen, um Konzepte zu veranschaulichen und
Programmierung zugänglich zu machen In diesem Kurs lernen
Sie die Grundlagen
der Programmierung kennen und verwenden diese Konzepte, um Probleme aus der
realen Welt zu lösen Um Sie auf
Ihrer PTN-Reise zu unterstützen, stehen Ihnen zwei erfahrene
Mentoren zur Seite Mein Name ist Sebastian. Ich bin Finanzprofessor an der University of
Wisconsin Madison. Ich verwende PyTon seit vielen Jahren
ausgiebig, sowohl für meine akademische Forschung als
auch im Unterricht Und ich bin Ali, der
Lehrassistent für diesen Kurs. Ich habe ein Doppelstudium in
Informatik und Finanzen, ebenfalls von der University
of Wisconsin Madison. Egal, ob Sie ein
absoluter Anfänger sind oder Erfahrung mit dem Programmieren
in anderen Sprachen
haben , dieser Kurs vermittelt
Ihnen wertvolle Fähigkeiten. Anfänger
haben die Möglichkeit, die Grundlagen
bequem zu erlernen , da wir keine Programmierkenntnisse
voraussetzen. den ersten Vorlesungen
dieses Kurses werden
grundlegende Konzepte
wie Variablenzuweisungen vorgestellt . Auf
diesen Grundlagen bauen wir dann auf, um komplexere
Themen zu untersuchen, z. B. für Loops. Schließlich zeigen wir Ihnen, wie
Sie
neue Funktionen nutzen können, indem Sie Python-Bibliotheken nutzen
. Sie
bieten Ihnen endlose Tools
zur Lösung von Problemen, von der
Erstellung von Diagrammen bis hin zur
Sprachübersetzung und vielem mehr Diese modulare Struktur
eignet sich auch hervorragend für erfahrene Programmierer, die sich für
bestimmte Aspekte
der Python-Sprache
interessieren bestimmte Aspekte
der Python-Sprache Sie können direkt
zu
interessanten Themen springen und
sich mit der Python-Syntax vertraut machen. Wir haben diesen Kurs so konzipiert
, dass er klar und präzise ist. Wir respektieren Ihre Zeit als Lernender und möchten
Ihnen helfen, Konzepte effizient zu erlernen Für jedes Konzept in diesem Kurs gibt es ein eigenes
Modul mit mehreren Videos Jedes Modul beginnt mit einem oder zwei Einführungsvideos, Ihnen
anhand
von visuellen Erklärungen
und Codebeispielen ein
grundlegendes Verständnis des Konzepts anhand
von visuellen Erklärungen
und Codebeispielen Dann tauchen wir mit
Videos, die
fortgeschrittenere Anwendungsfälle untersuchen, tiefer Videos, die
fortgeschrittenere Anwendungsfälle untersuchen, In diesen Videos begleitest du Jamie und Pike auf ihren
Wanderabenteuern, bei denen sie auf Probleme stoßen,
die wir in Python lösen Auf diese Weise können wir sehen, wie Konzepte, die wir
gelernt haben, angewendet werden können Um Ihr
Verständnis der Konzepte zu vertiefen, stellen
wir Ihnen dann Übungshefte zur Verfügung , an denen Sie
selbstständig arbeiten können Diese Übungen
ermöglichen es Ihnen,
jedes Thema zu meistern und häufig neue verwandte Ideen
einzuführen Nach jeder
Übungsmappe gibt es ein Video, in dem die
Lösungen zu den Übungen diesen Videos wird
jedes Problem Schritt für
Schritt beschrieben und dabei anschauliche Bilder verwendet
, um Ihr Lernen zu unterstützen Jedem Modul ist
eine Datei
auf unserer Github-Seite für den Kurs zugeordnet auf unserer Github-Seite für den Kurs Diese Datei enthält Links zu Notizbüchern, die wir in den Videos,
Übungsnotizbüchern und
zusätzlichen Lernressourcen
verwenden . Schauen Sie sich
die Ressourcen an und verfolgen Sie die Videos
in den bereitgestellten Notizbüchern. Schließlich werden
Sie am
Ende des Kurses an einem
Projekt arbeiten, bei dem Sie
Ihre neuen Programmierkenntnisse anwenden , um eine
Sprachübersetzer-Anwendung zu erstellen. Ich bin ein bisschen voreingenommen,
aber es macht viel Spaß. Wir freuen uns,
Sie auf dieser Reise zu haben. Egal, wo
Sie beginnen, dieser Kurs ist darauf
ausgelegt Programmierkonzepte intuitiv, praktisch und unterhaltsam zu gestalten.
Lass uns anfangen.
2. Erste Schritte mit Colab: In diesem Video stellen wir die in diesem Kurs
verwendete Python-Codierungsumgebung vor. Es heißt Google
Collaboratory oder Colab. Colab ist eine großartige
Umgebung, um
Programmieren zu lernen , da es
kostenlos und cloudbasiert ist,
was bedeutet, dass Sie von
jedem Computer aus darauf zugreifen können , ohne Software
installieren zu müssen Die Einrichtung von Colab ist sehr einfach. Sie benötigen lediglich ein
Google-Konto. , wenn Sie Gmail Gute Nachrichten, wenn Sie Gmail,
Google Drive oder Google
Calendar verwenden. Sie haben bereits ein Konto. Wenn Sie dies nicht tun, können Sie kostenlos ein Konto
erstellen, indem Sie
zu Konten google.com mit dem
Schrägstrich SINAP gehen zu Konten google.com mit dem
Schrägstrich Sobald Sie
sich angemeldet haben, navigieren Sie zu Ihrem Google Drive,
wo Sie Ihr
erstes Colab-Notizbuch erstellen
können Ihr
erstes Colab-Notizbuch erstellen
können Um ein neues Notizbuch zu erstellen, klicken Sie auf die Schaltfläche Neu zu Ich gehen, wird Ihnen möglicherweise die Option
Google Collaboratory angezeigt oder auch nicht Wenn Sie
Colab nicht als Option sehen, bedeutet
das, dass wir es installieren
müssen Klicken Sie auf Weitere Apps verbinden
und suchen Sie nach Collaboratory. Klicken Sie dann auf Collaboratory
und installieren Sie es. installiert wird, werden Ihnen
einige Berechtigungsdialoge Bevor Colab Fantastisch. Lassen Sie uns nun ein Notizbuch erstellen und die
grundlegenden Funktionen von Colab erkunden Jedes Notizbuch ist in
Zellen unterteilt , in die wir
Code oder anderen Text schreiben können Um eine neue
Zelle zu erstellen, bewegen Sie den Mauszeiger über den oberen oder unteren Rand
einer vorhandenen Zelle Hier sehen wir, dass es zwei Arten von Zellen
gibt. Codezellen, wie in der
bereits vorhandenen, schreiben wir
unseren Python-Code. Textzellen sind für
alles, was kein Code ist. Optional können wir
Zellen mit Markdown formatieren,
worauf wir
in diesem Kurs nicht eingehen Wenn Sie
mehr über Markdown erfahren möchten, finden Sie auf
der GitHub-Seite einen hilfreichen Link für dieses Modul Zusätzlich können wir
die Reihenfolge der Zellen mithilfe
der Pfeile ändern und Zellen entfernen,
indem wir auf das Papierkorbsymbol klicken Acht.
Möglicherweise möchten Sie Notizbücher
für Ihre eigenen Projekte von Grund auf neu erstellen, in diesem Kurs
stellen wir Notizbücher
für jedes Video zur Verfügung. Sie können über
die
Seite mit den
Notizbuch-Links in diesem Modul auf jedes Notizbuch zugreifen . Über diesen Link gelangen Sie zu einer GitHub-Seite, auf der
Sie
für jedes Modul eine Datei mit Links zu Notizbüchern und anderen
relevanten Informationen finden. Wenn Sie auf einen Notebook-Link klicken, werden
Sie zu einer
schreibgeschützten Kopie des Notebooks weitergeleitet. Um Ihre eigene Kopie zu erstellen, klicken Sie in
der Werkzeugleiste auf
die Schaltfläche Auf Laufwerk kopieren. Colab
erstellt dann eine Kopie auf einer neuen Registerkarte Sie besitzen jetzt diese Kopie
des Notizbuches und sie wird auf Ihrem Google Drive
gespeichert Das bedeutet, dass Sie
die Zellen und den Namen des Notizbuchs bearbeiten können . Um die Liste
Ihrer Colab-Notizbücher anzuzeigen, klicken Sie auf das Logo in der oberen linken Ecke, um zu Google Drive
zu gelangen Alternativ
können Sie im Ordner
Colab-Notizbücher auf die Kursnotizbücher zugreifen , die Sie auf
Ihr Laufwerk kopieren , die Sie auf
Ihr Laufwerk Großartig. Dies sind
alle Funktionen von Colab, die wir für den Einstieg
benötigen Laufe dieses Kurses werden
wir uns eingehender mit den
Funktionen von Clob befassen also keine Sorgen, wenn diese Oberfläche Moment etwas
einschüchternd wirkt Wenn wir uns mit unserem ersten Thema befassen, werden
wir lernen, wie man Code in einem Notizbuch schreibt
und ausführt Und damit wollen wir eintauchen.
3. Numerische Operationen: Willkommen zum ersten
Programmierkonzept dieses Kurses
numerische Operatoren. In diesem Video
werden wir sehen, wie man
numerische Operatoren verwendet , um
grundlegende mathematische
Operationen in PyTon auszuführen grundlegende mathematische
Operationen in PyTon Die in diesem
Video behandelten Konzepte sind ziemlich einfach. ist gut
so, da wir uns so
vorsichtig mit
der Google Colab-Umgebung vertraut machen
können vorsichtig mit
der Google Colab-Umgebung vertraut machen der Google Colab-Umgebung In Bton können numerische
Operatoren wie Plus,
Minus, Stern und Schrägstrich
mathematische
Operationen an Zahlen ausführen mathematische
Operationen an Zahlen so wie Sie es
in der Grundschule gelernt haben Wenn
wir beispielsweise die
Summe von zwei und drei berechnen möchten , können
wir zwei plus
drei in eine Codezelle schreiben Um den Ausdruck auszuwerten, müssen
wir Python anweisen
, den Code auszuführen In Google Colab
erfolgt dies, indem Sie links neben
der Codezelle auf die Schaltfläche Ausführen klicken oder die
Tasten Strg plus Enter oder je nach Betriebssystem die
Tasten Strg plus Enter oder
Befehl plus Return Herzlichen Glückwunsch. Sie haben jetzt Ihre
allererste Codezeile
ausgeführt. Es überrascht nicht, dass
PyTon meldet, dass der Wert von zwei
plus drei fünf ist In ähnlicher Weise verwenden wir, wenn wir drei von zwei
subtrahieren wollen, den Subtraktionsoperator minus, um zwei und drei zu multiplizieren, wir verwenden den
Multiplikationsoperator Stern und um zwei durch drei zu teilen, wir In jedem Fall erhalten
wir beim
Ausführen der Codezellen die erwarteten Antworten.
Großartig. Wir haben jetzt unsere ersten
paar Zeilen Byton-Code ausgeführt. Das war einfach, nicht wahr? Im nächsten Video werden wir
einige Anwendungsbeispiele für
die Betreiber sehen, einige Anwendungsbeispiele für die wir in diesem Video
behandelt und wir werden
einige weitere Betreiber vorstellen.
4. Numerische Operationen führen Beispiele: Jamie freut sich auf ihre
bevorstehende Wochenendwanderung. Aber bevor sie sich
in die Wildnis wagt, muss
sie entsprechend planen. Insbesondere muss sie
festlegen, wie viele
Meilen sie wandern wird, wie lange sie unterwegs sein wird, wie viel Wasser sie
mitnehmen muss und so weiter. Bei Meilen, Zeit und Unzen
Wasser dreht sich alles um Zahlen. Und da Matt nicht
Jamies Stärke ist, wird
sie Bike bitten,
ein paar Berechnungen für sie durchzuführen Eines von Jamies
Gesundheitszielen ist es, täglich
mindestens 10.000 Schritte zu gehen mindestens 10.000 Schritte Dieses
Ziel möchte sie während unserer Wanderung erreichen. Um unser Ziel zu erreichen, wie viele Meilen lang
sollte unsere Wanderung sein bedenkt, dass unsere durchschnittliche
Schrittlänge 2,5 Fuß beträgt Während Pike die Antwort berechnet, wollen wir sehen, ob
wir
das Problem mit Piton lösen können die Entfernung
in Fuß zu bewältigen, die Jamie zurücklegen muss, müssen
wir zunächst ihr Schrittziel
10.000 mit unserer
Schrittlänge, 2,5 Fuß, multiplizieren 10.000 mit unserer
Schrittlänge Wenn wir die Zelle ausführen, erhalten wir
ein Ergebnis von 25.000 Fuß. Lassen Sie uns nun diese
Menge in Meilen umrechnen. Wir tun dies, indem wir
unser vorheriges Ergebnis durch
5.280, die Anzahl
der Fuß pro Meile, teilen 5.280, die Anzahl
der Fuß pro Meile die Zelle ausführen, erhalten
wir 4,73 Meilen, genau Pike. Basierend auf diesen Informationen schlägt
Pike vor, einen lokalen Pfad namens
Achterbahn zu wandern einen lokalen Pfad namens Jamie wird jedoch gewarnt,
dass dieser Weg
einige herausfordernde Anstiege mit einem
Höhenunterschied
von insgesamt 500 Fuß bietet einige herausfordernde Anstiege mit einem
Höhenunterschied
von insgesamt 500 Fuß Aus Jamies
Sicht macht das Wandern auf
einem Pfad durch
Höhenunterschiede jedoch macht das Wandern auf
einem Pfad durch
Höhenunterschiede exponentiell Da Jamie gerne alle Aspekte
ihrer Abenteuer
quantifiziert, bittet
sie Pike, zu berechnen wie viele Einheiten Spaß
sie beim Wandern auf der Achterbahnstrecke haben wird Ihr zufolge berechnet sich der Spaß an
einer Wanderung aus dem
Quadrat des Höhenunterschieds zuzüglich einer Grundgröße
von 1.000 Einheiten Spaß, wenn man einfach nach draußen geht Höhenunterschieds zuzüglich einer Grundgröße von 1.000 Einheiten Spaß, wenn man einfach nach draußen Lassen Sie uns die Berechnung
im Notizbuch durchführen. Um die Formel zu implementieren, müssen
wir
den Höhenunterschied quadrieren. In Python ist der
Exponentenoperator der Doppelstern. Wir vervollständigen den
Ausdruck, indem wir
zusätzliche 1.000 Einheiten Spaß hinzufügen , wenn Sie einfach nur
nach draußen gehen. Wenn wir die Zelle ausführen, erhalten
wir 251.000 Einheiten Spaß Und Pike auch. Das ist alles gut, aber mit viel Spaß geht auch viel
Verantwortung Jamie muss sicherstellen, dass sie während
der Wanderung ausreichend Flüssigkeit zu sich nimmt Aus früheren Erfahrungen weiß
sie, dass für eine so lange Wanderung 40 Unzen Wasser benötigt werden Um Wasser mitzunehmen,
hat Jamie 512-Unzen-Flaschen dabei. Sie ist daran interessiert, die Anzahl der Flaschen
herauszufinden ,
die gefüllt werden müssen, und falls zutreffend, möchte
sie wissen, wie viel
Volumen der letzten
Flasche
hinzugefügt werden sollte , um
insgesamt 40 Unzen Wasser zu haben insgesamt 40 Unzen Wir können diese Menge natürlich mit dem
regulären Divisionsoperator ermitteln Durch die Berechnung von 40/12 erhalten
wir 3,33. Dies bedeutet, dass Jamie drei volle Flaschen und
eine vierte Flasche
benötigt , die zu einem Drittel seines Fassungsvermögens oder 4
Unzen
gefüllt seines Fassungsvermögens oder 4
Unzen Diese Methode funktioniert,
aber PyTon bietet zwei weitere Operatoren, die
diese Berechnung
etwas einfacher machen diese Berechnung
etwas einfacher die Operatoren Floor Division und Der
Floor-Divisionsoperator gibt zurück , wie oft der
Divisor vorkommt. In diesem Fall geht
12 gleichmäßig
in die Dividende ein, in diesem Fall 40. In unserem Beispiel
ergibt der Ausdruck das Ergebnis Drei,
was bedeutet, dass Jimmy
drei volle Flaschen Wasser benötigt drei volle Flaschen Wasser Beachten Sie, dass der Operator für die
Floor-Division den ganzzahligen Teil
des Ergebnisses der regulären
Division
ergibt , wobei alle
Bruchteile verworfen Fantastisch. Lassen Sie uns jetzt
über den Modulo-Operator sprechen Der Modulo-Operator
gibt den Rest
oder die Reste nach der Stockwerksteilung
zurück oder die Reste nach der Stockwerksteilung In unserem Beispiel beträgt der Rest nach
der
Geschossteilung vier .
Und sieh dir das an. Pike stimmt unserer Einschätzung zu. Wir kennen jetzt alle
arithmetischen Operatoren von PyTon. Im nächsten Video werden wir
einige Übungen mit diesen
numerischen Operationen sammeln einige Übungen mit diesen
5. Einführung in Datentypen: vorherigen Video haben wir
mehrere Zahlen
in unser Notizbuch geschrieben . Einige waren Zahlen und
andere waren Dezimalzahlen. Die Python-Sprache unterscheidet formal zwischen diesen beiden Typen von
numerischen Werten. In diesem Video werden wir
diesen Unterschied untersuchen, während wir
den Begriff des Datentyps vorstellen Ganze Zahlen, also jede
positive oder negative Zahl ohne Bruchteil als
Ganzzahlen bezeichnet Dezimalzahlen
, also jede positive oder
negative Zahl mit
einer Bruchkomponente,
werden ihrerseits , also jede positive oder
negative Zahl mit als Gleitkommazahlen bezeichnet Lassen Sie uns bestätigen, dass Piton tatsächlich zwischen
diesen beiden Arten von Zahlen unterscheidet Um das Vorhandensein
dieser Unterscheidung zu überprüfen, werden
wir den eingebauten
Funktionstyp verwenden Wir werden in einem zukünftigen Video
ausführlich auf integrierte Funktionen eingehen. Nehmen wir zunächst den Schreibtyp,
gefolgt von einer Zahl in Klammern, als
gegeben an und
weisen PyTon
an, auszugeben, ob es sich bei
der Zahl um eine
Ganzzahl oder eine Fließkommazahl handelt Wenn wir zum Beispiel die Zahl
13 in Klammern
schreiben und die Zelle ausführen, gibt
PyTon int aus, was bedeutet,
dass der gibt
PyTon int aus, was bedeutet Wert 13 In ähnlicher Weise erhalten wir
Float, wenn wir die Zahl 3,14
15 in die Klammern schreiben 15 in die Klammern In PyTon ist die
Unterscheidung zwischen Ganzzahlen und Es gibt Kontexte, in denen
diese Unterscheidung wichtig ist, aber für die Anwendungen, die wir in
diesem Kurs behandeln, wird
sie nicht Ein wichtiges allgemeines Konzept
, das man aus
diesem Video mitnehmen kann, ist der
Begriff des Datentyps. BTN kann
verschiedene Datentypen repräsentieren, darunter Ganzzahlen und Fließkommazahlen, aber auch mehrere Im Laufe
dieser Vorlesungen werden
wir viele weitere
Datentypen behandeln und ihre Verwendung untersuchen Aber bevor wir uns damit befassen
, wollen wir
ein paar Übungen zu
Ganzzahlen und Gleitkommazahlen lösen ein paar Übungen , um etwas Übung zu
gewinnen
6. Numerische Operationen und Datentypen Übungen: In dieser Arbeitsmappe
haben Sie die Verwendung der numerischen Operatoren
und der Typfunktion von
Python geübt numerischen Operatoren
und der Typfunktion von
Python Lassen Sie uns die Lösungen durchgehen. Um Übung eins,
Teil A, zu lösen , können wir den
Multiplikationsoperator verwenden Multiplizieren Sie einfach die
Anzahl der Brote mit dem Gewicht des Mehls pro Laib und dann
mit den Kosten Die
Gesamtkosten des Besitzers betragen 12,65 USD. Wir können die Art
unserer Kosten auch mithilfe der
Typfunktion überprüfen unserer Kosten auch mithilfe der
Typfunktion Aufgrund der Dezimalstellen würden
wir erwarten, dass
12,65$ über Wasser sind Und Python stimmt zu.
In Übung zwei können
wir die
Gesamtkochzeit für
die 200 Kekse ermitteln , indem Begriffe in
Klammern gruppieren Da wir zwei Öfen
mit einer Kapazität
von 25 Keksen haben, können
wir 25 mit zwei multiplizieren können
wir 25 mit zwei multiplizieren, um die
Gesamtkapazität für Kekse zu erhalten Dann teilen wir die
200 Kekse, die wir backen
müssen, durch diesen Ausdruck gruppieren ihn mit Klammern um die richtige
Reihenfolge der Operationen sicherzustellen Dies ergibt die Anzahl der Chargen, die wir im Ofen
garen müssen Schließlich können wir
diesen Ausdruck mit 15 Minuten multiplizieren , um die Gesamtzeit zu erhalten Auch hier verwenden wir Klammern, um die richtige
Reihenfolge der Operationen sicherzustellen die Zelle ausführen,
stellen wir fest, dass es 60 Minuten
dauern wird , alle
Kekse zu backen Wenn wir keine Klammern verwenden, erhalten
wir 240,
was falsch ist Auch hier können wir den Typ des
R-Ergebnisses mit der
Typ-Funktion überprüfen R-Ergebnisses mit der
Typ-Funktion 60.0 ist ein Float, weil es eine Dezimalkomponente
hat, obwohl die
Dezimalkomponente Null ist Wenn wir zu Übung drei übergehen, können
wir die Anzahl der
vollen Chargen mit dem
Floor Division Operator berechnen vollen Chargen mit dem
Floor Division 250 Gramm Schokoladenstückchen, geteilt durch 40 Gramm
pro Charge, ergeben sechs Wir können die
übrig gebliebenen Gramm
Schokoladenstückchen mit
dem Modulo-Operator berechnen Schokoladenstückchen mit
dem Modulo-Operator Wenn wir 250 Gramm
Schokoladenstückchen haben und
40 Gramm pro Charge benötigen, haben
wir nach sechs Chargen noch 10 Gramm übrig In ähnlicher Weise können
wir in Teil B mit dem
Operator „Floor Division “ berechnen, dass wir 13 Backwaren herstellen können, wenn jedes Gebäck 37 Gramm
Teig benötigt jedes Gebäck 37 Gramm
Teig benötigt und
wir
500 Gramm Teig haben jedes Gebäck 37 Gramm
Teig benötigt und
wir Mit dem Modulos-Operator können
wir auch sehen
, dass 19 Gramm Teig übrig bleiben Großartig. In Übung vier können
wir mit dem Exponentenoperator die Tatsache erfassen
, dass
sich die Masse
der Hefe jede Stunde verdoppelt mit dem Exponentenoperator die Tatsache erfassen
, dass
sich die Masse
der Hefe jede Stunde Lässt man die Hefe 6 Stunden lang wachsen, erhöhen
wir die Zahl Zwei auf
die Potenz von Sechs Dann multiplizieren wir das mit den
anfänglichen Gramm Hefe drei , um nach 6 Stunden das Ergebnis von 192
Gramm zu erhalten. Schließlich multiplizieren
wir in Übung fünf, um das
Gewicht des Mehls zu berechnen, um das
Gewicht des Mehls zu berechnen, einfach
20 mit 23, um 460 zu erhalten. Um das
Gewicht des Zuckers zu berechnen, können
wir als Nächstes den
Exponentenoperator verwenden, um die Quadratwurzel
des Mehlgewichts zu
ermitteln .
460 ergibt 21,45 Dann verwenden wir den
Modulooperator, um
den Rest des
Gesamtmehls und Zuckers geteilt durch 42 zu ermitteln ,
was 19,45 ergibt Schließlich ist das
Gesamtgewicht die Summe
der drei Zutaten
und beträgt In Teil B können wir
das Gesamtgewicht der Zutaten wiederverwenden und durch
die
regelmäßige Aufteilung , dass der Eigentümer 8,04 Chargen
mit 62,3 Gramm Zutaten pro Charge herstellen
kann mit 62,3 Gramm Da der
Besitzer jedoch nicht
0,04 aus einer Charge herstellen kann , sollten wir Dazu können wir
den
Floor-Divisionsoperator verwenden , um
nur die
ganzzahlige Komponente
des Divisionsergebnisses, also acht
, abzurufen nur die
ganzzahlige Komponente
des Divisionsergebnisses, also acht
, Großartig. Nachdem Sie nun numerische Operationen und
die Typfunktion verstanden
haben, können wir damit beginnen, einen anderen Datentyp
von Python zu
untersuchen: Zeichenketten.
7. Saiteninstrumente: Bisher haben
wir auf unserer Reise
durch den Datentyp von PyTN ganze Zahlen und Flüsse behandelt, die die Grundlage der
numerischen Darstellung
in der Programmierung bilden numerischen Darstellung
in der Programmierung Darüber hinaus haben wir
mehrere Operatoren gesehen , die
mathematische Operationen mit numerischen
Werten ausführen mathematische Operationen mit numerischen
Werten Lassen Sie uns nun den Gang wechseln und in die Welt
der Textdaten
wagen In diesem Video
stellen wir Ihnen Zeichenketten vor,
einen wichtigen Datentyp, der
zur Darstellung von Text in PyTon verwendet wird Zeichenketten eröffnen
völlig neue
Möglichkeiten beim Programmieren, von der Verarbeitung
von Benutzereingaben bis hin zur Erstellung umfangreicher
Sprachmodelle. Am Ende dieser Lektion werden
Sie wissen, wie Sie Zeichenketten in Python erstellen und bearbeiten. Beim Programmieren ist es oft nützlich,
Textdaten
darstellen zu können ist es oft nützlich,
Textdaten
darstellen Beispielsweise muss ein
Notenzuweisungsprogramm möglicherweise
den Buchstaben A darstellen.
In ähnlicher Weise muss ein
Rechtschreibprüfungsprogramm möglicherweise den Inhalt eines
langen Textes wie die Odyssee
darstellen In Python werden Textdaten wie ein einzelner Buchstabe oder das Odyssee-Gedicht mithilfe von Zeichenketten
verwaltet Um eine Zeichenfolge zu erstellen, setzen wir die
gewünschten Zeichen zwischen einfache oder
doppelte Anführungszeichen Um beispielsweise den Buchstaben A
darzustellen, können
wir den Buchstaben
A in eine Codezelle eingeben und ihn wie folgt mit einfachen
Anführungszeichen
umgeben In ähnlicher Weise können
wir, um
den gesamten Inhalt
des Odyssee-Gedichts darzustellen , den Inhalt des
Buchs wie folgt in
einfache oder doppelte
Anführungszeichen Beachten Sie, dass die Anführungszeichen nicht
Teil der Zeichenfolge selbst sind. Sie sind dazu da, abzugrenzen , wo die Zeichenfolge
beginnt und endet Beachten Sie auch, dass
Zeichenketten zur
Darstellung von Zahlen und
anderen Sonderzeichen verwendet werden können Darstellung von Zahlen und
anderen Sonderzeichen Warte eine Minute. Was
habe ich gerade gesagt? Zeichenketten können verwendet werden
, um Zahlen darzustellen. Warum brauchen wir also überhaupt Ganzzahlen und
Gleitkommazahlen? Reichen Zeichenketten allein nicht aus
? Die Antwort lautet nein. Wie wir gleich sehen werden, macht
Biton einen
wichtigen Unterschied zwischen Zahlen, die als
Ganzzahlen oder Gleitkommazahlen ausgedrückt
werden, und Zahlen, die als Zeichenketten
ausgedrückt werden Nehmen wir zum Beispiel an, wir
wollen die Summe von eins und zwei auswerten Wenn wir diese Zahlen
mit Ganzzahlen oder Gleitkommazahlen darstellen, erhalten
wir erwartungsgemäß die Zahl
Drei. Aber was erhalten wir, wenn wir
diese Zahlen mit
Zeichenketten darstellen und den
Ausdruck auswerten? Wir haben 12. Wow. Das ist
etwas New-Age-Mathematik. Was ist passiert? Nun, wie Sie vielleicht vermutet haben, ,
wenn wir mit Zeichenketten arbeiten bedeutet der Plus-Operator etwas anderes,
wenn wir mit Zeichenketten arbeiten, als wenn wir mit numerischen Werten arbeiten Bei numerischen Werten führt
der Plus-Operator eine Addition Bei Zeichenketten verknüpft der
Plus-Operator Zeichenketten miteinander. Wie dieses Beispiel zeigt, können
Datentypen
das Verhalten eines
bestimmten Operators beeinflussen . Dies wiederum schafft einen wichtigen Unterschied
zwischen verschiedenen Datentypen In Piton
bestimmen Datentypen das Verhalten der
von uns verwendeten Operatoren Im nächsten Video werden
wir
einige Operationen untersuchen, die für Zeichenketten
spezifisch sind
8. Strings-geführte Beispiele: Jamie und Pike haben gerade
ihre Wanderung auf dem zerklüfteten
Roller Coaster Trail begonnen ihre Wanderung auf dem zerklüfteten
Roller Coaster Trotz seines Namens ist
der erste Teil
der Achterbahnstrecke
gut gepflegt und größtenteils flach Jamie entspannt sich, während sie
die Berglandschaft und den
frischen Duft von Pinien genießt die Berglandschaft und den
frischen Duft von Wunderbar.
Eine halbe Stunde nach Beginn der Wanderung nimmt
der Achterbahnweg jedoch seinen Namen zurück Tatsächlich erhebt sich vor
Jamie und Pike eine 15 Fuß tiefe
Schlucht , Um hinüber zu kommen, benötigen unsere beiden Wanderer das Seil, das
sie Während Jamie und Pike Roben
manipulieren, um ihr Problem zu
lösen, werden
wir untersuchen, wie die
Manipulation von Schlagzeugfäden Programmierern helfen
kann, analoge Herausforderungen kann Bevor er mit dem Abstieg beginnt, bittet
Jamie Pike, das Seil Jamie Sicherheit geht vor. Pike überprüft
das Seil
sorgfältig und stellt
die Scanergebnisse anhand von Zeichen dar die Scanergebnisse anhand von Zeichen Wenn ein bestimmter
Seilfuß fehlerfrei ist, wird
dies durch
einen Strich dargestellt. Ergibt der Scan jedoch
einen Defekt
, wird dieser Fuß des Seils durch den
Stern
dargestellt. Lassen Sie uns die Ergebnisse des
Pike-Scans in Piton
anhand einer Zeichenfolge darstellen Pike-Scans in Piton
anhand einer Zeichenfolge Wie Sie sehen können,
ist das Seil leider defekt Jamie hätte
es überprüfen sollen, bevor er gegangen ist. Aber jetzt, wo sie sich dessen bewusst ist, möchte
sie herausfinden,
wo genau der Defekt am Seil
liegt Da in unserem Code jedes Zeichen
für 1 Fuß Seil steht, können
wir die Schnur visuell
untersuchen und feststellen, dass es sich bei dem neunten Zeichen um
den Defekt handelt. Das heißt, es befindet sich am
neunten Fuß des Seils. Mal sehen, ob Biton
mit unserer Sichtprüfung einverstanden ist. Wenn wir die Position
eines Zeichens in einer Zeichenfolge kennen, können
wir Python bitten,
dieses Zeichen auszugeben , indem wir die Zeichenfolge
indizieren Um eine Zeichenfolge zu indizieren, müssen wir am Ende ein Paar
Klammern anhängen und die Position des gewünschten Zeichens
zwischen
den Klammern angeben gewünschten Zeichens
zwischen
den Die Zahl, die wir zwischen
die Klammern schreiben , wird
Index des Zeichens genannt Also, wenn wir diesen Code
ausführen, werden
wir sicherlich das
Zeichen Stern erhalten, oder? Oh, nun, das ist unerwartet. Warum bekommen wir ein Bindestrichzeichen? Der Grund dafür ist, dass in Bton die Zeichen
einer Zeichenfolge bei Null
beginnen
und nicht bei Eins indexiert werden Null
beginnen
und nicht bei Eins Wenn wir auf das Zeichen zugreifen, das
sich an Index neun befindet, ziehen
wir tatsächlich
das zehnte Zeichen der Zeichenfolge ab, nicht das neunte Wir können das fehlerhafte
Zeichen als Ausgabe erhalten, indem unseren Index auf acht
ändern
und unsere Zelle erneut ausführen. Ordnung. Jetzt, wo Jimmy
weiß, wo der Defekt ist, will
sie
ihn vom Seil entfernen. Pike ist immer ein guter Helfer. Er
schneidet das Seil vor und nach dem Defekt auf
und es bleiben
zwei fehlerfreie Seilstücke übrig zwei fehlerfreie Seilstücke Wir können in
Python ein
ähnliches Ergebnis erzielen, indem wir die Zeichenfolge in Scheiben schneiden Aber während die Indizierung
ein einzelnes Zeichen zurückgibt, können wir
durch Slicing mehrere
benachbarte Zeichen
abrufen Um eine Zeichenfolge zu segmentieren,
fügen wir zunächst ein Paar Klammern
am Ende der Dann schreiben
wir zwischen die Klammern zuerst den Index des ersten Zeichens,
das
wir abrufen möchten Um zum Beispiel
den ersten fehlerfreien
Straßenabschnitt zu erhalten , schreiben
wir zunächst Null. Wir folgen diesem ersten
Index mit einer Spalte. Dann geben wir den Index des letzten gewünschten Zeichens
plus eins an. Das bedeutet, dass wir in unserem Beispiel acht schreiben, um die ersten Zeichen
der Zeichenfolge bis zum
Defekt zu ermitteln um die ersten Zeichen
der Zeichenfolge bis zum
Defekt zu ermitteln. Beim Teilen einer Zeichenfolge wird
das Zeichen, das
dem oberen Index zugeordnet ist, nicht zurückgegeben Ich weiß. Es kann
ein bisschen verwirrend sein, aber im nächsten Video wirst du die Gelegenheit haben , es zu üben. Lassen Sie uns vorerst bestätigen, dass dieser Code uns das
gibt, was wir wollen. Wenn wir unseren Code ausführen, erhalten
wir tatsächlich die ersten acht
Zeichen der Zeichenfolge. In ähnlicher Weise können wir
den anderen
fehlerfreien Seilabschnitt abrufen den anderen
fehlerfreien Seilabschnitt indem wir die Zeichenfolge von
Index neun auf Index 19 Auch dies erreichen wir, indem wir 20 nach dem Doppelpunkt
schreiben. Fantastisch. Jamie und Pike
haben den Defekt beseitigt Leider stecken sie
jetzt an zwei Seilstücken fest, die zu kurz
sind, um die Schlucht zu
überqueren Da kommt Pike die geniale Idee,
die beiden Teile miteinander zu verbinden Wir können in
PyTon ein
analoges Ergebnis erzielen , indem wir den
Plus-Operator verwenden Wie wir im vorherigen Video gesehen haben, kann
der Plus-Operator tatsächlich
verwendet werden, um Zeichenketten zu verbinden in unserem aktuellen Beispiel Wenn wir in unserem aktuellen Beispiel unsere
beiden vorherigen String-Slices in
eine neue Zelle kopieren und
Plus-Zeichen dazwischen binden, bindet
Piton sie zusammen Beachten Sie, dass in der Programmierung das Zusammenfügen von zwei oder mehr Zeichenketten als Verkettung
und das Pluszeichen als Verkettungsoperator bezeichnet
wird Fantastisch. Jetzt, wo die beiden
Seile zusammengebunden sind, muss
Jamie überprüfen, ob das Verbindungsseil noch
mindestens 15 Fuß lang ist sich keine Sorgen, wenn Sie keine
Laseraugen oder die Geduld haben , die
Zeichen zu zählen Biton hat eine eingebaute
Funktion namens N, die uns die
schwere Arbeit abnehmen kann Die LN-Funktion kann verwendet
werden, um
die Länge einer Zeichenfolge zu bestimmen, ähnlich wie die
Type-Funktion verwendet
werden könnte , um
den Typ einer Zahl zu bestimmen Um die NN-Funktion zu verwenden, geben
Sie einfach die
Zeichenketten zwischen
den Klammern ein und
führen Sie den Code aus Wir erhalten, dass unsere Zeichenfolge 19 Zeichen lang
ist,
was bedeutet, dass das
Seil 19 Fuß lang ist
und dass das Seil ausreicht, um die Schlucht
zu überqueren Unsere beiden Wanderer können ihre
Wanderung fortsetzen. Aber bevor
wir mit unserer
Python-Reise fortfahren, sollten wir
uns ein paar Minuten Zeit nehmen, um das Manipulieren von Zeichenketten
zu üben
9. Strings-Übungen: In dieser Arbeitsmappe haben Sie
Zeichenkettenoperationen geübt und auch einige weitere nützliche Konzepte im Zusammenhang mit
Zeichenketten
gelernt Lassen Sie uns die Lösungen besprechen. Um die erste Übung zu lösen, müssen
wir uns der beiden Arten
der
Zeichenkettenbildung bewusst sein beiden Arten
der
Zeichenkettenbildung In Teil A
enthält unsere Zeichenfolge einen Apostroph, daher müssen wir die
Zeichenfolge mit doppelten Anführungszeichen erstellen Andernfalls
denkt Python, dass der Apostroph Teil der
Zeichenkettenbegrenzer ist, und wir erhalten eine Fehlermeldung
anstelle einer In Teil B
ist jedoch das Gegenteil der Fall. Da unsere Zeichenfolge doppelte Anführungszeichen
enthält, müssen
wir die Zeichenfolge
mit einfachen Anführungszeichen erstellen Wenn wir versuchen, die Zeichenfolge
zu erstellen, doppelte Anführungszeichen verwenden, erhalten
wir eine
Fehlermeldung, da Python davon ausgeht, dass die doppelten Anführungszeichen Teil der
Zeichenkettendelmeter
sind Um Übung zwei, Teil A, zu lösen, verwenden
wir Indexierung, um
das G aus Rinderhackfleisch abzurufen Ausgehend von Index Null ist G
das siebte Zeichen, daher geben wir Sieben
zwischen den Klammern Dadurch wird G erfolgreich
aus unserer Inhaltsstoffzeichenfolge abgerufen aus unserer Inhaltsstoffzeichenfolge In Teil B können wir
die Scheibe Hackfleisch ermitteln, indem den
Indexbereich sieben bis 20
angeben Denken Sie daran, dass der
Endindex exklusiv ist. Da wir also möchten, dass Index 19
in unsere Zeichenfolge aufgenommen wird, geben
wir den
Endindex als 20 an. Dann
können wir in Teil C die Kurzschreibweise verwenden, um
zwei
Scheiben unserer
Zutatenzeichenfolge abzurufen zwei
Scheiben unserer
Zutatenzeichenfolge Erstens müssen
wir diesen Index nicht
angeben, da die
Zwiebel in Scheiben bei Index Null beginnt müssen
wir diesen Index nicht
angeben Wir können einfach den fünften
Doppelpunkt
zwischen Klammern schreiben , um
auf die Zwiebelscheibe zuzugreifen. Als Nächstes können wir die Scheibe
von den Gewürzen bis zum Ende der
Zeichenfolge berechnen , indem wir
den Startindex
22, gefolgt von einem Doppelpunkt, schreiben . Wir müssen
den Endindex nicht angeben, da wir möchten, dass jeder Index bis zum Ende
der Zeichenfolge in unserem Slice
enthalten ist. In Übung drei, Teil A, können
wir dann den
Verkettungsoperator verwenden, um mehrere Zeichenketten in einer einzigen Codezeile miteinander
zu verbinden In Teil B können wir den
Stern-Operator verwenden, um eine Knoblauchzehe schnell zweimal mit unserer
Zutatenfolge zu verketten Schließlich können
wir in Teil C die Funktion len verwenden, um die endgültige Länge
unserer Zutatenzeichenfolge zu messen, die Großartig. Jetzt haben Sie ein solides Verständnis von Zeichenketten und den Operationen
, die wir an ihnen ausführen können. Im nächsten Video
werden wir uns mit Variablen, einem
der wichtigsten und
grundlegendsten Konzepte
der Programmierung, befassen der wichtigsten und
grundlegendsten Konzepte Variablen, einem
der wichtigsten und
grundlegendsten Konzepte
der Programmierung,
10. Variablen: In früheren Videos haben
wir gesehen, wie man drei
grundlegende Datentypen,
Ganzzahlen, Lasten und Zeichenketten
manipuliert Ganzzahlen, Lasten und Zeichenketten Das hat viel
Spaß gemacht, aber wie ich haben
Sie vielleicht festgestellt, dass das ständige Kopieren und Einfügen von
Werten mühsam war In diesem Video werden wir
sehen, wie
Werte mithilfe von Variablen effizienter
verwaltet Werte mithilfe von Variablen effizienter Was sind also Variablen genau? In einem Programmierkontext können
Sie sich Variablen als
Speichercontainer vorstellen , die Daten aufnehmen können. Die Daten, die wir in
Variablen speichern, können von beliebigem Typ sein, einschließlich Ganzzahlen,
Gleitkommazahlen und Zeichenketten Wenn wir eine Variable erstellen, müssen
wir ihr einen eindeutigen Namen geben Stellen Sie sich diesen Namen als
Etikett für den Container vor. eine gute Idee, ein Etikett zu verwenden,
das den von uns gespeicherten Wert beschreibt ist eine gute Idee, ein Etikett zu verwenden,
das den von uns gespeicherten Wert beschreibt, da es einfacher ist, später darauf
zu verweisen. Sehen wir uns anhand eines Beispiels an, wie Variablen
funktionieren. Angenommen, wir
möchten die Zeichenfolge
, die Jamies
Seil darstellt, in einer Variablen speichern , die Jamies
Seil darstellt, in einer Variablen Dies kann erreicht werden, indem der Zeichenfolge
zunächst das Symbol „Gleich“
vorangestellt wird In PyTon
wird das Gleichheitssymbol als
Zuweisungsoperator bezeichnet Es teilt PTN mit, dass wir
die Daten auf der
rechten Seite des Gleichheitszeichens
in einem
bestimmten Speicherplatz ablegen oder ihnen zuweisen
möchten die Daten auf der
rechten Seite des Gleichheitszeichens in einem
bestimmten Speicherplatz Um die Zuweisung abzuschließen, müssen
wir links
neben
dem Gleichheitszeichen einen Variablennamen eingeben links
neben
dem Gleichheitszeichen wir zum Beispiel X eingeben und die Zelle
ausführen, sehen wir anhand des grünen Häkchens, dass
der Code problemlos
ausgeführt Beachten Sie, dass bei der Zuweisung
eines Werts zu einer Variablen der Wert selbst nicht im
Ausgabefeld angezeigt wird Um den Inhalt
einer Variablen auszugeben, geben
Sie einfach den Namen
der Variablen die letzte Zeile der Zelle Lassen Sie uns nun über unsere Wahl des
Variablennamens sprechen. Es ist ein gültiger Name in dem Sinne, dass dieser Code ohne Probleme
ausgeführt wurde, aber X beschreibt nicht
sehr genau, was sich
im Speichercontainer befindet Lassen Sie uns also einen
aussagekräftigeren Variablennamen wählen. Hier schlage ich vor, dass Rope
ein besserer Variablenname ist , da er direkt das hervorruft, was wir in der Variablen
speichern Wenn wir unser Programm ausführen, der Code erfolgreich ausgeführt,
was uns sagt, dass Rope auch
ein wertvoller
Variablenname ist . Das ist großartig Mit dieser Aussage konnten
wir unsere Saite
dem variablen Seil
zuordnen. wir nun wissen, wie
man Variablen erstellt, wollen wir uns ansehen, wie man sie benutzt. Im Allgemeinen können wir
Variablen genauso manipulieren Variablen genauso die
Werte, die sie speichern. Erinnerst du dich, wie wir in den vorherigen Videos
Zeichenketten manipuliert in den vorherigen Videos
Zeichenketten Wir können
all diese Operationen immer noch ausführen , wenn unsere Daten
in einer Variablen gespeichert sind Zum Beispiel können wir den Inhalt der
Variablen rope
indexieren, indem wir Klammern an
das Ende des Variablennamens
anhängen und den Index des Zeichens, an
dem wir
interessiert sind, zwischen die Klammern schreiben Zeichens, an
dem wir
interessiert sind, zwischen die Klammern In ähnlicher Weise können wir
den Inhalt des Seils mithilfe der
Indexbereichsnotation Wenn wir wollen, können wir sogar
neue Variablen erstellen ,
die die String-Slices aufnehmen. Und um das linke und
das rechte Seil miteinander zu verbinden, verwenden Sie
einfach den
Verkettungsoperator mit den beiden Variablennamen.
Fantastisch. Wir wissen jetzt, wie man Variablen
manipuliert. Aber bevor wir weitermachen, lassen Sie uns ein paar Dinge
über Variablennamen
sagen. Zu diesem Zeitpunkt haben Sie
möglicherweise
den Eindruck , dass jeder
Variablenname geeignet ist. Dies ist jedoch nicht der Fall. Es gibt einige Einschränkungen, deren wir uns bewusst sein
müssen.
Lassen Sie uns darauf eingehen. Wenn Sie sich erinnern,
hat unsere
verkettete Seilschnur eine Länge von Wenn wir es also einer Variablen
zuweisen wollten, könnte es verlockend sein,
es einer Variablen mit dem Namen 19 Fuß langes
Seil
zuzuweisen dem Namen 19 Fuß langes
Seil Lassen Sie uns versuchen, das zu tun. Hoppla. Hmm. Das scheint nicht
zu funktionieren. Warum nicht? Nun, das liegt daran, dass
wir
bei der Benennung von Variablen vier Regeln beachten müssen. Erstens können Variablennamen
nicht mit Zahlen beginnen. Der Variablenname
19 Fuß langes Seil verstößt eindeutig gegen diese Regel Davon abgesehen können
Zahlen außer
dem ersten Zeichen in
jedem anderen Teil des Variablennamens
enthalten sein , einschließlich des letzten Zeichens Zum Beispiel sind
Variablennamen wie My var two und my second var gültig. Das bedeutet, dass
wir
zur Behebung des Fehlers stattdessen einen Namen
wie 19-Fuß-Seil
oder 19-Fuß-Seil verwenden könnten . Wie erwartet sind dies
gültige Variablennamen. Aber lassen Sie uns trotzdem
die anderen drei Regeln besprechen. Die zweite Regel besagt,
dass Buchstaben, Zahlen und Unterstriche
die einzigen Zeichen sind , die wir in
einem Variablennamen verwenden können Unser Variablenname
19 Fuß langes Seil
folgt eindeutig dieser Regel Aber Namen wie mein
Ausrufezeichen Star var oder M var oder mein var,
in zwei Worten, tun das nicht Der Name myvar in zwei Worten verstößt
auch gegen die dritte Regel. Leerzeichen sind nicht erlaubt. Da Variablennamen
keine Leerzeichen enthalten dürfen, trennen
Programmierer Wörter aus
Gründen
der Lesbarkeit üblicherweise mit einem Unterstrich Das haben wir mit unserem
Variablennamen, einem 19-Fuß-Seil, gemacht. Schließlich ist die vierte
Regel, die wir beachten
müssen dass bei Variablennamen zwischen Groß- und Kleinschreibung
unterschieden wird. Das bedeutet, dass Python ein 19-Fuß-Seil als
eine andere Variable
erkennt als ein 19-Fuß-Seil , bei dem wir den
ersten Buchstaben jedes Wortes Großartig. Variablen sind ein
unverzichtbares Programmierwerkzeug , das bei der
Umstellung auf
komplexere Programmierung von entscheidender Bedeutung sein wird . Im nächsten Video werden wir uns mit einer Anwendung
befassen, bei der sich die Verwendung von Variablen als sehr hilfreich
herausstellt.
11. Variablen-geführte Beispiele: Jamie und Pike kommen auf
der Achterbahnstrecke trotz
praller Sonne und steigender Temperaturen schnell
voran der Achterbahnstrecke trotz praller Als sie die 1,5-Meilen-Marke überschreiten, trinkt Jamie einen Schluck Wasser
und trinkt ihre erste Flasche aus Jamie einen Schluck Wasser
und trinkt ihre erste Flasche aus. Da wundert sie sich, ob sie
genug Wasser hat , um für den
Rest der Wanderung
in dieser Geschwindigkeit weiter zu trinken für den
Rest der Wanderung
in dieser Geschwindigkeit Pike bietet an, uns bei der Berechnung unseres Wasserverbrauchs
in Unzen Wasser
pro Meile Wir führen diese
Berechnung in PyTon durch und verwenden Variablen, die
uns bei der Organisation der Daten helfen Lassen Sie uns zunächst Variablen erstellen, um die Anzahl der Meilen zu speichern, die
Jimmy bisher gewandert ist,
1,5, und die Anzahl der Unzen Wasser, die sie
getrunken 12. Lassen Sie uns auch Variablen für die
Länge der Wanderung erstellen, 4,73 Meilen, und für das Wasservolumen, das sie
dabei hat, 40 Unzen Anhand der ersten beiden
Variablenzuweisungen können
wir
die aktuelle
Geschwindigkeit bestimmen, können
wir
die aktuelle
Geschwindigkeit bestimmen mit der Jamie Wasser trinkt Wir müssen einfach das
Verhältnis zwischen dem Wasser, das sie
verbraucht hat, zur
zurückgelegten Strecke nehmen . Um den Überblick über das Ergebnis zu behalten, weisen
wir es der
Variablen Current CR zu, was für die aktuelle
Verbrauchsrate steht Lassen Sie uns dann anhand der
letzten beiden Variablen die
maximale Verbrauchsrate berechnen leisten kann ,
die sich
Jamie während der gesamten Wanderung Speichern wir diese Informationen
in der Variablen MAX CR, die für maximale
Verbrauchsrate steht Wenn wir diese Zellen ausführen,
stellen wir fest, dass Jamies
aktuelle Verbrauchsrate 8 Unzen/Meile
beträgt
und die maximale
Verbrauchsrate, die sie
sich leisten kann sich leisten Natürlich erzielt Pike dasselbe Ergebnis,
aber Jamie ist etwas verwirrt darüber, aber Jamie ist wie er die Antwort liefert. Ohne Kontext ist es
für Jamie schwierig zu wissen, was
diese In PyTon besteht eine einfache
Möglichkeit, Kontext
für die Ausgabe eines Programms bereitzustellen ,
darin, Zeichenketten zu verwenden Lassen Sie uns also zwei neue
Zeichenkettenvariablen erstellen, um Jamies
aktuellen Wasserverbrauch und maximalen Wasserverbrauch
zu
kontextualisieren Jamies
aktuellen Wasserverbrauch und maximalen Wasserverbrauch
zu
kontextualisieren. Großartig. Lassen Sie uns nun
sehen, wie wir diese Zeichenketten zusammen mit den Werten verwenden können, um einen
gewissen Kontext bereitzustellen. Wir könnten versucht sein, den Beschreibungstext
und
den Ausgabewert zu verketten Beschreibungstext
und
den Wenn wir das tun, erhalten
wir jedoch eine
Fehlermeldung, die uns mitteilt, dass
PyTon eine Zeichenfolge und einen Float nicht verketten Nun, wenn wir darüber nachdenken, wissen
wir, dass der Plus-Operator eine unterschiedliche Bedeutung
hat je nachdem, ob er
mit Zahlen oder mit Zeichenketten verwendet wird mit Zahlen oder mit Wenn
Pyton sowohl
eine Zeichenfolge als auch eine Zahl erhält, ist er verwirrt
darüber, was zu tun Zum Glück ist es, wie wir
im vorherigen Video gesehen haben,
möglich, Zahlen als Zeichenketten darzustellen Wenn wir also wüssten, wie man die
aktuelle Verbrauchsrate von
einem numerischen Wert in eine Zeichenfolge umrechnet aktuelle Verbrauchsrate von , könnten
wir
die Verkettung durchführen Mal sehen, wie das geht.
In der Programmierung wird das
Konvertieren eines Datentyps
in einen anderen Datentyp
als Typecasting bezeichnet Insbesondere
können wir die eingebaute Funktion STR verwenden, um die variable
Stromverbrauchsrate
von einem Float
in eine Zeichenfolge umzurechnen
oder umzuwandeln variable
Stromverbrauchsrate
von einem Float
in eine Zeichenfolge umzurechnen
oder von einem Float
in eine Das heißt, wir können
STR eingeben und dann
unsere Berechnung in Klammern setzen, um die Umwandlung von Zahlen in Zeichenketten
durchzuführen Wenn wir die Zelle ausführen, sehen
wir, dass der Wert, der
der aktuellen Verbrauchsrate
zugeordnet der aktuellen Verbrauchsrate ist, jetzt zwischen
einfachen Anführungszeichen steht,
was bedeutet, dass wir den Float erfolgreich
in eine Zeichenfolge konvertiert
haben den Float erfolgreich
in eine Zeichenfolge konvertiert der Wert umgerechnet wurde, können
Sie sehen, dass die
Verkettung jetzt In ähnlicher Weise können wir die
Stringcasting-Funktion auf
die Berechnung der maximalen
Verbrauchsrate anwenden die Berechnung der maximalen
Verbrauchsrate und sie mit maximalem Text verketten Wir erhalten jetzt ein viel
aussagekräftigeres Ergebnis, und ich bin mir sicher, ich bin mir sicher Fantastisch. Jamie
scheint mit unserem Wasserverbrauch auf dem richtigen Weg zu sein und kann weiterhin Wasser
mit ihrer aktuellen Rate trinken Umwandlung numerischer Werte
wie Gleitkommazahlen und Ganzzahlen Zeichenketten ist eine von vielen Umwandlungsoperationen, die
wir in Piton durchführen können Es ist auch der
einfachste
Umwandlungsvorgang , da, wie wir
im vorherigen Video gesehen haben, jeder numerische Wert als Zeichenfolge
dargestellt werden kann Aber das wirft die Frage auf,
können wir das Gegenteil tun? Können wir Zeichenketten
in Ganzzahlen und Gleitkommazahlen umwandeln? Die Antwort hier ist
etwas nuancierter. Wenn eine Zahl als Zeichenfolge
dargestellt wird, können
die Funktionen int und
float verwendet werden um die Zeichenfolge in
eine Ganzzahl bzw. eine
Gleitkommazahl umzuwandeln eine Ganzzahl bzw. eine
Gleitkommazahl Mit
der Float-Funktion können
wir beispielsweise die Variablen für die aktuelle
Verbrauchsrate und die
maximale
Verbrauchsrate von Zeichenketten zurück in Floats umwandeln Beachten Sie, dass die einzelnen
Anführungszeichen rund um die Werte
verschwunden sind,
was darauf hinweist, dass es sich bei den Werten um numerische Werte und nicht um Zeichenketten
handelt Aber seien Sie vorsichtig. Nicht jede Zeichenfolge kann
in einen Float oder eine Ganzzahl umgewandelt werden. Zum Beispiel können wir nicht
unseren gesamten
Stromverbrauchssatz in einen Float umwandeln . Das ergibt keinen Sinn. Schließlich ist
es mit den Funktionen
float und in auch möglich
, Ganzzahlen
in Floats und
Floats in Ganzzahlen umzuwandeln Wenn wir beispielsweise
die Float-Version
der aktuellen
Verbrauchsrate einer eigenen Variablen zuweisen die Float-Version
der , können
wir dann die Funktion int verwenden, um den Wert
in eine Ganzzahl
umzuwandeln Beachten Sie jedoch, dass, wenn Sie den
Flow in eine Ganzzahl umwandeln, der Dezimalteil
der Zahl verloren geht. beispielsweise die Gesamtzahl der Meilen eine Ganzzahl umwandeln, ergibt
sich der Wert vier Wir haben
bei der Berechnung tatsächlich den
Dezimalteil verloren . In Ordnung, ich weiß, das waren
viele Informationen. Damit Sie sich besser erinnern können, haben
wir
die folgende Übersichtstabelle erstellt , in der die Besetzungsregeln
beschrieben werden Zu Ihrer Information finden Sie diese
Tabelle am Anfang
der
Übungsmappe , die diesem Video folgt Fantastisch. Wir
wissen jetzt, wie man Informationen
mithilfe von Variablen speichert
und darauf zugreift. Außerdem haben wir gelernt, Datentypen
zu manipulieren. Im nächsten Video werden wir die Verwendung von Variablen
und Typecasting
üben
12. Variablen-Übungen: In dieser Arbeitsmappe
hatten Sie die Möglichkeit, die Verwendung von Variablen zur Lösung von Problemen
zu
üben Sie haben auch mehrere
weitere Konzepte im Zusammenhang mit
Variablen gelernt , was sie zu einem noch
nützlicheren
Programmierwerkzeug macht einem noch
nützlicheren
Programmierwerkzeug Lassen Sie uns die Lösungen durchgehen. Zunächst
haben wir in der ersten Übung ein Konzept erneut aufgegriffen, das im vorherigen Video mit
angeleiteten Beispielen
erörtert wurde im vorherigen Video mit
angeleiteten Beispielen
erörtert Das heißt, Python erlaubt uns
nicht Zeichenketten
und numerische Daten
zu verketten In Teil A haben wir zwei Variablen
erstellt, um die Anzahl der
Blaze-Siege 13 und die Anzahl der Titans-Siege 12 zu speichern . In Par B haben wir
zwei weitere Variablen erstellt, um
die Beschreibungszeichenfolgen zu speichern Blaze gewinnt und Titan gewinnt Dann haben wir beide
numerischen Variablen, Blaze gewinnt und Titans gewinnt, mithilfe der STR-Funktion in Zeichenketten umgewandelt Auf diese Weise können wir
einen Fehler vermeiden und die
gewünschte Zeichenkettenausgabe erzeugen In Teil C stellen wir
das Konzept der F-Strings vor. F-Strings eignen sich
hervorragend, um
Variablen
natürlicher in Zeichenketten einzubetten Variablen
natürlicher in Zeichenketten einzubetten als durch Verkettung und Umwandlung numerischer Werte
in Zeichenketten Hier können wir entweder
die quadratischen Textvariablen aus
Teil B in unserer Zeichenfolge wie folgt wiederverwenden die quadratischen Textvariablen aus Teil B in unserer Zeichenfolge wie folgt oder wir können
den Notationstext direkt wie folgt eingeben. Als Nächstes verwenden
wir in Übung zwei das Konzept der
Mehrfachzuweisungen, verwenden
wir in Übung zwei das Konzept der
Mehrfachzuweisungen um Variablen für
jedes
Ergebnis des Teams zu erstellen und
sie alle in einer
einzigen Codezeile auf Null zu setzen . Wir können anhand des
ausgegebenen Werts erkennen, dass beiden Variablen tatsächlich der Wert Null zugewiesen
wurde Wenn wir zu Übung drei
übergehen, können wir den
Zuweisungsoperator plus gleich nutzen , den Python bereitstellt um vorhandenen
Variablen effizienter Werte
hinzuzufügen Für jedes Quartal addieren
wir die
erzielten Punkte zu den Punktevariablen des entsprechenden
Teams Nach einem engen Spiel beträgt das
Endergebnis der Titans 112, während das Endergebnis
des Blaze 108 beträgt Es sieht so aus, als
hätten die Titans die Meisterschaft gewonnen. Schließlich stoßen
wir in Übung vier auf eine benutzerdefinierte
Metrik, die
von Ihrem Kollegen zur Verfügung gestellt wurde. Sie
heißt Spielermagie Wir können
den Endwert
der Variablen Spielermagie bestimmen , indem wir den
Variablenwert nach jeder Zeile
berechnen Nach der ersten Zeile ist die
Spielermagie zehn. In Zeile zwei wenden wir den
Modulus-Zuweisungsoperator an. Diese Codezeile besagt, dass Spielermagie jetzt
dem vorherigen Wert von
Spielermagie zehn Modulus zwei entspricht dem vorherigen Wert von
Spielermagie zehn Modulus Da zwei zehn gleichmäßig teilt, Zehnermodul zwei Null Nach Zeile zwei ist die
Spielermagie also Null. Zeile drei addieren wir 23 zum Magiewert des vorherigen
Spielers,
Null, damit die Spielermagie nach Zeile drei
gleich 23 ist. In Zeile vier wird der Operator für die
Divisionszuweisung angewendet. Dadurch wird die Magie des Spielers geteilt. Diese ist 23 mal fünf
, um 4,6 zu erhalten Dann wenden
wir in Zeile fünf den Operator zur
Zuweisung der Floor-Division an, der die
Dezimalkomponente von 4,6 entfernt, sodass die Spielermagie am Ende von Zeile fünf gleich vier Bei sechs multiplizieren wir vier mit neun, sodass die
Spielermagie 36 entspricht. Zeile sieben sagt uns, dass wir 34 vom
Zauberwert 36
des vorherigen Spielers abziehen
müssen , um zwei zu erhalten Schließlich wenden
wir in Zeile acht den Operator für die
Exponentenzuweisung an, um die
Spielermagie gleich zwei mit
der Potenz von Drei oder Acht zu setzen Spielermagie gleich zwei mit
der Potenz von Drei oder Acht zu Und es sieht so aus, als ob Python unserer Einschätzung
zustimmt. Großartig. Nachdem Sie nun mit der Funktionsweise von Variablen und ihrer
Verwendung in
komplexeren Kontexten vertraut
sind, können
wir
zum nächsten Thema, den integrierten Funktionen, übergehen.
13. Eingebaute Funktionen: In früheren Videos haben
wir mehrere der integrierten Funktionen von
BTon verwendet , um verschiedene Aufgaben auszuführen In diesen Videos erklären
wir, wie man einige
der integrierten Funktionen verwendet Wir haben eine
gründliche Diskussion
dieses Konzepts bis jetzt verschoben . Lassen Sie uns also gemeinsam tiefer
in diesen wichtigen Begriff eintauchen. In PTN
sind integrierte Funktionen vordefinierte Abkürzungen , mit denen Programmierer
bestimmte Aufgaben mit
minimalem Aufwand ausführen bestimmte Aufgaben mit
minimalem Aufwand Diese Funktionen akzeptieren
bestimmte Eingaben,
sogenannte Argumente, mit denen sie einige Operationen
ausführen Sobald die Operationen ausgeführt
wurden, erzeugt
eine Funktion in der Regel eine Ausgabe, die
als Rückgabewert bezeichnet wird. Nehmen wir als Beispiel unsere frühere Verwendung
der Typfunktion. Wir haben der Funktion
die Variable
Gesamtzahl der Meilen als Argument gegeben Gesamtzahl der Meilen als Argument und sie hat den
Variablentyp float zurückgegeben. Beachten Sie, dass der Prozess
, mit dem der Funktionstyp
von der Gesamtzahl der Meilen auf Float umsteigt , nicht explizit angegeben
ist. In gewisser Weise können Sie sich eine eingebaute
Funktion als eine
kleine Blackbox
vorstellen . Eine Blackbox? Das
klingt nicht nach einer guten Sache. Nun, es stellt sich heraus, dass es tatsächlich um ein sehr nützliches
Merkmal integrierter Funktionen handelt. Da wir integrierte
Funktionen verwenden können , ohne
ihre inneren Abläufe zu erlernen, können
wir Zeit
und Mühe sparen, indem unsere Programmieraufgaben einfacher
und schneller erledigen Wie Sie sehen können, sind eingebaute
Funktionen in PyTN sehr
hilfreich Im nächsten Video werden wir
unser Codierungs-Toolkit erweitern, indem wir
einige neue integrierte Funktionen vorstellen und gemeinsam Anwendungsfälle
untersuchen.
Wir sehen uns dort
14. Eingebaute funktionsorientierte Beispiele: Jamie und Pike haben
das zweite große
Hindernis ihrer Wanderung erreicht ,
einen entmutigenden Anstieg, der selbst erfahrenen Wanderern schwer fällt selbst Während sie eine Pause von
dem herausfordernden Aufstieg einlegen, fragt sich
Jamie, welchen
Höhenunterschied sie
insgesamt während der Wanderung erleben wird. Pike erinnert sie daran, dass der
Höhenunterschied 500 Fuß beträgt und der
Höhenverlust natürlich auch 500 Fuß beträgt Um die gesamte
Höhenänderung zu ermitteln, müssen
wir den
Höhenunterschied und
den absoluten Wert
des Höhenverlusts addieren den absoluten Wert
des Höhenverlusts In Python
wurde die ABS-Funktion genau
dafür entwickelt den absoluten Wert des
Höhenverlustes zum
Höhenunterschied addieren , wir den absoluten Wert des
Höhenverlustes zum
Höhenunterschied addieren, ergibt sich eine
Gesamthöhenänderung von 1.000 Fuß, wie Sie
wahrscheinlich erwartet haben Und das ist auch die
Zahl, die Pike meldet. Aber auch hier hätte Jamie gerne etwas mehr Kontext
rund um die Ausgabe In einem früheren Video haben wir unserer
Ausgabe Kontext
hinzugefügt, indem wir
numerische Ergebnisse in eine Zeichenfolge umgewandelt und eine
beschreibende Bezeichnung verkettet Das hat funktioniert, aber es gibt
einen besseren Weg. In PyTon macht es die integrierte
Print-Funktion einfach, Werte
im Ausgabefeld
anzuzeigen Der Hauptvorteil der
Druckfunktion besteht darin, dass sie das Typisieren und
Verketten für uns übernimmt Schauen wir uns an, wie man diese Funktion benutzt. Der Einfachheit halber weisen
wir zunächst das Ergebnis unserer
Berechnung einer Variablen zu. Dann erstellen wir eine
Labelvariable und weisen sie der
Zeichenfolge Total Elevation
Change zu . In Ordnung. Wir sind jetzt bereit,
die Druckfunktion aufzurufen. Diese Funktion hat eine
interessante Funktion , die wir noch nicht gesehen haben. Sie kann mit
mehreren Argumenten umgehen. Um mehrere
Argumente in eine Funktion einzugeben, schreiben
wir sie zwischen die Klammern und
trennen sie durch ein Wenn wir die Zelle ausführen, schreibt
die Druckfunktion
den Wert
ihres ersten Arguments in das Ausgabefeld,
gefolgt vom Wert
ihres zweiten Arguments gefolgt vom Wert
ihres Wir sollten wissen, dass die
Reihenfolge der Eingaben wichtig ist. Wenn wir die Reihenfolge
im Funktionsaufruf umkehren, kehren
wir auch die
Reihenfolge der Anzeige im Ausgabefeld um. Großartig. Jetzt sind
Jamie und Pike ausgeruht und bereit, den steilen Aufstieg in
Angriff zu nehmen Bevor wir
ihnen folgen, wollen wir noch
ein paar abschließende Bemerkungen zu den
eingebauten Funktionen machen noch
ein paar abschließende Bemerkungen zu den
eingebauten Funktionen Die Druckfunktion
ist nur eine von vielen eingebauten Funktionen, die mehrere Eingaben
zulassen Zum Beispiel können wir die eingebaute
Funktion Max
verwenden, um
die größte Zahl
aus den Argumenten eins,
vier, zwei, sechs und
fünf wie folgt zu ermitteln aus den Argumenten eins,
vier, zwei, sechs und
fünf wie folgt Zu Ihrer Information:
ITN verfügt über rund 70 integrierte Funktionen, die Sie bei
gängigen Vorgängen unterstützen In den
folgenden
Übungen haben Sie die Möglichkeit, einige weitere dieser integrierten Funktionen kennenzulernen
15. Integrierte Funktionen-Übungen: In dieser Arbeitsmappe haben Sie sich mit mehreren der
integrierten Funktionen von Python befasst Lassen Sie uns die Lösungen aufschlüsseln. In Übung eins können wir
Alex' Trainingsplan
mit der richtigen
Formatierung ausgeben, indem wir
die Escape-Sequenzen
Backslash N und Backslash T verwenden, um jeweils neue Zeilen
und
Tabulatoren zu erstellen Nach dem Header und dem Training
jedes Tages fügen
wir ein neues
Zeilenzeichen ein, das
Python anweist , den folgenden
Text in die nächste Zeile zu verschieben. Wir fügen auch den Tabulator
Escape hinzu, der vor der Trainingszeile
jedes Tages sequenziert ist, um
Python anzuweisen ,
den folgenden Text einzuziehen Unser Ergebnis ist ein gut
formatierter Trainingsplan. Als Nächstes können
wir in Übung zwei mithilfe der ABS-Funktion den absoluten
Wert der Differenz zwischen der
Schrittzahl
von
heute und gestern bestimmen den absoluten
Wert der Differenz zwischen heute und gestern mithilfe der ABS-Funktion den absoluten
Wert der Differenz zwischen der
Schrittzahl
von Da wir
die absolute Differenz ermitteln, hat
die Reihenfolge, in der wir
die beiden Schrittwerte subtrahieren , keinen Einfluss auf
unser Endergebnis Wir stellen fest, dass der
Unterschied zwischen den Schrittzahlen der beiden Tage in beiden
Anordnungen 3.050 beträgt In Übung drei können wir die Max-Funktion
verwenden, um die meisten
Schritte zu ermitteln , die Alex in
den letzten sieben Tagen gemacht hat Wenn wir die Anzahl der sieben Schritte
als Argumente an
die MAX-Funktion übergeben, erhalten
wir die größte Anzahl von Schritten, die Alex gemacht hat, nämlich 15.400 Um dann Übung vier zu lösen, rufen
wir die Min-Funktion auf, um Alex' schnellste
Hundert-Meter-Zeit zu
ermitteln Ähnlich wie wir
die Max-Funktion verwenden, übergeben
wir die fünf Zeiten
als Argumente und erhalten, dass 13,87 die schnellste Zeit von
Alex war Schließlich berechnen
wir in Übung fünf anhand der
Standarddurchschnittsberechnung die durchschnittlichen Minuten, die Alex pro Tag
trainieren möchte Standarddurchschnittsberechnung die durchschnittlichen Minuten, die Alex pro Tag
trainieren Dann übergeben wir unsere durchschnittliche
Minutenvariable zusammen mit einer Variablen als Argumente
an die runde Funktion. Dies teilt Python mit
, dass wir möchten durchschnittlichen Minuten
auf die erste Dezimalstelle gerundet werden. Fantastisch. Jetzt haben Sie
die Möglichkeit, mehrere
integrierte Funktionen von Python zu verwenden. In den nächsten Videos werden
wir uns mit
einigen weiteren integrierten Operationen
befassen, die
Python bietet.
16. Eingebaute Typmethoden: Als Pike
in einem früheren Video über die
gesamte Höhenänderung berichtete , übersah
er, den ersten Buchstaben der Ausgabe Großschreibung des ersten Buchstabens einer Zeichenfolge ist eine
grundlegende Operation PyTon muss also sicherlich
eine eingebaute
Funktion in Großbuchstaben bereitstellen eine eingebaute
Funktion in Großbuchstaben , um
uns bei der Behebung dieses Problems zu helfen Hmm. Es sieht so aus, als ob die großgeschriebene Funktion nicht
existiert. Wie seltsam? Nun, die
Operation mit Großbuchstaben ist tatsächlich in PyTN
verfügbar, aber sie ist nicht
als eingebaute Funktion implementiert Stattdessen wird die
Operation mit Großbuchstaben als
eingebaute Typmethode
implementiert In diesem Video zeigen wir, wie integrierte
Typmethoden verwendet werden, um
allgemeine Operationen auszuführen , und
die Unterschiede
zwischen Typmethoden
und integrierten Funktionen verdeutlichen die Unterschiede
zwischen Typmethoden und integrierten Ähnlich wie eingebaute Funktionen, Typmethoden oder Tools, die es
Programmierern ermöglichen, allgemeine Aufgaben schnell auszuführen Es gibt jedoch subtile Unterschiede
zwischen den beiden Begriffen, integrierte Funktionen
oder um vielseitige Tools handelt, die für die Bearbeitung
verschiedener Datentypen
konzipiert sind Sie bieten Programmierern
ein flexibles Toolkit. Im Gegensatz dazu sind integrierte
Typmethoden
spezielle Tools, die für die
Arbeit mit einem bestimmten Datentyp entwickelt wurden Arbeit mit einem bestimmten Datentyp Sie bieten Programmierern
ein maßgeschneidertes Toolkit. Beispielsweise ist es sinnvoll,
den ersten Buchstaben
eines Werts groß zu schreiben
, wenn es sich bei diesem Wert um eine Zeichenfolge handelt, aber nicht wirklich
sinnvoll, wenn es sich bei diesem Wert um eine Zahl handelt Aus diesem Grund wird die
Operation mit Großbuchstaben nicht unter den integrierten Funktionen,
sondern unter den Zeichenkettenmethoden zusammengefasst integrierten Funktionen,
sondern Sehen wir uns nun an, wie man auf die Operation mit Großbuchstaben zugreift und sie für die Labelvariable
verwendet Um eine Typmethode
für eine Variable aufzurufen, müssen
wir dem
Variablennamen einen Punkt folgen Zu diesem Zeitpunkt war kein Wortspiel beabsichtigt. den meisten
Programmierumgebungen wird Ihnen eine Liste
der verfügbaren Methoden Das ist eine Liste von Operationen, die mit der Variablen
ausgeführt werden können. Lassen Sie uns durch
die Liste blättern und sehen, ob wir einen guten
Kandidaten für unseren Zweck finden
können. Oh, würdest du dir das ansehen? Eine Methode namens
Capitalize ist verfügbar. Das ist vielversprechend. Lassen
Sie uns diese Methode wählen. Bevor wir die Zelle ausführen, müssen
wir am Ende des Methodennamens ein Paar
leerer Klammern anhängen Methodennamens ein Paar
leerer Klammern anhängen Mehr dazu werden wir
im Übungsvideo sagen. Wenn wir die Zelle ausführen, können
wir sehen, dass die
Methode eine Zeichenfolge zurückgibt oder beschriftet, wobei der
erste Buchstabe groß geschrieben wird Beachten Sie, dass die Anwendung der Methode mit
Großbuchstaben auf die Labelvariable den Wert des
Labels nicht geändert Stattdessen wurde eine Kopie
der ursprünglichen Variablen mit
einem großgeschriebenen Anfangsbuchstaben erstellt der ursprünglichen Variablen mit
einem großgeschriebenen Anfangsbuchstaben Um den Inhalt
der Label-Variablen zu ändern, müssen
wir die
großgeschriebene Zeichenfolge neu zuweisen in Übereinstimmung mit unserer
vorherigen Diskussion, Beachten Sie in Übereinstimmung mit unserer
vorherigen Diskussion, dass die Methode mit Großbuchstaben nur auf Zeichenketten angewendet werden
kann Wenn wir beispielsweise versuchen, diese Methode auf das Variablenergebnis
anzuwenden, erhalten
wir eine Fehlermeldung Andere Datentypen,
wie Ganzzahlen und Gleitkommazahlen, haben
ebenfalls
zugehörige Methoden Wir werden einige
davon in den Übungen untersuchen. Nun gebe ich zu, dass
der Unterschied zwischen integrierten Funktionen und
Typmethoden etwas subtil ist. Um den Unterschied zu verdeutlichen, betrachten
wir die folgende Analogie aus dem
wirklichen Leben Stellen Sie sich vor, Sie sind im
Supermarkt,
um
Kaffeebohnen und Orangen Jeder Artikel im Geschäft, einschließlich Orangen
und Kaffeebohnen, kann zu Ihrer Karte hinzugefügt und an der
Kasse gekauft In diesem Sinne spiegeln die Vorgänge zum Hinzufügen von
Artikeln zu Ihrer Karte Vorgänge zum Hinzufügen von
Artikeln zu Ihrer Karte
und zum Auschecken das Konzept der integrierten
Funktionen in der Programmierung Es handelt sich um generische Operationen , die für viele
Arten von Elementen funktionieren. Sobald Sie jedoch zu Hause sind, die Art und Weise, wie Sie Ihr Essen
zubereiten hängt
die Art und Weise, wie Sie Ihr Essen
zubereiten, von der Art der Artikel ab. Möglicherweise möchten Sie Ihre Kaffeebohnen
mahlen und in heißem Wasser
aufbrühen, und Sie möchten
Ihre Orangen vielleicht schälen und zu Saft pressen Diese Aktionen sind auf
die spezifischen Elemente zugeschnitten und
ähneln daher Typmethoden
bei der Programmierung So wie es keinen Sinn
macht, Orangen
zuzubereiten oder Kaffeebohnen zu schälen, sind
Typmethoden
spezielle Operationen, die nicht universell für verschiedene
Datentypen gelten Großartig. Wir haben jetzt ein besseres
Verständnis der integrierten Typmethoden und wie sie sich von
eingebauten Funktionen unterscheiden. Im nächsten Video werden wir einige zusätzliche integrierte
Typmethoden
untersuchen und sehen, wie sie uns bei der Manipulation von Daten helfen
können.
17. Eingebaute Typmethoden – geführte Beispiele: Jimmy und Pike haben gerade
ihren steilen Aufstieg hinter sich gebracht. Die beiden Wanderer setzen
den Weg in einem guten Tempo fort, aber draußen wird es
noch wärmer Jamie ist neugierig, wie
die gefühlte Temperatur verwendet seine Sensoren
zur Messung von Temperatur, Wind Pike verwendet seine Sensoren
zur Messung von Temperatur, Wind
und Luftfeuchtigkeit und berechnet
die gefühlte Pike hat nun erfahren
, dass Jim gerne etwas mehr Kontext zu den Ergebnissen seiner Berechnungen
hätte Da er sich jedoch nicht sicher ist wie Jimi das
Ergebnis formatieren möchte, gibt
er die Informationen mit
zufälliger Großschreibung ,
wie Jimi das
Ergebnis formatieren möchte, gibt
er die Informationen mit
zufälliger Großschreibung aus. Oh, Pike Unzufrieden mit dem Format bittet
Jamie Pike, ihr ein paar Optionen aufzuzeigen Die erste Option, die
Pike vorschlägt, besteht darin, die Groß- und Kleinschreibung aller Zeichen in seiner Ausgabe zu
vertauschen In Python kann dies
mit der Swap-Case-Methode geschehen. Leider
ist das neue Format genauso schwer zu lesen
wie das ursprüngliche. Pike versucht es noch einmal und wandelt alle
Zeichen in Großbuchstaben um In unserem Code können wir das
mit der Methode upper machen. Konvertierung in
Großbuchstaben kann nützlich sein, um wichtige Botschaften
hervorzuheben oder Kleinschreibung einheitlich
zu gestalten Aber Jamie findet
es ein bisschen unhöflich. Pike gibt nicht auf. Ich versuche es erneut, indem ich
alle Zeichen in Kleinbuchstaben umwandle alle Zeichen in Kleinbuchstaben umwandle In PyTon
konvertiert die Methode mit der unteren
Zeichenfolge Zeichenketten konvertiert die Methode mit der unteren
Zeichenfolge Zeichenketten Wie die Methode für Großbuchstaben kann auch
die Methode für Kleinbuchstaben
verwendet werden, kann auch
die Methode für Kleinbuchstaben
verwendet werden um die Groß- und Kleinschreibung zu vereinheitlichen. Diese Ausgabe ist deutlich
lesbarer, aber es fehlt ihr immer noch die
richtige Persistent Pike versucht es erneut und konvertiert die Ausgabe in Groß-/Kleinschreibung. Wir können Zeichenketten auch in
Groß-/Kleinschreibung konvertieren, indem wir die bereitgestellte Methode für
Titelzeichenfolgen verwenden Groß- und Kleinschreibung kann nützlich sein, wenn Sie eine Zeichenfolge für
eine Überschrift oder einen Titel
formatieren. Diese Ausgabe ist viel besser lesbar, aber nicht
ganz zufriedenstellend. Pike, du bist so nah dran. Mit einem weiteren Trick
ist die Roboter-Hülle dran. Pike modifiziert die
Ausgabeformatierung
mithilfe der Methode capize so, dass sie eine normale Großschreibung von Sätzen eine normale Großschreibung von Sätzen ist Großartig. Jamie ist
mit der neuen Formatierung zufrieden Sie müssen nicht schick sein. Pike nimmt zur Kenntnis, dass er
diesem Stil in Zukunft folgen wird. Fantastisch. Wir haben jetzt mehrere nützliche eingebaute
String-Methoden in Aktion gesehen. Im nächsten Video haben Sie
die Möglichkeit, die Verwendung integrierter Funktionen und integrierter
Typmethoden zu
üben Funktionen und integrierter , um mit Daten zu arbeiten.
18. Übungen mit eingebauten Typmethoden: In dieser Arbeitsmappe haben Sie gesehen, wie mehrere weitere Zeichenkettenmethoden
verwenden können Lassen Sie uns die Lösungen besprechen. Um die erste Übung zu lösen, müssen
wir die Zählmethode verwenden. Wenn wir die
Count-Methode im ersten Code aufrufen und die Zeichenfolge
ocean als Argument übergeben, können
wir sehen, dass das Wort Ocean innerhalb der Nachricht 14-mal
vorkommt. Um Übung
zwei zu lösen, können wir
die Strip-Methodenfamilie verwenden die Strip-Methodenfamilie , um die
ablenkenden Zeichen zu entfernen Sie können die
Strip-Methode entweder wiederholt anwenden, oder Sie können etwas
genauer vorgehen und
die Strip- und
R-Strip-Methoden verwenden , bei denen die
Ablenkungszeichen
nur auf einer Seite der Zeichenfolge erscheinen nur auf einer Seite der Zeichenfolge Konzentrieren wir uns auf diese
genauere Lösung. Zuerst müssen wir
die zusätzlichen Leerzeichen an
beiden Enden von Code zwei entfernen. Wir können die Strip-Methode
ohne Argumente verwenden , um dies zu erreichen. Zweitens können wir
die Apostroph-Zeichen
vom Anfang der Zeichenfolge entfernen die Apostroph-Zeichen
vom Anfang der , indem wir
das Apostroph an
die Strip-Methode übergeben Apostroph an
die Ebenso können wir auch
die
Ausrufezeichen am Anfang der Zeichenfolge entfernen , indem wir
das Ausrufezeichen als Argument für
die Strip-Methode übergeben als Argument für
die Strip-Methode Dann können wir neun an
die R-Strip-Methode übergeben , um die Neunen vom
Ende der Zeichenfolge zu entfernen Schließlich können wir R Strip
ohne Argumente
aufrufen , um
die Leerzeichen am
Ende der Zeichenfolge zu entfernen die Leerzeichen am
Ende der Zeichenfolge Großartig. Dann bleibt uns
die Saite Apple Grove. Beachten Sie, dass die Reihenfolge, in diese Methoden
angewendet werden, wichtig ist, da Strip nur
die Zeichen am Anfang
oder Ende der Zeichenfolge entfernt . Es werden keine Zeichen
an einer anderen Stelle entfernt. Um zu Übung drei überzugehen,
müssen wir die Ersetzungsmethode verwenden. Mithilfe der Methodenverkettung können
wir
die Nullen und Einsen in Code
drei durch die leere Zeichenfolge ersetzen die Nullen und Einsen in Code
drei durch die leere Zeichenfolge Dann können wir
die Zweien durch D,
die Dreien durch B, die Vieren durch L,
die Fünfer durch A,
die Sechsen durch M,
die Sieben durch R,
die Acht durch Y
und die Neunen durch I ersetzen die Dreien durch B, die Vieren durch L,
die Fünfer durch A, die Sechsen durch M,
die Sieben durch R, .
Dadurch können wir die Nachricht dekodieren, um das Wort Library zu erhalten .
Dadurch können wir die Dadurch können wir . Um dann Übung vier zu lösen, können
wir die Find-Methode
mit der String-Bibliothek als
Argument verwenden , um
die Position in Code
1 zu finden , an der die
Wortbibliothek beginnt. Wir erhalten, dass die Bibliothek
mit dem Zeichen 1.114 beginnt. Schließlich
haben wir in Übung fünf das
Konzept der
Booleschen Werte eingeführt , die
entweder wahr oder falsch sein können Für Zeichenketten und numerische Werte gibt es Methoden, die boolesche Werte
zurückgeben Diese Methoden ermöglichen es uns,
Fragen zu unseren Daten zu stellen. Zum Beispiel können wir
feststellen, ob Code vier alphanumerisch
ist, indem wir
die Methode I lnum aufrufen Hier stellen wir fest, dass der Code tatsächlich
alphanumerisch ist. Fantastisch. In den
letzten beiden Arbeitsmappen haben
Sie gelernt, Funktionen und
Methoden zu
identifizieren , mit denen Sie ein bestimmtes Problem lösen können Dies ist eine nützliche Fähigkeit
, auf die Sie
beim weiteren
Programmieren zurückgreifen werden . In den nächsten Videos werden
wir uns mit
dem booleschen Typ befassen, den wir in Übung fünf gesehen haben
, und erfahren, wie dieser Typ uns
eine neue Klasse von Problemen
eröffnet , die es zu
19. Booleane und Vergleichsoperatoren: In der vorherigen
Übungsmappe
haben wir die Methode ist Ziffer verwendet Wir haben festgestellt, dass diese Methode den Wert true
zurückgab, der in diesem Video dem Booleschen
Datentyp entspricht Wir werden diesen neuen
Datentyp genauer untersuchen. Boolesche Werte sind ein
Datentyp, der nur die Werte true oder
false annehmen kann die Werte true oder
false annehmen Auf den ersten Blick scheint ein
Datentyp, der nur einen von zwei Werten
annehmen kann, von begrenztem Nutzen Tatsächlich ist es jedoch genau
diese Einschränkung, die
Boolesche Werte so mächtig macht .
Mal sehen warum Analog dazu spiegeln Boolesche Werte die möglichen Zustände
eines Lichtschalters wider,
entweder an, wahr oder aus, falsch In der Praxis sind Boolesche Werte nützlich, wenn wir wollen, dass PyTon Stellen Sie sich zum Beispiel vor, Sie haben Schwierigkeiten mit
Zahlen und benötigen Unterstützung von
PyTN
, um festzustellen, ob 40 Grad Fahrenheit
über dem Gefrierpunkt liegen,
der 32 Grad beträgt haben Schwierigkeiten mit
Zahlen und benötigen die Unterstützung von
PyTN
, um festzustellen, ob
40 Grad Fahrenheit
über dem Gefrierpunkt liegen,
der 32 Grad beträgt. Wir können Pyton diese Frage mithilfe eines Vergleichsausdruck testet
, ob zwei Werte
eine bestimmte Beziehung erfüllen ,
und gibt den Wert
wahr zurück , wenn die Beziehung
erfüllt ist , und falsch,
wenn dies nicht der Fall ist Um beispielsweise festzustellen, ob 40 Grad über dem Gefrierpunkt liegen, können
wir den Vergleichsoperator „Größer
als“ verwenden. Wenn PyTon
die Anweisung auswertet, gibt
es den booleschen Wert true zurück,
was bedeutet, dass 40
tatsächlich größer als 32 ist Du lernst heute viel. Umgekehrt, wenn wir
den Operator weniger als
in der Anweisung verwenden , wertet
PyTN ihn Auf ähnliche Weise können wir schwache
Ungleichheitsbeziehungen testen, indem den Operator „Größer oder Gleichheit“
und den Operator „Kleiner als
oder Neben numerischen Werten
können
Python-Vergleichsausdrücke auch verwendet werden, um
Zeichenketten und andere Datentypen zu vergleichen. Weisen wir beispielsweise der Variablen Tag eins
die Zeichenfolge Dienstag
und der Variablen Tag zwei
die Zeichenfolge Montag zu. Nehmen wir nun an, wir möchten
testen, ob diese beiden
Zeichenketten identisch sind. Können wir das Gleichheitszeichen
als Vergleichsoperator verwenden ?
Natürlich nicht. Denken Sie daran, dass das Gleichheitszeichen
der
Zuweisungsoperator in Python ist der
Zuweisungsoperator in Python Bei der Auswertung dieses
Ausdrucks wird
die Zeichenfolge Montag
der Variablen Tag eins neu zugewiesen , was nicht unsere
ursprüngliche Absicht war Um einen
Gleichheitsvergleichsausdruck zu erstellen, müssen
wir stattdessen den
doppelten Gleichheitsoperator verwenden Da sich die Zeichenfolgen Montag
und Dienstag unterscheiden, bei der Auswertung des Ausdrucks der Wert Falsch
zurückgegeben. Wenn wir schließlich testen
möchten, ob zwei Werte unterschiedlich
sind, verwenden
wir den Ungleichheitsoperator
Ausrufezeichen das erste
Gleichheitszeichen durch
ein Ausrufezeichen ersetzen und den Ausdruck
auswerten, erhalten
wir den Wert true, der
anzeigt, dass die beiden
Zeichenketten Großartig. Wir haben noch einen anderen
PyTN-Datentyp behandelt, Boolesche Insbesondere haben wir gesehen,
dass Boolesche Werte sehr
nützlich sind, um innerhalb des PTN-Programms Ja- oder Nein-Fragen
zu stellen Im nächsten Video werden wir auf dieser Grundlage
aufbauen und
sehen, wie wir in PTN
komplexere Fragen stellen können
20. Booleans und Vergleichsoperatoren geführte Beispiele: entlang der
Achterbahn gewandert Jamie und Pike sind entlang der
Achterbahn gewandert und haben gerade Voller Energie
fragt sich Jamie, ob sie das Tempo erhöhen
können Dazu bräuchte Pike noch mindestens 73% seiner Batterie um auf Turbogeschwindigkeit hochzufahren Jamie ihrerseits
würde sich wohler fühlen, wenn sie schneller
wandern würde,
da sie weiß, dass ein paar Wolken vorhergesagt sind ,
die die intensive Sonne
abschirmen Im Wesentlichen möchten
Jamie und Pike folgenden
Ja- oder Nein-Fragen beantworten Liegt der Akkuladestand von Pike über 73%
? Und ist die
Wettervorhersage bewölkt? Sie können nicht schneller wandern, wenn die Antwort auf beide
Fragen nicht Ja lautet. Schauen wir uns an, wie wir PTN fragen
können, ob diese beiden Bedingungen
gleichzeitig erfüllt sind Praktischerweise
stellt PTN das Schlüsselwort
zur Verfügung, das uns bei der Durchführung dieses Tests hilft der logische Operator end Wenn der logische Operator end zwischen
zwei booleschen Werten platziert wird, können wir überprüfen, ob die beiden Werte gleichzeitig wahr sind Wenn die beiden Werte wahr sind, wird der gesamte logische Ausdruck als wahr
ausgewertet Wenn andererseits mindestens
einer der Werte falsch ist, wird
der logische Ausdruck als falsch ausgewertet Pike geht davon aus, dass
er
noch über einen Batteriestand von 65% verfügt , und prognostiziert, dass einige Wolken auftauchen werden weiteren
Verlauf
der Lassen Sie uns anhand dieser
Informationen
herausfinden, ob es eine Option
ist, schneller zu fahren Wir beginnen mit der Erstellung von
zwei Variablen, die den Akkuladestand und die Wettervorhersage von Pike
darstellen Dann können wir wie folgt fragen, ob der Akkuladestand von
Pike
mindestens 73% beträgt und ob die Wettervorhersage bewölkt
ist Wenn wir die Zelle ausführen, erhalten
wir False. Natürlich tun wir das. Der erste Ausdruck von Bolling
ist eindeutig falsch. Das ist schade. Jamie und Pike werden nicht schneller
wandern können Aber warte. Jamie
hat eine andere Idee Wenn sie sich
in die Wildnis wagen, bringt
Pike normalerweise Notstrom
mit Jamie fragt Pike, ob er
entweder eine tragbare Batterie
oder seine Mini-Winterbine mitgebracht entweder eine tragbare Batterie
oder seine Entweder die Batterie oder
die Windturbine zu haben , würde
ausreichen , um
Pike etwas mehr Ladung zu geben In dieser Situation
möchte Jamie die Frage beantworten. Hat Pike entweder
die tragbare Batterie
oder die Mini-Windturbine mitgebracht ? Um Fragen wie diese zu stellen, stellt
Biton einen weiteren
logischen Operator zur Verfügung:
den Operator oder, wenn er
zwischen zwei booleschen Werten steht, überprüft der Operator oder, ob einer
der Wenn mindestens einer der Werte wahr ist, wird
der gesamte logische Ausdruck
als wahr der gesamte logische Ausdruck Nur wenn beide booleschen
Werte falsch sind, wird der logische Ausdruck als falsch
ausgewertet Pike scannt sein
internes Inventar und informiert Jamie, dass er
seine Mini-Windturbine mitgebracht hat, aber Wir können diese Informationen verwenden, um einen weiteren
logischen Ausdruck
einzurichten Lassen Sie uns zunächst
zwei boolesche Variablen
erstellen , die angeben, dass Pike die Mini-Turbine
mitgebracht hat, aber nicht die Dann können wir den
Test durchführen, indem wir einfach „hat eine Mini-Turbine“ oder „
Hat eine tragbare Batterie
“ schreiben Mini-Turbine“ oder „
Hat eine tragbare Batterie Beachten Sie, dass
hier keine Vergleichsausdrücke erforderlich sind, da unsere beiden Variablen bereits boolesche Werte
sind Beim Ausführen der Zelle wird
unser logischer Ausdruck wahr ausgewertet. Auch dies haben wir erwartet,
da mindestens eine
unserer beiden Variablen wahr
ist. Fantastisch. Pike kann jetzt die Turbine anbringen
, um die Kraft des Windes zu nutzen und
die Batterie um
ein paar Prozent mehr aufzuladen Dann können Jamie und Pike ihre Wanderung noch schneller
fortsetzen Großartig. Sie wissen jetzt, wie
Sie Vergleichs- und logische Operatoren verwenden, um Ja
- oder Nein-Fragen innerhalb
des PTN-Programms zu stellen - oder Nein-Fragen innerhalb
des PTN-Programms Es ist jetzt an der Zeit, diese neue Fähigkeit zu
üben.
21. Booleane und Vergleichsoperatoren-Übungen: In dieser Arbeitsmappe haben
Sie mehr Erfahrung mit dem booleschen Typ und mit Vergleichs- und logischen Operatoren Gehen wir die Übungen durch. In Übung eins haben Sie
einige komplexere
Vergleichsaussagen erstellt . Um Teil A zu lösen,
müssen wir
die Durchschnittstemperaturen zu Beginn
der Woche und
Ende der Woche berechnen die Durchschnittstemperaturen zu Beginn . Wir können diese Werte in
Variablen speichern und dann den
Operator „Größer als“
verwenden , um zu testen, ob
die frühen Temperaturen
höher waren als die
späteren Temperaturen. Der Vergleich ergibt „Falsch“, was bedeutet, dass die
Durchschnittstemperatur zu Beginn der Woche unter der
Durchschnittstemperatur im Laufe der Woche
liegt. In Teil B müssen wir
feststellen, ob die absolute
Temperaturänderung zwischen Montag und Dienstag mindestens so groß
ist wie die absolute
Temperaturänderung zwischen Donnerstag und Freitag. Wir können die ABS-Funktion verwenden , um die
absoluten Unterschiede zu berechnen. Dann können wir den Operator größer
als oder gleich verwenden , um festzustellen, ob die
absolute Differenz zwischen Montag und
Dienstag mindestens so
groß ist wie die absolute Differenz zwischen Donnerstag und Freitag. Wir stellen fest, dass das
Vergleichsergebnis wahr ist, was bedeutet, dass sich die
Temperatur
zwischen Montag und Dienstag stärker verändert hat als zwischen
Donnerstag und Freitag. Wenn wir zu Übung zwei übergehen,
können wir überprüfen, ob die
Temperatur von Montag bis
Donnerstag tatsächlich
ansteigt , indem wir mehrere
weniger als Operatoren verwenden. In dieser Erklärung werden
drei Fragen in einer gestellt. Darin wird gefragt, ob die Temperatur
am Montag unter der Temperatur am Dienstag
liegt, ob die Temperatur am Dienstag unter der
Temperatur am
Mittwoch liegt und ob am Mittwoch unter der Temperatur am Donnerstag
liegt Unsere Aussage wird als wahr gewertet,
was darauf hindeutet, dass diese
vier Temperaturwerte stark ansteigen. In Übung drei haben wir den
Knotenoperator eingeführt. Wir können den Operator verwenden, um dieses
Problem auf zwei verschiedene Arten Erstens besteht der intuitivere
Ansatz darin, sowohl die Variablen „Wird
regnen“ als auch „Temperatur
wird fallen“ direkt zu
negieren Variablen „Wird
regnen“ als auch „Temperatur
wird fallen Es ist jedoch logisch
gleichwertig, zu überprüfen, ob
Regen oder Temperatur wird sinken wahr sind, und dann die Gruppe zu
negieren Dies funktioniert aufgrund
des De Morganschen Gesetzes, das besagt, dass nicht A und nicht B dasselbe sind wie nicht A oder B. In beiden Ausdrücken
wird eine
Temperatur größer oder gleich 90
als wahr gewertet. Dann wird im ersten Ausdruck sowohl „Nicht herrschen Nicht Temp“ fallen,
bewerte es als wahr. Drei Wahrheiten, die mit den
Operatoren und verknüpft sind, ergeben Wahr. Im zweiten Ausdruck sind will reign und temp will
drop falsch
und sie sind mit einem Oder-Operator verknüpft Dieser Ausdruck wird ihn also
als falsch bewerten. Aber wir wenden den Operator an, der
das
Falsche in ein Wahres umwandelt Dann bewerten wir wahr
und wahr, was wahr ist. Als nächstes in Übung vier. Wenn es um komplexe Vergleiche
und logische Ausdrücke
geht, ist es am besten, sie
in kleinere Teile zu zerlegen. Das können wir hier tun, indem wir
zunächst berücksichtigen
, dass es nicht hageln sollte Dann sehen wir das
Wort und wissen, dass der Rest des Ausdrucks mit
einem Schlüsselwort und verknüpft
wird Außerdem wissen
wir, dass aufgrund des Satzes eine der folgenden
Bedingungen erfüllt sein muss, dass diese
beiden Bedingungen mit
einem Oder-Operator verknüpft
werden. Als Nächstes können wir Sichtweite
von
mindestens 500 Metern und eine Niederschlagsrate
von nicht mehr als 0,2 „/Stunde in diese Aussage Und wir können
nicht weniger als 600 Meter
Sichtweite und eine Niederschlagsrate
von nicht mehr als 0,3 „/Stunde in diese Aufgrund unserer Eingabevariablen dieser Teil des Ausdrucks den Wert „
Wahr“ Dieser Teil des Ausdrucks wird als falsch
ausgewertet, und dieser Teil wird ebenfalls als falsch
ausgewertet Diese beiden Ausdrücke
sind mit einem oder verknüpft, also falsch oder falsch ist falsch Als Ergebnis bleiben uns
wahr und falsch übrig , was falsch ist. Zum Schluss komme
ich zu Übung fünf. In Teil A erstellen wir vier Variablen und setzen sie Platzhalterwerten
gleich In Teil B verwenden
wir dann diese Variablen, um einen Ausdruck zu erstellen bestimmt werden kann, ob
ein erhöhtes Lawinenrisiko besteht Da wir wissen müssen, ob eine dieser Bedingungen zutrifft, verwenden
wir einen
Oder-Operator, um sie zu verknüpfen Wir können überprüfen, ob in
letzter Zeit mehr als 12 Zoll Schnee gefallen ist und ob es drei oder
mehr schwache Schichten gibt Und wir können auch überprüfen, ob die Windgeschwindigkeit mehr
als 20 Meilen pro Stunde beträgt und es eine
große Temperaturänderung gegeben hat Schließlich können wir in Teil C die
Platzhalterwerte unserer Variablen
ersetzen und den
Ausdruck so auswerten, dass kein erhöhtes
Lawinenrisiko besteht Großartig. Nachdem
Sie nun das Erstellen von Vergleichs- und
logischen Ausdrücken geübt haben, sind
wir bereit, mit
unserem nächsten Thema, den Bedingungen, fortzufahren. Boolesche Werte und logische Ausdrücke sind ein wichtiger Bestandteil
von Konditionalen, sodass Sie in Zukunft noch
mehr Gelegenheit haben
werden, sie zu üben
22. Konditional: In den vorherigen Videos
haben wir untersucht, wie man Fragen mit
Ja oder Nein und
PTN beantwortet, indem man Vergleiche und logische In diesem Video
werden wir untersuchen, wie wir
diese Ausdrücke verwenden können , um
den Ausführungsablauf unseres Codes zu steuern den Ausführungsablauf unseres Codes Alle PTN-Programme, die wir bisher
geschrieben haben , laufen linear bewegen sich bis zum Ende
des Programms von einer Zeile zur
nächsten Analog dazu war die Ausführung
unseres Codes wie eine reibungslose Fahrt auf
einer geraden Autobahn direkt zu
unserem
Ziel führte Aber beim Programmieren
wie beim Autofahren ist
der Weg, dem wir folgen wollen,
nicht immer einfach So wie Sie möglicherweise einen Umweg zu
einem Rastplatz machen
müssen , wenn Ihr
Auto wenig Benzin hat, müssen
Programmierer häufig
den Ausführungsablauf
ihres Codes auf der Grundlage
bestimmter Bedingungen steuern den Ausführungsablauf
ihres Codes auf der Grundlage
bestimmter Nehmen wir zum Beispiel an,
Sie entwerfen ein einfaches
Fahrassistenzprogramm , das die Fahrer benachrichtigt,
wenn es Zeit ist, zu tanken Das Programm muss wie folgt
funktionieren. Wenn ein Auto an
einem Rastplatz vorbeifährt , obwohl es weniger
als ein Viertel getankt hat, muss
das Programm die
Zeichenfolge Time to Fuel ausgeben, Baby. In der Programmierung können
solche bedingten
Ausführungsentscheidungen mit I-Anweisungen implementiert werden. Und wenn die Anweisung
mit dem Schlüsselwort beginnt, folge
ich der Bedingung, die
wir testen wollen, und einer Spalte. Beachten Sie, dass die nächste Codezeile
automatisch eingerückt wird, wenn
Sie nach
dem Schreiben
der Terminalspalte die Eingabetaste drücken Terminalspalte die Eingabetaste nächste Codezeile
automatisch eingerückt wird, wenn
Sie nach
dem Schreiben
der Das ist kein Glitch. Die Einrückung signalisiert Python, dass der Code, den
wir in diese Zeile schreiben nur ausgeführt werden
darf wenn der
Vergleichsausdruck wahr ist Wenn der
Vergleichsausdruck falsch ist, die eingezogene Codezeile bei der
Ausführung übersprungen Wir können leicht überprüfen, ob unser Programm
wie vorgesehen funktioniert Wenn wir der Variablen Gas remaining
den Wert 0.1 zuweisen und den Code ausführen, wird
die gewünschte Zeichenfolge gedruckt. Und wenn wir den Wert 0,5 zuweisen, erscheint
nichts in
der Ausgabebox. Nun, ein Programm, das
nichts zurückgibt, ist ein bisschen beunruhigend. Es macht es schwierig zu sagen, ob das Programm ausgeführt
wurde
oder nicht Lassen Sie uns unseren Code verbessern,
indem
das Programm die Zeichenfolge
direkt am Ende ausgibt. Diese Zeichenfolge sollte unabhängig davon gedruckt
werden, ob der
Vergleichsausdruck wahr ist
oder nicht. Dies kann in
PyTon geschehen, indem
eine Print-Anweisung ohne Einrückung
unter die aktuelle Zeile geschrieben eine Print-Anweisung ohne Einrückung
unter die Beim Testen unseres Codes
mit dem Wert 0.1
stellen wir fest, dass beide
Print-Anweisungen ausgeführt Und wenn Sie 0.1 auf 0.5 ändern, wird
nur die letzte
Print-Anweisung ausgeführt. Wie Sie sehen, ist die richtige
Einrückung bei der Arbeit
mit if-Anweisungen von entscheidender Bedeutung , da sie den Umfang
der Anweisung
bestimmt Wenn Anweisungen mächtig sind, aber sie sind nur ein
Baustein, Python uns zur Verfügung stellt, um
den Fluss unseres Codes zu kontrollieren. Piton bietet auch
mehr Bausteine für
komplexere Szenarien Stellen Sie sich zum Beispiel vor, Sie
nähern sich einer T-Kreuzung
und müssen
anhand der verbleibenden
Gasmenge entscheiden , ob Sie den kurzen Weg
oder die landschaftlich reizvolle Route nehmen Wenn Sie mehr
als einen halben Tank haben, können
Sie die landschaftlich reizvolle Route nehmen. Wenn nicht, müssen Sie
den kürzeren Weg nehmen, sonst würde Ihnen das Benzin
ausgehen. Dieses Szenario unterscheidet sich
vom vorherigen, da wir
hier
zwischen links oder rechts wählen müssen. Wir können diese Wahl nicht
ganz überspringen und geradeaus
weitermachen. Um den Fahrern zu helfen, eine
solche Entscheidung zu treffen, sollten wir eine zweite Version
eines Fahrerassistenzprogramms erstellen . Diese neue Version
führt weiterhin
einen bestimmten Code aus,
wenn die Bedingung erfüllt ist. Aber wenn diese
Bedingung falsch ist, möchten
wir, dass unser Code
einen anderen Code ausführt. Um das zu erreichen, schreiben wir
das Schlüsselwort Ls, gefolgt von einer Spalte auf derselben
Einrückungsebene wie die I-Anweisung Unter der Anweisung
schreiben wir in eine eingezogene
Codezeile den Code, der
ausgeführt werden soll, wenn die
Bedingung falsch ist Schließlich schreiben
wir
der Vollständigkeit halber eine
Codezeile ohne Einrückung, die unabhängig vom
gewählten Pfad ausgeführt
wird Lassen Sie uns nun testen, ob unser
Code wie erwartet funktioniert. Wenn wir die Variable
gas remaining auf 0,7 setzen, wird
der mit der
I-Anweisung verknüpfte Code ausgeführt. Und wenn wir
die Variable gas remaining
auf einen Wert von 0,3 ändern , wird
der mit der
Ls-Anweisung verknüpfte Code ausgeführt. Beachten Sie, dass in beiden Szenarien die endgültige Print-Anweisung immer ausgeführt
wird da sie außerhalb des Gültigkeitsbereichs
des
bedingten Blocks liegt . I- und IL-Anweisungen
sind leistungsstarke Konzepte , mit denen Programmierer den Ausführungsablauf ihres Codes
steuern Insbesondere die
IL-Struktur ist sehr hilfreich für
Situationen, in denen sich
zwei sich gegenseitig ausschließende
Szenarien beinhalten . Im nächsten Video werden
wir
diese IL-Struktur verallgemeinern, werden
wir
diese IL-Struktur verallgemeinern um Situationen zu berücksichtigen, in
denen es zwei,
drei, vier oder sogar
mehr mögliche Szenarien gibt drei, vier oder sogar
mehr mögliche
23. Conditionals-geführte Beispiele: Als Jamie und Pike sich dem Gipfel
nähern, erreichen
sie eine kritische
Kreuzung, an der sie einen von drei Pfaden wählen müssen Weg am besten zu beschreiten hängt von Jamies Energieniveau ab, das entweder
hoch, mittel oder niedrig sein kann Wenn Jamie viel Energie hat, er Recht,
seine Reise um
weitere 2,8 Meilen zu verlängern seine Reise um
weitere 2,8 Meilen zu Wenn wir eine mittlere Energie
haben, fahren sie geradeaus weiter behalten dabei den ursprünglichen
Höhenunterschied von 4,73 Meilen Wenn unsere Energie niedrig ist, nehmen sie schließlich eine Abkürzung, indem
sie nach links abbiegen,
wodurch die Strecke um 0,56 Meilen reduziert wird Lassen Sie uns bedingte Aussagen verwenden , um den
Entscheidungsprozess darzustellen Wir werden auf Konzepten aufbauen, mit
denen wir bereits vertraut sind. Im letzten Video lernen
wir, wie man zwei Pfade auf
der Grundlage des Werts eines
logischen Ausdrucks
mithilfe von I- und S-Anweisungen
weiterleitet oder codiert des Werts eines
logischen Ausdrucks
mithilfe von . Nun, es stellt sich heraus, dass wir diesen
Ansatz erweitern
können, um
die Ausführung unseres Codes über
drei oder sogar mehr Pfade zu leiten . Zum Beispiel können wir
die folgende Logik implementieren, um zu entscheiden
, welchen Pfad Jamie einschlagen muss Zunächst testen wir mit einer I-Aussage, ob Jamies Energieniveau
hoch ist Wenn diese Bedingung zutrifft, nimmt
Jamie den Weg, der ihre Wanderung
um 4,5 Meilen verlängert Wenn diese Bedingung jedoch falsch ist, müssen
wir feststellen, ob ihr Energieniveau mittel oder niedrig
ist Dies kann erreicht werden, indem ein weiterer
Is-Block in den ersten S-Block eingebettet wird Is-Block in den ersten S-Block , um zu testen, ob unser
Energieniveau mittel ist Wenn die Bedingung erfüllt ist, wird
Jamie der ursprünglich geplanten
Route folgen Wenn diese Bedingung jedoch falsch ist, können
wir daraus schließen, dass
Jamies Energieniveau niedrig
ist und sie die Abkürzung
nehmen sollte Wie dieses Beispiel zeigt, können
wir
mehrere Auswahlmöglichkeiten darstellen indem wir if else-Blöcke verschachteln Dieser Ansatz funktioniert zwar recht gut für
drei Alternativen, wird
aber schnell aufwändig wenn es mehr Möglichkeiten gibt Sie werden in den Übungen
erleben, wie umgänglich es wird Zum Glück gibt es
einen besseren Weg. Um Programmierern das Leben zu erleichtern, bietet
PyTon das Schlüsselwort LIF, das für s if steht Der Code im
ALIF-Block wird genau dann ausgeführt wenn der Ausdruck
der if-Anweisung falsch ist und der Ausdruck der
ALF-Anweisung In der Praxis können
ALIF-Anweisungen verwendet werden, um dieselbe Logik
wie verschachtelte ifelse-Blöcke zu implementieren, sie sind
jedoch Indem
Pie der Logik folgt, kann er bestimmen, welchem Lassen Sie uns diese
Logik in Python implementieren. Zunächst testen wir
mit einer if-Anweisung, ob das Energieniveau von
JB hoch ist Wenn das der Fall ist, aktualisieren wir zuerst die
Wanderstrecke entsprechend. Und geben Sie den Pfad aus, dem Sie folgen möchten. Beachten Sie, dass bedingte Anweisungen mehrere
Codezeilen enthalten
können. Die Einrückung bestimmt
, ob eine Codezeile Teil
der Anweisung ist Auf die I-Anweisung folgt
eine IF-Anweisung , um zu testen, ob Jamies
Energieniveau mittel ist Da wir die Wanderstrecke nicht
aktualisieren müssen, ist es
in diesem Fall nicht erforderlich, variable Gesamtmeilenanzahl neu
zuzuweisen Wir vervollständigen unseren
Bedingungsblock mit einer L-Anweisung, um den Fall zu behandeln, in dem
Jamies Energieniveau niedrig ist In diesem Fall müssen wir
den Wert der
Gesamtmeilen um 0,56 verringern den Wert der
Gesamtmeilen um 0,56 Lassen Sie uns abschließend eine Druckanweisung
ohne Einrückung schreiben , um die
aktualisierte Gesamtzahl der Meilen auszugeben Da diese letzte Codezeile nicht Teil
des Bedingungsblocks If ist , wird
sie jedes
Mal ausgeführt, wenn wir das Programm ausführen Auf Pikes Anfrage hin
räumt Jamie ein, ein
mittleres Energieniveau zu haben Lassen Sie uns das variable
Energieniveau entsprechend zuweisen. Bei der Ausführung der Zelle empfiehlt
unser Programm, sich an
den ursprünglichen Plan zu
halten . Fantastisch. Jamie und Pike werden
dann
ihren ursprünglichen Weg
bis zum Gipfel fortsetzen ihren ursprünglichen Weg
bis zum Gipfel Wir lassen Jamie
und Pike
diese Wanderung beenden und treffen sie, sobald
sie nach Hause Fantastisch. Wir
verstehen jetzt, wie man bedingte
Anweisungen verwendet, um
den Ausführungsablauf unseres Codes zu steuern . In der nächsten Arbeitsmappe haben
Sie die
Möglichkeit, die
Verwendung bedingter Anweisungen zu üben Verwendung bedingter Anweisungen
24. Konditionen-Übungen: In dieser Arbeitsmappe üben
Sie die Verwendung von Konditionalen unter verschiedenen
Umständen Lassen Sie uns die Lösungen besprechen. In Übung eins
haben Sie erlebt, wie der F-Block das Lesen Ihres
Codes erleichtern kann. In Teil A können wir
if und else Block verschachteln, um die Stunden für die Erkundung der
Variablen entsprechend den
Umgebungsbedingungen zu
aktualisieren . Diese beiden Codeblöcke
sind zwar logisch gleichwertig, es hat sich jedoch bewährt,
explizit auf
alle unsere Bedingungen zu testen Wenn Sie den Erfolgsstatus dem Block else überlassen, kann dies zu unerwartetem Verhalten führen, wenn Ihr Programm fehlerhafte
Eingaben empfängt In Teil B können wir
das Schlüsselwort LF verwenden, anstatt if
else-Blöcke zu verschachteln Das macht unseren Code sauberer und ist gleichzeitig logisch gleichwertig In Übung zwei haben Sie
zwei Szenarien gesehen, in denen das Verschachteln von bedingten Blöcken die bessere Option sein
könnte In Teil A
wollen wir Bedingungen verschachteln,
weil jede Prüfung eine
Voraussetzung für die nächste Prüfung ist Zunächst fragen wir, ob
die Feldprüfung erfolgreich ist. Wenn ja, können wir überprüfen,
ob der Crew-Check bestanden wurde. Wenn ja, können wir
unseren letzten Navigationscheck durchführen. Wenn diese Prüfung bestanden ist, drucken
wir die
Startbereitschaftsnachricht aus. Wenn eine dieser Prüfungen fehlschlägt, drucken
wir eine spezielle
Fehlermeldung die genau angibt, welche Prüfung fehlgeschlagen ist. Wenn wir zu Teil B übergehen, stoßen wir auf eine weitere Situation, in der Verschachtelungsbedingungen die beste Option
sind Hier wollen wir die Bedingungen für die
Verschachtelung festlegen, weil wir sicherstellen müssen
, dass die Zeus-Rakete sowohl verfügbar als auch
betriebsbereit
ist , bevor wir die anderen Bedingungen
überprüfen überprüfen Wir können diese
anderen Bedingungen mithilfe
eines verschachtelten I-LFL-Blocks überprüfen , wobei jede Bedingung prüft, ob
der Missionstyp der verfügbaren Besatzung entspricht , und
fehlschlägt, wenn es keine Übereinstimmung gibt Um Übung
drei zu lösen, müssen wir auf die Reihenfolge
achten, in der
wir unsere Bedingungen überprüfen Wir müssen zuerst überprüfen, ob
die Motortemperatur
höher als 90 ist , damit wir die richtige Meldung ausgeben
können Wenn wir stattdessen zunächst prüfen, ob die Motortemperatur über 50
liegt, führen
alle Temperaturen, die diese Bedingung
erfüllen, einschließlich Temperaturen, die andere Bedingungen erfüllen, fälschlicherweise dazu,
dass die
Warnmeldung gedruckt
wird. Wie Sie sehen, müssen Sie die Reihenfolge beachten ,
in der Sie
Ihre Bedingungen überprüfen, um sicherzustellen, dass Ihr Code wie erwartet verhält Schließlich können
wir in Übung vier den
ternären Operator verwenden, können
wir in Übung vier den
ternären Operator verwenden um eine Bedingung in eine einzelne Zeile
zu schreiben Wir möchten, dass der Status
ausreichend ist, wenn das Lebensmittelangebot mehr als 50
beträgt Andernfalls sollte er unzureichend
sein. Fantastisch. Sie haben jetzt
ein solides Verständnis von Bedingungen und
bedingter Logik In den nächsten Videos werden
wir uns mit
einem anderen nützlichen Datentyp befassen: Listen
25. Listen: Im vorherigen
Video haben wir gesehen, wie Zeichenketten
zur
Darstellung von Daten verwendet werden. Insbesondere
betrachten wir das Beispiel
eines Hirten, der Inhaltsstoffe ausspioniert, die wir in einer langen Zeichenfolge
dargestellt haben . Diese Methode funktioniert zwar, ist aber nicht die
effizienteste Methode, um auf
jeden Inhaltsstoff zuzugreifen und ihn zu manipulieren. In diesem Video werden wir
untersuchen, wie diese Art
von
Informationen mithilfe von PyTON-Listen besser organisiert Listen sind vielseitige Tools
, mit denen Sammlungen
von Elementen gespeichert werden können , z. B. die
Zutaten in einem Rezept Listen ermöglichen es uns, die Reihenfolge
aufrechtzuerhalten, einfach
auf Artikel zuzugreifen und
viele Operationen wie das
Hinzufügen und Entfernen von Elementen auszuführen . Zum Beispiel können wir
die Inhaltsstoffe von Shepherds By
als eine Liste von Zeichenketten darstellen die Inhaltsstoffe von Shepherds By
als eine Liste von Zeichenketten Um eine Liste in Piton zu erstellen, setzen wir ihren Eintrag in eckige Klammern und trennen
jeden Eintrag durch ein Komma So wie jedes Zeichen in einer Zeichenfolge einen zugehörigen Index hat Jedes Element in einer Liste ist auch einem Index
zugeordnet. Um beispielsweise
Gemüsebrat aus unserer Liste abzurufen, setzen
wir Klammern an das
Ende der
Zutatenvariablen und fügen den entsprechenden
Index für darin Sie nun die Grundlagen
verstanden haben, wollen wir noch ein paar
weitere Beobachtungen anstellen Erstens können Listen in Piton
zwischen einigen wenigen Elementen
und mehreren Millionen davon speichern zwischen einigen wenigen Elementen
und mehreren Millionen davon Das heißt, Listen
können verwendet werden, um einige Lebensmittel oder das Inventar
eines ganzen Lebensmittelgeschäfts
darzustellen Zweitens sind Listen
unglaublich vielseitig. Sie können Zeichenketten, Ganzzahlen,
Gleitkommazahlen, Boolesche Werte oder eine
Kombination davon enthalten Gleitkommazahlen, Boolesche Werte oder eine
Kombination Wir können sogar Listen erstellen, die andere Listen
enthalten. In unseren kommenden Videos werden
wir diese
Möglichkeiten weiter untersuchen. Darüber hinaus werden wir uns mit einigen der
integrierten Methoden
befassen , die für Listen
verfügbar sind. wir uns mit diesen Methoden befassen, werden
Sie aus erster Hand erkennen, warum
Listen besser sind als Zeichenketten, um
Sammlungen verwandter Elemente zu organisieren
26. Listen mit geführten Beispielen: Jimmy und Pike sind nach
ihrem aufregenden Abenteuer
auf der Achterbahnstrecke
wieder zu Hause ihrem aufregenden Abenteuer
auf der Achterbahnstrecke Wegpunkten navigiert werden muss Pike möchte sich auf
eine weitere Reise begeben und schlägt vor, eine ehrgeizigere Wanderung
zu planen, bei der
zwischen mehreren . Jimmy stimmt zu, stellt jedoch fest dass dies eine sorgfältige Vorbereitung erfordert Der erste Schritt in
ihrem Planungsprozess besteht darin, eine
Liste von Wegpunkten zusammenzustellen Pike schlägt eine
abenteuerliche Route vor, die am Eagles
Crest Trailhead
beginnt und nach Crystal Brook Bend
führt, in den Echo Canyon
hinabsteigt, aus nebligen Wasserfällen
herausklettert und in einem steilen Anstieg am Mount gipfelt Lassen Sie uns diese Liste von Wegpunkten in Biton vorstellen. Zwischen eckigen Klammern
schreiben wir Zeichenketten, die jeden
der fünf Wegpunkte
repräsentieren , und trennen
diese Zeichenketten Dann weisen wir unsere
neu erstellte Liste den variablen Wegpunkten
zu Um zu überprüfen, ob unsere Liste korrekt erstellt
wurde, visualisieren
wir sie. Großartig. Laut Pike sieht
alles gut aus, aber dann merkt
Janie, dass sie vergessen haben, ihre
Route anzugeben, um nach Hause zu kommen Hoppla. Hechte schlagen vor, am Aussichtspunkt Star Watch
vorbeizukommen, ihre Wanderung in
Richtung Jem Lake
fortzusetzen
und dann zum Eagles Crest Trailhead zurückzukehren Um diese Wegpunkte
zur Liste hinzuzufügen, stellt uns
PyTon die Methode append zur Verfügung,
die das anzuhängende Element Argument Lassen Sie uns überprüfen, ob die Wegpunkte
tatsächlich hinzugefügt wurden. Wunderbar. Wie Sie vielleicht erwartet
haben, wurden
die Elemente in der Reihenfolge, in
der sie hinzugefügt wurden, an das Ende der Liste
angehängt Reihenfolge, in
der sie hinzugefügt wurden, an das Ende der Liste Er stimmt zwar den Vorschlägen von
Pike zu, sie schlägt aber auch vor, dass
sie in
Pipers Cove anhalten, um die
malerische Aussicht zu genießen, bevor sie zum
Jem-See wandern Um ein Element an einer bestimmten
Position in einer Liste hinzuzufügen, bietet uns
Piton Diese Methode benötigt zwei Argumente. Das erste Argument gibt den Index an, in den der
Wert eingefügt werden muss. Das zweite Argument gibt
den Wert an, der eingefügt werden soll. Wenn wir die Zelle ausführen, erhalten
wir eine aktualisierte Liste, in der Piper's Cove vor Gem Lake
eingefügt wurde die vollständige Liste
der Ziele sieht, Jamie die vollständige Liste
der Ziele sieht, ist er der Meinung, dass sie
zu ehrgeizig sind Folglich
schlägt Pike vor,
Crystal Brook Band aus
ihrer Reiseroute zu streichen Crystal Brook Band aus , da es zu weit von den Um ein Objekt aus der Liste zu entfernen, stellt uns
PyTon
die Methode remove zur Verfügung Diese Methode verwendet das zu
entfernende Element als Argument. Oh nein. Was ist passiert? Warum bekommen wir hier eine
Fehlermeldung? Nun, beachten Sie, dass wir
Crystal Brook Ben
nicht so groß Crystal Brook Ben geschrieben haben, wie es in der Liste
erscheint Wir haben im Wesentlichen
versucht,
ein Element zu entfernen , das in der Liste nicht
existiert, und PyTon gefiel das nicht die Groß-/Kleinschreibung korrigiert und Wir haben die Groß-/Kleinschreibung korrigiert und das Element erfolgreich entfernt Perfekt. Jamie und Pike sind jetzt beide
mit der Liste zufrieden Neugierig fragt Jamie Pike wie viele Wegpunkte sie während ihrer Wanderung besuchen werden Um die Anzahl der Elemente in
der Liste zu ermitteln, können
wir eine Funktion verwenden, mit der
wir bereits
vertraut sind : die Acht Wegpunkte, die es zu besuchen gilt. Diese Wanderung wird
viel Spaß machen. Fantastisch. Nachdem wir nun einige
nützliche integrierte
Methoden für Listen gesehen haben , ist
es an der Zeit, dass Sie sie üben. Im nächsten Video
haben Sie die Möglichkeit, an einigen Übungen
zu diesen Konzepten zu arbeiten.
27. Listen Übungen: In dieser Arbeitsmappe müssen Sie die Verwendung von Listen zum Speichern,
Organisieren und Bearbeiten von Daten
üben Organisieren und Bearbeiten von Daten Lassen Sie uns die Lösungen aufschlüsseln. Um die erste Übung zu lösen, können
wir die Syntax und die
Methoden verwenden , die wir in
den vorherigen Videos gesehen haben. In Teil A erstellen wir
die Packliste, indem wir
unsere Daten in eckige Klammern In Teil B können wir
die Append-Methode verwenden, um unserer Packliste eine Zahnbürste und ein
Telefonladegerät
hinzuzufügen In Teil C verwenden
wir dann die Einfügemethode, um ein
Buch nach der Sonnenbrille einzufügen Wir übergeben drei, was
Python anweist , unsere
Daten am dritten Index einzufügen, und wir übergeben Book als die
Daten, die wir einfügen möchten. Schließlich können
wir in
der ersten Übung, Teil D, die Sonnenbrille entfernen, indem wir sie als Argument
an die Methode remove
übergeben. Nun zu Übung zwei, Teil A, wir unsere Packliste mithilfe der integrierten Sortierfunktion in
alphabetischer Reihenfolge sortieren können mithilfe der integrierten Sortierfunktion in
alphabetischer Reihenfolge Python bietet auch
die Listenmethode sort, die Elemente einer
Liste in alphabetischer Reihenfolge sortiert Sowohl die sortierte Funktion
als auch die SRT-Methode sortieren Listen
technisch gesehen
in aufsteigender Reihenfolge Für Zeichenkettendaten, wie wir sie
hier haben , bedeutet das alphabetisch Bei numerischen Daten bedeutet das einfach vom niedrigsten
zum höchsten Wert Beachten Sie auch, dass die
Sortierfunktion die ursprüngliche Liste
nicht verändert, die Sortiermethode
jedoch schon. Dann können wir in Teil B unsere Packliste in
umgekehrter alphabetischer Reihenfolge
sortieren , indem wir zuerst
die Sortiermethode und dann
die umgekehrte Methode anwenden die Sortiermethode und dann
die umgekehrte Methode Dies ist jedoch nicht die einzige
Möglichkeit , eine Liste umzukehren Wir können
die Sortiermethode auch
mit dem Argument Reverse
Equals True anwenden mit dem Argument Reverse
Equals True Oder wir können die
sortierte Funktion aufrufen und ihr Ergebnis direkt an
die Umkehrfunktion übergeben Seien Sie sich nur bewusst, dass
Sie am Ende diese nicht hilfreiche Ausgabe erhalten, wenn Sie
dieses
Ergebnis nicht in eine Liste Sie
dieses
Ergebnis nicht Wenn wir unser Ergebnis in eine Liste umwandeln, haben
wir jetzt unsere Packliste in umgekehrter
alphabetischer Reihenfolge In Übung drei haben wir das Konzept der
multidimensionalen Listen
eingeführt Es kann schwierig sein, sich mit diesem Konzept vertraut
zu machen. Lassen Sie sich
also nicht entmutigen, wenn Ihnen sich
also nicht entmutigen, wenn diese Übungen
etwas schwieriger erscheinen In Teil A können wir
eine mehrdimensionale Liste erstellen, um die Ausgaben für
jede Stadt wie folgt zu speichern Der nullte Index jeder
Unterliste speichert die Stadt und der erste Index speichert
die Liste der Ausgaben Der Nullwert in dieser Liste
entspricht den erwarteten
Übernachtungskosten Der erste Wert entspricht den
erwarteten Lebensmittelkosten, und der zweite Wert entspricht den
erwarteten Transportkosten. In Teil B können wir
jeder Variablen wie folgt
die richtigen Werte zuweisen . Um
von unserer Ausgabenliste aus auf London England zuzugreifen, geben
wir Null für
die nullte Unterliste und dann wieder Null für das
nullte Element in dieser Dieselbe Logik gilt für
die anderen Stadtzeichenfolgen. Um dann auf die
Übernachtungskosten für Paris zuzugreifen, können
wir eins angeben, um diese Liste
zu erhalten,
eins erneut, um diese Liste zu erhalten, und dann Null, um
das nullte Element abzurufen Für die Verpflegungs
- und Reisekosten in Paris ändern
wir einfach den dritten Index , um den richtigen Wert abzurufen Um auf die
Übernachtungskosten für London zuzugreifen, geben
wir als Nächstes die Indizes
Null, Eins und Null Um die
Verpflegungskosten für Venedig zu ermitteln, geben
wir 31 und eins Und für die
Reisekosten nach München geben
wir 21 und zwei an. In Teil C können wir die Funktionen Summe,
Min und MX
verwenden , um unsere drei Fragen zu
beantworten. Wir übergeben den ersten Index in der nullten Liste an
die Summenfunktion, die dann die
Summe der Listenelemente zurückgibt Um dann den geringsten Betrag zu ermitteln, den
wir voraussichtlich für Lebensmittel ausgeben werden, können
wir die Min-Funktion verwenden Wir übergeben den ersten Index
des ersten Elements in
jeder Städteliste, und die Min-Funktion
findet den kleinsten. Um die dritte
Frage zu beantworten, können wir
die Ausgabenliste für Venedig an
die MAX-Funktion übergeben . Wenn wir zu Übung vier, Teil A, , können
wir mit der normalen List-Syntax drei
Listen mit
Zielen,
Entfernungen und Zeiten erstellen . In Teil B verwenden wir die
Zip-Funktion und wandeln
unser Ergebnis in eine Liste um, um
die Daten an jedem Index zu gruppieren . Unser Ergebnis ist eine Liste
von Tupeln, bei der sich alle Daten, die sich auf
Paris beziehen, am nullten Index befinden. Die Daten zu München befinden
sich im ersten Index, und die Daten zu
Venedig befinden sich im zweiten Großartig. Jetzt haben Sie gelernt ,
Listen zu verwenden
und mit ihnen umzugehen, und Sie haben ein paar neue
Konzepte im Zusammenhang mit Listen gelernt, die sie
noch nützlicher machen. Im nächsten Video werden
wir uns mit
Tupeln befassen und lernen, wie
sie sich von Tupeln unterscheiden
28. Tupel: In der vorherigen
Übungsarbeitsmappe verwenden
wir die
Zip-Funktion, um
verwandte Elemente aus
drei verschiedenen Listen
zu einer einzigen Liste zusammenzufassen verwandte Elemente aus
drei verschiedenen Listen einer einzigen Wir haben festgestellt, dass es sich bei den Elementen
dieser einzelnen Liste um
sogenannte Tupel handelt Hm. In diesem Video untersuchen
wir diese Tupel genauer und untersuchen,
wie sie sich ähneln, aber von Listen unterscheiden Ähnlich wie Listen
sind Tupel Sammlungen von Elementen. Um jedoch ein Tupel zu erstellen, setzen wir die Elemente einer Sammlung in Klammern
statt in
eckige Klammern Wie Listen unterstützen auch
Tupel die Indizierung. einzelne Elemente und Elementsegmente kann
mithilfe der Standardsyntax zugegriffen werden Die Unterschiede
zwischen Tupeln und Listen werden deutlich,
wenn wir anfangen, sie zu verwenden. Wie wir
in früheren Videos gezeigt haben, eine
einmal erstellte Liste kann eine
einmal erstellte Liste
mit Methoden
wie Anhängen, Einfügen und Entfernen geändert werden wie Anhängen, Einfügen und Im Gegensatz zu Listen können
Tupel nicht geändert werden, sobald sie einmal erstellt wurden Dementsprechend
gibt es keine Methoden zum
Anfügen, Einfügen oder Entfernen, die mit Tupeln
verknüpft sind Darüber hinaus führen die wenigen
verfügbaren Methoden keine
Änderungen an Mit anderen Worten, der große
Unterschied zwischen Listen und Tupeln besteht darin, dass Listen nach ihrer Erstellung
modifizierbar sind
und Stürze nicht. Die Tatsache, dass
eine Sammlung nicht geändert werden kann, ist eine
erhebliche Einschränkung Warum sollte also jemand
jemals
ein Tupel anstelle einer
flexibleren Liste verwenden wollen ein Tupel anstelle einer
flexibleren Liste Nun, gerade weil
Tupel unveränderbar sind. Sie sind ein wertvolles
Tool für die Organisation von Daten, die während des gesamten Programms
konsistent bleiben müssen Beispielsweise enthält das zuvor
definierte
Roadtrip-Stop-Tupel endgültige
Informationen Die Entfernung zwischen
London und Paris ist in Stein gemeißelt und
sollte nicht geändert werden Jede Änderung dieses
Werts wäre ein Fehler. Ein weiteres Beispiel:
Geographische Koordinaten sind ebenfalls eine Art von Daten, die wir möglicherweise in einem Tupel speichern
möchten Der Breiten- und Längengrad von New York City
wird sich niemals ändern Die Verwendung eines Tupels garantiert
, dass wir diese Werte nicht versehentlich zu einem bestimmten
Zeitpunkt in einem Programm ändern bestimmten
Zeitpunkt in einem Programm Großartig. Wir verstehen jetzt, was Stürze sind und wie
sie sich von der Liste unterscheiden Obwohl Topples
seltener verwendet werden als Listen, eignen
sie sich hervorragend zum Speichern von Informationen, die
unverändert bleiben müssen Im nächsten Video werden wir uns mit
einem weiteren wertvollen, aber
weniger gebräuchlichen Datentyp
zum Speichern von Sammlungen befassen einem weiteren wertvollen, aber
weniger gebräuchlichen Datentyp , nämlich Datensätzen
29. Sets: In den letzten Videos
haben wir gesehen, wie man
Sammlungen von
Elementen mithilfe von Listen und Tupeln darstellt Elementen mithilfe von Listen und Tupeln In diesem Video stellen wir
einen dritten und letzten Datentyp vor, einen dritten und letzten Datentyp zur Darstellung von
Sammlungen von Elementen, also Sets,
verwendet wird Sätze werden
seltener verwendet als Listen. Wir werden jedoch
feststellen, dass es
einige Situationen gibt, in denen
Sets vorzuziehen sind. Sätze, wie Listen und Tupel,
sind Sammlungen von Elementen. In Python erstellen wir eine Menge, indem ihr Element in
geschweiften Klammern aufzählen Abgesehen von diesem
Unterschied in der Syntax gibt es zwei
Hauptunterschiede zwischen Mengen und den anderen Erstens können Listen und
Tupel zwar doppelte Elemente enthalten,
die Elemente einer Gruppe sind Beispielsweise können wir die einzelne Banane,
drei Orangen und zwei Äpfel, aus denen sich eine
Obstschale zusammensetzt
, anhand einer Liste
darstellen drei Orangen und zwei Äpfel, eine
Obstschale zusammensetzt
, anhand einer Wenn wir jedoch stattdessen
dieselbe
Obstsammlung anhand eines Sets darstellen , werden
die doppelten Elemente entfernt, und es bleibt eine Sammlung
von drei verschiedenen Früchten übrig von drei verschiedenen Früchten Diese Eigenschaft von Mengen ist in der Praxis
hilfreich, wenn wir die eindeutigen
Werte einer vorhandenen Liste ermitteln möchten. Nehmen wir zum Beispiel an, wir haben diese Liste, die
doppelte Werte enthält. Wir können
die eindeutigen Werte
der Liste schnell ermitteln , indem wir
sie mithilfe der
Set-Casting-Funktion in eine Menge umwandeln. Der zweite große
Unterschied zwischen Sets und den anderen
Arten von Sammlungen besteht darin , dass ein Set seinen Elementen keine bestimmte Position
zuweist . Mit anderen Worten, die
Elemente in Sätzen sind keinem Indexwert
zugeordnet ihre Position
in der Sammlung
angibt. In der
Programmierung sagen
wir, dass die Sammlung geordnet ist,
wenn den Elementen einer
Sammlung eine bestimmte Position zugewiesen wird. Wenn die Objekte
einer Sammlung dagegen keine bestimmten Positionen haben, sagen
wir, dass die
Sammlung ungeordnet ist Schließlich gibt es eine
zusätzliche Unterscheidung zwischen Mengen und Tupeln Wie Listen können auch Mengen geändert werden. Lassen Sie uns zur Veranschaulichung
wissen, dass wir
mit der Methode add
einem Set ein neues Element hinzufügen können mit der Methode add
einem Set ein neues Element hinzufügen Wie Sie sehen können,
wurde Aprikose zum Set hinzugefügt. Beachten Sie, dass die Positionen der vorhandenen Artikel geändert
wurden, was mit der
Beobachtung
übereinstimmt, dass die Sets nicht sortiert sind Sätze eignen sich hervorragend zur
Darstellung von Daten, wenn das Vorhandensein eines Elements
wichtiger ist als seine Position. Fantastisch. Wir haben jetzt drei verschiedene Datentypen zur Darstellung von
Sammlungen von Objekten gesehen. Jeder Typ hat Merkmale und
Einschränkungen, die
ihn
je nach Anwendungsfall mehr oder weniger geeignet machen . Listen sind das beliebteste
Tool zur Darstellung von Sammlungen. Sie sind
nach der Erstellung änderbar, erlauben Duplikate
und sind geordnet Tupel und Mengen sind weniger verbreitet, aber sie sind in
bestimmten Situationen nützlich Tupel sind nicht veränderbar, erlauben Duplikate Sie eignen sich hervorragend zum Speichern von Daten , die sich
während eines Programms nicht ändern sollten Schließlich sind Sets modifizierbar, erlauben
aber keine Duplikate
und sind nicht geordnet Das bedeutet, dass Sets
am nützlichsten sind, wenn wir sicherstellen
möchten , dass unsere Sammlung einzigartige Artikel
enthält Im nächsten Video werden wir einige Szenarien
untersuchen, in denen Tupel und Sets der Liste
vorzuziehen sind .
Wir sehen uns dort
30. Sammlungen geführte Beispiele: Am Ausgangspunkt
von Eagles Crest Jamie die
frische Luft
tief ein und macht
sich auf den frische Luft
tief ein und macht
sich freut
sich darauf, in die Natur einzutauchen, und Jamie freut
sich darauf, in die Natur einzutauchen, und schlägt vor,
eine Bestandsaufnahme aller Wildtiere zu führen, eine Bestandsaufnahme Immer bereit, den Freiwilligen von
Pike dabei zu helfen , ihre Ergebnisse zu
dokumentieren Kurz nach der Abfahrt von
Eagles Crest Trailhead
wird die Reise von
Jamie und Pike aufregend, als sie zwei Hirsche und ein Kaninchen
beobachten Als sie sich zwischen Echo
Canyon und Misty Falls schlängeln, bemerkt
Jamie inmitten des dichten Laubs ein weiteres Reh und bemerkt
Jamie einen majestätischen Elch. Auf dem Weg zum Mount
Silvercrest Summit entdeckt
Pike ein Paar
Bergziegen, die geschickt durch die felsigen Klippen navigieren, und drei weitere Elche, die in
der Ferne felsigen Klippen navigieren, und drei weitere Elche, die in
der grasen. sich dem Star Watch Lookout nähern, beobachten
sie einen Bären, beobachten
sie einen Bären entlangschlängelt Als sie schließlich zum
Eagles Crest Trailhead zurückkehren ,
um ihre Wanderung abzuschließen, weist
Jamie aufgeregt auf ein Elchpaar am Rand des Wassers ein Elchpaar Endlich machen sie sich perfekt auf ihre Expedition, die reich an Wildtieren ist. Fantastisch. Wir werden jetzt Python verwenden, um die Sammlung
von Wildtiersichtungen zu dokumentieren der drei Arten von Sammlungen, mit
denen wir
vertraut sind, ist Ihrer Meinung nach am besten geeignet um diese
Art von Informationen darzustellen Wie Sie sehen können,
enthält diese Sammlung doppelte Werte da Jamie und Pike
mehrere Sichtungen derselben Art
aufgezeichnet mehrere Sichtungen derselben Art Wenn wir die
Sammlung anhand eines Satzes
darstellen würden, würden
wir daher einige
Informationen verlieren, da die doppelten Werte eliminiert
würden Da Jamie und
Pike ihre Wanderung bereits
abgeschlossen haben, wissen
wir außerdem , dass sie dieser Sammlung keine
weiteren Tiere hinzufügen werden dieser Sammlung keine
weiteren Tiere hinzufügen Die Sammlung ist in Stein gemeißelt. Aus diesen Gründen scheint es hier angemessen, einen
Tuppel zu verwenden. Denken Sie daran, dass der Unterschied
zwischen Listen und Tupeln darin besteht, dass Tupel nach der Erstellung nicht mehr geändert
werden können Sobald sie nach Hause zurückgekehrt sind, bittet
Jamie Pike, über
die einzigartigen Arten zu berichten, denen sie auf dem Weg begegnet sind Um diese Informationen zu erhalten, können
wir das
Wildtier-Tupel in ein Set zusammenfassen Dadurch wird eine Kopie des Wildtier-Tupels in
eine Menge umgewandelt, wobei die doppelten Werte entfernt Pike informiert Jamie, dass sie
auf Bären,
Hirsche, Elche, Elche, Bergziegen und Kaninchen gestoßen Hirsche, Elche, Elche, Bergziegen und Kaninchen Das ist großartig. Jamie
ist begeistert, so viele
Wildtierarten gesehen zu
haben Sie fragt sich, wie
viele Tiere
sie möglicherweise noch hätten sehen Insbesondere möchte Jamie
wissen, welchen der Tiere, die in unserer Gegend
leben, sie während der Wanderung
nicht begegnet sind während der Wanderung
nicht begegnet Um Jamie zu helfen, konsultiert Bike einen alten lokalen
Wildtierführer und findet die Sammlung aller
Tiere, die in der Gegend leben Lassen Sie uns diese Sammlung
von Tieren anhand eines Sets darstellen. Großartig. Nun, um
Jamies Frage zu beantworten, müssen
wir herausfinden,
welche Tiere in der möglichen
Wildtierwelt vorkommen, aber nicht in der Wildtierwelt. In PyTon kann dies geschehen, indem die Differenzmethode für die mögliche Wildtiergruppe
aufgerufen und
die Variable
Wildtiere als Argument
übergeben Wie der Name schon sagt, gibt
die Differenzmethode eine Menge
zurück, die
Elemente enthält , die sich
in der aufrufenden Menge befinden, aber nicht in der als Argument
übergebenen Menge Beim Ausführen der Zelle wird
ein Set mit drei Tieren angezeigt, die Jamie und Pike nicht gesehen haben, die sie aber
hätten sehen Als Pike Jamie darüber informiert
, dass sie Dickhornschafe,
Bisons und Adler hätten sehen können, erinnert sich
Jamie tatsächlich daran, einige
dieser Tiere auf ihrer ersten Wanderung in der Gegend vor einigen Monaten
gesehen zu ihrer haben. Sie bittet Pike, ihr zu
helfen, sich
genau daran zu erinnern , welches
dieser drei Tiere
sie auf ihrer ersten Wanderung gesehen hat. Zum Glück ist Pike ein
zuverlässiger Rekordhalter und speichert diese Sammlung
auf seiner Festplatte Indem wir die Wildtierszene
auf der ersten Wanderung einem Set zuordnen , können
wir mit einer anderen Methode feststellen, welche Gegenstände in beiden Sets
vorkommen Um das in PTN zu tun, können
wir die
Schnittmengenmethode für
das erste Wildtier-Set aufrufen und das Set mit nicht gesehenen Wildtieren als
Argument angeben Die Schnittpunktmethode gibt
eine Menge zurück , die die Elemente enthält , die sich in der aufrufenden Menge und in der
als Argument übergebenen Menge Wenn wir die Zelle ausführen, erhalten wir
Dickhornschafe und Bisons. Das bedeutet, dass
Jamie und Pike auf ihrer ersten Wanderung
Dickhornschafe und Bisons gesehen haben , aber nicht
auf ihrer zweiten Wanderung . Großartig. In den letzten
Videos haben
wir gesehen, wann wir je nach
unseren Programmieranforderungen Listen,
Touples und Sets verwenden je nach
unseren Programmieranforderungen Listen,
Touples und Sets In den folgenden Übungen lernen
Sie, wie Sie alle drei Datentypen
verwenden
31. Sammlungen Übungen: In dieser Arbeitsmappe hatten Sie
die Gelegenheit, die
Auswahl des richtigen
Sammlungstyps für einen bestimmten Kontext zu üben Auswahl des richtigen
Sammlungstyps für einen bestimmten Kontext Darüber hinaus haben Sie die
einzelnen typspezifischen Operationen verwendet , um Probleme
zu lösen Lassen Sie uns die Lösungen besprechen. In Übung 1, Teil A, haben wir die Aufgabe,
einen Datentyp zum Speichern der
neuen Buchinformationen auszuwählen einen Datentyp zum Speichern der
neuen Buchinformationen Wir wissen, dass sich diese Informationen in Zukunft
nicht ändern werden
und dass die Reihenfolge, in der
die Informationen
präsentiert werden, von Bedeutung ist Deshalb sollten wir
die neuen Buchinformationen
mit einem Tupel darstellen die neuen Buchinformationen
mit einem Tupel In Teil B wurden wir dem
Konzept des Auspackens
vertraut Wir können unser neues
Buchtupel wie folgt in drei Variablen,
Titel, Autor und
Jahr, auspacken wie folgt in drei Variablen,
Titel, Autor und
Jahr, Weiter zu Übung zwei, P A, müssen
wir nun die Genres
der ausgeliehenen Bücher
darstellen der ausgeliehenen Bücher Beachten Sie, dass diese Sammlung von Genres
doppelte Werte enthält, was die Verwendung von Sets ausschließt. Wir wissen auch, dass diese
Daten in
Zukunft aktualisiert werden , wenn Bücher aus- oder wieder
eingecheckt werden, was die Verwendung von Tupeln ausschließt In diesem Szenario
ist es daher am besten, eine Liste zu verwenden. In Teil B
wurden gerade zwei
Science-Fiction-Bücher und ein Kriminalbuch zurückgegeben, und drei Biografien,
zwei Gedichtbände und ein Fantasy-Buch
wurden gerade ausgeliehen. Wir können die Liste der
ausgecheckten Genres entsprechend aktualisieren, indem wir die Methoden remove
und append In Teil C können
wir dann die Anzahl der
Fantasy- und Poesiebücher zählen , die
mit der Zählmethode ausgeliehen wurden Wir stellen fest, dass
derzeit zwei Fantasy - und zwei Gedichtbände ausgeliehen
sind. Schließlich wünscht sich
der Bibliothekar in Übung drei, P A, eine Sammlung der einzigartigen Genres,
die
derzeit ausgeliehen sind Da wir nach
den einzigartigen Genres suchen ,
müssen wir ein Set verwenden einer Set-Casting-Funktion können wir aus der Liste der
ausgecheckten Genres aus
Übung zwei ein
Set erstellen . In Teil B verwenden wir geschweifte Klammern, um ein Set mit den Genres
von Büchern zu erstellen , die
nicht ausgeliehen sind In Teil C können
wir dann mithilfe von Set-Operationen
Fragen
zu den ausgecheckten Genres
und den verfügbaren Genresets Zunächst können wir die
Union-Set-Methode verwenden , um
alle
Genres in den beiden Sets zu ermitteln, und mit
der n-Funktion insgesamt 11 Genres
zählen. Zweitens können wir
mit der
Intersection-Set-Methode bestimmen,
welche Genres sowohl
ausgecheckt als auch verfügbar sind. Denken Sie daran, dass der
Schnittpunkt zweier Mengen die Elemente
sind, die in beiden Gruppen
vorkommen. Wir stellen fest, dass die Genres Biographie, Fantasy und Poesie beide ausgecheckt
und immer noch verfügbar
sind. Drittens können wir mit der Differenzmethode herausfinden
, welche Genres zwar
verfügbar, aber noch nicht
ausgecheckt sind. Da wir die Genres
finden wollen
, die sich im
verfügbaren Genre-Set befinden, aber nicht im
ausgecheckten Genre-Set, müssen
wir die
Differenzmethode für
das verfügbare Genre-Set aufrufen und die ausgecheckten
Genres als Argument
übergeben. Wenn wir die
Differenzmethode für
ausgecheckte Genres aufrufen und stattdessen
verfügbare Genres als
Argument übergeben , erhalten
wir die Genres, die ausgecheckt,
aber nicht verfügbar
sind, was das Gegenteil
von dem ist, was wir wollen. Schließlich verwenden
wir für Frage vier die Methode der symmetrischen
Differenzmenge, um
die Genres zu finden , die in dem
einen oder
anderen Set vorkommen , aber nicht in beiden Anschließend wenden wir die Funktion n an,
um zu zählen, ob es
acht Genres gibt , die entweder
ausgecheckt oder verfügbar sind Großartig. Jetzt, wo Sie sich mit Sammlungen
auskennen, sind
wir bereit, uns mit einem
der schwierigeren Themen
dieses Kurses zu befassen : Loops. Schleifen sind für die
Arbeit mit Sammlungen sehr nützlich , da sie es
uns ermöglichen , Operationen effizient
auf jedes Element
einer Sammlung
anzuwenden . In den nächsten Videos
werden wir Loops in
ein leicht zugängliches
Konzept zerlegen und dann lernen wie man sie in
komplexeren Situationen einsetzt
32. For Loops: Im vorherigen Video haben wir
besprochen, wie
Sammlungen von Elementen mithilfe von
Listen, Tupeln und Mengen dargestellt Sammlungen von Elementen mithilfe von
Listen, Tupeln und Mengen Darüber hinaus haben wir die Vorteile der Verwendung
von Sammlungen beim
Speichern großer
Datenmengen
hervorgehoben Verwendung
von Sammlungen beim
Speichern großer
Datenmengen und untersucht, wie uns die
leistungsstarken integrierten Methoden von PyTN bei der Verwaltung
dieser Sammlungen helfen
können Aber wie wir gleich sehen werden, Verwaltung großer Sammlungen von kann die
Verwaltung großer Sammlungen von
Objekten manchmal eine ziemliche Herausforderung
sein Nehmen wir zum Beispiel an, Sie sind
Inhaber eines Ladens möchten auf alle
Inventarartikel einen Rabatt von 30% gewähren. Um diese Aufgabe zu erfüllen, können
wir zunächst
eine leere Liste mit
ermäßigten Preisen erstellen eine leere Liste mit
ermäßigten Preisen Dann können wir mithilfe der Indexierung
auf jeden Preis zugreifen, ihn
mit 0,7 multiplizieren und das Ergebnis an
die ermäßigte Preisliste anhängen Aber wie Sie sich vorstellen können, wird
das ziemlich mühsam sein,
da Zum Glück gibt es
einen besseren Weg. In diesem Video erfahren wir, wie
Sie sich wiederholende Aufgaben wie
Preisnachlässe mithilfe
eines Programmierkonzepts
namens Four Loops automatisieren Preisnachlässe mithilfe eines Programmierkonzepts
namens Four Am Ende dieses Videos werden
Sie sehen, wie Loops Ihren Code
vereinfachen und optimieren können Lassen Sie uns eintauchen und
sehen, wie es gemacht wird. Denn Schleifen sind Strukturen
, die es Programmierern ermöglichen, Codezeilen für
jedes Element in einer Sammlung
auszuführen Die Vier-Loop-Syntax in
PyTon ist sehr intuitiv. Um die
Einfachheit der Syntax besser zu verstehen, werden
wir eine einfache
For-Schleife schreiben, die die Preise
in der Preisliste reduziert Konkret werden wir Folgendes
tun. für jeden Preis in
der Preisliste Lassen Sie uns für jeden Preis in
der Preisliste einen Rabatt von 30% gewähren und das Ergebnis an die
ermäßigte Preisliste
anhängen Beachten Sie, wie nah die
Python-Syntax
an der englischen Beschreibung
dessen ist , was wir tun wollen. Lassen Sie uns unser Programm mit
einer Print-Anweisung abschließen und die Zelle ausführen um zu bestätigen, dass die Schleife den
Rabatt
tatsächlich auf jeden Artikel angewendet hat. Großartig. Es sieht so aus, als ob die ermäßigte Preisliste die Rabatte
enthält, auf die
wir gehofft hatten Wenn Sie die Geduld haben, können Sie dies
gerne überprüfen. Beachten Sie auch, dass
nur zwei Codezeilen benötigt wurden, um die gewünschte Ausgabe zu
erzielen. Das ist ziemlich nett. Okay, jetzt
, wo wir die Syntax kennen, wollen wir die Anatomie
der Schleife
etwas genauer untersuchen . Eine vierteilige Schleife besteht aus zwei
Hauptkomponenten:
einer Kopfzeile, die mit einer
Spalte endet, und einem eingezogenen Hauptteil Diese Struktur sollte
Ihnen an dieser Stelle bekannt vorkommen. Bedingte Aussagen, die wir in
den vorangegangenen Vorlesungen behandelt haben, folgen
ebenfalls einem ähnlichen Format. Schauen wir uns
den Header unserer vier Schleifen genauer an. Zunächst
weist das Schlüsselwort vier Piton an, dass das Programm einen
Codeblock
eingibt, der möglicherweise wiederholt werden
muss Die zweite Komponente
des Headers wird als
Iterationsvariable
oder Schleifenvariable bezeichnet Iterationsvariable
oder Schleifenvariable Diese Variable wird während
der gesamten Schleifeniterationen verwendet , um
die Elemente der Liste zu speichern Wir werden in Kürze mehr über diese
Iterationsvariable sagen. Lassen Sie uns zunächst einfach anmerken,
dass
wir anstelle von Preis einen anderen
Variablennamen wie zwei,
zwei verwenden könnten, ohne dass dies Auswirkungen
auf die Ausgabe unseres Programms hat uns zwar frei, einen beliebigen Namen für die
Iterationsvariable zu wählen, es ist besser, einen
repräsentativen Variablennamen zu wählen In diesem Beispiel ist Preis
ein besserer Name als 22, da er
die Art der
Elemente in der Liste besser die Art der
Elemente in der Liste Als Nächstes wird das Schlüsselwort in verwendet um die Sammlung vorzustellen,
über die iteriert werden soll In diesem Beispiel verwenden wir eine
Sammlung namens Prices Die Länge dieser
Sammlung bestimmt die Anzahl der Iterationen,
die die Schleife durchführt In diesem speziellen Fall enthält
die Preisliste 30 Preise Daher führt Piton
den Hauptteil der
vier Schleifen 30-mal aus, einmal für jedes Element
in der Preisliste Schließlich enthält der Hauptteil
einer vierteiligen Schleife den Code, den PyTon bei jeder
Iteration ausführt In diesem Beispiel wird der
Hauptteil der vier Schleifen auf den Preis eines Artikels herabgesetzt und das Ergebnis
an die Liste mit
den
ermäßigten Preisen angehängt Ergebnis
an die Liste mit
den
ermäßigten Fantastisch. Nachdem wir nun die
Anatomie unserer Schleife genau
untersucht haben, wollen wir Schritt für Schritt untersuchen, wie
PyTon diese Schleife ausführt Wenn
PTN während der Ausführung des
Programms zum ersten Mal den
Header der Schleife erreicht, erstellt
es den
variablen Iterationspreis und weist ihm den ersten
Punkt der Dann führt Pyton den Code
im Hauptteil der Schleife aus. In diesem Fall enthält der Hauptteil
der Schleife eine
einzige Codezeile, es könnten
aber auch mehr sein Da der
variable Preis der Iteration bei
der ersten Iteration den Wert 51,79 annimmt , wird
der Liste der ermäßigten Preise der Wert 36,25 hinzugefügt Nach der Ausführung des Codes im
Hauptteil
der Schleife kehrt PyTon zum Header zurück Codes im
Hauptteil
der Schleife kehrt PyTon zum Header zurück. Zu diesem Zeitpunkt wird der
Iterationsvariablen erneut der zweite
Eintrag in der Dann führt PyTon den Code
im Hauptteil der Schleife erneut aus Da die
Iterationsvariable während der
zweiten Iteration den Wert
39,37 annimmt , wird der Wert 27,56 an
die ermäßigte Preisliste angehängt Piton kehrt dann
zum Header zurück,
weist die Iterationsvariable neu zu
und führt den Code im Hauptteil der Schleife und führt Dieser Vorgang wird fortgesetzt, bis der Iterationsvariablen jeder Preis in
der Preisliste zugewiesen wurde jeder Preis in
der Preisliste zugewiesen Wenn PyTon kein Element mehr hat, ist
die Schleifenausführung abgeschlossen PyTon fährt dann mit der Ausführung der verbleibenden
Zeilen im Programm fort Und so werden im Allgemeinen
vier Schleifen ausgeführt. Eine Iteration nach der anderen, beginnend mit dem
ersten Element
der Sammlung und
endend mit dem letzten Dabei wird die
Iterationsvariable sequentiell
dem nächsten Element der Sammlung zugewiesen dem nächsten Element der Sammlung Bei der Ausführung
sich wiederholender Aufgaben haben
Schleifen den Vorteil
, haben
Schleifen den Vorteil Diese beiden Codezeilen machen uns in der Tat eine Menge
Arbeit ab Ein verwandter Vorteil von
vier Schleifen ist die Skalierbarkeit. Um diesen Punkt zu verdeutlichen, wir an, dass
der Filialleiter
in unserem Beispiel einige weitere Artikel entdeckt, die es zu
einem Rabatt gibt in unserem Beispiel einige weitere Artikel entdeckt , die es zu
einem Rabatt und deren
Preise in die Liste aufnimmt Unser Code besteht aus vier Schleifen berücksichtigt diese Änderung
ohne jegliche Änderung PTN
erledigt die Änderung automatisch für uns, indem es einige
weitere Schleifeniterationen durchführt Ohne eine Schleife müssten
wir die
hinzugefügten Artikel manuell verfolgen und
weitere Codezeilen schreiben , um den Rabatt
anzuwenden Großartig. Sie haben jetzt ein grundlegendes Verständnis von
vier Schleifen und wissen, warum sie manchmal
besser
sind, als
manuelle Operationen auf
die Elemente einer Liste anzuwenden . Im nächsten Video werden
wir uns mit
einem komplexeren
Anwendungsfall für vier Loops befassen einem komplexeren
Anwendungsfall für vier Loops
33. Für Loops geführte Beispiele: Da die letzten
Wanderungen so gut verliefen, beschloss
Jamie,
für das kommende Wochenende
eine ehrgeizigere
zweitägige Expedition zu planen eine ehrgeizigere
zweitägige Expedition für das kommende Wochenende Pike gefällt die Idee und
empfiehlt eine Liste von Wegpunkten, die auf
dem Gipfel des Pine
Ridge Mountain gipfeln , wo sie Lassen Sie uns die
Wegpunkte, die zum
Pine Ridge Mountain
führen, mit einer PyTon-Liste darstellen Pine Ridge Mountain Da diese Wanderung
komplizierter sein wird als
alle vorherigen, hätte
Jamie gerne eine Liste mit
Aufgaben, die sie an
jedem Wegpunkt erledigen sollten , damit ihre
Wanderung sicher und angenehm bleibt Pike schlägt vor, dass
Jamie
an jedem Wegpunkt Wasser trinkt, einen Snack
isst, eine
Bestandsaufnahme unserer Vorräte macht
und Fotos macht, um ihr Abenteuer zu dokumentieren Liste dieser Aufgaben Pike ist immer eifrig, Notizen zu machen und erstellt eine Lassen Sie uns
diese Liste auch in Python darstellen. Fantastisch. Lassen Sie uns nun den Spielplan von
Jamie und Pike
für ihre nächste Expedition zusammenfassen Spielplan von
Jamie und Pike
für ihre nächste Vom Trailhead aus wandern die beiden
in Richtung
Granite Wenn sie die Kreuzung erreichen, trinkt
Jimi Wasser,
isst einen Snack, inventarisiert
Vorräte und macht Fotos. Von dort aus werden sie nach Starlight Meadow
fahren. Bei ihrer Ankunft werden sie die Aufgabenliste
erneut durchgehen zum Trail zurückkehren,
beginnen sie mit der Wanderung in Richtung
Cedar Creek Junction. Sobald sie ankommen, werden
sie die Aufgabenliste erneut vervollständigen. Sie machen sich dann auf
den Weg nach Evergreen Grove, wo Sie es erraten haben Jamie und Pike werden Schließlich, nach dem letzten
Abschnitt ihrer Wanderung, werden
die beiden
am Pine Ridge Summit ankommen, wo sie ein letztes Mal die Liste der Aufgaben
erledigen werden der Aufgaben
erledigen Wow. Das waren
viele Wiederholungen Können wir diese Aufgabenliste
in PTon ausdrucken, ohne jede
Aktivität an jedem Wegpunkt
explizit eingeben Weil mir das
irgendwie mühsam erscheint. Nun, wenn einige
Programmieraufgaben wiederholt ausgeführt werden
müssen, helfen uns
vier Schleifen. Mal sehen wie. Lassen Sie uns zunächst eine Vierschleife schreiben , die die Liste
der Wegpunkte durchläuft und die
Ankunftsnachricht
und
die Abfahrtsnachricht
für jeden Wegpunkt ausgibt Ankunftsnachricht
und
die Abfahrtsnachricht für jeden zwischen diesen beiden
Druckanweisungen Lassen Sie uns zwischen diesen beiden
Druckanweisungen weitere
Druckanweisungen für jede der Aufgaben schreiben ,
die an einem bestimmten Ort
ausgeführt werden sollen Wenn wir die Zelle ausführen, können
wir sehen, dass die Ausgabe
mit der Aufgabenliste übereinstimmt. Um sicherzustellen, dass
alles klar ist, werden
wir nun Schritt für Schritt aufschlüsseln, wie dieser
Code funktioniert. Wenn das Programm zum ersten Mal
den Header der vier
Loops erreicht , setzt
Biton die
Waypoint-Loop-Variable auf Granite Falls Beim Betreten des Hauptteils der Schleife druckt
PyTon die Ankunftsnachricht
beim Überqueren der Granite Falls, gefolgt von den einzelnen Aufgaben
und dann die Ausgangsmeldung von Granite Falls
Crossing In der nächsten Schleifeniteration setzt
PyTon dann die
Waypoint-Loop-Variable auf Starlight Meadow und wiederholt die
entsprechenden Print-Anweisungen
im Hauptteil der im Der
Wegpunkt der Loop-Variablen wird auf ähnliche Weise Beginn jeder der verbleibenden Iterationen
aktualisiert zu Beginn jeder der verbleibenden Iterationen
aktualisiert. Am Ende der letzten
Iteration der Schleife,
wenn die Waypoint-Loop-Variable wenn die Waypoint-Loop-Variable Pine Ridge Summit gesetzt
ist, kehrt
Python zum Loop-Header zurück, stellt fest, dass es
keine Elemente mehr gibt, durch die
iteriert werden kann , und
beendet Das funktioniert einwandfrei. Unser
Code ist viel kompakter, als wenn wir
alle 30
Print-Anweisungen manuell geschrieben hätten . Aber wir können es tatsächlich besser machen. Beachten Sie, dass
unser Code im
Hauptteil des Vier-Doops manuell die Indizes der Aufgabenliste
durchläuft Wenn es viel mehr Aufgaben gäbe, wäre
das Zum Glück
können diese Wiederholungen vermieden werden, indem wir
innerhalb unserer ersten vier Schleifen weitere vier Schleifen
schreiben Zur Erinnerung: Wir nennen eine Schleife, die
sich innerhalb weiterer
vier Schleifen befindet, eine verschachtelte Schleife Sehen wir uns an, wie wir
unseren Code mit einer
verschachtelten Viererschleife verbessern können unseren Code mit einer
verschachtelten Viererschleife Um alle
Aufgaben an einem bestimmten Wegpunkt durchzugehen, erstellen
wir eine For-Schleife, in für jede Aufgabe in der Aufgabenliste wir
für jede Aufgabe in der Aufgabenliste den Namen der Aufgabe ausgeben Nachdem wir die Zelle ausgeführt
haben, sehen wir, dass die
Ausgabe wieder dem entspricht was Jamie und Pike
auf ihrer Wanderung planen Nun, ich weiß, dass es schwierig sein kann,
den Ausführungsablauf einer verschachtelten
Schleife zu verstehen kann,
den Ausführungsablauf einer verschachtelten
Schleife Lassen Sie uns diesen Code aus diesem Grund gegen
ein paar Iterationen
eintauschen Wie zuvor wird, wenn Python zum ersten Mal den
äußeren Loop-Header erreicht, der Waypoint-Loop-Variablen die Zeichenfolge
Granite Falls Crossing
zugewiesen Dann bewegt sich Python zum Körper
der äußeren Schleife und druckt die Ankunftsnachricht von Granite Falls
Crossings Als Nächstes wechselt Python zum
Header der verschachtelten Schleife. An diesem Punkt wird der
Loop-Variablen-Aufgabe das erste Element in
der Aufgabenliste
zugewiesen, Wasser trinken bewegt sich in den
Hauptteil der verschachtelten Schleife und PyTon bewegt sich in den
Hauptteil der verschachtelten Schleife und druckt die Aufgabe Dann kehrt PyTon zum
Header der verschachtelten Schleife zurück und weist die Aufgabenvariable dem zweiten Element der Aufgabenliste neu zu Iss einen Snack. Diese
Aufgabe wird dann gedruckt. Die verbleibenden Iterationen
der verschachtelten Schleife werden ähnliche Weise ausgeführt, bevor
Pyton diese Schleife verlässt Beim Verlassen der verschachtelten Schleife führt
Pyton die letzte Zeile der ersten Iteration der äußeren aus Dann kehrt Pyton zum Header
der äußeren Schleifen zurück, wo dem variablen Wegpunkt erneut der wo dem variablen Wegpunkt erneut der Wert starlight meadow zugewiesen wird. Und dieser Zyklus wird
für alle Elemente in
der Wegpunktliste wiederholt für alle Elemente in Um dies zu betonen, ist die
wichtige Erkenntnis , dass alle Iterationen
der verschachtelten Schleife
ausgeführt werden, bevor Python zur nächsten
Iteration der äußeren Schleife
übergeht Fantastisch. Sie haben
jetzt Loops im Griff und Sie haben gesehen, wie sie
verschachtelt werden können , um
komplexe Probleme zu lösen Davon abgesehen sind vier Schleifen schwierigeres Konzept als
das, das wir zuvor behandelt haben Aus diesem Grund bieten
wir Ihnen in den
folgenden Übungen viele
Gelegenheiten zum Üben.
34. For Loops-Übungen: In dieser Arbeitsmappe
hatten Sie die Gelegenheit, die Verwendung von vier Loops
in verschiedenen Szenarien zu üben Darüber hinaus
haben Sie gelernt,
mehrere Schleifenvariablen zu verwenden , die Funktionen
aufzählen und bereichern, Mechanismen zur Steuerung von Schleifen
und Auflisten,
wodurch vier
Schleifen noch nützlicher Lassen Sie uns die Lösungen aufschlüsseln. In der ersten Übung, P A, erhielten
wir eine Playlist
und mussten
den Titel und die Dauer
jedes Songs ausdrucken , indem wir vier Schleifen nutzten. Da jedes Element in der Playlist ein Tupel
mit drei Elementen ist, haben wir unsere
Song-Loop-Variable
in drei einzelne Variablen entpackt in drei einzelne Wir verwenden diese Variablen dann
in der Print-Anweisung. Dieser Loop druckt
jeden Song in der Liste zusammen mit seiner Dauer
in Minuten und Sekunden aus. In Teil B haben wir unserem Code aus
Teil A einen
Minuten- und
Sekundenzähler hinzugefügt unserem Code aus
Teil A einen
Minuten- und
Sekundenzähler , um
die Gesamtdauer aller
Songs in der Playlist zu berechnen . Innerhalb des Loops haben wir
die
Variablen Gesamtminuten
und Gesamtsekunden inkrementiert die
Variablen Gesamtminuten
und Gesamtsekunden , um der Dauer
jedes Songs Rechnung zu tragen Nach dem Vier-Loop
haben wir dann mithilfe
des Floor-Division-Operators die Anzahl
der vollen Minuten aus der Variablen für
die Gesamtsekunden extrahiert mithilfe
des Floor-Division-Operators die Anzahl
der vollen Minuten aus der Variablen für
die Gesamtsekunden Floor-Division-Operators die Anzahl
der vollen Minuten aus der Variablen für
die und zur Variablen für die
Gesamtminuten hinzugefügt Als Nächstes verwenden wir den
Modulo-Operator, um die verbleibenden
Sekunden zu berechnen und diesen Wert der Variablen für die
Gesamtzahl der Sekunden neu zuzuweisen Wert der Variablen für die
Gesamtzahl der Sekunden , sodass
dieser
Wert niemals 60 überschreitet Schließlich haben wir
die Gesamtdauer ausgedruckt. Als wir zu Übung zwei übergingen, erhielten
wir eine Playlist klassischen Songs und
mussten herausfinden , welche Songs in der
Playlist von
den Beatles waren , und entsprechende
Playlisten erstellen Dafür haben wir
zwei leere Listen erstellt, eine für die Beatles-Songs
und eine für andere Songs und eine für andere diese leeren Listen
außerhalb der
For-Schleife erstellen , wird sichergestellt, dass wir die
Listen nicht bei jeder Iteration der Schleife überschreiben Listen nicht bei jeder Iteration der Im Hauptteil der Schleife haben wir die
beiden Elemente der Song-Tupel in die Variablen title
und artist
entpackt beiden Elemente der Song-Tupel in die Variablen title
und Anschließend haben wir anhand einer
bedingten Aussage festgestellt
, ob es sich bei dem
Künstler um die Beatles handelt Wenn ja, dann haben wir
den Songtitel an die
Beatles-Songliste angehängt den Songtitel an die
Beatles-Songliste Wenn nicht, haben wir
den Songtitel an die Liste der
anderen Songs angehängt den Songtitel an die Liste der
anderen Songs Schließlich haben wir
die beiden Liederlisten ausgedruckt. In Übung drei haben wir
gelernt, wie man
mehrere Loop-Variablen verwendet , um Elemente
einer Sammlung direkt
in den vier Loop-Header zu entpacken . In Teil A
erhielten wir eine Playlist beliebten Songs und wurden gebeten, einen Bericht mit
den Songinformationen
auszudrucken. Zu diesem Zweck haben wir
mehrere Loop-Variablen verwendet, um den Songnamen, den
Interpreten und die Albuminformationen zu entpacken , in jedem
Tupel der Liste
gespeichert Schließlich verwenden wir diese Variablen um die
Songinformationen auszudrucken In Teil B
erhielten wir Listen mit Liedern, Minuten und Sekunden
und wurden gebeten,
jedes Lied zusammen mit seiner Dauer in
Minuten und Sekunden auszudrucken . Da die drei Listen in derselben Reihenfolge
indexiert sind,
was bedeutet, dass die Elemente an
derselben Position in jeder Liste miteinander verknüpft sind, haben wir die Zip-Funktion verwendet,
um die Listen zu kombinieren Mithilfe mehrerer Loop-Variablen
haben wir sofort die Song-, Minuten- und Sekundendaten
in den Loop-Header
entpackt Minuten- und Sekundendaten
in den Loop-Header Schließlich verwenden wir diese Variablen um eine nützliche Nachricht auszudrucken In Teil C
mussten wir dieselben
Listen wie in Teil B ausdrucken, aber diesmal mussten wir jedem Song
eine Nummer zuweisen Dazu haben wir
auf unserem Code aus
Teil B aufgebaut und die
Zählervariable Song Num hinzugefügt. Anfänglich haben wir sie auf
eins gesetzt , sodass wir von dort aus mit der
Nummerierung der Songs beginnen können Wir haben die Songnummer aktualisiert, indem sie
am Ende jeder
Loop-Iteration erhöht Mit dieser Änderung
haben wir jeden unserer Songs nummeriert In Teil D haben wir im Vergleich zu Teil C gesehen, wie die
Aufzählungsfunktion
unser Programm vereinfachen kann . Anstatt eine
separate Zählervariable zu erstellen, haben wir unsere komprimierten Listen an
die Aufzählungsfunktion übergeben Dann haben wir die
Iterationsvariable song num erstellt, um den Index
zu erfassen Da es sich bei den Daten, die wir an
die Aufzählungsfunktion übergeben haben , um eine
komprimierte Liste handelt, dem zweiten von der Aufzählungsfunktion zurückgegebenen Element um ein Tupel,
das die Song-, Minuten ein Tupel handelt es sich bei
dem zweiten von der Aufzählungsfunktion zurückgegebenen Element um ein Tupel,
das die Song-, Minuten
- und Sekundendaten enthält. Wir haben
diese Informationen mithilfe der Variablen Song, Minuten und Sekunden direkt
in den Header entpackt mithilfe der Variablen Song, Minuten und Sekunden direkt
in den Header . Beachten Sie, dass wir
dieselbe Ausgabe wie in Teil C erhalten, die aktuelle Version
unseres Codes
jedoch prägnanter ist Im letzten Teil
der dritten Übung wurde
uns
eine Liste von Tupeln zur Verfügung gestellt, die jeweils mehrere Elemente enthielten Unsere Aufgabe bestand darin, einen
Bericht zu erstellen, in dem nur der Songtitel
und das Jahr der Veröffentlichung extrahiert und
angezeigt Da wir zu jedem Song viele
unnötige
Informationen erhielten , verwendeten
wir stattdessen Unterstriche
im Loop-Header als Platzhalter für die Werte, die
wir nicht verwenden wollten Das ist eine gute
Programmierpraxis, da es deutlich macht, dass diese Daten nicht im Hauptteil
des Loops verwendet werden Als wir zu Übung vier übergingen, erhielten
wir eine
Top-Ten-Playlist und mussten die ersten
fünf Songs der Liste ausdrucken. Um nur die
ersten fünf Songs zu drucken, verwenden
wir die Bereichsfunktion mit dem Argument five
im Loop-Header. Dies führte dazu,
dass der Loop fünfmal iterierte sequenziell
Null, Eins Loop-Variablen I
sequenziell
Null, Eins,
Zwei, Drei und Vier
zuwies.
Im Hauptteil
des Loops verwendeten wir I , um unsere Listen zu indexieren und
den entsprechenden Song abzurufen Beachten Sie, dass I ein gebräuchlicher
Variablenname ist, den
Programmierer verwenden, um einen Iterationszähler darzustellen Mit diesem Code haben wir
die ersten fünf Songs
in der Top-Ten-Liste erhalten die ersten fünf Songs
in der Top-Ten-Liste In Übung fünf
erhielten wir eine Liste mit
Albuminformationen. Unsere Aufgabe bestand darin, jedes Album
und jeden Künstler zusammen mit
den Songs in diesem Album zu drucken . Dazu mussten
wir eine verschachtelte Schleife verwenden. The Outer Loop
entpackt die Album-, Künstler- und Songinformationen für jedes Element in
der Albumliste Anhand dieser Informationen
haben wir
den Künstler und das Album
innerhalb der äußeren Schleife ausgedruckt den Künstler und das Album
innerhalb der äußeren Schleife Um dann jeden Song
in der Songliste auszudrucken, den wir im
äußeren Loop-Header
entpackt hatten, mussten
wir
einen verschachtelten Loop erstellen Diese innere Schleife
druckt jeden Song in der Songliste aus, bevor die äußere Schleife
zur nächsten Iteration übergeht Die Ausgabe dieses
Codes ist das Album
und der Künstler, gefolgt von
jedem Song in diesem Album Als wir zu Übung sechs, P A, erhielten
wir eine Party-Playlist, in der einige der Liedtitel das Wort California
enthielten. Wir mussten nur
die Songs in der Playlist drucken , deren Titel das Wort
California nicht enthielten. Dazu haben wir einen Loop
mit dem variablen Song erstellt, um den Songnamen und
einen Platzhalter für
die Songdauer zu
erfassen , da wir
diese Information hier nicht benötigen Dann
haben wir innerhalb der Schleife
mit dem Schlüsselwort in getestet, ob
der
Songname die Teilzeichenfolge California enthält ob
der
Songname die Teilzeichenfolge California Diese Aussage
werten wir als wahr aus, wenn die Teilzeichenfolge California irgendwo im
Songtitel zu
finden ist irgendwo im
Songtitel zu
finden Wenn der Songname California
enthält, möchten
wir sofort
zur nächsten Iteration des Loops übergehen, ohne
die verbleibenden
Codezeilen im Loop-Body auszuführen die verbleibenden
Codezeilen im Loop-Body Wir verwenden das Schlüsselwort continue. Wenn der Liedname Kalifornien nicht enthält,
wird er gedruckt. Aus diesem Grund enthält keiner
der Songs in unserer Ausgabe
das Wort Kalifornien. In Teil B mussten
wir unter Verwendung
derselben Party-Playlist jeden Song und
die Gesamtdauer
der bisher gespielten Musik ausdrucken die Gesamtdauer
der bisher gespielten Musik Sobald wir jedoch länger als 32 Minuten
Musik abgespielt haben , müssen
wir aufhören, Songs zu drucken diesem Zweck haben wir
unsere Lösung aus Zu diesem Zweck haben wir
unsere Lösung aus
Teil A um einen
zusätzlichen Dauertest erweitert. Zu Beginn
jeder Loop-Iteration
haben wir geprüft, ob die
Gesamtdauer mehr als
32 beträgt, um festzustellen, ob es an der
Zeit ist , die Musikwiedergabe zu beenden Wenn ja, haben wir
das Schlüsselwort break verwendet, um sofort aus
dem Loop auszubrechen und das
Drucken von Songs zu beenden Wenn nicht, haben wir unseren Test
in Kalifornien fortgesetzt. Wenn dieser Test bestanden wurde, wurde der Songname gedruckt
und die Gesamtdauer wurde erhöht, um dem abgespielten Song Rechnung zu tragen Die Ausgabe zeigt an
, dass das Lied Livin' on our Prayer
vor der
32-Minuten-Marke der Party abgespielt wurde vor der
32-Minuten-Marke der Party Sobald das Lied zu Ende war, wurde
das nächste Lied
nicht abgespielt, da Gesamtdauer nun
mehr als 32 Minuten betrug In Übung 7, P A, erhielten
wir eine Playlist und
nutzten einen Vierer-Loop, um
eine Liste von Liedtiteln mit
mehr als 15 Zeichen zu erstellen . In diesem Loop testeten wir, ob jeder Song die Bedingung für die
Titellänge erfüllte. Wenn ja, haben wir den Song
zu unserer Liste mit langen Titeln hinzugefügt . Schließlich
haben wir in Teil B unseren Code aus
Teil A verbessert, haben wir in Teil B unseren Code aus
Teil A verbessert indem wir ein
Listenverständnis Denken Sie daran, dass ein Listenverständnis mehreren Teilen
besteht Es beginnt mit dem Ausdruck. Hier verwenden wir einfach den Songnamen, da wir ihn in der endgültigen Liste der
langen Songs haben
möchten . Dann
spezifiziert das Listenverständnis den Artikel
in der Sammlung Das Element erstellt den
Loop-Variablen-Song , den wir im Ausdruck verwendet haben Die Sammlung ist die Playlist durch die
wir iterieren möchten Schließlich
beinhaltet das Verständnis der Liste eine bedingte
Aussage Diese bedingte
Aussage filtert Songs mit 15 Zeichen
oder weniger im Titel heraus Als Ergebnis
erhielten wir eine Liste von Songs mit Titeln, die länger
als 15 Zeichen sind. Großartig. Sie haben nun umfangreiche Erfahrungen mit der
Verwendung von vier Schleifen in verschiedenen Szenarien gesammelt
und die Verwendung neuer Konzepte zur Verbesserung
ihrer Funktionalität erprobt. Im nächsten Video
stellen wir einen neuen
Datentyp vor: Wörterbücher Vier Schleifen sind besonders leistungsfähig, wenn Sie
mit Wörterbüchern arbeiten also versichert, dass Sie in den kommenden
Wörterbuchübungen noch
viel mehr Möglichkeiten haben werden ,
den Umgang mit vier Schleifen
zu üben ,
den
35. Wörterbücher: In früheren Vorlesungen
haben wir etwas über
Sammlungen wie
Listen und Tupel gelernt Sammlungen wie
Listen und Unter anderem haben wir
gelernt, dass die Elemente
dieser Sammlungen
anhand aufeinanderfolgender Ganzzahlen,
Null, Eins, Zwei usw., indexiert werden Null, Eins, Zwei usw., In vielen Anwendungen ist es völlig angemessen, die Elemente
mithilfe aufeinanderfolgender Ganzzahlen
zu
indizieren mithilfe aufeinanderfolgender Ganzzahlen In anderen Fällen benötigen
wir jedoch möglicherweise flexiblere
Indizierungsoptionen Wenn mehr Flexibilität erforderlich ist, bietet
PyTon eine andere Art von Sammlungen, die als Wörterbücher
bezeichnet werden In diesem Video
stellen wir das Konzept
von Wörterbüchern vor und veranschaulichen, warum
sie manchmal anderen Arten von Sammlungen
vorzuziehen sind vorzuziehen Angenommen, Sie möchten
die E-Mail-Adressen
Ihrer drei besten Freunde
Bob, Wendy und Cecilia
sammeln und speichern die E-Mail-Adressen
Ihrer drei besten Freunde
Bob, Wendy Um dies zu erreichen, können wir
die Tools verwenden, die wir in
den vorherigen Vorlesungen gelernt haben , und eine Liste mit
E-Mail-Adressen
erstellen Dies funktioniert in dem Sinne, dass wir die Daten effektiv
gespeichert
haben. Die Art und Weise, wie die Werte indexiert
werden, ist jedoch nicht so
informativ, wie sie sein könnte Nehmen wir zum Beispiel an, dass
Sie
irgendwann in der Zukunft Ihre Liste aufrufen, um Cecilias
E-Mail-Adresse
abzurufen Nun, das könnte
schwieriger sein als es sollte. Ist Cecilias E-Mail das erste oder zweite
Element in der Liste? Ist es Cecilia, die
Hasen liebt, oder ist es Bob? Wer benutzt Hotmail
im 21. Jahrhundert noch? Wirklich, wir haben mehr
Fragen als Antworten. In der Tat
wäre diese Sammlung aussagekräftiger,
wenn die Werte nach dem Namen
unserer Freunde statt nach willkürlichen ganzen Zahlen indexiert unserer Freunde statt nach willkürlichen ganzen Zahlen Und genau das ermöglichen uns PyTON-Wörterbücher Das Erstellen eines Wörterbuchs
beginnt mit einem leeren Paar Dann verbinden
wir innerhalb dieser Klammern einen Schlüssel mit einem
Wert, indem wir die beiden
mit einer Spalte verbinden , um dem Wörterbuch weitere Schlüssel-Wert-Paare
hinzuzufügen Wiederholen Sie die gleichen Schritte und trennen Sie jedes
Paar durch ein Komma Sobald das Wörterbuch erstellt
wurde, können
wir auf sehr intuitive Weise Informationen
daraus abrufen sehr intuitive Weise Informationen
daraus Um beispielsweise auf
Cecilias E-Mail zuzugreifen, folgen Sie dem Namen des
Wörterbuchs in Klammern Anstatt dann
den Index des Elements anzugeben ,
wie wir es für die Liste getan haben, schreiben Sie den Schlüssel Cecilia
zwischen die Klammern Und Tara, wir haben abgerufen Cecilias E-Mail-Adresse
erfolgreich
aus dem Wörterbuch Als Randnotiz
können wir mithilfe der G-Methode auch
Elemente aus
einem Wörterbuch abrufen mithilfe der G-Methode auch
Elemente aus
einem Wörterbuch Diese Methode verwendet einen Schlüssel als Argument und gibt
den entsprechenden Wert zurück. Wie Sie sehen, müssen Sie sich bei der
Verwendung eines Wörterbuchs keinen abstrakten
Index merken , um auf
die gewünschten Informationen zuzugreifen. Aus diesem Grund
bieten
Wörterbücher oft eine intuitivere Möglichkeit, Informationen
zu organisieren Nachdem wir uns nun mit
den Grundlagen
von Wörterbüchern befasst haben , wollen wir einige Beobachtungen anstellen Erstens müssen die Schlüssel eines
Wörterbuches eindeutig sein. In unserem Beispiel bedeutet
dies, dass wir keine
weitere E-Mail-Adresse hinzufügen konnten , die
dem Schlüssel Cecilia zugeordnet Wie Sie sehen können, wird
eines
der beiden
Schlüsselwertpaare abgelehnt, wenn derselbe Schlüssel zweimal in der Definition des
Wörterbuchs
enthalten ist Diese Einschränkung erstreckt sich jedoch
nicht auf die Werte
des Wörterbuchs. Die Werte eines Wörterbuchs
können dupliziert werden. Wenn wir beispielsweise
ein anderes Wörterbuch erstellen, um
die physischen Adressen
unserer Freunde zu speichern , zu
geben ist es kein Problem, Cecilia und Wendy
dieselbe Adresse Als Nächstes können verschiedene Datentypen als Schlüssel und Werte verwendet
werden. Aber was Schlüssel angeht,
sind Zeichenketten bei weitem der am
häufigsten verwendete Datentyp. Dementsprechend werden wir in diesem Kurs nur
Zeichenketten als
Wörterbuchschlüssel verwenden . Was Werte anbelangt, so wird in der Praxis
eine Vielzahl von Datentypen verwendet,
z. B. Ganzzahlen, Gleitkommazahlen,
Boolesche Werte, Listen und sogar Wörterbücher den Übungen werden Sie einige der
Möglichkeiten erkunden In den Übungen werden Sie einige der
Möglichkeiten erkunden können. Im nächsten Video werden
wir
zusätzliche Operationen und
Methoden in Wörterbüchern untersuchen zusätzliche Operationen und
Methoden in Wörterbüchern Darüber hinaus werden wir sehen, wie Wörterbücher zum
Speichern komplexer Datenstrukturen verwendet werden können , sehr nützlich ist.
Wir sehen uns dort
36. Wörterbücher geführte Beispiele: Nach einer kurzen, aber
erholsamen Nacht bereiten sich
Jamie und Pike darauf vor, bereiten sich
Jamie und Pike den Berg wieder
hinunter zu wandern Als sie gerade
gehen wollen, fragt Jamie Pike, ob er ihre Heimreise dokumentieren
könnte Sie möchte
, dass er ihr alle 3 Meilen
ein paar Fragen stellt
und ihre Antworten aufzeichnet Pike
stimmt begeistert zu und erstellt ein System, um Jamies
Antworten in seinem Notizbuch zu organisieren Zunächst erstellt Bike
Tagebucheinträge für die Meilen, auf denen er Jamie Fragen stellen
muss Dann schreibt
Bike unter jeden Meileneintrag die Fragen, die
er Jamie stellen muss Das ist eine großartige Möglichkeit, Informationen zu
organisieren. Wenn Sie genau hinschauen, werden
Sie feststellen, dass das Organisationssystem von
Pike offenbar über eine zentrale Wertstruktur verfügt,
wenn auch mit einer zusätzlichen
Schlüsselebene wenn auch mit einer zusätzlichen
Schlüsselebene In diesem Szenario sind die
Meilenmarkierungen offensichtlich Schlüssel, aber die Fragen
scheinen auch Schlüssel zu sein Interessant, wie werden wir
das in Piton darstellen? Hier ist ein Hinweis, genauso wie wir eine Liste von Listen erstellen
können. Es ist auch möglich,
ein Wörterbuch mit Wörterbüchern zu erstellen ein Wörterbuch mit Wörterbüchern Auf diese Weise
erhalten wir die zusätzliche
Schlüsselschicht . Mal sehen,
wie es gemacht wird. Wir beginnen mit einem
leeren Wörterbuch und definieren dann
die Meilenschlüssel Als Nächstes weisen wir die Werte jedem Meilenschlüssel
zugeordnet sind In der
Organisationsstruktur von Pike ist der
einem bestimmten
Meilenschlüssel zugeordnete Wert eine Gruppe von
Frage-Antwort-Paaren , die wiederum
mit einem
Wörterbuch dargestellt werden können mit einem
Wörterbuch dargestellt werden Da wir Jamies
Antworten derzeit nicht kennen, initialisieren
wir die Antwort jede Frage mit einer Indem wir das
Frage-Antwort-Wörterbuch für die
anderen Meilenschlüssel kopieren , wir die Organisationsstruktur von Pike wieder her Diese Methode zum Erstellen
eines Wörterbuch-Wörterbuches funktioniert. Aber das ganze Kopieren und Einfügen ist etwas umständlich Wenn Sie beim Programmieren mehrere
Codezeilen kopieren,
gibt es wahrscheinlich einen
effizienteren Weg, gibt es wahrscheinlich einen
effizienteren Weg zu erreichen, was Sie tun möchten Im Folgenden werden wir sehen,
wie wir unser Wörterbuchwörterbuch iterativ
mithilfe
von vier Schleifen erstellen iterativ
mithilfe
von vier Aber bevor wir beginnen, müssen
wir besprechen,
wie ein Element zu einem bestehenden Wörterbuch hinzugefügt werden kann, da
dies
ein wichtiger
Baustein ist Nehmen wir zum Beispiel an, wir haben ein leeres Wörterbuch
mit dem Namen Mein Wörterbuch und möchten diesem
das Schlüssel-Wertepaar
My number three hinzufügen . Dies kann erreicht werden, indem
dem
neuen Schlüssel, Meine Zahl, der Wert drei zugewiesen dem
neuen Schlüssel, Meine Zahl, der Wert drei Wenn Sie Ihrem
Wörterbuch weitere
Schlüssel-Wert-Paare
hinzufügen möchten , ist das kein Problem Auf ähnliche Weise können wir dem Wörterbuch
zusätzliche
Schlüssel-Wert-Paare zuweisen . Okay, nachdem das geklärt ist, wollen wir sehen, wie wir das Kopieren
und Einfügen
reduzieren und unser Wörterbuch
mithilfe einer Schleife erstellen können und Einfügen
reduzieren und unser Wörterbuch
mithilfe einer Schleife erstellen Wir werden in drei Schritten vorgehen. Zuerst müssen wir
das leere
Trilog-Wörterbuch erstellen und
die Liste der Meilenmarkierungen und
Fragen definieren die Liste der Meilenmarkierungen und , die wir als Schlüssel verwenden
möchten Zweitens verwenden wir eine Schleife mit den ersten vier Schlüsseln , um die äußere
Schlüsselschicht zu erstellen Genauer gesagt schreiben wir eine Viererschleife, die über
die Meilenmarkierungen iteriert , und weisen jeder Taste ein leeres
Wörterbuch zu An diesem Punkt haben wir
die äußere Schlüsselschicht erstellt. Der dritte und letzte Schritt besteht darin, die
innere Schlüsselschicht des Wörterbuchs zu
erstellen. Dazu erstellen wir
eine verschachtelte, aus vier Elementen bestehende Schleife, in der die einzelnen Punkte
der Fragenliste wiederholt Im Hauptteil unserer verschachtelten Schleife weisen
wir allen Frageschlüsseln zum Kilometerstand
eine leere Zeichenfolge zu den Code ausführen,
können wir sehen, dass wir das Originalwörterbuch
tatsächlich repliziert haben tatsächlich repliziert Die Syntax der Codezeile
im Hauptteil der verschachtelten Schleife funktioniert genauso wie im Kontext einer
multidimensionalen Liste Genauer gesagt
wählt Tra Log Miles das
Wörterbuch aus, das
dem aktuellen
Meilennummernschlüssel zugeordnet dem aktuellen
Meilennummernschlüssel Bei
der ersten Iteration
der äußeren Schleife bezieht sich
dies beispielsweise auf das Wörterbuch für die dritte
Meile Der zweite Begriff in Klammern
bezog sich auf den Schlüssel
des verschachtelten Wörterbuchs
, dem wir die leere Zeichenfolge zuweisen
möchten Dies bedeutet, dass
diesem Schlüssel während der ersten Iteration
der verschachtelten Schleife der ersten Iteration
der verschachtelten Schleife eine leere Zeichenfolge zugewiesen
wird Beachten Sie, dass
wir durch die Verwendung von vier Schleifen unser Wörterbuchwörterbuch mit
viel weniger Aufwand erstellt haben mit
viel weniger Aufwand als wenn Sie jeden
einzelnen Eintrag
manuell eingeben manuell Darüber hinaus ist der
Vier-Loop-Ansatz skalierbarer. Wir können
unserem Wörterbuch eine weitere
Meilenmarkierung oder eine andere Frage hinzufügen, ohne
Änderungen an der Vierschleife Fantastisch. Jamie und Pike sind jetzt bereit, ihren Abstieg zu
beginnen Nachdem sie sich durch
einige steile und
tückische Pfade gearbeitet haben, unsere Wanderer Direkt auf Anhieb fragt Pike
Jamie, wie es ihr geht, ob
sie coole Wildtiere gesehen hat
und wie die Bedingungen und Jamie antwortet, dass sie
sich voller Energie fühle,
dass sie zwei Elche und Elche gesehen habe und dass die Wege steinig und steil waren Um unser Wörterbuch auf der
Grundlage von Jamies Antworten zu aktualisieren, schreiben
wir zuerst den Namen unseres Wörterbuches,
gefolgt
von der gefolgt Dadurch erhalten wir Zugriff auf das entsprechende Wörterbuch
mit Fragen und Antworten Dann schreiben wir den Schlüssel unserer
ersten Frage, für die wir die Antwort aktualisieren
möchten und weisen den
entsprechenden Wert zu. Wir können dann auf ähnliche Weise
die Antworten auf die
anderen beiden Fragen aktualisieren . die Zelle ausführen,
sehen wir die aktualisierten Werte aller Fragen, die mit Meile Drei
verknüpft sind. Wunderbar. Nachdem sie
Jamies Antworten aufgenommen haben, die beiden Abenteurer
ihre Wanderung den Pine
Ridge Mountain hinunter fort ihre Wanderung den Pine
Ridge Mountain hinunter Der Weg zwischen
Meile drei und sechs ist viel weniger felsig und schlängelt sich
durch einen dichten Wald Jamie entdeckt sogar einen großen Bären
am Grund einer Schlucht. Als sie den
Meilenstein von Meile sechs ihrer Wanderung überqueren, stellt
Pike Jamie erneut
die Fragen auf der Liste Etwas erschöpft
findet Jamie immer noch die Energie, Pikes
Fragen zu beantworten Jamie ließ ihn wissen, dass sie müde und hungrig
ist, dass sie einen Bären gesehen hat und dass die Wege mit Wurzeln bedeckt Wie Sie wahrscheinlich bemerkt haben, separat abzutippen ist es
etwas umständlich, jedes Update
unseres Wörterbuches Als wir zuvor Jamies Antworten
aufgezeichnet haben, haben wir drei
separate Aufgaben ausgeführt Das ist in Ordnung, aber in einigen Fällen möchten
wir möglicherweise mehrere
Schlüssel-Wert-Paare gleichzeitig
aktualisieren können mehrere
Schlüssel-Wert-Paare gleichzeitig
aktualisieren In solchen Situationen kann uns
die Aktualisierungsmethode das Leben
erleichtern. Diese Methode verwendet ein Wörterbuch mit
den zu
aktualisierenden Schlüssel-Wert-Paaren als Argument und ändert das Wörterbuch
entsprechend die Zelle ausführen,
können wir sehen, dass alle
Antworten von Jamie
in einer einzigen
Anweisung zum Trail-Log hinzugefügt wurden in einer einzigen
Anweisung zum Trail-Log hinzugefügt Sobald Jamies Antworten aufgezeichnet
wurden, unsere Abenteurer ihre Wanderung fort Auf der letzten Etappe
ihrer Reise Bedingungen
auf
den Wegen erheblich Als Bonus sieht Jamie in der Ferne
zwei Bisons,
als sie sich dem Ausgangspunkt nähern Als das Paar bei Meile neun das Ende
des Trails erreicht, antizipiert
Jamie
Pikes Fragen und sagt ihm, dass Sie stellt auch fest, dass sie
zwei Bisons gesehen hat und dass die
Wege In unserem Code
können wir erneut
die Update-Methode verwenden, um
diese neuen Informationen
zu unserem Traillog hinzuzufügen diese neuen Informationen
zu unserem Traillog Anstatt jedoch jeden Frageschlüssel manuell
einzugeben, was die
Möglichkeit bietet, einen Tippfehler zu machen, können
wir unsere Fragenliste indexieren Das ist nicht nur
weniger fehleranfällig, sondern erspart uns auch das Tippen und Ausführen der Zelle. Wir
sehen, dass die Fragen, die mit der Schlüsselmeile
Neun
verknüpft sind, aktualisiert wurden Fantastisch. Sie wissen jetzt, wie Wörterbücher funktionieren und wie
man mit ihnen interagiert In den folgenden Übungen üben
Sie die
Verwendung von Wörterbüchern in verschiedenen Kontexten und lernen einige weitere nützliche
Methoden
37. Wörterbücher Übungen: In dieser Arbeitsmappe haben
Sie praktische Erfahrungen mit der Verwendung von Wörterbüchern zur Sie haben auch untersucht, wie wirkungsvoll vier Schleifen bei der Arbeit
mit
Wörterbüchern sein können bei der Arbeit
mit
Wörterbüchern sein Lassen Sie uns nun gemeinsam die
Lösungen durchgehen. In der ersten Übung, Teil A, erhielten
wir Informationen über drei Kunstwerke und mussten diese
Informationen in einem Wörterbuch speichern. Um das Nachschlagen von
Kunstwerken anhand ihres Namens zu vereinfachen, haben wir das Wörterbuch mit
den Namen der Kunstwerke als Schlüssel eingerichtet. Für jedes Kunstwerk haben wir die Künstler- und
Genreinformationen
hinzugefügt, indem ein verschachteltes Wörterbuch mit
diesen Attributen als Werten Auf diese Weise sind alle relevanten
Informationen für jedes Kunstwerk übersichtlich organisiert
und leicht zugänglich In Teil B wurden uns
zusätzliche Kunstwerke zur Verfügung gestellt, die wir unserem Wörterbuch
hinzufügen Anstatt alle Informationen manuell
abzutippen, was ziemlich mühsam wäre, haben
wir zusammen mit den bereitgestellten Listen eine
Vierschleife genutzt, haben
wir zusammen mit den bereitgestellten Listen eine
Vierschleife genutzt um
die Kunstgalerie effizient und programmgesteuert aufzubauen Dieser Ansatz sparte Zeit und
verringerte das Fehlerrisiko. Es gibt mindestens zwei Möglichkeiten, ein Wörterbuch
aus den angegebenen Listen zu erstellen. Zunächst verwenden wir die
Bereichsfunktion, die eine
Zahlenfolge von
Null bis zur Länge
der bereitgestellten Listen generiert . Anschließend verwenden wir diese Zahlen
, um sequentiell auf
die Daten an den entsprechenden
Indizes in den Listen zuzugreifen die Daten an den entsprechenden
Indizes in den Listen Schlüsselwertpaare für
unser Kunstgalerie-Wörterbuch zu
erstellen Alternativ
nutzten wir die ZIP-Funktion, die die
drei Listen übersichtlich miteinander kombiniert Durch das Entpacken der Daten direkt
in den Vier-Loop-Header konnten
wir
Schlüssel-Wert-Paare für
unser Vier-Loop-Wörterbuch
übersichtlicher und lesbarer erstellen unser Vier-Loop-Wörterbuch übersichtlicher und In Teil C erhielten wir zwei weitere Kunstwerke und mussten sie zu unserem
Kunstgalerie-Wörterbuch
hinzufügen Der beste Weg, dies zu tun, ist die
Methode update, da wir
damit einen einzigen Methodenaufruf durchführen können , um unser Wörterbuch
mit beiden neuen Einträgen zu aktualisieren. Wir haben die neuen
Einträge als Schlüsselwertpaare übergeben und Python hat sie zu
unserem Kunstgalerie-Wörterbuch hinzugefügt. Alternativ
hätten wir die
Indexnotation verwenden können, um neue Einträge zu
erstellen. Dieser
Ansatz ist jedoch mit etwas mehr Aufwand verbunden,
da wir zuerst die
leeren Wörterbücher
initialisieren müssen ,
bevor wir jeden Wert separat zuweisen Dies ist zwar eine
absolut gültige Methode, die Syntax ist im Vergleich zur Aktualisierungsmethode etwas
umständlicher umständlicher In Übung zwei, Teil A, hatten
wir die Aufgabe,
die Namen aller Kunstwerke im Wörterbuch
der
Kunstgalerie
mit nur zwei Codezeilen zu drucken Kunstwerke im Wörterbuch
der
Kunstgalerie mit nur zwei Codezeilen Um dies zu erreichen, verwenden wir die Keys-Methode zusammen
mit einer Vier-Schleife Die Keys-Methode gab uns Zugriff auf die Namen
der Kunstwerke und wir druckten dann jeden
Namen im Hauptteil der Schleife aus. diesem Ansatz
wurden
alle Namen der Kunstwerke effizient und
mit minimalem Code angezeigt . In Teil B wurden wir
gebeten, die Künstlernamen
für jedes Werk auszudrucken jedes Werk indem wir
die Wörterbuchwerte durchgingen Der Wert, der
jedem Schlüssel im Wörterbuch
der Kunstgalerie zugeordnet ist,
ist ein anderes Wörterbuch Um auf den Namen des Künstlers zuzugreifen, rufen
wir den Wert ab, der
dem Künstlerschlüssel in
diesem verschachtelten Wörterbuch
zugeordnet dem Künstlerschlüssel in
diesem verschachtelten Wörterbuch Auf diese Weise konnten wir
die Namen der Künstler für
jedes Kunstwerk effizient drucken die Namen der Künstler für
jedes Kunstwerk effizient In Teil C hatten wir die
Aufgabe,
den Namen des Kunstwerks und des
entsprechenden Künstlers zu drucken den Namen des Kunstwerks und des
entsprechenden Künstlers Zu diesem Zweck verwenden wir die Methode
items, um
jedes Schlüsselwertpaar aus
dem Wörterbuch in
zwei Schleifenvariablen zu entpacken jedes Schlüsselwertpaar aus
dem , eine für den Namen des Kunstwerks
und eine für die Details Innerhalb der Schleife haben wir den Namen
des Kunstwerks gedruckt und auf
den Künstlerwert aus
dem Detailwörterbuch zugegriffen den Künstlerwert aus
dem , um ihn in die Ausgabe
aufzunehmen. Dieser Ansatz
ermöglichte es uns, jedes Kunstwerk übersichtlich zusammen mit seinem Künstler
anzuzeigen Als Nächstes mussten
wir in Übung drei in unserem
Kunstgaleriewörterbuch nachschauen, ob es das Kunstwerk
American Gothic enthielt Um festzustellen, ob American Gothic im Wörterbuch der
Kunstgalerie enthalten
ist, haben wir eine einfache
bedingte Aussage erstellt. Der bedingte
Ausdruck verwendete das
Schlüsselwort in , um zu überprüfen, ob das Werk
im Wörterbuch existiert. Mit diesem Bedingungsblock
haben wir herausgefunden, dass American
Gothic in der Kunstgalerie zu finden ist. In Übung vier, Teil A, mussten
wir American Gothic aus
dem Wörterbuch streichen. Dies haben wir
mit der Pop-Methode erreicht, die den angegebenen Schlüssel
und den zugehörigen Wert
aus dem Wörterbuch entfernt . Die Zellenausgabe bestätigte, dass das American
Gothic-Schlüsselwertpaar erfolgreich entfernt
wurde. In Teil B mussten wir
zwei Werke aus unserem Wörterbuch entfernen zwei Werke aus unserem Wörterbuch und ihre Informationen drucken. Das haben wir erreicht, indem vier Schleifen unsere Liste der ausgeliehenen Kunstwerke
durchgegangen Für jedes Werk in der Liste der
ausgeliehenen Kunstwerke
haben wir es aus dem Wörterbuch der
Kunstgalerie entfernt, indem den Werknamen als
Argument an die Pop-Methode
übergeben Da die POP-Methode
den Wert zurückgibt , der
dem entfernten Schlüssel zugeordnet ist, haben wir diesen Wert in einer
Variablen namens Removed Art gespeichert Dieser Wert ist ein Wörterbuch, das die Künstler
- und Genreinformationen
enthält. In der Print-Anweisung
haben wir
den Namen des Werks mithilfe
der Loop-Variablen work angezeigt und die
zugehörigen Künstler- und
Genreinformationen gedruckt, und die
zugehörigen Künstler- und
Genreinformationen gedruckt die im entfernten Kunstwörterbuch gespeichert sind. Da die entfernte Kunstvariable ein verschachteltes Wörterbuch
enthält, verwenden
wir die G-Methode,
um gezielt auf die
Künstler- und Genrewerte zuzugreifen und diese zu drucken Dieser Ansatz ermöglichte es
uns, die Werke sauber zu entfernen und ihre Details
anzuzeigen In Übung fünf
haben wir uns schließlich mit einigen schwierigeren Problemen befasst In Teil
A nutzten wir das Verständnis von Listen, um das
Auffinden und Drucken aller
Werke
von Leonardo DaVinci in unserem Kunstgaleriewörterbuch zu
vereinfachen Auffinden und Drucken aller
Werke
von Leonardo DaVinci in unserem Kunstgaleriewörterbuch von Leonardo DaVinci in unserem Kunstgaleriewörterbuch Lassen Sie uns aufschlüsseln, wie dieses
Listenverständnis funktioniert. Erinnern Sie sich an die Struktur
eines Listenverständnisses.
Der erste ist der Ausdruck Dies bestimmt, was jedes Element in der resultierenden Liste sein wird. In unserem Fall ist der Ausdruck die Objektvariable,
die die Namen
der Kunstwerke darstellt. Zweitens definieren wir
die Loop-Variablen. Dies sind die Variablen, die wir verwenden, um über
die Sammlung zu iterieren Hier haben wir Stück und Details, wobei sich das Stück auf den Namen des Kunstwerks
bezieht
und die Details sich auf das verschachtelte Wörterbuch beziehen ,
das
die Künstler- und
Genreinformationen enthält die Künstler- und
Genreinformationen Drittens sind es die Daten, über die
wir iterieren. In diesem Fall sind es die Artikel im Wörterbuch der
Kunstgalerie Schließlich haben wir
die Bedingung, die die Artikel
nach bestimmten Kriterien
filtert. Wir verwenden die
Schleifenvariable Details, um zu überprüfen, ob der Name des Künstlers für
das aktuelle Werk Leonardo Da Vinci
ist Wenn diese Bedingung erfüllt ist, wird
das Werk in
die endgültige Ergebnisliste aufgenommen Wenn nicht, wird sie übersprungen. Wenn die Ausführung des Listenverständnisses
abgeschlossen ist, erhalten
wir eine Liste
aller Werke
von Leonardo DaVinci Dieser präzise Ansatz
reduziert die Anzahl der Codezeilen und erleichtert es, sich auf
die grundlegende Logik der Aufgabe zu konzentrieren die grundlegende Logik der Aufgabe In Teil B mussten wir die Anzahl der
Kunstwerke von jedem Künstler
zählen, und das haben wir mit 24 Loops gemacht In der ersten Schleife haben wir die Werte des Wörterbuchs
der Kunstgalerie wiederholt
durchgesehen Wörterbuchs
der Kunstgalerie , um den Künstler
für jedes Werk zu finden Anschließend haben wir überprüft
, ob der Künstler
bereits im
Zusammenfassungswörterbuch des Künstlers aufgeführt Wenn ja, haben wir
den
mit ihrem Namen verknüpften Wert um eins erhöht den
mit ihrem Namen verknüpften Wert um eins erhöht Wenn dies nicht der Fall war, haben wir einen neuen Eintrag für
diesen Künstler in das
Übersichtswörterbuch des Künstlers
aufgenommen diesen Künstler in das
Übersichtswörterbuch des Künstlers und die Anzahl auf eins
gesetzt In der zweiten Schleife
verwenden wir die Methode items, um Schlüssel und
Werte des
Zusammenfassungswörterbuches des Künstlers durchzugehen Werte des
Zusammenfassungswörterbuches des Künstlers Im Loop-Header haben wir die Ausgabe
der items-Methode
in zwei Variablen
entpackt der items-Methode
in zwei Variablen den Namen des Künstlers und die Anzahl der
damit verbundenen Werke Anschließend druckten wir
diese Informationen aus und erhielten
so eine klare
Zusammenfassung darüber, wie viele Kunstwerke jeder Künstler in der Sammlung
hatte Fantastisch. Sie haben jetzt
umfangreiche Erfahrung in der Arbeit mit Wörterbüchern gesammelt und
Ihre Fähigkeiten im Umgang
mit vier Schleifen Ihre Fähigkeiten im Umgang
mit Im nächsten Video werden wir
untersuchen, wie wir unseren Code
interaktiver gestalten können, während wir uns mit dem Umgang mit
Benutzereingaben befassen
38. Benutzereingaben: In diesem Kurs haben wir uns
bisher darauf konzentriert,
Programme zu schreiben , die nicht mit dem Benutzer
interagieren, während
das Programm läuft. Im Grunde haben wir
Code ausgeführt und darauf gewartet, dass
die Ausgabe erscheint. In der Praxis sind
Benutzereingaben jedoch
oft nützlich, um
dynamische und reaktionsschnelle Programme zu erstellen . In diesem Video werden wir untersuchen,
wie wir unser Programm durch die
Integration von Benutzereingaben
ansprechender gestalten können. Ich werde mit der Einführung
der Eingabefunktion beginnen, die die primäre Methode ist, Benutzereingaben in PyTon
anzufordern Die Aufgabe der
Eingabefunktion besteht darin , den Benutzer zur Eingabe von Daten
aufzufordern, die unser Programm dann verarbeiten
kann Schreiben wir zum Beispiel ein einfaches Programm, in dem der
Benutzer nach seinem Namen gefragt wird. Dies kann durch einfaches
Aufrufen der
Eingabefunktion wie folgt geschehen . Fein. Aber ohne Kontext kann
es
für den Benutzer schwierig sein zu
verstehen, welche Informationen
das Programm erwartet. Um dem Benutzer zu helfen, können
wir der Eingabefunktion als Argument
eine Meldung übergeben,
die vor der Eingabeaufforderung angezeigt wird. Viel klarer. Sobald der Benutzer die Daten eingegeben
und die Eingabetaste gedrückt
hat, wird
die Eingabe des Benutzers
sofort
an das Programm zurückgegeben und
im Ausgabefeld angezeigt Das ist cool. Aber wenn wir
einen Benutzer nach seiner Eingabe fragen, das wahrscheinlich daran, dass wir mit dieser
Eingabe etwas in unserem Programm anfangen wollen . Um die Eingaben des Benutzers zu sammeln, weisen
wir den Rückgabewert
der Eingabefunktion einer Variablen
zu. Von dort aus können
Sie die Variable im Rest
des Programms
wie jede andere Variable verwenden. Großartig. Nun, da wir die grundlegenden Merkmale
der Eingabefunktion kennen, lassen Sie uns einige
zusätzliche Anmerkungen machen. Wenn Python
die Zeile ausführt, die
die Eingabefunktion enthält, pausiert
das Programm zunächst die Zeile ausführt, die
die Eingabefunktion enthält, und
wartet auf die Eingabe des Benutzers Sobald der Benutzer seine Eingabe
eingereicht hat, wird die Ausführung der verbleibenden
Codezeilen fortgesetzt Zweitens empfiehlt es sich,
klare und präzise
Textansagen zu verfassen , damit der Benutzer weiß, welche Informationen er voraussichtlich eingeben wird Drittens gibt die
Eingabefunktion unabhängig vom vom Benutzer angegebenen Wert diesen Wert immer als Zeichenfolge
zurück Wenn wir zum Beispiel ein anderes Programm
schreiben, den Benutzer nach seinem
Alter fragt, und er eine Zahl eingibt, wird
diese Zahl als Zeichenfolge
zurückgegeben. Dies ist in der
Praxis kein wirkliches Problem , da
Zahlen, die durch
Python-Strings dargestellt werden, innerhalb des Programms
immer
wieder in den entsprechenden
Datentyp konvertiert werden können . Es ist nur etwas
, worauf man achten sollte. In diesem Zusammenhang empfiehlt es sich
, die Benutzereingaben
sofort in den erwarteten
Datentyp Auf diese Weise können wir mit Sicherheit
davon ausgehen, dass die Daten im
Rest
des Programms vom richtigen Typ Um eine
reibungslose Benutzererfahrung zu gewährleisten, empfiehlt es sich außerdem, eine Bestätigung zu
geben , dass die Eingabe
eingegangen ist. Großartig. Wie Sie gesehen haben,
machen Benutzereingaben Programme flexibel sie es
dem Benutzer ermöglichen, die Ausführung des Programms
in Echtzeit zu steuern. Benutzereingaben führen jedoch manchmal zu zusätzlichen Herausforderungen bei der
Programmierung. Beispielsweise können Benutzer
ungeeignete Eingaben machen. Im nächsten Video
werden wir untersuchen, wie wir mit
diesen unerwarteten Eingaben umgehen und unsere Programme robuster
machen können
39. Fehlerbehandlung: Im vorherigen
Video haben wir gesehen, wie Benutzereingaben während
der Ausführung eines Programms
angefordert werden. In vielen Anwendungen sind
Benutzereingaben
erforderlich, um den
Ausführungsablauf eines Programms zu bestimmen. Benutzer können jedoch
alles in ein Eingabefeld eingeben, was zu unerwartetem
Verhalten oder Fehlern führen kann. Um unsere Programme
robuster und benutzerfreundlicher zu machen, müssen
wir diese
Fehler sorgfältig behandeln In diesem Video
werden wir sehen, wie wir den Fehlerbehandlungsmechanismus von
PyTN verwenden können, um diese Fehler effektiv zu verwalten und zu behandeln Beginnen wir mit einem einfachen
Beispiel, um zu zeigen, was passiert, wenn wir Fehler nicht richtig
behandeln Stellen Sie sich dieses Programm vor
, das den Benutzer zur
Eingabe von zwei Zahlen auffordert und deren
Inhalt zurückgibt. Dieses Programm funktioniert wie vorgesehen solange der Benutzer
wertvolle Wenn der Benutzer jedoch
etwas Unerwartetes eingibt, stürzt das Programm ab. Wir können mit Sicherheit davon ausgehen, dass
für den durchschnittlichen Benutzer die Meldung auf dem
Bildschirm Kauderwelsch ist Empfang einer solchen Ausgabe
führt zu einer schlechten
Benutzererfahrung Um die
Benutzererfahrung zu verbessern, müssen
wir diese Fehler,
auch
Ausnahmen genannt, behandeln , damit der Benutzer verstehen
kann, warum seine
Eingabe falsch war. Um
die SPSC-Fehler abzufangen und zu behandeln, stellt
PyTon die Schlüsselwörter try
und except Wir verwenden diese
Schlüsselwörter wie folgt. Gemäß der try-Anweisung beabsichtigen
wir, dass der Code, von dem wir
betroffen sind , eine Ausnahme
auslösen könnte. Wenn eine Codezeile im
TR-Block einen Fehler verursacht, bewegt sich
Pyton nach unten zum Except-Block, ohne den Rest
des Trilocks auszuführen Im Except-Block schreiben
wir Code, der
entweder
den Fehler behebt oder eine
Anweisung für den Benutzer ausgibt Wenn andererseits bei der Ausführung
des Tri-Blocks
kein Fehler auftritt, wird der
Except-Block übersprungen Lassen Sie uns einen
Tr-Except-Block in unserem Tient
Calculator-Programm implementieren Tr-Except-Block in unserem Tient
Calculator-Programm Wir beginnen damit,
das Schlüsselwort tri über
dem potenziell problematischen Code zu schreiben dem potenziell problematischen Code und die betroffenen
Zeilen einzurücken Dann schreiben wir das Schlüsselwort
except auf derselben Einrückungsebene
wie das Unter diesem Schlüsselwort schreiben wir
den Code, den wir ausführen möchten,
wenn eine Ausnahme auftritt In diesem Fall
genügt es,
eine einfache Erklärung auszudrucken ,
die den Benutzer darüber informiert, dass ein Fehler aufgetreten ist, und
Anweisungen enthält, wie der Fehler behoben werden kann, wenn der Benutzer das Programm
das nächste Mal ausführt Lassen Sie uns unseren modifizierten Code testen. Wenn der Benutzer Zahlen eingibt, liefert
das Programm
dieselbe Ausgabe wie zuvor. Wenn
der Benutzer andererseits nichtnumerische Daten eingibt, behandelt
das Programm
den Fehler jetzt besser. Die Ausgabe des Programms teilt
dem Benutzer mit, dass ein
Fehler aufgetreten ist und dass er bei der nächsten
Ausführung des Programms
numerische Daten eingeben sollte nächsten
Ausführung des Programms
numerische Daten Eingabe
eines Wortes anstelle
einer Zahl ist jedoch nicht der einzige
Fehler, den der Benutzer machen kann Wenn wir beispielsweise
unser Programm erneut ausführen und
Null als Nenner eingeben, gibt
unser Programm dieselbe In diesem Fall sind die
beiden Eingaben jedoch Zahlen. Diese Fehlermeldung ist verwirrend. Das Problem hier ist, dass wir
versucht haben, 12 durch Null zu teilen. Dies führte zu einem Fehler, der
dann von unserem
Ausnahmeblock behandelt wurde , wiederum die
Fehlermeldung auf dem Bildschirm ausgab. Wäre es nicht besser, wenn
unser Programm
nichtnumerische Daten und die Division
durch Null getrennt behandeln könnte ? Nun, das ist möglich, verschiedene
Arten von Fehlern getrennt zu erkennen und zu behandeln. Wir brauchen mehrere außer Blöcken. Für jeden Block außer Block müssen
wir die Art
des Fehlers angeben , den der Block behandeln
soll. Um die
Art eines Fehlers zu bestimmen, können
wir die Ausnahme
in einer anderen Zelle replizieren Der Fehler wird in der
ersten Zeile der Ausgabe angegeben. In diesem Fall ist der
Ausnahmetyp Value Error. Das müssen wir also in
die Except-Anweisung schreiben , die diesen Ausnahmetyp
behandelt. In ähnlicher Weise replizieren
wir den Fehler, um den Typ der
Ausnahme zu
bestimmen , die
mit der Division durch Null verbunden ist Wir stellen fest, dass der
Ausnahmetyp ein Divisionsfehler von Null ist. Fügen wir diese Information zur zweiten
Except-Anweisung hinzu und ändern wir die Nachricht im Hauptteil des Blocks,
sodass sie informativer ist. Großartig. Zusammenfassend lässt sich sagen, diese neue Version unseres
Programms
den Benutzer sanft zur Eingabe einer Zahl auffordert,
wenn er versehentlich
etwas anderes eingegeben hat Darüber hinaus
weist das Programm die Benutzer an, einen Nenner ungleich Null zu wählen,
wenn sie Wenn der Zähler
und der Nenner gültig sind,
berechnet das Programm schließlich das Zelt. Diese modifizierte Version
unseres Programms bietet jetzt eine viel bessere Benutzererfahrung.
Großartig. Sie wissen jetzt, wie man
robuste Programme schreibt , die Benutzereingaben
akzeptieren. Im nächsten Video werden wir einige weitere Situationen
untersuchen, in
denen eine gute Fehlerbehandlung die Benutzererfahrung verbessern
kann.
40. Geführte Beispiele für Benutzereingaben und Fehlerbehandlung: Die zweitägige
Wanderung von Jamie und Pike war ein großer Erfolg. Klar, ich habe ein
paar Tage gebraucht, um sich zu erholen. Aber jetzt, wo sie gut ausgeruht
sind, sind
die beiden begierig darauf,
einen ehrgeizigeren Weg in Angriff zu Nachdem
Pike verschiedene Optionen geprüft hat, schlägt er eine
fünftägige Wanderung vor,
die sie jeden Abend zu einem anderen
Campingplatz Angesichts dieser abenteuerlichen Länge
und der zu erwartenden Intensität muss
Jimi sicherstellen
, dass sie zu Beginn eines jeden Tages
die richtige Menge Wasser dabei
hat Beginn eines jeden Tages
die richtige Menge Wasser dabei Das ist genug, um hydratisiert zu bleiben, aber nicht mehr als nötig, sonst wird
sie unnötig zusätzliches Gewicht tragen Zum Glück kann Pike helfen. Er erkundigt sich nach
der Dauer von Jamies Wanderung, um die benötigte Wassermenge zu berechnen In ähnlicher Weise können wir
Piton verwenden, um einen Benutzer aufzufordern die Länge seiner Wanderung
über die Eingabefunktion
einzugeben Aus Erfahrung
weiß Pike, dass Jamie für eine
durchschnittliche Wanderung 24 Unzen Wasser pro Stunde
benötigt Daher können wir
Jamies Frage beantworten, indem wir
die Benutzereingabe in eine Gleitkommazahl umwandeln, die
resultierende Zahl mit 24
multiplizieren und das Ergebnis die
resultierende Zahl mit 24
multiplizieren und das Ergebnis ausdrucken. Jamie teilt Pike mit
, dass sie davon ausgeht, etwa
6 Stunden am Tag wandern zu müssen Pike nimmt unsere Eingaben entgegen und Hoppla,
es sieht so aus, als ob Pike Jamies Antwort nicht verarbeiten kann Außerdem ist die Fehlermeldung, die
Pike zurückgegeben hat, Pike zurückgegeben Dieser Kauderwelsch
bedeutet ihr nichts. Ordnung. Das
Berechnungsprogramm von Pike Waters geht nicht sehr gut mit Fehlern um Leider schneidet unser PTN-Programm
nicht viel besser ab. Wir erhalten eine ähnliche
Fehlermeldung, wenn wir den Code ausführen und
dieselbe Eingabe machen Wir wissen jedoch, wie wir dieses Problem in PTN
beheben können. , dass wir zur Behandlung von
Ausnahmen vom Typ Value Wir wissen, dass wir zur Behandlung von
Ausnahmen vom Typ Value
den potenziell
gefährlichen Code unter
einer Try-Anweisung einrücken und dann
unter einer Accept-Anweisung eine hilfreiche Fehlermeldung
schreiben können den potenziell
gefährlichen Code unter einer Try-Anweisung einrücken und dann
unter einer Accept-Anweisung eine hilfreiche Fehlermeldung
schreiben Wenn Sie die Zelle erneut ausführen
und dieselbe Eingabe wie zuvor eingeben, erhalten Sie eine hilfreiche und
informative Fehlermeldung In ähnlicher Weise war
Pike nach ein wenig Selbstbeobachtung und
Selbstverbesserung in der Lage, eine Selbstbeobachtung und
Selbstverbesserung in der Lage, eine
bessere Fehlerbehandlung zu implementieren Also lädt er Jamie ein, es noch einmal zu
versuchen. nicht weiß, was
mit unserer ersten Eingabe falsch war, Jamie nicht weiß, was
mit unserer ersten Eingabe falsch war, gibt er Pike erneut
dieselbe Aber jetzt, in seiner
Upgrade-Abneigung, ist
Pikes Fehlermeldung für Jamie
viel hilfreicher Sie lernt, dass sie
eine numerische Anzahl von Stunden eingeben muss eine numerische Anzahl von Stunden Mit einer wertvollen Eingabe antwortet
Pike, dass
Jamie
144 Unzen Wasser mitbringen muss 144 Unzen Wasser Das ist unglaublich.
Jamie wird nun in der Lage sein, die
Wasserberechnung an Pike zu delegieren Benutzereingaben und
Fehlerbehandlung sind nützliche Tools für die Erstellung
dynamischer Programme Wir haben hier zwar
die Grundlagen behandelt, wie z. B. die Verwendung der Tri- und
Except-Blöcke zur Verarbeitung
unerwarteter Eingaben, es gibt noch viel mehr zu behandeln In den nächsten Übungen werden Sie diese Konzepte praktisch
anwenden können. Für diejenigen, die mehr erfahren möchten
, stehen im Anhang zusätzliche Ressourcen
zur Verfügung.
41. Übungen zur Benutzereingabe und Fehlerbehandlung: In dieser Arbeitsmappe haben Sie
geübt, Benutzer
um Eingaben zu bitten und eventuell
auftretende Fehler zu beheben Lassen Sie uns die Lösungen aufschlüsseln. In Übung eins, Teil A, mussten
wir
englische Wörter mithilfe des
Sprachübersetzer-Wörterbuches ins
Zonische übersetzen mithilfe des
Sprachübersetzer-Wörterbuches ins
Zonische Um dies zu erreichen, bitten wir
den Benutzer zunächst , das Wort einzugeben, das
er übersetzen möchte Als Nächstes versuchen
wir im Tri-Block, das Wort im Wörterbuch
des
Sprachübersetzers zu finden Wörterbuch
des
Sprachübersetzers und die Übersetzung auszudrucken. Wenn die Wortsuche fehlschlägt, behandeln
wir den Fehler
im Except-Block. Dadurch wird sichergestellt, dass das Programm fehlende
Übersetzungen reibungslos
verarbeitet. Das endgültige Programm fordert
den Benutzer auf,
ein englisches Wort einzugeben , und
liefert dann die zonische Übersetzung In Teil B haben wir uns auf
die else-Klausel konzentriert und
sie verwendet , um unseren
Code gegenüber Teil A zu verbessern. Da die Wortsuche einen Fehler verursachen
könnte, behalten
wir diesen Code
im Trilock Da wir nur möchten, dass die
Print-Anweisung ausgeführt wird, den Else-Block,
wenn die Wortsuche erfolgreich verschieben
wir sie in den Else-Block,
wenn die Wortsuche erfolgreich ist Denken Sie daran, dass der Else-Block
sicherstellt, dass der
darin enthaltene Code nur ausgeführt wird, wenn der
gesamte Triblock erfolgreich In Übung zwei, Teil A, mussten
wir ein Programm zur Umrechnung von Einheiten aus dem
Englischen ins
Zalonische erstellen Zalonische Dazu bitten wir den Benutzer, die irdische Einheit
einzugeben, die
er umrechnen möchte Innerhalb eines Triblocks versuchen wir , den
Umrechnungsfaktor aus dem
Wörterbuch
des Messwertübersetzers abzurufen , indem die angegebene Einheit und den
Umrechnungsfaktor für Zeichenketten als Schlüssel Wenn die Suche fehlschlägt, fangen wir den resultierenden Schlüsselfehler
im Except-Block ab Da das Programm
nur nach der umzurechnenden
Menge fragen sollte,
wenn der Benutzer
eine gültige Einheit angibt, betten
wir als Nächstes nur nach der umzurechnenden
Menge fragen sollte, wenn der Benutzer
eine gültige Einheit angibt, einen zweiten
Fehlerbehandlungsblock in den ersten Else-Block ein. Der verschachtelte Except-Block behandelt
den Wertfehler, auftritt, wenn die Benutzereingabe nicht in einen Float umgewandelt werden
kann Schließlich
berechnet der LSE-Block die Konvertierung
und gibt das Ergebnis die Mengeneingabelogik
hier schreiben , wird sichergestellt, dass
die Umrechnungen
nur dann versucht werden , wenn sowohl die Einheiten - als auch die Mengeneingabe gültig sind Das endgültige Programm fordert den Benutzer auf, eine irdische Einheit und
Menge einzugeben, und gibt dann
die entsprechende
zalonische Umrechnung In Teil B haben wir
unseren Code gegenüber
Teil A verbessert, indem wir die Benutzereingaben standardisiert Wir verwenden die Methoden Lower
und Strip um die Eingaben zu bereinigen und
sicherzustellen, dass
zusätzliche Leerzeichen oder Abweichungen in der Groß-/Kleinschreibung
keine Probleme verursachen Dies macht unseren Code
robuster gegen falsche Benutzereingaben und sorgt für eine reibungslosere
Benutzererfahrung In Übung drei, P A, mussten
wir die Entfernungen in
Kilometern in ihre zalonische
Entsprechung umrechnen ihre zalonische
Entsprechung Um dies zu erreichen, bitten wir den Benutzer
zunächst, die Anzahl der
Entfernungen einzugeben, die er umrechnen möchte Wir standardisieren diese
Eingabe und behandeln den Wertfehler, der
bei der Ganzzahlumwandlung auftreten kann Als Nächstes betten wir den verbleibenden
Code in einen Else-Block ein , um sicherzustellen, dass er nur ausgeführt wird, wenn der Benutzer eine gültige Eingabe macht Innerhalb des Else-Blocks erstellen
wir eine Vier-Schleife, um durch die vom Benutzer angegebene Anzahl von
Entfernungen zu iterieren Benutzer angegebene Anzahl von
Entfernungen Wir geben die
vorherige Eingabe des Benutzers an
die
Bereichsfunktion weiter, um
eine Zahlenfolge von Null
bis zu, aber ohne
die Anzahl der Entfernungen, zu erzeugen eine Zahlenfolge von Null bis zu, aber ohne
die Anzahl der Entfernungen Zusätzlich verwenden wir
einen Platzhalter für die Loop-Variable, da sie im Loop-Body
nicht verwendet wird. Innerhalb der Schleife fügen wir
einen Fehlerbehandlungsblock ein, der den Benutzer zur Eingabe
einer Entfernung
auffordert und
versucht, diese in einen Float umzuwandeln. Wenn die Konvertierung fehlschlägt, wird
der daraus resultierende Wertfehler im
Except-Block abgefangen. Wenn sie erfolgreich ist,
wird
die gültige Menge umgerechnet und gedruckt Das endgültige Programm fordert den Benutzer auf, die
Anzahl der Entfernungen einzugeben, die er umrechnen
möchte,
und fragt ihn dann
nach einer Entfernung, um
diese Anzahl von Malen umzurechnen In Teil B haben wir
unseren Übersetzer für die Sprachrichtung Englisch —
Zalonisch erweitert und
akzeptiert nun auch Phrasen mit mehreren Wörtern Dazu
bitten wir den Benutzer zunächst, eine englische Phrase einzugeben und
dann die
Eingabe zu standardisieren Als Nächstes verwenden wir die
Split-Methode, um
die Phrase in eine Liste
von einzelnen Wörtern aufzuteilen die Phrase in eine Liste
von einzelnen Wörtern Dann iterieren wir
diese Wortliste
mit einer For-Schleife Innerhalb der Schleife
versuchen wir,
jedes Wort zu übersetzen und
die Übersetzung an
eine Übersetzungsliste anzuhängen die Übersetzung an
eine Übersetzungsliste anzuhängen Wir fügen auch einen
Except-Block hinzu, um
den Hauptfehler zu behandeln , der auftritt, wenn ein Wort nicht
im Wörterbuch gefunden wird Wenn ein Wort nicht übersetzt werden kann, bricht
das Programm frühzeitig aus
der Schleife , sodass die
Übersetzungsliste nicht so lang ist
wie die Wortliste. Deshalb
müssen wir überprüfen,
ob beide Listen
die gleiche Länge haben. Wenn ja, bedeutet das, dass der gesamte Satz übersetzt
wurde. Und wenn nicht, bedeutet das, dass mindestens ein Wort nicht übersetzt werden
konnte. Dieser Ansatz gewährleistet
vollständige Übersetzungen und behandelt gleichzeitig unübersetzbare
Wörter effektiv Das endgültige Programm
fordert den Benutzer zur einer englischen Phrase auf
und gibt dann
die gesamte ins Zalonische übersetzte Phrase In Übung vier haben wir
einige fortgeschrittenere Konzepte gesehen. In Teil A haben wir einen Übersetzer für die Sprachrichtung
Zilonisch ins Englische entwickelt. Übersetzen vom Zonischen
ins Englische mit dem
Sprachübersetzer-Wörterbuch ist etwas komplexer
als umgekehrt Das liegt daran, dass
zilonische Wörter als Werte
im Wörterbuch
gespeichert werden , sodass wir sie nicht direkt
nachschlagen können, wie
wir es bei den englischen
Wörtern tun können, bei denen es sich wir es bei den englischen
Wörtern tun können, bei denen Stattdessen haben wir eine Vierschleife in
Kombination mit der Methode
items verwendet , um alle Schlüssel-Wertepaare
im Wörterbuch
des
Sprachübersetzers zu durchlaufen im Wörterbuch
des
Sprachübersetzers Bei jeder Iteration überprüft
das Programm, ob der aktuelle Wörterbuchwert dem zonischen Wort
übereinstimmt, das
wir übersetzen möchten Wenn
im Wörterbuch eine Übereinstimmung gefunden wurde, drucken
wir das englische Wort aus. Dabei handelt es sich um den Wörterbuchschlüssel
, der
dem Zonian-Wort entspricht,
was
der Wörterbuchwert ist Außerdem setzen wir das Wort gefundene Variable auf true und
brechen aus der Schleife Wenn eine Schleife endet, ohne dass ein passendes zonisches Wort
gefunden wird, bleibt
das Wort gefundene Variable falsch Wir überprüfen den Wert
der
Variablen „Wort gefunden“ , um festzustellen, ob die
Übersetzung erfolgreich war Ist dies nicht der Fall, geben wir
einen Fehler mit einem benutzerdefinierten Wert aus, fangen ihn im Except-Block ab und geben eine hilfreiche
Fehlermeldung aus. Das endgültige Programm verwendet das zonische Wort als Eingabe und
übersetzt es ins Englische In Teil B haben wir
unseren
Übersetzer für die Sprachrichtung Zonisch ins Englische verbessert unseren
Übersetzer für die Sprachrichtung Zonisch ins Englische In dieser Aufgabe werden
Konzepte aus Übung 3,
Teil B und Teil A
dieser Übung, kombiniert Teil B und Teil A
dieser Übung, Wie in Übung drei, Teil B, teilen
wir die eingegebene Phrase mithilfe
der Split-Methode
in einzelne Wörter auf und wiederholen jedes Wort in einer Schleife Innerhalb dieser Schleife
schreiben wir eine weitere Schleife, um die Werte des Wörterbuches des
Sprachübersetzers zu
durchsuchen, ähnlich wie
Teil A dieser Übung Nachdem die innere Schleife die
Suche nach dem Zonian-Wort
im Wörterbuch
abgeschlossen hat, prüft
das Programm, ob
das Wort gefunden wurde Wenn das Wort nicht gefunden wurde, geben wir einen Wertfehler mit einer
benutzerdefinierten Informationsmeldung Um den Fehler zu behandeln,
verwenden wir die Notation as E, um die benutzerdefinierte Fehlermeldung zu erfassen und sie innerhalb
des Except-Blocks auszudrucken. Wenn schließlich alle Wörter
erfolgreich übersetzt wurden, drucken
wir die vollständige
Übersetzung. Jetzt
ermöglicht uns das Programm,
slonische Phrasen einzugeben und
ihre englische Übersetzung zurückzugewinnen In Teil C mussten wir mehrere
Messungen gleichzeitig
konvertieren Dazu
bitten wir den Benutzer zunächst, die Messungen als
kommagetrennte Liste
einzugeben Diese Eingabe teilen wir dann in eine Liste von
Einzelmessungen Mithilfe von vier Schleifen
iterieren wir jede
Messung in der Liste Innerhalb der Schleife
versuchen wir,
jede Messung in
ihre Menge und Einheit aufzuteilen jede Messung in
ihre Menge und Einheit Als Nächstes versuchen wir,
die Menge in eine Gleitkommazahl umzuwandeln und die
entsprechende Einheit im Wörterbuch des
Messwertumsetzers nachzuschlagen. Wenn die Einheit nicht gefunden wird, verwenden
wir das Schlüsselwort rays innerhalb des Tri-Blocks, um einen benutzerdefinierten Fehler zu
erzeugen. Schließlich rechnen wir
die Menge von irdischen Einheiten in zonische
Einheiten um und drucken die Das endgültige Programm nimmt eine
Reihe von durch Kommas getrennten irdischen Messungen vor
und rechnet
jede einzelne in ihr zlonisches Äquivalent um Fantastisch. Jetzt haben Sie ein
solides Verständnis dafür ,
wie Sie Benutzereingaben nutzen und
mit den daraus resultierenden Fehlern umgehen können. In den kommenden Videos erfahren
Sie, wie Sie mithilfe von
While-Loops die Benutzerinteraktionen in Ihrem Programm
weiter verbessern können.
42. While-Loops: In früheren Videos haben wir gesehen, wie leistungsfähig vier Loops sein können , um sich wiederholende Aufgaben zu automatisieren So hilfreich sie auch sind,
vier Schleifen haben jedoch Einschränkungen Eine wichtige Einschränkung vier Schleifen besteht darin, dass zu dem
Zeitpunkt, zu dem das Programm in die Schleife
eintritt, bekannt
sein muss, wie oft die Schleife ausgeführt werden
soll . Leider ist
es in
vielen Situationen nicht möglich
zu wissen, wie oft eine Schleife ausgeführt werden sollte,
bevor wir den Code ausführen. In diesen Situationen sind
vier Loops das
falsche Tool für den Job. Zum Glück kann stattdessen eine andere Art von
Schleifen, die Wil-Schleifen genannt
werden, verwendet werden In diesem Video
stellen wir diesen Begriff der Wild-Loops vor und besprechen, wann sie anstelle
von vier Loops verwendet werden
sollten Um die
Beschränkung auf vier Loops zu veranschaulichen, erinnern
wir uns an das Beispiel
des Ladenbesitzers, der Inventarartikel
rabattiert In diesem Beispiel möchte der
Ladenbesitzer die Preise in
einer vorher festgelegten Liste
rabattieren Die Länge der Preisliste ist vor der Ausführung
der Schleife bekannt
und bestimmt die Anzahl der
Iterationen, die die
Schleife durchführt Aus diesem Grund ist die Verwendung einer Vierschleife
in diesem Zusammenhang angemessen Aber lassen Sie uns
dieses Beispiel jetzt leicht modifizieren. Angenommen, der
Ladenbesitzer kennt
die Liste der Artikel nicht , die bei der
Ausführung des Programms
rabattiert werden müssen bei der
Ausführung des Programms
rabattiert Stattdessen
möchte er
den Preis der
Artikel, für die er
einen Rabatt gewähren möchte, bei der Inventarisierung manuell eingeben den Preis der
Artikel, für die er
einen Rabatt gewähren möchte, bei der Inventarisierung Nehmen wir außerdem an,
der Ladenbesitzer weiß
nicht, wie viele Artikel
er rabattieren muss. Ordnung. Mal
sehen, wie wir unseren Code ändern können, um die Anforderungen des
Ladenbesitzers zu erfüllen. Da der Ladenbesitzer uns keine
vorab festgelegte Preisliste mehr zur
Verfügung stellt, sollten
wir sie
aus dem Programm entfernen. Dies führt sofort zu einem
Problem mit der For-Schleife. Die Iterationsliste ist nicht
mehr vorhanden, sodass wir
die Iterationsvariable nicht mehr verwenden können .
Aber das ist okay. Wir können PyTon immer noch anweisen, einen Code
zu wiederholen, indem wir unsere for-Schleife durch eine while-Schleife
ersetzen Eine while-Schleife führt den Code in seinem
Hauptteil wiederholt aus, solange eine
im Loop-Header angegebene Kontrollbedingung wahr Lassen Sie uns abschließend die
notwendigen Änderungen am
Hauptteil der Schleife Denken Sie daran, dass der Ladenbesitzer
die Möglichkeit haben möchte , die
Preise für den Rabatt einzugeben. Schreiben wir also eine
Eingabeanweisung. Toll, um uns
mit der Ausführung
einer Wildschleife vertraut zu machen. Lassen Sie uns unser Programm ausführen und ein paar Iterationen
verfolgen. Da wir der Variablen should iterate
den Wert true zuweisen, geht
das Programm in den Hauptteil
der Wil-Schleife über und wir werden
aufgefordert, einen Preis einzugeben Wenn wir den Preis eingeben, wendet
das Programm den Rabatt an und druckt den Verkaufspreis Wenn die letzte
Zeile des Wil Oops-Hauptteils erreicht ist, kehrt
das Programm
zum Header zurück und testet, ob die
Kontrollbedingung wahr ist Da der Wert der Variablen Shoot Iterate immer noch wahr ist, ist auch
die Kontrollbedingung wahr, und das Programm fährt mit einer zweiten Iteration der Das erklärt, warum wir unmittelbar nach dem
Absenden des ersten
Preises aufgefordert
wurden,
einen zweiten Preis einzugeben unmittelbar nach dem
Absenden des ersten
Preises aufgefordert
wurden,
einen zweiten Preis . Das ist großartig. Sie müssen den Code nicht erneut ausführen, um zusätzliche Preise zu
rabattieren. Das ist die Stärke von Y-Loops. Aber die wachsamen Augen unter Ihnen
haben vielleicht bemerkt, dass es ein kleines Problem
mit unserem Programm Falls es euch noch nicht aufgefallen ist, denkt kurz über die Ausführung
unserer Schleife nach Wann genau wird unser
Programm den Loop verlassen? Nun, da wir
die Variable should iterate
im Hauptteil der Schleife nicht ändern , die Kontrollbedingung
im wird
die Kontrollbedingung
im Loop-Header
immer wahr sein Das wiederum bedeutet, dass das Programm
die Schleife
niemals verlassen wird Oh nein, wir haben
eine Endlosschleife geschaffen. Der Benutzer wird
bis zum Ende der Zeit
aufgefordert, Preise einzugeben .
Was werden wir tun? Nun, es besteht kein Grund zur Panik. Wir müssen lediglich
einen Mechanismus entwerfen , um die Variable
zuzuweisen , wenn
wir das Programm beenden wollen Ein üblicher Weg,
dies zu erreichen, besteht darin, die Benutzer
anzuweisen , eine bestimmte Eingabe einzugeben , wenn sie das Programm
beenden möchten Um dies zu implementieren, testen
wir zunächst, ob die Benutzereingabe
diesem speziellen Wert entspricht Ist dies der Fall, weisen wir
den Wert
der Variablen should iterate Ist dies nicht der Fall,
berechnen wir den Rabatt, geben den
Preis aus und fahren der nächsten Iteration Fantastisch. Lassen Sie uns unseren Code erneut ausführen , um zu überprüfen, ob er wie beabsichtigt
funktioniert Während der ersten Iteration
des Wire Loop fragt
unser Programm nach einem Preis Wir geben 24,58 ein und das Programm gibt den
ermäßigten Preis Wenn dies der einzige Preis ist, den
wir rabattieren möchten, geben
wir den
Ausgangswert minus eins ein und das Programm
wird ordnungsgemäß Unglaublich.
Die Art und Weise, wie unser Programm mit unerwarteten
Benutzereingaben umgeht, ist jedoch weniger elegant. Wenn ein
Benutzer beispielsweise fälschlicherweise eine Zeichenfolge
eingibt, stürzt das
Programm ab Oh, keine großartige Benutzererfahrung. Aber wir haben diesen Fehler schon
einmal gesehen und wissen,
wie man damit umgeht. Lassen Sie uns also
die Benutzererfahrung verbessern indem wir den
gefährlichen Code unter
einem Tri-Block einrücken und
den Wertfehler in
einem Except-Block behandeln . Nett. Während die vorherige
Version unseres Programms allergisch gegen Katzen war und
keine Gnade walten ließ , wenn
wir auf dieses Wort
stießen, ist die neue Version unseres Codes viel nachsichtiger. Wenn der Benutzer einen Fehler macht, kann sich
das Programm
erholen und leitet den Benutzer weiter, eine
Werteingabe in ein neues Eingabefeld einzugeben Viel besser. Lassen Sie uns zum
Abschluss dieses Videos einen Schritt zurücktreten
und
den Unterschied zwischen
vier Loops und Wild Loops in unserem Kopf zementieren . Wie Sie in diesem Video gesehen haben, eine wichtige Einschränkung vier Schleifen darin, dass wir wissen müssen wie viele Iterationen die Schleife
durchführen wird , bevor ihre
Ausführung beginnt Diese Bedingung ist in
vielen, wenn nicht den meisten Anwendungen erfüllt vielen, wenn nicht den meisten Anwendungen Es gibt jedoch
Situationen, in denen wir nicht wissen können, wie viele Iterationen der Schleife ein Programm benötigen wird Dies ist häufig
bei der Arbeit mit Benutzereingaben und auch in einigen
anderen Kontexten In diesen Fällen ist
diese Art von Schleife aufgrund der
unbestimmten Natur der Wil-Schleifeniterationen die beste Wahl Wile-Loops sind leistungsstarke
Tools, die Python zum Schreiben von
effizientem und einfachem Code
bereitstellt Im nächsten Video werden wir
ein anderes Szenario untersuchen, in dem
Wil-Loops hilfreich sein können
43. While-Loops-geführte Beispiele: Jimmie und Pike sind fast bereit, sich auf
ihr fünftägiges Abenteuer zu begeben Um sicherzustellen, dass ihr während der Wanderung nicht das Wasser ausgeht, beabsichtigt
Jamie, sorgfältig zu verfolgen, wie viel
Wasser Jedes Mal, wenn Jamie Durst
hat, teilt sie Pike mit, wie viel
Wasser sie trinken möchte, und Pike berechnet die verbleibende Pikes
früherer Empfehlung folgend, wird
sie den ersten
Tag der Wanderung mit
144 Unzen Wasser beginnen wird
sie den ersten
Tag der Wanderung mit
144 Unzen Wasser beginnen. Lassen Sie uns ein PyTON-Programm schreiben , das Pikes Aufgabe erfüllen kann Wir beginnen damit,
eine Variable zu erstellen , um die
verbleibenden Unzen Wasser zu speichern und sie auf 144 zu initialisieren da dies das
Wasservolumen ist, mit dem JM unsere Reise beginnt Von dort aus muss unser Programm den Benutzer nach
der Menge Wasser
fragen er trinken möchte, und die Unzen Wasser
entsprechend anpassen Da es
schwierig ist, genau vorherzusagen , wie oft
der Benutzer Wasser trinken wird, ist es
das
Richtige, den
Benutzer innerhalb
einer Zeitschleife nach seiner Eingabe zu Im Moment lassen wir die Kontrollbedingung
der Schleife leer, aber wir werden
darauf zurückkommen, wenn wir den
Hauptteil der Schleife
herausgefunden haben . Sobald der Benutzer eingegeben hat wie viel Wasser er trinken
möchte, befinden
wir uns in
einer von zwei Situationen. Eine Möglichkeit ist, dass noch
genug Wasser übrig ist , um die gewünschte Menge zu
trinken. In diesem Fall subtrahieren wir
die eingegebene Menge, ordnen die verbleibenden Unzen neu und drucken das Ergebnis unserer Berechnung
aus Ist dies nicht der Fall, kann
der Benutzer höchstens die verbleibende
Menge Wasser trinken Dementsprechend teilen wir dem Benutzer wie viel Wasser er tatsächlich trinken
kann, teilen ihm mit, dass er
jetzt kein Wasser mehr hat, und weisen den verbleibenden
Unzen Null zu Fantastisch. Nachdem wir nun den Hauptteil der Schleife
erstellt haben, wir zum Header
der Schleife zurück um die Kontrollbedingung zu schreiben. Ich werde argumentieren, dass das
Programm
den Benutzer nur fragen sollte , wie viel er
trinken möchte , wenn
noch Wasser übrig ist. Ansonsten ist es einfach unhöflich. Dementsprechend testen
wir unter
kontrollierten Bedingungen, ob eine absolut positive
Wassermenge übrig bleibt Solange diese
Bedingung erfüllt ist, ist
es sinnvoll, den Benutzer zu
fragen. Wenn diese
Bedingung jedoch falsch ist, ist
es an der Zeit, die Schleife zu verlassen. Jetzt
ist es natürlich möglich, dass der Benutzer seine Wanderung beendet bevor ihm das Wasser ausgeht. Damit der Benutzer
das Programm ordnungsgemäß beenden kann, können
wir ihn auffordern, den Wert minus eins einzugeben, um das Programm zu Wenn der Benutzer einen Ausgangswert eingeben darf
, sollte unser
Code als Erstes prüfen ob die Benutzereingabe dem Ausgangswert
entspricht Ist dies der Fall, geben wir die Anzahl
der
verbleibenden Unzen aus und verwenden das
Schlüsselwort brake, um die Schleife zu beenden Wenn nicht, führen wir den Rest des
Programms wie zuvor Beachten Sie, dass eine Break-Anweisung
eine bequeme Methode ist , um
die Anfrage des Benutzers, das Programm
zu beenden, zu bearbeiten . Aber wie wir im letzten Video gesehen haben, ist
dies nicht der einzige Weg. Fantastisch. Jamie und Pike sind
jetzt bereit, sich auf den Weg zu machen Ungefähr eine Stunde nach Beginn ihrer Wanderung Jamie Durst Die beiden gehen vorbei, als Jamie 19 Unzen
Wasser trinkt. Wenn wir unseren Code ausführen
und 19 Unzen eingeben, erhalten
wir, dass
noch 125 Unzen übrig sind Jamie und Pike machen sich
dann
wieder auf den Weg und setzen ihre Wanderung fort Unterwegs trinkt Jamie 25 Unzen an der
Weggabelung,
32 Unzen an der Spitze eines steilen Anstiegs
und 18 Unzen, während er
über einen und 18 Ein paar Stunden nach Beginn der Wanderung machen
die beiden eine Mittagspause, während der Jamie weitere 27 Unzen der knappen Flüssigkeit konsumiert. Unzen der knappen Flüssigkeit konsumiert. Etwa eine Stunde nach dem Mittagessen halten
die beiden in der Nähe
eines Flusses an, um sich auszuruhen Jamie erzählt Spike
, dass sie beabsichtigt, 25 Unzen Wasser zu trinken Leider ist das ein bisschen
mehr als das, was verfügbar ist. Infolgedessen teilte Pike ihr
mit, wie viel sie
tatsächlich trinken kann , und hört auf, sie nach
weiteren Informationen zu fragen Zum Glück
sind Jamie und Pike nur ein paar Minuten Sie können nachfüllen, wenn sie Wie Sie gesehen haben, können
Wi-Loops die
Benutzererfahrung bei
Programmen, die Benutzereingaben verwenden, erheblich verbessern Benutzererfahrung bei
Programmen, die Benutzereingaben verwenden In den folgenden Übungen
haben Sie die Möglichkeit, die Verwendung von Wi-Loops zu
üben, um Programme mit einer
angenehmen Benutzererfahrung zu erstellen.
44. While-Loops-Übungen: In dieser Arbeitsmappe
haben Sie die Verwendung von
Wile-Loops in
komplexeren Situationen geübt Wile-Loops in
komplexeren Situationen Lassen Sie uns nun gemeinsam die
Lösungen durchgehen. In Übung eins haben wir
ein Programm entwickelt, das
nach Benutzereingaben fragt , um
die Anzahl der Äpfel
im Inventar zu verfolgen . Zunächst fordert das Programm den Benutzer
auf, die Anzahl der Äpfel einzugeben, die
er auf den Markt gebracht hat. Die Eingabe wird dann
sofort in
eine Ganzzahl umgewandelt, die für
zukünftige Berechnungen verwendet werden in
eine Ganzzahl umgewandelt, die für
zukünftige Berechnungen verwendet Das Programm wechselt dann in eine Wile-Schleife, die läuft, solange noch
Äpfel übrig sind Innerhalb der Schleife wird der
Benutzer aufgefordert, die Anzahl der in einer Transaktion
verkauften Äpfel
einzugeben Auch hier wird diese Eingabe in eine Ganzzahl
umgewandelt, um
sicherzustellen, dass sie
für zukünftige Berechnungen verwendet werden kann. Die Variablen „Verkaufte Äpfel“ und „
Verbleibende Äpfel“ werden dann aktualisiert, um die Anzahl
der im Inventar verbleibenden Äpfel widerzuspiegeln . Anschließend drucken wir den Inhalt
dieser Variablen aus. Sobald keine
Äpfel mehr übrig sind, wird
die Wile-Schleife beendet Das endgültige Programm
fordert den Benutzer
auf, die Anzahl der
Äpfel einzugeben, die er auf
den Markt gebracht hat, und
ermöglicht es ihm dann,
die Anzahl der verkauften Äpfel einzugeben , bis die Äpfel ausverkauft
sind In Übung zwei haben wir
ein Programm geschrieben, mit
dem die Menge an
Weizen und Gerste nachverfolgt werden kann, bis der Benutzer jeweils 20 Einheiten hat Um die
gekauften Mengen nachzuverfolgen , erstellen wir
Gegenvariablen Anschließend verwenden wir eine Wile-Schleife mit den Bedingungen Weizen weniger als
20 oder Gerste weniger als 20,
um sicherzustellen, dass die Schleife so lange
fortgesetzt wird, wie entweder die Weizen- oder die
Gerstenvariablen unter 20 liegen Innerhalb der Schleife
fordern wir den Benutzer auf,
die Menge an Weizen und Gerste einzugeben die Menge an Weizen und Gerste er
im Rahmen einer Transaktion erworben hat In der ersten Übung
konvertieren wir diese Eingaben ganze Zahlen
, damit wir
sie in zukünftigen Berechnungen verwenden können Die Weizen- und
Gerstenzähler werden dann aktualisiert, um die neuen Gesamtwerte
widerzuspiegeln, und
wir drucken die aktuellen Zählungen Die Schleife endet, wenn
sowohl die Weizen - als auch die Gerstenvariablen 20 oder mehr
erreichen Das endgültige Programm
fordert Benutzereingaben auf, um die Menge an gewonnenem
Weizen und Gerste verfolgen zu können. In Übung drei, Teil A, haben wir ein Programm zur Verwaltung
des Rekrutierungsprozesses
für neue Gildenmitglieder geschrieben . Unser Ziel war
es, drei Mitglieder zu rekrutieren, aber wir wussten nicht,
wie viele Kandidaten wir bewerten müssten, um dieses Ziel
zu erreichen Wir lösen dieses Problem
mithilfe von verschachtelten Schleifen. Nachdem wir die Anzahl
der verbleibenden Positionen auf drei initialisiert haben, geht
unser Programm in
eine While-Schleife über, die
läuft, solange noch Positionen übrig
sind In dieser Schleife legen wir zunächst Zähler
für
den aktuellen Kandidaten fest, ob die Prüfung bestanden wurde Als Nächstes erstellen wir eine
verschachtelte Schleife mit vier verschachtelten Schleifen , um die
Ergebnisse der Studie vom Benutzer anzufordern Wir verwenden die Bereichsfunktion
im Loop-Header, um diese beiden Versuche zu
durchlaufen In der Vorschleife bitten wir
den Benutzer, das
Ergebnis des Versuchs einzugeben Wenn der Kandidat die Prüfung bestanden hat, erhöhen
wir den Zähler für die bestandene
Prüfung Nachdem beide Studien abgeschlossen sind, testen
wir, ob der
Zähler für die bestandene Prüfung gleich zwei ist Ist dies der Fall, haben wir
einen geeigneten Kandidaten gefunden und die Anzahl der verbleibenden Stellen
wird reduziert. Andernfalls weisen wir auf einen Fehler hin,
indem wir eine Nachricht drucken. Das endgültige Programm
ermöglicht es dem Benutzer einzugeben, ob eine
Prüfung bestanden wurde, verfolgt die Anzahl der verbleibenden
Mitgliederplätze und verlässt das Programm, sobald drei Mitglieder rekrutiert
wurden In Teil B haben wir
unseren Kodex aus
Teil A geändert, um den
neuen Rekrutierungsregeln Rechnung zu tragen Unser Programm enthält jetzt
eine neue Variable:
Versuche, die laufende Anzahl
der Versuche eines
Bewerbers nachzuverfolgen . Die Variable muss
für jeden neuen Kandidaten zurückgesetzt werden, also platzieren wir sie innerhalb der äußeren Schleife, aber
außerhalb der inneren Schleife. Als Nächstes verwenden wir eine Wile-Schleife, um zu
testen, ob der Kandidat noch Versuche bestehen muss und ob noch
Versuche übrig Diese Schleife läuft, solange
die Anzahl der Erfolge weniger als zwei und die Anzahl der Versuchsversuche
kleiner oder gleich fünf ist Beachten Sie, dass diese
While-Schleife nur zweimal oder
sogar fünfmal wiederholt je nach Erfolg des
Kandidaten Innerhalb der Schleife fragen
wir immer noch nach dem Versuchsergebnis und erhöhen die Anzahl der
bestandenen Versuche entsprechend Jetzt erhöhen wir jedoch auch die Anzahl
der Versuche. Nach der inneren Schleife
folgen wir derselben Logik wie in
Teil A, um zu bestimmen, ob der Kandidat Gildenmitglied
werden kann Das endgültige Programm wird beendet sobald zwei Mitglieder rekrutiert wurden In Übung vier haben wir uns mit
Endlosschleifen befasst. In Teil A haben wir
die Wil True-Syntax verwendet , um den Benutzer kontinuierlich zur Eingabe der Anzahl
der verkauften Witze aufzufordern. In dieser Wile-Schleife inkrementieren
wir die Variable „
Verkaufte Witze“ auf der Grundlage der Benutzereingabe und geben die
laufende Anzahl
aus Da es keine
Ausgangsbedingung gibt, haben
wir quasi eine Endlosschleife
geschaffen In Teil B beheben wir dieses
Endlosschleifenproblem, indem wir eine Ausgangsbedingung hinzufügen
und das Schlüsselwort break verwenden. Wenn der Benutzer nun eine negative
Eins eingibt, wird die Schleife unterbrochen und
sofort beendet. Wenn ein Benutzer etwas
anderes als eine negative Zahl eingibt, erhöhen
wir trotzdem die
Variable witz, wie wir es in Teil A getan haben. Das endgültige Programm
fragt weiterhin nach der Anzahl der verkauften
Witze, bis der Benutzer negativ eins
eingibt In Übung fünf, Teil A, verwenden
wir eine While-Schleife, um Artikel aus
einer Inventarliste zu entfernen Das Inventar mit Schleifenzuständen ist eine Kurzform, um zu testen,
ob die Liste leer ist Dies entspricht der
Verwendung des längeren
N-Inventars, das größer als Null ist,
als Kontrollbedingung Anschließend testen wir, ob sich der
Artikel im Inventar befindet. Ist dies der Fall, verwenden wir die
Methode remove, um ihn zu entfernen. Ist dies nicht der Fall, benachrichtigen wir den Benutzer. Das endgültige Programm fordert den Benutzer
weiterhin auf, einen Artikel
einzugeben, bis keine Artikel mehr
im Inventar vorhanden sind. Schließlich haben wir in Teil B
zwei gleichwertige Programme entwickelt, um
den Tagesgewinn des Händlergeschäfts eines
Benutzers nachzuverfolgen den Tagesgewinn des Händlergeschäfts eines
Benutzers Im ersten Programm
testen wir
anhand einer Kontrollbedingung, ob der aktuelle Gewinn unter dem Zielgewinn
liegt Diese Bedingung stellt sicher
, dass die Schleife nicht mehr läuft, sobald der Benutzer
genug Geld für den Tag gespart hat. Innerhalb der Schleife
fragen wir den Benutzer nach den
Transaktionsdetails und addieren dann den Transaktionsgewinn
zum aktuellen Gewinn. Nach der Aktualisierung des
aktuellen Gewinns testen
wir, ob er
unter dem Zielgewinn liegt. Ist dies der Fall, informieren wir den Nutzer über seinen
bisherigen
kumulierten Gewinn und geben an, wie
viel mehr noch benötigt wird
, um das Ziel zu erreichen Wenn der Gewinn das Ziel erreicht oder
übersteigt, benachrichtigen
wir den Benutzer darüber, dass er sein Ziel erreicht
hat Im zweiten Programm
verwenden wir die Wild True-Syntax in
Kombination mit dem Schlüsselwort break, Kombination mit dem Schlüsselwort break um dasselbe Ergebnis zu erzielen. Beide Programme
fordern den Benutzer weiterhin zur Eingabe Transaktionsinformationen bis der
angestrebte Gewinn erreicht ist. Großartig. Sie haben jetzt gesehen,
wie Wile-Loops in Kombination
mit den Konzepten
verwendet werden können, die wir
bisher in diesem Kurs gelernt haben In den nächsten Videos werden wir unsere
Programmier-Toolbox
erneut erweitern, indem mit einem
der leistungsfähigsten
Programmierkonzepte, den
benutzerdefinierten Funktionen, benutzerdefinierten Funktionen
45. Benutzerdefinierte Funktionen: In früheren Vorlesungen haben wir mehrere der
in PyTN integrierten Funktionen wie
print, len und input
verwendet in PyTN integrierten Funktionen wie
print, len und Diese Funktionen halfen uns allgemeine
Aufgaben
zu erledigen, ohne
den Code selbst schreiben zu müssen , und sorgten dafür unsere Programme organisiert
und lesbar waren Leider
wurde PTN nicht mit allen Funktionen ausgestattet, die in
jeder Situation erforderlich sind Wenn Sie beispielsweise
ein Architekt sind, der
häufig die Fläche geometrischer Formen berechnen muss, haben Sie Pech gehabt In Bton gibt es keine
eingebaute Funktion, mit der die Fläche eines Dreiecks
oder eines Rechtecks
berechnet werden kann Fläche eines Dreiecks
oder eines Rechtecks
berechnet Zum Glück
ermöglicht PTN Programmierern, ihre eigenen Funktionen
zu definieren,
die als benutzerdefinierte Funktionen bezeichnet werden Benutzerdefinierte Funktionen sind vorkonfigurierte
Codeteile, die
eine bestimmte Aufgabe ausführen können, z. B.
die Berechnung der Fläche eines In diesem Video
erfahren Sie, wie Sie
Ihre eigenen Funktionen definieren und wie diese Funktionen einem Programm einen
Mehrwert verleihen können Ein Architekt hat
den Grundriss eines neuen
Gebäudes entworfen , das Zickzack genannt wird Er muss nun die Fläche der drei Zonen
des Gebäudes
berechnen , um den Bodenbelag
zu ordnen Leider hat der
Architekt
seinen Geometriekurs nicht bestanden und
nie gelernt, wie man die Fläche eines Rechtecks anhand seiner Länge und
Breite
berechnet Lassen Sie uns ihm bei
seiner Arbeit helfen, indem wir
eine Pyton-Funktion erstellen , die diese
Berechnung durchführt In Pyton beginnt die Definition
einer neuen Funktion
mit dem Schlüsselwort death Auf dieses Schlüsselwort folgt der Name, den wir unserer Funktion
geben möchten Wählen Sie bei der Benennung von Funktionen aussagekräftige Namen, die die Rolle der Funktion
widerspiegeln, genau wie bei Variablen Außerdem müssen Funktionsnamen denselben
Benennungsregeln
folgen wie Variablen In unserem Beispiel beschreibt der rechteckige Bereich mit dem
Namen, was unsere Funktion
tun
soll, und hält sich an die
vier Benennungsregeln Also werden wir damit weitermachen. Als Nächstes folgen wir dem Namen der
Funktion mit einem Paar Klammern, zwischen denen wir
Variablennamen für die Eingaben angeben ,
die
eine Funktion benötigt, um ihre Aufgabe zu erfüllen Da die Länge und Breite
eines Rechtecks
zur Berechnung seiner Fläche benötigt werden, schreiben
wir Variablennamen
für diese beiden Eingaben trennen sie durch ein Wir schließen den Header
der Funktionsdefinition
mit einer Spalte Als Nächstes schreiben
wir in den eingerückten
Hauptteil der Funktion die Operationen, die
erforderlich sind, um die
Fläche der Rechtecke anhand der Eingaben zu berechnen Hier multiplizieren wir die Länge mit der Breite und weisen das
Ergebnis der Flächenvariablen zu Wir haben jetzt zwar die gewünschte Ausgabe
unserer Funktion berechnet, sind aber noch nicht ganz fertig. Um den
berechneten Bereich dem Programm, das unsere Funktion aufruft
,
zur Verfügung zu stellen, müssen
wir eine
spezielle Anweisung verwenden, die als Return-Anweisung bezeichnet wird. Diese Anweisung besteht aus dem Schlüsselwort return,
gefolgt von den Daten, die wir ausgeben möchten. Ohne eine Rückgabeanweisung das Ergebnis unserer
Berechnung verloren, wenn die Ausführung der Funktion
abgeschlossen ist. Wir werden bald mehr darüber sagen. Fantastisch. Nachdem wir die Funktion für den rechteckigen
Bereich
definiert haben, können
wir sie wie jede eingebaute
Funktion im
Rest unseres Programms verwenden . Um unsere Funktion aufzurufen,
schreiben wir ihren Namen, gefolgt von Klammern, die die Länge und Breite des
Rechtecks enthalten In diesem Stadium
ist es wichtig, zwischen
den Variablennamen im Header
der
Funktionsdefinition und
den im
Funktionsaufruf verwendeten Werten zu
unterscheiden Header
der
Funktionsdefinition und
den im
Funktionsaufruf verwendeten Werten Wie Sie bereits wissen, werden
die an eine
Funktion übergebenen Werte Argumente genannt. In diesem Beispiel sind die
Argumente 100 und 140. Die Variablennamen in der Länge und
Breite der Kopfzeile werden als
Funktionsparameter bezeichnet. Parameter sind
Platzhaltervariablen, die
die Argumentwerte erhalten , wenn die Funktion aufgerufen
wird. Um es zusammenzufassen Während sich sowohl Argumente als auch Parameter auf
Funktionseingaben beziehen, sind
Argumente die tatsächlichen
Werte, die in Funktionsaufrufen verwendet werden Als Parameter sind
die Variablennamen in der Funktionsdefinition
verwendet werden. Okay, jetzt, da wir die Terminologie
geklärt haben, lassen Sie uns das Programm ausführen, um
unsere rechteckige
Flächenfunktion in Aktion zu sehen , die die
Fläche von Zone eins
berechnet. Wir erhalten 14.000 Quadratfuß. Das ist wahrscheinlich keine
Überraschung für die Mathematiker unter Ihnen,
aber für unseren mathematisch
anspruchsvollen Architekten ist
diese Funktion ein
Lebensretter aber für unseren mathematisch
anspruchsvollen Architekten ist
diese Funktion ein
Lebensretter ist
diese Funktion Er kann jetzt problemlos die Flächen
beliebiger Gebäudezonen
berechnen , ohne die zugrundeliegende Mathematik zu verstehen Für den Architekten
wirkt die Funktion der
rechteckigen Fläche wie eine Blackbox. Eingaben werden bereitgestellt,
Ausgaben werden empfangen und die internen Berechnungen
bleiben unsichtbar. Wie wir bei
integrierten Funktionen gesehen haben, dieses als
Abstraktion bekannte Konzept ein entscheidender
Vorteil der Verwendung von Funktionen Durch die Erstellung
benutzerdefinierter Funktionen können
wir eine
Reihe von Operationen
in einer einzigen
wiederverwendbaren Codeeinheit Diese benutzerdefinierten Funktionen können Operationen beliebiger Komplexität
kapseln,
wodurch die Lesbarkeit
des Codes verbessert wird
und
das
Umschreiben gängiger Operationen entfällt das
Umschreiben gängiger Einmal erstellt und getestet, können benutzerdefinierte
Funktionen
als Blackboxen verwendet werden , sodass sich die Benutzer auf Eingaben und
Ausgaben statt
auf die internen Abläufe
konzentrieren Ausgaben statt müssen
Programmierer jedoch diese
Funktionen effektiv zu entwerfen und zu
implementieren, den
Funktionsausführungsprozess von
Pton verstehen Funktionsausführungsprozess von
Pton Dazu gehört auch, zu verstehen,
wie PyTon
Parameter und Variablen nicht
nur während der Ausführung einer
Funktion verwaltet Parameter und Variablen nicht , sondern auch Um dieses Konzept zu veranschaulichen, wollen wir den Code nachverfolgen, der die Fläche der ersten Zone
berechnet Die ersten Codezeilen definieren die Funktion der rechteckigen Fläche Nach der Ausführung
erkennt PyTon den rechteckigen Bereich als eine Funktion mit Wert beliebigen Stelle
im nachfolgenden Code
aufgerufen werden kann Das Programm ruft dann
diese Funktion mit den Argumenten 100 und 140 Wenn dieser Aufruf erfolgt, erstellt
PyTon zunächst
zwei Variablen, Länge und Breite, und
weist ihnen die Werte 100 bzw. 140 Dann führt PTN
den Funktionskörper aus, multipliziert Länge mit Breite und weist das Ergebnis einem neuen Variablenbereich zu Schließlich führt PyTon
die Return-Anweisung aus, übergibt den berechneten Bereich
zurück an das Programm und
verwirft alle in der Funktion erstellten
Variablen, einschließlich übergibt den berechneten Bereich
zurück an das Programm und
verwirft alle in der Funktion erstellten
Variablen, einschließlich der Parameter. Das ist ein wichtiger Punkt. Daher führt jeder
Versuch, mit
Bereichsvariablen außerhalb der Funktion auf
die Länge zuzugreifen Bereichsvariablen außerhalb ,
zu einem Namensfehler. Das liegt daran, dass PyTon diese Variablen für
nicht existent
hält , sobald das Programm die Funktion beendet
hat Wenn wir dagegen
eine Print-Anweisung in
die rechteckige
Bereichsfunktion selbst aufnehmen eine Print-Anweisung in , greift
PyTon erfolgreich auf den Wert der Bereichsvariablen zu und zeigt ihn an Dieses Verhalten unterstreicht
ein wichtiges Konzept in der Programmierung, das
als Variablenbereich bezeichnet In einer der nächsten Vorlesungen werden
wir uns mit den Feinheiten
des variablen Gültigkeitsbereichs befassen Aber bevor wir darauf eingehen, wollen wir uns darauf konzentrieren,
mehr praktische Erfahrungen
mit der Definition
und Verwendung von Funktionen zu sammeln mit der Definition
und Verwendung von Funktionen zu Im folgenden Video werden
wir einige weitere
Funktionen erstellen, um eine Vorstellung davon zu bekommen, wie und wann wir sie in unseren Programmen
effektiv einsetzen
46. Benutzerdefinierte Funktionen – geführte Beispiele: Jimmy und Pike
haben jetzt den ersten Tag
ihrer fünftägigen Wanderung hinter Während sie sich am Lagerfeuer
niederlassen, lassen
sie das Abenteuer des
Tages Revue passieren Jamie vertraut Pike an, dass
die Tageswanderung schwieriger
war als erwartet Sie verbringen deutlich
mehr Zeit auf dem Trail und konsumieren mehr
Nahrung,
als Pike ursprünglich vorhergesagt hatte Um sicherzugehen, dass sie genug Energie
und Vorräte
hat , um die Reise zu beenden, würde
Jimmy gerne bessere Schätzungen
für den Rest
ihrer Reise
einholen für den Rest
ihrer Reise
einholen Pike möchte gerne helfen und
bereitet sich darauf vor,
seine Prognoseberechnungen auf der
Grundlage von Jamies Angaben zu verfeinern seine Prognoseberechnungen auf der
Grundlage von Jamies Während wir ihn
dabei begleiten, werden
wir sehen, wie Funktionen die Organisation und Lesbarkeit von Code
optimieren können Code
optimieren Um
genauere Schätzungen zu erstellen, wird
Pike Daten
über die Entfernung, die
Temperatur und den
Schwierigkeitsgrad der Wanderung in seine Berechnungen einbeziehen Temperatur und den
Schwierigkeitsgrad Beginnen wir mit der Schätzung der voraussichtlichen Dauer
der Wanderung. Unter typischen Bedingungen
hält Jamie ein gleichmäßiges Tempo
von 3 Meilen pro Stunde ein, was als Grundlage
für die Berechnung der Wanderdauer dient für die Berechnung der Wanderdauer Herausforderndes Gelände oder
hohe Temperaturen können
Jamies Fortschritt jedoch hohe Temperaturen können erheblich verlangsamen Um diese Variablen zu berücksichtigen, müssen
wir
Anpassungsfaktoren berechnen und
unsere Basisschätzung ändern Lassen Sie uns nun
den gesamten
Kalorienverbrauch einer Wanderung berechnen . Als Ausgangswert verbrennt Jamie bei ungefähr 160 Kalorien pro typischen
Wanderbedingungen
ungefähr 160 Kalorien pro
Stunde Allerdings erhöht das herausfordernde
Gelände Jamies Energieleistung, sodass wir
diese Basisrate anpassen müssen Um den
Gesamtkalorienverbrauch zu berechnen, modifizieren
wir zunächst die stündliche
Kalorienverbrennungsrate auf der
Grundlage der Geländeschwierigkeit multiplizieren diese angepasste Rate
dann mit der geschätzten Wanderdauer Lassen Sie uns abschließend unsere Schätzungen
in einem übersichtlichen, benutzerfreundlichen Format
präsentieren . Fantastisch. Wenn wir unseren Code ausführen, generiert
er genaue
Schätzungen für die morgige Wanderdauer und den entsprechenden
Energieverbrauch, den Jamie erwarten kann Und das ist die gewünschte Ausgabe. Das ist gut.
Die derzeitige Struktur unseres Kodex lässt jedoch
Verbesserungspotenzial in Bezug auf Klarheit
und Organisation zu. Wir haben bereits erwähnt, dass unser
Codeblock drei
verschiedene Aufgaben erfüllt. Er berechnet die Dauer der Wanderung, berechnet Jamies
Energieverbrauch
und druckt die Ergebnisse und druckt Um die
Lesbarkeit unseres Codes zu verbessern, werden wir ihn
umgestalten, indem wir die drei Hauptaufgaben in separate Funktionen kapseln . Dieser modulare Ansatz wird den
Ablauf des
Codes verdeutlichen Beginnen wir mit der Erstellung
einer Funktion namens Calc Hours, mit der die für die Wanderung benötigte
Zeit geschätzt Die Funktion Calc Hours
akzeptiert drei Parameter. Entfernung: Länge
der Wanderung in Meilen, Temperatur, Umgebungstemperatur in
Fahrenit und Schwierigkeitsgrad
des Geländes, Bewertung
der
Terranzenschwierigkeit auf einer Skala von 1—3 Im Hauptteil der Funktionen kopieren
wir die entsprechenden
Codezeilen, um die Dauer der Wanderung zu berechnen In der letzten Zeile des
Funktionstextes wurde ursprünglich der Variablen angepasste Stunden
der Rückgabewert zugewiesen. Diese Zuweisung
ist jedoch unnötig. Stattdessen können wir
PyTon direkt anweisen , das
berechnete Ergebnis zurückzugeben Durch den Wegfall der
Zwischenvariablenzuweisung haben
wir unseren Code
übersichtlicher und effizienter gestaltet Wenn diese Funktion definiert ist, können
wir den
ersten Codeblock mit
einem einzigen Aufruf der Funktion
calc hours vereinfachen einem einzigen Aufruf der Funktion
calc hours Beachten Sie, dass
wir beim Aufruf
der Funktion Calc Hours Variablen
mit den Werten zehn,
75 und zwei als
Argumente übergeben haben 75 und zwei als , anstatt
die Werte selbst zu übergeben Wenn Variablen als Argumente
verwendet werden, übergibt
Biton die Werte, die
die Variable enthält, an die Funktion und weist diese Werte den entsprechenden
Funktionsparametern zu Hier ist es wichtig zu
verstehen, dass die im
Funktionsaufruf verwendeten
Variablennamen nicht mit
den Parameternamen in
der Funktionsdefinition übereinstimmen müssen den Parameternamen in
der Funktionsdefinition Wenn wir beispielsweise
den Parameter temp in der
Funktionsdefinition in
temperature umbenennen den Parameter temp in der
Funktionsdefinition in
temperature ,
funktioniert die Funktion calc hours
immer noch wie vorgesehen, wenn sie mit
der Variablen temp
als Argument aufgerufen wird der Variablen temp
als In diesem Fall wird beim Aufruf der Funktion Calc
Hours
der Wert, der der
Variablen temp zugeordnet ist, an die Funktion übergeben und
dem Parameter temperature zugewiesen Großartig. Wir werden jetzt einen ähnlichen Ansatz
für die Berechnung der verbrannten Kalorien verfolgen. Wir definieren zunächst die
Kalorienfunktion, die die
Dauer der Wanderung in
Stunden und den Schwierigkeitsgrad
des Geländes als Eingaben verwendet. Dann kopieren wir den Codeblock
zur Kalorienberechnung in den Hauptteil der Funktion und schreiben die entsprechende
Rückgabeanweisung. Schließlich ersetzen wir
den zweiten
Codeblock durch einen Aufruf der Calc-Calories-Funktion Beachten Sie, dass der Aufruf der
Calc-Calories-Funktion die
Ausgabe der
Calc-Hours-Funktion als Eingabe verwendet Daher müssen wir
die Funktion „Stunden berechnen“ aufrufen , bevor wir die Funktion „Kalorien
berechnen“
aufrufen Um die
Überarbeitung unseres Codes abzuschließen, erstellen
wir eine dritte Funktion
namens print results, die die Ausgabe anzeigt Diese Funktion verwendet die
berechneten Stunden und Kalorien als Eingaben und druckt
diese Mengen in einem benutzerfreundlichen Format aus. Beachten Sie, dass der einzige Zweck dieser Funktion darin besteht, die Ausgabe
zu drucken, sodass wir die Funktion nicht benötigen,
um einen Wert zurückzugeben. Daher lassen wir die
Rückgabeerklärung weg. Schließlich ersetzen wir
den Ausgabecode durch den Funktionsaufruf „Ergebnisse drucken Großartig. führen
wir ihn aus, um sicherzustellen,
dass wir immer noch dieselben Ausgaben erhalten Nachdem wir unseren Code
überarbeitet haben, führen
wir ihn aus, um sicherzustellen,
dass wir immer noch dieselben Ausgaben erhalten
.
Und das tun wir tatsächlich Aber mit diesen Änderungen haben
wir
die Struktur unseres Codes erheblich verbessert. Durch die Aufteilung unserer Programmlogik in separate, fokussierte Funktionen haben
wir mehrere Vorteile erzielt. Prägnanz. Der Hauptteil des
Programms, Ausnahme der
Funktionsdefinitionen ist erheblich
kürzer. Lesbarkeit Jede Funktion hat eine klare, einzigartige Verantwortung, die unabhängig geprüft werden
kann Verständlichkeit: Der gesamte Arbeitsablauf des
Programms ist jetzt leichter zu In unserer neuen
Codestruktur sind die drei
Hauptaufgaben, die
ausgeführt werden, klar abgegrenzt: die
Berechnung der Wanderzeit, die
Bestimmung des Energieverbrauchs und das Drucken Im Gegensatz dazu erforderte die Unterscheidung
dieser Aufgaben in der Originalversion des Codes mehr
Aufwand
und Pike implementiert die
angeforderten Änderungen
an seiner Prognosefunktion Zur Zufriedenheit von Jamie wird
es in Zukunft in der Lage sein,
genauere Schätzungen
für Dauer und
Kalorienverbrauch zu liefern genauere Schätzungen
für Dauer und Kalorienverbrauch In den letzten beiden Videos
haben wir Situationen untersucht, in denen benutzerdefinierte Funktionen
die Qualität und
Struktur unseres Codes verbessert die Qualität und
Struktur unseres Codes In den folgenden Übungen werden
Sie
zwei wichtige Fähigkeiten üben. Erstens: Identifizieren Sie
Situationen, in denen benutzerdefinierte Funktionen hilfreich
sind, und bestimmen Sie zweitens
den Umfang und die Zuständigkeiten der von Ihnen definierten
Funktionen.
47. Benutzerdefinierte Funktionen Übungen: In dieser Arbeitsmappe haben Sie
mehrere benutzerdefinierte Funktionen
zur Beantwortung verschiedener
finanzieller Fragen erstellt mehrere benutzerdefinierte Funktionen zur Beantwortung verschiedener
finanzieller Anschließend verwenden Sie diese Funktionen,
um finanzielle
Probleme für Kunden zu lösen Lassen Sie uns die Lösungen besprechen. In der ersten Übung wurden wir
gebeten, eine Funktion zu schreiben die die monatliche
Kreditzahlung anhand der Parameter,
des
Kreditbetrags, des jährlichen
Zinssatzes
und der Anzahl der Jahre
für die Rückzahlung des Kredits berechnet Kreditzahlung anhand der Parameter,
des
Kreditbetrags, des jährlichen
Zinssatzes und der Anzahl der Jahre
für die Rückzahlung des Zu diesem Zweck verwenden wir
die drei angegebenen Gleichungen, die drei angegebenen Gleichungen um den
monatlichen Zinssatz, die
Anzahl der Zahlungen und schließlich
den monatlichen Zahlungsbetrag zu berechnen Anzahl der Zahlungen und schließlich
den monatlichen Zahlungsbetrag den monatlichen Zahlungsbetrag Beachten Sie, dass der monatliche
Zinssatz und die Anzahl der Zahlungen in der
monatlichen Zahlungsgleichung verwendet werden. Sie müssen
also berechnet werden, Sie müssen
also berechnet werden bevor wir
die monatliche Zahlung bestimmen können. Wenn wir die Funktion verwenden, um die Kreditzahlung für ein Darlehen in
Höhe von 10.000$ zu einem jährlichen
Zinssatz von 5% über einen Zeitraum von 30 Jahren zu
berechnen , erhalten
wir eine monatliche
Kreditzahlung von 536,82$ In Übung zwei haben wir
eine Funktion geschrieben, mit der die Ersparnisse
eines Kunden bei der Pensionierung
anhand des anfänglichen
Sparbetrags, des
jährlichen Beitrags,
der jährlichen Rendite
und der Anzahl der Jahre bis zur Pensionierung geschätzt Ersparnisse
eines Kunden bei der Pensionierung
anhand des anfänglichen
Sparbetrags, des
jährlichen Beitrags, der jährlichen Rendite
und der Anzahl der Jahre bis zur Pensionierung In dieser Funktion erstellen wir
zunächst eine neue Variable, die
Gesamtersparnisse, und setzen sie den anfänglichen Ersparnissen
gleich. Als Nächstes erstellen wir eine vierfache Schleife, die sich im Laufe der Jahre
bis zur Pensionierung wiederholt. Dabei wird die Variable für die
Gesamtersparnisse
erhöht, indem den jährlichen Beitrag addieren
und die Investition mit der jährlichen
Rate Im Loop-Header erstellen
wir einen
Zahlenbereich von Null bis
zum Jahresparameter Dieser Bereich stellt sicher
, dass die Schleife
genau einmal pro Jahr wiederholt wird,
bis der Client in den Ruhestand geht Darüber hinaus
verwenden wir einen Platzhalter als Iterationsvariable, da wir
diesen Wert nicht im
Hauptteil der Schleife verwenden werden diesen Wert nicht im
Hauptteil der Innerhalb des Regelkreises erhöhen
wir zunächst die Gesamtersparnisse um den jährlichen Dann erhöhen wir die Gesamtersparnisse über ein Jahr um die Rendite solche Steigerung der
Altersvorsorge bedeutet, dass wir das einer
Investition im Laufe der Zeit
angemessen berücksichtigen Gesamtwachstum einer
Investition im Laufe der Zeit
angemessen berücksichtigen
. Nachdem der Kreislauf
abgeschlossen ist, geben wir den endgültigen
Gesamtbetrag der Ersparnisse zurück
, der den Wert der Ersparnisse
des Anlegers zum Zeitpunkt
der Pensionierung enthält . Schließlich verwenden wir die Funktion,
um die Altersvorsorge
eines Kunden mit einer
Anfangsinvestition von 10.000$
zu berechnen eines Kunden mit einer
Anfangsinvestition von 10.000$ , der in 30 Jahren in Rente gehen möchte Bei einem jährlichen Beitrag von 5.000 USD und einer erwarteten
Rendite von 5% belaufen sich
ihre Altersvorsorge Da wir Schlüsselwortargumente verwendet
haben, konnten wir die Werte
in
einer anderen Reihenfolge als in der Funktion angegeben an die Funktion übergeben einer anderen Reihenfolge Dadurch ist der
Funktionsaufruf besser lesbar, da wir wissen, wofür jeder Wert innerhalb der Funktion
steht. In Übung drei haben wir eine Funktion
geschrieben, um das Wachstum einer Investition anhand
des
Investitionsbetrags , der Anzahl der Jahre denen die Investition wachsen
darf,
und der erwarteten
jährlichen Wachstumsrate zu prognostizieren. In der Kopfzeile der Funktion
haben wir diese jährliche Wachstumsrate
optional gemacht, haben wir diese jährliche Wachstumsrate
optional gemacht indem wir einen
Standardparameter verwendet haben. Dann haben wir
den zukünftigen Wert
der Anfangsinvestition
anhand der angegebenen Gleichung berechnet . Schließlich geben wir diesen Wert zurück. Wenn wir eine Funktion ohne
jährliche Rendite aufrufen, verwendet
sie die Standardrate von 7%. Wenn
wir jedoch eine Rate angeben, verwendet
die Funktion diese Rate
anstelle der Standardrate von 7%. In Übung vier
mussten wir eine
Funktion schreiben, die anhand der
monatlichen Einnahmen und
einer Liste
der monatlichen Ausgaben eine Budgetanalyse durchführt einer Liste
der monatlichen Ausgaben eine Budgetanalyse . Zunächst berechnet die Funktion die monatlichen Gesamtausgaben, indem sie
die Elemente
der Ausgabenliste
summiert Dann subtrahiert sie
die Gesamtausgaben von den monatlichen Einnahmen, um
festzustellen, ob der Kunde
einen Überschuss zu sparen hat oder ein Defizit
aufweist Die Funktion gibt zwei Werte zurück Betrag
der Einsparungen oder des Defizits
und die Gesamtausgaben In diesem Fall ist die Rückgabe von
zwei Werten
angemessen, da die
Werte eng miteinander verknüpft sind und sich diese Funktion
auf eine einzelne Aufgabe konzentriert. Wenn Sie jedoch
mehrere Werte zurückgeben
, die in
einer Funktion berechnet wurden, die
mehrere Aufgaben ausführt, ist
es besser, diese Funktion
in kleinere Funktionen mit einem einzigen
Zweck
aufzuteilen . Wenn wir diese Funktion verwenden, um das Budget eines Kunden mit einem monatlichen Einkommen von
4.000$
und diesen Ausgaben zu analysieren ,
werden sowohl ein
Überschuss von 1.550$ als auch ein monatlicher Ausgabenbetrag von 2.450$ zurückgegeben 1.550$ als auch ein monatlicher Ausgabenbetrag von 2.450$ In Übung fünf haben wir
eine Funktion geschrieben, die
eine nicht spezifizierte Anzahl von
Ausgabenkategorien anhand beliebiger Schlüsselwortargumente analysiert eine nicht spezifizierte Anzahl von Ausgabenkategorien Beliebige Schlüsselwortargumente
ermöglichen es dem Funktionsaufrufer, beliebig viele
Schlüsselwortargumente an eine Funktion
zu übergeben eine Funktion
zu Diese Schlüsselwortargumente werden in einem Wörterbuch
namens expenses
gesammelt Das bedeutet, dass wir
Wörterbuchmethoden wie Werte
und Elemente verwenden können , um
Operationen im
Ausgabenwörterbuch durchzuführen . Innerhalb der Funktion summieren wir
zunächst alle Werte
im Ausgabenwörterbuch im Ausgabenwörterbuch , um die Gesamtkosten zu berechnen. Dann wiederholen wir
jedes Schlüsselwertpaar und
drucken den Namen der Kategorie, den Betrag und den
prozentualen Anteil der Kategorien an den Gesamtausgaben aus Schließlich geben wir den
Gesamtbetrag der Ausgaben für die Verwendung außerhalb der Funktion Wenn wir diese
Funktion aufrufen, um die Liste der Miet-,
Lebensmittel-, Nebenkosten
- und
Unterhaltungskosten
eines Kunden zu analysieren , erhalten wir
diese Aufschlüsselung der Ausgaben und die
Gesamtkosten in Höhe von 950$ Schließlich verwenden
wir in Übung sechs die Funktionen, die wir
entwickelt haben, um einigen Kunden zu helfen In Teil A haben wir John bei der
Durchführung einer Budgetanalyse geholfen. Wir haben sein monatliches
Einkommen und die Liste seiner
monatlichen Ausgaben an unsere
analysierte Budgetfunktion weitergeleitet , die den
Überschuss- oder Defizitbetrag
und die monatlichen Gesamtausgaben zurückgab . John hat einen monatlichen
Überschuss von 3.750$
sowie ein monatliches Einkommen von 6.000$, um
seine
monatlichen Ausgaben in Höhe von 2.250$ zu decken seine
monatlichen Ausgaben in Höhe von 2.250$ In Teil B analysieren wir dann
Johns monatliches Budget, nachdem wir Johns monatliches Budget, nachdem Hypothekenzahlungen berücksichtigt Zu diesem Zweck haben wir zunächst
unsere Funktion zur Berechnung der
Kreditzahlung aufgerufen und Johns
Kreditdetails als Argumente
übergeben Diese Funktion gibt
die monatliche
Kreditzahlung zurück und wir geben sie aus. Dann haben wir diese
Hypothekenzahlung bei
Johns monatlichen Ausgaben berücksichtigt , indem sie an die
monatliche
Ausgabenliste angehängt Als Nächstes haben wir unsere analysierte
Budgetfunktion mit
Johns monatlichem Einkommen und
aktualisierten monatlichen Ausgaben aufgerufen Johns monatlichem Einkommen und
aktualisierten monatlichen Diese Funktion gibt
die Höhe der Ersparnisse oder des
Defizits und die monatlichen
Gesamtausgaben von John zurück . John hat eine monatliche
Hypothekenzahlung von 432,25$. Und basierend auf seinen
Einnahmen und Ausgaben hat
er einen monatlichen Überschuss von 2.317,75 USD In Teil C mussten wir Maria
bei der Berechnung
ihrer Altersvorsorge helfen Zu diesem Zweck haben wir
unsere Funktion „
Altersvorsorge berechnen“ aufgerufen und ihre Daten
als Schlüsselwortargumente übergeben. Hier ermöglicht uns
die Verwendung von
Schlüsselwortargumenten die Argumente
in beliebiger Reihenfolge zu übergeben. Auf der Grundlage von Marias Angaben zur
Pensionierung gehen
wir davon aus, dass sie zum
Zeitpunkt ihrer Pensionierung über Ersparnisse in Höhe von
376.083,52$ verfügen wird Zeitpunkt ihrer Pensionierung über Ersparnisse in Höhe von
376.083,52$ In Teil D haben wir Lisa dabei geholfen, ihre Ausgaben nachzuverfolgen. Wir haben unsere
Funktion „Ausgaben analysieren“ genannt und jede der Ausgabenkategorien
von Lisa als willkürliche Schlüsselwortargumente übergeben. Wir haben jedem Argument explizit einen
Namen zugewiesen, da diese Namen zu
den Schlüsseln des
Ausgabenwörterbuchs innerhalb der Funktion werden . Diese Funktion druckt dann die Aufschlüsselung der
Ausgabenkategorien aus. Schließlich haben wir
Alex in Teil E dabei geholfen, das Wachstum seines Erbes zu prognostizieren und
seine Ausgaben und sein monatliches Budget zu analysieren . Zunächst haben wir die Wachstumsfunktion unseres Projekts
aufgerufen, um zu berechnen, dass Alex' Erbschaft in Höhe von
10.000$ 27.590,32$ wert sein
wird bei einer jährlichen
Wachstumsrate von 7%
in 15 Jahren Zweitens haben wir die
Ausgaben von Alex analysiert, indem wir jede seiner Ausgabenkategorien
als willkürliche Schlüsselwortargumente in unsere Funktion für analysierte Ausgaben unsere Funktion für analysierte Ausgaben eingegeben haben, genau wie
in Teil D. Drittens, um Alex' Budget zu analysieren, haben wir unsere
Funktion Analysiertes Budget aufgerufen und die monatlichen Einnahmen von
Alex und
die Gesamtausgaben, die wir
im vorherigen Funktionsaufruf erhalten haben, übergeben monatlichen Einnahmen von
Alex und die Gesamtausgaben, die wir
im vorherigen Funktionsaufruf erhalten haben . Da die analysierte
Budgetfunktion eine Liste von Ausgaben
erwartet, haben wir die Ganzzahl der
Gesamtausgaben in eine Liste umgewandelt. Schließlich haben wir
Alex' Budgetanalyse angezeigt. Fantastisch. Jetzt haben Sie das Erstellen und Aufrufen von
benutzerdefinierten Funktionen und mehrere
andere wichtige Funktionskonzepte gelernt. Als Nächstes werden wir uns mit
dem Thema Namespace und
Geltungsbereich befassen und
etwas mehr Übung mit benutzerdefinierten Funktionen sammeln
48. Namespace und Umfang: Nachdem wir nun etwas Übung
beim Schreiben unserer eigenen
benutzerdefinierten Funktionen gesammelt haben,
wollen wir uns noch einmal mit einem Problem befassen, das
wir zuvor beim Schreiben unserer eigenen
benutzerdefinierten Funktionen gesammelt haben, wollen wir uns noch einmal mit einem Problem befassen, das kurz angesprochen Als wir dem Architekten dabei halfen, die Fläche
eines Gebäudes mithilfe der Funktion für
rechteckige Flächen zu
berechnen , stellten
wir fest, dass auf die
Flächenvariable von
außerhalb der Funktion,
in der sie definiert ist,
nicht zugegriffen werden konnte von
außerhalb der Funktion,
in der sie definiert ist,
nicht zugegriffen werden außerhalb der Funktion,
in der sie definiert ist In diesem Video erklären wir,
warum wir diesen Fehler bekommen haben. Dazu müssen wir zwei
neue Programmierkonzepte untersuchen:
Namespaces und Scope. Diese Ideen bauen direkt auf dem Begriff der Variablen auf, den
wir bereits untersucht haben. Lassen Sie uns zunächst einen kurzen Überblick
über diesen Begriff geben. Beginnen wir mit einem
Basisprogramm, das
die Fläche eines Rechtecks berechnet ,
ohne eine Funktion zu verwenden Dieses Programm weist zunächst mehreren Variablen
Werte zu, die die Länge,
Breite und
Maßeinheiten des Rechtecks
darstellen ,
Breite und
Maßeinheiten des Dann berechnet es die Fläche
des Rechtecks und druckt das Ergebnis
mit der richtigen Einheit Wie Sie bereits wissen, werden, wenn PyTon die ersten
Zeilen dieses Programms ausführt, vier Variablen erstellt
und ihnen Werte zugewiesen Hinter den Kulissen
passiert jedoch noch mehr. Wenn PyTon
Variablenzuweisungen ausführt, fügt
es die Variable zu
einer Struktur hinzu, die als globaler Namespace bezeichnet wird Sie können sich einen Namespace
als einen beschrifteten Container vorstellen, der die Namen von Variablen und
Funktionen
enthält , die
während der Ausführung erstellt wurden, sodass PyTon sie effizient verwalten und darauf zugreifen In unserem Programm für rechteckige Bereiche fungiert
der globale Namespace
als primärer Container, der alle
Variablen enthält,
die wir erstellt haben, Länge mit Einheit Auf Variablen, die im
globalen Namensraum gespeichert sind, kann während der Ausführung
eines Programms überall
zugegriffen werden während der Ausführung
eines Programms überall
zugegriffen Dadurch können wir sie für Berechnungen
und Ausgaben
frei verwenden . In einem einfachen Programm
wie diesem, das keine Funktionen verwendet, genügt
es zu verstehen wie der globale Namespace funktioniert Da Programme jedoch immer komplexer
werden, organisieren
wir unseren
Code oft in Funktionen Lesbarkeit
und Wiederverwendbarkeit
zu verbessern Die Einführung
benutzerdefinierter Funktionen verändert die Art und Weise, wie auf Variablen
zugegriffen und sie
in einem Programm verwaltet werden zugegriffen und sie
in einem Programm verwaltet Sehen wir uns an, wie durch die Nachverfolgung der
Ausführung dieses Programms, wenn die erste Codezeile
ausgeführt wird, der Variableneinheit der Wert Fuß
zugewiesen wird Da diese Zuweisung innerhalb
des Hauptprogramms
erfolgt , die Variableneinheit wie zuvor im globalen
Namensraum mit einem
Stern In der folgenden Codezeile stößt
PTN auf die Definition
der Funktion für rechteckige Bereiche Bei der Ausführung
wird der Name der
Funktion im
globalen Namespace gespeichert Da die Funktion für den rechteckigen
Bereich nun
Teil des globalen
Namespaces ist ,
kann auf diese Funktion, wie auf die Unit-Variable, wie auf die Unit-Variable, für den
Rest
der Ausführung überall im Programm zugegriffen werden für den
Rest
der Ausführung überall im Programm Ein erster Funktionsaufruf folgt der Definition
der Funktion Ganz zu Beginn
dieses Funktionsaufrufs weist
PyTon den
Variablen land und width den Wert 100 bzw.
140 zu Okay. Aber wo im Namensraum wird PyTon diese beiden Variablen
speichern Hier wird es
interessant. Wenn Variablen
innerhalb einer Funktion erstellt werden, speichert
PyTon sie nicht
im globalen Namespace Nein, stattdessen
erstellt PTN einen neuen Namespace, der der Funktion
zugeordnet ist, der als lokaler Namespace der
Funktion bezeichnet wird . Im lokalen
Namespace der Funktionen werden
die Variablen Länge
und Wie wir gleich
sehen werden, trägt diese Trennung der Namensräume dazu bei,
Namenskonflikte zu vermeiden und ermöglicht es Funktionen, ihre
eigenen privaten Variablen zu haben Sobald die Argumente zugewiesen
wurden, berechnet
PTN die
Fläche des Rechtecks Da Piton gerade
den Hauptteil der Funktion ausführt, die privaten Variablen length
und width zugänglich Das Ergebnis der
Berechnung wird dann dem variablen Bereich
zugewiesen Da die Zuweisung nun im Hauptteil der Funktion für den
rechteckigen Bereich
erfolgt , wird
der Variablenbereich auch dem lokalen Namespace der
Funktion hinzugefügt und nicht dem globalen Namespace Das wird später wichtig. Bei der Ausführung der letzten
Zeile des Funktionstextes druckt
PyTon den Inhalt
der Variablen area und unit Denken Sie daran, dass auf Variablen
im globalen Namespace von
überall im Programm zugegriffen
werden kann, auch während der
Ausführung eines Funktionsaufrufs Nachdem nun alle
Codezeilen der Funktion ausgeführt wurden, schließt das Programm
die Ausführung des
Funktionsaufrufs ab, indem es
den lokalen Namensraum zusammen mit seinem Inhalt verwirft und
zum Hauptprogramm zurückkehrt Zu diesem Zeitpunkt
enthält der
globale Namensraum des Programms nur die Variableneinheit
und den rechteckigen Bereich der Funktion Genau aus diesem Grund erhielten
wir
im vorherigen Video eine
Fehlermeldung, als wir versuchten, den Bereich mit den Rechtecken
von außerhalb der Funktion zu drucken Wie Sie sehen können, wurde zu
diesem Zeitpunkt der Codeausführung
der Variablenbereich
verworfen, sodass wir ihn nicht verwenden können Wenn unser Programm
den zweiten Funktionsaufruf ausführt, wiederholt
Python
dieselben Schritte wie zuvor Zunächst wird ein neuer lokaler
Namespace erstellt. Als Nächstes werden die Argumente den
entsprechenden Variablen
zugewiesen Die Berechnung wird durchgeführt
und die Ausgabe wird gedruckt. Schließlich
wird der lokale Namensraum wieder verworfen. Fantastisch. Nachdem wir das Konzept
der Namensräume eingeführt haben, wollen wir nun etwas
mehr Terminologie hinzufügen. Variablen,
die im globalen Namensraum gespeichert sind , werden globale Variablen
genannt. Variablen, die in
einem lokalen Namespace gespeichert sind, werden dagegen
als lokale Variablen bezeichnet. Da globale Variablen überall
in einem Programm
zugänglich sind , sagen
wir, dass sie einen globalen Gültigkeitsbereich
haben. Andererseits
sind
lokale Variablen nur innerhalb
der Funktion zugänglich , in der
sie definiert sind. Wir sagen also, dass sie einen lokalen Geltungsbereich
haben. Die Begriffe Namespaces
und Geltungsbereich sind zugegebenermaßen abstrakter als die
anderen Programmierkonzepte, die wir bisher in diesem Kurs behandelt haben Im nächsten Video werden
wir versuchen,
diese Begriffe anhand einiger Beispiele zu konkretisieren .
49. Namespace und gelenkte Beispiele: Am Ende
des zweiten Tages ihrer fünftägigen Wanderung stoßen
Jamie und Pike auf eine kleine rechteckige
Lichtung im Wald Jamie erwägt, dort ihr Lager aufzuschlagen, macht sich
aber Sorgen, dass es nicht genug Freiraum zum
Entspannen geben
wird, sobald sie ihr
Zelt aufgeschlagen und ein Lagerfeuer
angezündet ihr Lager aufzuschlagen, macht sich
aber Sorgen, dass es nicht genug Freiraum zum
Entspannen geben
wird haben. Angesichts der Sorge um den Platz bittet
Jamie Pike, herauszufinden, ob die Lichtung
die 40
Quadratfuß an freiem Platz bietet, die sie benötigen Um Jamies
Frage in bTon zu beantworten, erstellen
wir zunächst eine Funktion,
die die Fläche
eines Rechtecks anhand seiner Länge und Breite berechnet . Mit dieser Funktion
können wir dann die Fläche der Lichtung und die Fläche
des
Zeltes berechnen Lichtung und die Fläche
des
Zeltes Als Nächstes erstellen wir
eine weitere Funktion, die die Fläche eines
Kreises anhand seines Radius
berechnet Wir rufen dann diese Funktion auf, um die Fläche des
Lagerfeuers zu berechnen Schließlich subtrahieren wir von der berechneten
Fläche die Zeltfläche und die Lagerfeuerfläche , um
den verbleibenden freien Platz zu ermitteln, und drucken das
Ergebnis aus Das ist alles gut. Beachten Sie jedoch, dass wir
den Bereich für Variablennamen verwendet haben, um die Ergebnisse
unserer Berechnungen
in beiden Funktionen zu speichern . Können wir das wirklich tun? Kann derselbe
Variablenname in
zwei verschiedenen Funktionen verwendet werden oder könnte dies zu
Konflikten bei der Ausführung führen? Lassen Sie uns die Ausführung des
Programms verfolgen , um zu sehen, ob dies zu einem Problem führt. Wenn die erste Codezeile
ausgeführt wird, liest
PyTon die Definition
der rechteckigen Bereichsfunktion und fügt den Namen der Funktion dem globalen Namespace
hinzu PyTon liest dann die Definition der
Kreisflächenfunktion und fügt sie auch
dem globalen Namespace hinzu Nach der Definition
unserer beiden Funktionen geht
BTN zum ersten Funktionsaufruf für
rechteckige Bereiche über Wie Sie bereits wissen, erstellt
PTN beim Aufruf
der
Funktion für rechteckige Bereiche einen lokalen
Namensraum, Aufruf
der
Funktion für rechteckige Bereiche einen lokalen
Namensraum, in dem die Argumente zehn und 12
den Parametern length
bzw. width zugewiesen werden den Parametern length
bzw. width Darüber hinaus weist
Biton während der Ausführung der
Funktionen das Ergebnis
der Flächenberechnung dem variablen Bereich im lokalen Namensraum der
Funktion zu variablen Bereich im lokalen Namensraum der
Funktion Der Funktionsaufruf
endet damit, dass
der Wert des
Variablenbereichs an den aufrufenden Punkt zurückgegeben der Wert des
Variablenbereichs an den aufrufenden Da es
in jedem der Namensräume nur
eine Bereichsvariable gibt, besteht keine mögliche
Verwirrung darüber,
welche Bereichsvariable zurückgegeben werden
soll. Sobald die Return-Anweisung ausgeführt
wurde, werden alle Variablen im Namensraum
des rechteckigen Bereichs gelöscht und ein neuer globaler
Variablen-Löschbereich wird erstellt, in dem der Rückgabewert der
Funktion gespeichert wird. Bei der Ausführung
des nächsten Funktionsaufrufs für rechteckige
Bereiche erstellt
Biton einen neuen Namespace für
rechteckige Bereiche der
die
Funktionsparameter enthält Die Fläche des Zeltes
wird dann berechnet und in einer
neuen Flächenvariablen gespeichert Dann gibt Python den
Wert der Bereichsvariablen zurück. Da es in
jedem der Namensräume wieder nur eine Bereichsvariable
gibt, besteht keine mögliche Verwirrung darüber welche
Bereichsvariable zurückgegeben werden soll. So weit, so gut. Wenn die Funktion zurückkehrt, alle Variablen im
Namespace
des werden
alle Variablen im
Namespace
des rechteckigen Bereichs zerstört und eine neue globale Variable tent area wird erstellt, um den Rückgabewert der
Funktion zu speichern Schließlich ruft Piton
die
Funktion „Kreisfläche“ auf, um die
Fläche des Lagerfeuers zu berechnen Hier wird ein neuer lokaler Namensraum für eine Kreisflächenfunktion mit dem
Umkreisradius
erstellt PyTon berechnet dann die
Fläche des Kreises und weist sie einer neuen
lokalen Variablenfläche zu Wenn Pyton
am Ende
der Ausführung der
Funktion die berechnete Fläche
zurückgibt , gibt es wieder nur einen Variablennamenbereich
in einem der Namensräume Somit besteht
keine mögliche Verwirrung darüber, welcher Wert an das Programm
zurückgegeben werden soll Die Quintessenz hier ist dies. Bei der Definition von Funktionen können wir dieselben
Variablennamen problemlos
wiederverwenden. Lokale Variablen befinden sich in ihrem Funktionsnamensraum und sterben, wenn die
Ausführung abgeschlossen ist. Dies garantiert, dass es nicht zu
Namenskonflikten kommt, wenn wir
dieselben Variablennamen
in mehreren Funktionen verwenden . Beachten Sie, dass dieses Prinzip auch
für Parameternamen gilt. Wir können Parameternamen
für mehrere Funktionen wiederverwenden. In den Übungen werden
wir sicherstellen, dass die Wiederverwendung von Parameternamen keine Probleme in unserem Code verursacht Verlassen Sie sich vorerst einfach
auf mein Wort. Fantastisch. Nachdem wir diese
Beobachtung hinter uns haben, beenden
wir die Suche nach dem Code. Wenn die
Funktion Circle Area zurückkehrt, wird
ihr Namensraum zerstört und der
Rückgabewert wird in
der globalen Variablen
campfire area gespeichert der globalen Variablen
campfire Schließlich berechnet
PyTon anhand der
drei Bereichsvariablen den freien
Speicherplatz und gibt das Großartig. Wenn Jamie und Pike ihr Zelt und ihr
Lagerfeuer auf dieser Lichtung
aufstellen, haben
sie fast 49
Quadratfuß Freiraum, was mehr als genug ist Während sie Cam aufstellen, um
sich nach einem anstrengenden
Wandertag zu entspannen, werden
wir im Laufe der Zeit daran arbeiten, unser Verständnis von
Namenskonflikten zu vertiefen Wie wir gerade gesehen haben,
können
verschiedene Funktionen problemlos dieselben
lokalen Variablennamen verwenden , da
jeder Funktionsaufruf seinen eigenen Namespace
erstellt Wir haben jedoch nicht
besprochen, was passiert , wenn eine globale Variable
denselben Namen wie
eine lokale Variable hat denselben Namen wie
eine lokale Variable Lassen Sie uns zum Beispiel
die Variable
Clearing Area im Hauptprogramm in Area umbenennen . Dieser Bereich existiert sowohl als
lokale als auch als globale Variable Wie wird sich PyTN verhalten? Um das herauszufinden, verfolgen wir
die Ausführung unseres Codes. Wie zuvor
beginnt PyTN damit,
die
Funktionsdefinitionen zu lesen und
die Funktionsnamen
im globalen Namespace zu speichern die Funktionsnamen
im globalen Namespace Dann führt es den
ersten Funktionsaufruf aus und
erstellt den rechteckigen
Bereich, den lokalen Namespace Innerhalb der Funktion für den rechteckigen
Bereich berechnet
PyTon die Fläche
und speichert die Berechnung innerhalb des lokalen
Variablenbereichs.
Der Wert der Bereichsvariablen wird
dann an
der Stelle zurückgegeben, an der die Zu diesem Zeitpunkt gibt es in
jedem der Namensräume
nur eine Bereichsvariable, sodass kein
potenzieller Konflikt besteht Wenn die Funktion zurückkehrt, alle Variablen im
Namensraum
des werden
alle Variablen im
Namensraum
des rechteckigen Bereichs gelöscht, und es
wird ein neuer globaler Variablenbereich erstellt, in dem der Rückgabewert der
Funktion gespeichert wird. Interessanterweise haben wir jetzt eine
globale Variable mit dem Namen Area. Ich wette, Sie können sehen, wohin sich die
Dinge entwickeln. Bei der Ausführung
des nächsten Funktionsaufrufs für rechteckige
Bereiche erstellt
PyTon einen neuen Namespace für
rechteckige Bereiche der
die
Funktionsparameter enthält PyTon berechnet dann
die Fläche und speichert das Ergebnis
der Berechnung
im lokalen Variablenbereich im Lassen Sie uns hier für eine Sekunde innehalten
, um die Namensräume zu untersuchen. Zwei Variablen
mit dem Namen area existieren
jetzt in unterschiedlichen
Namensräumen:
eine lokale Variable, existieren
jetzt in unterschiedlichen
Namensräumen:
eine lokale Variable, die den im aktuellen
Funktionsaufruf
berechneten Spannungsbereich enthält, und eine globale Variable die den
im vorherigen Funktionsaufruf berechneten Bereich der der beiden Variablen gibt PyTon
zurück, wenn PyTon am Ende des
aktuellen Funktionsaufrufs aufgefordert
wird
, den Wert von area zurückzugeben? Da derselbe Variablenname
verwendet wird , um auf zwei
verschiedene Werte zu verweisen, benötigt
PyTon eine Möglichkeit,
herauszufinden, welcher Wert zurückgegeben
werden soll In der Pyton-Sprache besteht
die Regel darin, die lokale Version
der Variablen zu verwenden die lokale Version
der , wenn ein potenzieller
Konflikt besteht In diesem Beispiel
bedeutet dies, dass PyTon den lokalen
Variablenbereich zurückgibt, der in
der Funktion rechteckiger Bereich erstellt wurde , und nicht den globalen Variablenbereich den
wir am Ende unseres
vorherigen Funktionsaufrufs zugewiesen haben Wenn die
Ausführung der Funktionen abgeschlossen ist, wird
der lokale
Namespace verworfen Dann ruft PyTon die Funktion
Circle Area und ein neuer lokaler
Namespace Während der Ausführung der Funktionen berechnet
Piton die
Lagerfeuerfläche und
weist das Ergebnis der lokalen Variablen area weist das Ergebnis der Auch hier gibt es zwei Bereichsvariablen
im Namensraum Eine ist lokal. Der
andere ist global. Daher gibt Pyton am Ende
der Funktionsausführung
die lokale Version der
Bereichsvariablen zurück der Funktionsausführung
die lokale Version Ende
der Funktionsausführung
die lokale Version der
Bereichsvariablen Wenn die Funktion zurückkehrt, alle Variablen im
Namensraum
des werden
alle Variablen im
Namensraum
des rechteckigen Bereichs zerstört und der Wert der lokalen
Variablen wird der globalen Variablen Campfire
Area zugewiesen In der nächsten Codezeile verwendet
Pyton den Variablenbereich, um den verbleibenden freien Speicherplatz zu berechnen Zu diesem Zeitpunkt existiert nur
die globale Version der Bereichsvariablen,
und es besteht keine Mehrdeutigkeit Schließlich druckt PTN das
Berechnungsergebnis, das dem identisch ist, was wir in unserem ersten
Überblick über den Code
erhalten haben in unserem ersten
Überblick über den Code
erhalten In den letzten beiden Videos haben
Sie gesehen, wie PTN
Namensräume verwaltet , während es , zwischen
globalen und lokalen Namensräumen zu unterscheiden Beim Schreiben
benutzerdefinierter Funktionen
ist es wichtig In der folgenden Übung werden
Sie diese Fähigkeit
üben
50. Namensraum- und Umfangübungen: In dieser Arbeitsmappe können Sie
vier verschiedene Programme nachverfolgen, um deren Ausgabe zu
ermitteln Lassen Sie uns die einzelnen
Programme aufschlüsseln, um
ihre Namensräume zu veranschaulichen und zu
verstehen, wie Logik,
Variablen und Funktionen zusammenwirken, um die endgültige Ausgabe zu erzeugen In Übung eins erinnern wir uns daran, dass wenn eine Variable nicht lokal
definiert ist, Python,
wenn eine Variable nicht lokal
definiert ist, den
globalen Namespace durchsucht, um sie zu finden Um die Ausgabe dieses
Programms zu verstehen, wollen wir sie verfolgen und
den Namespace Schritt für Schritt erstellen Zunächst liest Python die
beiden Variablenzuweisungen und die Funktionsdefinition fügt dem globalen Namespace die Namen length, width und calc wrecked area hinzu Als Nächstes
führt Python den Funktionsaufruf Calc wrecked
area aus und
erstellt so einen lokalen erstellt so einen Innerhalb der Funktion
wird
die variable Breite zum lokalen Namensraum hinzugefügt Wenn Python die Berechnung von Länge
mal Breite erreicht hat, muss
es bestimmen,
welche Werte verwendet werden sollen. Da es eine lokale
Breitenvariable gibt, verwendet
Python diese anstelle
der globalen Breite. Da es jedoch
keine lokale Längenvariable gibt, erweitert
Python seine Suche auf den globalen Namespace
und findet sie dort Denken Sie daran, dass Python auf
die globale Variable zurückgreift , wenn keine
lokale Option verfügbar ist. Daher
verwendet die Berechnung Länge gleich fünf
und Breite gleich zwei, und Breite gleich zwei, was eine Fläche von zehn ergibt Wenn die Funktion zurückkehrt, wird
der lokale Namespace zerstört und zehn wird an den
Aufrufpunkt zurückgegeben In Übung zwei haben wir gelernt, dass Funktionsparameter innerhalb
ihrer jeweiligen Funktionen als
lokale Variablen agieren innerhalb
ihrer jeweiligen Funktionen als
lokale Variablen Selbst wenn verschiedene Funktionen dieselben Parameternamen
verwenden, verursacht
dies keine Probleme, da jede Funktion ihren eigenen
unabhängigen lokalen Gültigkeitsbereich hat. Um die Ausgabe dieses
Programms zu verstehen, sollten wir sie verfolgen und
den Namespace Schritt für Schritt erstellen Zunächst liest Python beide
Funktionsdefinitionen und fügt sie dem
globalen Namespace Als Nächstes führt Python
den Funktionsaufruf Elk Triangle
Area Dadurch wird ein
lokaler Namespace für
die Funktion erstellt und ihm
die Parameter base
und height hinzugefügt die Parameter base
und height Während der Berechnung existieren
in diesem lokalen Namensraum
nur eine Basis - und eine Höhenvariable Da kein Konflikt
mit anderen Variablennamen besteht, wird
die Fläche als halb
mal fünf mal
drei berechnet , was 7,5 ergibt. Nach der Rückkehr der Funktion wird
der lokale Namespace gelöscht, aber der Rückgabewert 7.5 wird an das
Hauptprogramm zurückgegeben und angezeigt Dann führt Python den Funktionsaufruf Calc
wret area aus
, der auch seinen
eigenen lokalen Namespace erstellt
und ihm die Parameter
base und height hinzufügt Nach wie vor gibt es im lokalen Gültigkeitsbereich der
Funktion
nur
eine Basis- und eine Höhenvariable Ohne Namenskonflikte wird
die Fläche als fünf
mal drei berechnet , was 15 ergibt. Der Wert 15 wird an das
Hauptprogramm zurückgegeben und angezeigt der
lokale Namensraum der Funktion . Anschließend
wird der
lokale Namensraum der Funktion gelöscht. In Übung drei
haben wir gelernt, dass
Python, wenn ein Perimeter und eine globale
Variable denselben Namen haben, ein Perimeter und eine globale
Variable denselben Namen haben, den
lokalsten Namen innerhalb
des aktuellen Gültigkeitsbereichs verwendet lokalsten Namen innerhalb
des aktuellen Gültigkeitsbereichs Lassen Sie uns das Programm nachverfolgen, um den
Namespace in diesem Fall zu verstehen Zunächst liest Python die
globale Unit-Variable und die
Funktionsdefinition Elk Square Area in den globalen Namespace Als Nächstes führt es den Funktionsaufruf Calk
Square Area aus, erstellt den
lokalen Namespace der Funktion und übergibt die Werte
Vier und Meter als Argumente an die Längen Die Funktion
gibt dann eine Zeichenfolge zurück die die quadratische
Länge und die Einheit
enthält Derzeit
gibt es zwei Unit-Variablen, eine im globalen Namespace und eine im
lokalen Namespace der Funktionen Da Python bei
einem Namenskonflikt immer
die lokalste Variable verwendet , wählt
es die Einheitsvariable
aus dem lokalen Gültigkeitsbereich der Funktion aus, der
die Wertezähler enthält. Wenn die
Funktion zurückkehrt, beträgt
die Ausgangsleistung daher 16 Meter. In Übung vier
haben wir gelernt, dass Konflikte auch entstehen können,
wenn eine globale Variable, ein Funktionsparameter und eine lokale Variable
denselben Namen haben. In solchen Fällen wird immer der lokalste
Name verwendet. Lassen Sie uns dies bestätigen, indem wir das Programm
verfolgen. In der dritten Übung liest
Python zunächst die globale Einheitsvariable und die
Funktionsdefinition Elk Square Area in den globalen Namespace Dann führt es den Funktionsaufruf Kelc
Square Area aus,
erstellt den
lokalen Namespace der Funktion und übergibt
vier und Meter als Argumente an die Innerhalb der Funktion wird die
Einheitsvariable dann Yards
neu zugewiesen, wobei der Parameterwert Meter außer Kraft gesetzt wird. An diesem Punkt besteht ein
Namenskonflikt zwischen der lokalen Einheitsvariablen und
der globalen Einheitsvariablen Wie wir jedoch
in Übung drei gelernt haben, verwendet
Python immer die
lokalste Version einer Variablen. Da in diesem Fall die lokale Einheit nun den Wert Yards
enthält, wird
dieser Wert bei der
Konstruktion der Rückgabezeichenfolge verwendet Wenn die
Funktion zurückkehrt, beträgt
die Ausgabe also 16 Yards Fantastisch. Jetzt haben Sie ein solides Verständnis dafür wie Namespaces und
Scope in Python funktionieren Jetzt ist es an der Zeit, sich mit
dem letzten Kernthema
dieser Kursmodule
und Bibliotheken zu befassen dem letzten Kernthema
dieser Kursmodule
51. Module und Bibliotheken: In früheren Vorlesungen
haben wir gesehen, dass wir, wenn die eingebauten Funktionen
von
Bton für eine bestimmte Aufgabe nicht ausreichen, immer das erreichen können,
was wir wollen, indem unsere eigenen
benutzerdefinierten Funktionen
erstellen Das ist großartig. Aber das Schreiben unserer eigenen Funktionen
ist zeitaufwändig und wir können Fehler machen. Zum Glück
gibt es in vielen Fällen eine andere Option In der Tat bietet PTN
ein riesiges Ökosystem von Modulen und Bibliotheken mit vorgefertigtem und getestetem Code, der
eine Vielzahl von Aufgaben ausführen kann In diesem Video erfahren wir,
wie wir diese leistungsstarken
PTN-Bibliotheken in unsere Programme integrieren und verwenden Wir werden langsam beginnen,
indem wir
die Bibliotheken
anhand einer Analogie vorstellen die Bibliotheken
anhand einer Analogie Stellen Sie sich vor, PyTN funktioniert wie
die Bücher
in Ihrem persönlichen
Bücherregal Diese Bücher
sind, genau wie die
integrierten Funktionen , sofort zugänglich,
aber in ihrer Anzahl begrenzt Wenn das Buch, das Sie benötigen
, zu Hause nicht gefunden werden kann, können
Sie es
möglicherweise in Ihrer
Stadtbibliothek finden . In unserer Analogie
fungieren PyTON-Bibliotheken als das Programmieräquivalent zu
Stadtbibliotheken Sie erweitern den Funktionsumfang , wenn die
integrierten Funktionen von Pton nicht ausreichen PTN bietet ein riesiges
Ökosystem von Bibliotheken, jeweils unterschiedliche
Programmieranforderungen erfüllen Unter diesen sticht die PyTN
Standard Library als eine
der wichtigsten
hervor Hier werden wir also
unsere Erkundung von Bibliotheken beginnen. So wie eine Stadtbibliothek in Abschnitte unterteilt
ist, in denen jeweils Bücher
desselben Genres gruppiert sind, ist
die PyTN Standard Library in Module unterteilt, die
jeweils verwandte Funktionen gruppieren Die
Bton Standard Library
verfügt beispielsweise über ein Mathematikmodul, das Funktionen
enthält, die mathematische
Operationen wie Bilden der Quadratwurzel
oder
des Logarithmus Die Bibliothek umfasst auch
ein Zufallsmodul, das Funktionen
zur Generierung von Zufallszahlen bereitstellt, was für Simulationen nützlich ist,
und ein Statistikmodul, das Funktionen
zur Berechnung
gängiger Statistiken wie Mittelwert und
Median bereitstellt gängiger Statistiken wie Mittelwert und
Median Da der Zugriff auf die Bücher in
der Stadtbibliothek jedoch mehr Aufwand erfordert als auf die Bücher,
die Sie zu Hause haben, sind die
Funktionen der
PTN-Standardbibliothek nicht so leicht verfügbar wie die integrierten Funktionen von
PTN Um eine Funktion aus einem Modul
der Standardbibliothek verwenden zu können, müssen
wir zuerst die Funktion
aus
der Bibliothek auschecken , indem wir
sie in unser Programm importieren Um beispielsweise die
Quadratwurzelfunktion SQRT
aus dem MAT-Modul zu importieren , schreiben wir aus MAT Import square root In dieser Anweisung
weist
der fra Mat-Teil Piton an, dass wir eine Funktion
aus dem MT-Modul
abrufen wollen eine Funktion
aus dem MT-Modul
abrufen Der SQRT-Teil für den Import gibt an , welche Funktion wir aus diesem Modul
importieren möchten Nach dem Import können wir
die Quadratwurzelfunktion in unserem Programm so
oft verwenden die Quadratwurzelfunktion in unserem Programm so , wie wir
benötigen, genau wie jede eingebaute Funktion Neben der
Quadratwurzelfunktion enthält
das MT-Modul viele
weitere hilfreiche Funktionen. Zum Beispiel
berechnet die PD-Funktion das Produkt
der Elemente in einer Liste Diese Funktion könnte hilfreich
sein, um anhand einer Liste der
jährlichen
Wachstumsraten die kumulative Wachstumsrate
einer Volkswirtschaft in den
letzten fünf Jahren
zu berechnen einer Volkswirtschaft in den
letzten fünf Jahren Liste der
jährlichen
Wachstumsraten die kumulative Wachstumsrate
einer Volkswirtschaft in den
letzten fünf Jahren
zu Die Verwendung der Pd-Funktion
ist in diesem Fall natürlich nicht erforderlich Wir könnten die Antwort finden,
indem wir vier Schleifen verwenden die
Elemente der Liste nacheinander durchgehen,
um das kumulative
Produkt der Wachstumsraten zu berechnen Aber warum das Rad neu erfinden,
wenn der Import der
Prod-Funktion Neben dem MT-Modul die PyTN Standard-Bibliothek enthält
die PyTN Standard-Bibliothek viele weitere
nützliche Module, von denen Sie
einige in den Übungen
kennenlernen werden Leider
können wir in diesem Kurs nicht
allen Funktionen
der PyTN
Standard-Bibliothek gerecht in diesem Kurs nicht
allen Funktionen
der PyTN
Standard-Bibliothek Es gibt einfach zu viele. Aus diesem Grund
gibt es auf der
Git-Up-Seite dieses Kurses einen Link zur Dokumentation der PTN
Standard Library, gibt es auf der
Git-Up-Seite dieses Kurses einen Link zur Dokumentation der PTN
Standard Library wo Sie eine Liste der
Funktionen finden , die
in diesem Modul enthalten sind können
diese Ressource jederzeit aufrufen , wenn
Sie nach
einer bestimmten Funktion suchen oder die Funktionen
eines bestimmten Moduls in der
PyTN Standard Library
erkunden eines bestimmten Moduls in der
PyTN Standard So
umfassend sie auch ist,
die PTN-Standardbibliothek hat jedoch auch Grenzen So wie Ihre Stadtbibliothek nicht alle
Bücher enthält, die jemals geschrieben wurden, die PTN-Standardbibliothek auch
keine Funktionen für alle
möglichen Programmieranforderungen Zum Glück
gibt es andere Bibliotheken, sogenannte externe Bibliotheken, die in solchen Situationen helfen
können Externe Bibliotheken wurden von der
PTN-Community
erstellt, um
spezifische
Programmieranforderungen zu erfüllen, die von
Datenanalyse und
maschinellem Lernen bis hin zu Webentwicklung, Datenvisualisierung und mehr Um Zugriff auf diese
externen Bibliotheken zu erhalten, müssen
Sie zunächst einen
Bibliotheksausweis erwerben, indem Sie sie installieren. In einer interaktiven
Notebook-Umgebung wie Google Colab können Sie diesen
Bibliotheksausweis
mit dem von PTN bevorzugten
Installationsprogramm,
auch bekannt als PIP,
abrufen mit dem von PTN bevorzugten
Installationsprogramm,
auch bekannt als PIP, , um ein externes Ausrufezeichen
vom Typ Bibliothek,
PIP install, gefolgt vom Namen
der Bibliothek, die Sie installieren möchten, in einer Codezelle zu Diese Codezeile weist PyTN an, die
MTPLTLib-Bibliothek zu installieren, ein beliebtes Tool zur Datenvisualisierung in PTN PyTN an, die
MTPLTLib-Bibliothek zu installieren, ein beliebtes Tool zur Datenvisualisierung in PTN. Es ist erwähnenswert, dass
Google Colab mit vielen gängigen Bibliotheksausweisen
vorausgestattet ist . Zum Beispiel ist Matpltib eine dieser vorinstallierten
Bibliotheken in Colab,
da die Ausgabemeldung „Anforderung bereits
erfüllt“
anzeigt, wann wir den wann Die Neuinstallation einer vorinstallierten
Bibliothek schadet nicht, ist
aber nicht notwendig
und kann Nach der Installation einer Bibliothek können
wir die Punktnotation verwenden, um bestimmte Funktionen
in unser Programm zu importieren Hier importieren wir die
Plotfunktion aus
dem PyPlot-Modul in
die MatplotLib-Bibliothek Wir sollten wissen, dass wir
beim Import der PD-Funktion aus dem MAT-Modul der
PyTon-Standardbibliothek den Namen der Bibliothek nicht angegeben
haben Die BTN-Standardbibliothek
ist die Ausnahme. Für diese Bibliothek und nur für
diese Bibliothek müssen
wir den Namen
der Bibliothek nicht angeben , bevor wir
auf ihr Modul zugreifen Für alle anderen Bibliotheken,
einschließlich MatplotLib, müssen
wir den Bibliotheksnamen angeben bevor wir auf ihre Module zugreifen Sobald eine Funktion aus einer externen Bibliothek importiert
wurde, kann
sie
wie jede andere Funktion im Programm verwendet werden wie jede andere Nehmen wir zum Beispiel an, wir
haben eine Liste von Zahlen,
X, die wir mit einer anderen Zahlenliste vergleichen wollen , y? Dies kann mit einem
Aufruf der Plot-Funktion geschehen, wobei X und Y als Argumente übergeben werden. Wenn wir die Zelle ausführen,
erhalten wir ein Diagramm unserer Daten. Fantastisch. Aber in diesem Stadium fragen
Sie sich vielleicht,
wie ich feststellen kann , ob es
eine externe Bibliothek gibt , die
mir bei der Lösung einer bestimmten
Programmieraufgabe helfen kann ? Da es
derzeit Tausende von
externen Bibliotheken gibt und ständig
weitere eingeführt
werden,
ist es nicht die Lösung, zu merken sich die Liste der
verfügbaren Bibliotheken Der beste
Weg, um herauszufinden,
ob es eine externe
Bibliothek gibt, die Ihnen helfen kann, ist stattdessen ob es eine externe
Bibliothek gibt, die Ihnen helfen kann, ist eine Google-Suche oder eine Abfrage nach Ihrem bevorzugten großen
Sprachmodell wie Chat GPT Sobald Sie
eine Bibliothek gefunden haben , die für Ihre Aufgabe
nützlich sein könnte, sollten
Sie deren
Dokumentation nachschlagen, um
das spezifische Modul zu finden , in dem sich
die Funktionen befinden, an denen Sie
interessiert sind Eine Google-Suche ist im Allgemeinen alles, was benötigt wird, um die Dokumentation zu
finden. In den Übungen und
im Abschlussprojekt werden
Sie einige der beliebtesten
externen Bibliotheken von
PTN im
Detail erkunden beliebtesten
externen Bibliotheken von
PTN im und sich
mit diesem Entdeckungsprozess vertraut machen Zusammenfassend lässt sich sagen, dass, wenn die in PyTN eingebaute Funktion und die
Standardbibliothek nicht ausreichen, externe Bibliotheken
eine große Anzahl
zusätzlicher Funktionen bieten eine große Anzahl
zusätzlicher Um auf
diese Funktionen zugreifen zu können, müssen
wir jedoch zuerst
die Bibliothek installieren, die
die gewünschte Funktion enthält , und sie
dann in
unser PTN-Programm importieren Die umfangreiche Sammlung von
Bibliotheken, die in
PTN verfügbar sind , ist eine der größten
Stärken der Sprache Durch die Nutzung des
globalen Wissens der PyTON-Community können
Benutzer wie Sie auf
den Schultern von Giganten stehen und komplexe Aufgaben mit
bemerkenswerter Effizienz bewältigen Aber verlassen Sie sich nicht auf mein Wort. Der beste Weg, die Leistungsfähigkeit von
PyTON-Bibliotheken zu
schätzen , besteht darin, sie in Aktion zu
sehen Im nächsten Video werden wir gemeinsam
einige Anwendungsfälle
untersuchen
52. Geführte Beispiele für Module und Bibliotheken: Seit wir Jamie und Pike das letzte Mal getroffen haben, haben
sie
ihre herausfordernde fünftägige Wanderung erfolgreich abgeschlossen ihre herausfordernde fünftägige Zu Hause fühlt
sich Jamie stolz
und Sie möchte
ihr Abenteuer gerne mit Freunden
und Familie teilen und beschließt , dass eine visuelle Darstellung unseres täglichen Fortschritts
helfen würde, die Geschichte zu erzählen Obwohl Pike nicht von Natur aus zeichnen
kann, weiß
er genau, wo er
die richtigen Werkzeuge findet, um die Figur zu kreieren,
die Jamie So wie Pike sich beim Zeichnen eines Diagramms
auf externe Tools
verlassen muss , werden
wir uns auf externe Bibliotheken verlassen eine schöne
Figur
zu erstellen Genauer gesagt werden wir die
Matpltib-Bibliothek verwenden. Wie wir in
einem früheren Video erwähnt haben, ist
die Matpltib-Bibliothek
bereits in Colab installiert,
sodass wir die Installation in dieser Arbeitsmappe überspringen können Wie wir gesehen haben,
kann
die Plotfunktion des Pilotmoduls Zahlen erzeugen, also importieren wir Wir werden auch
die Show-Funktion importieren , um PyTon anzuweisen, den von uns erstellten Plot
anzuzeigen Sie können
die Show-Funktion zwar importieren indem Sie eine separate
Importanweisung wie diese schreiben, es gibt auch eine
prägnantere Methode, dies zu tun Tatsächlich ermöglicht uns PTN, mehrere Funktionen aus demselben Modul zu
importieren , indem wir
die zu importierenden Funktionen
nach dem Schlüsselwort import auflisten Funktionen
nach dem Schlüsselwort import Fantastisch. Lassen Sie uns nun Listen erstellen, die die
Informationen enthalten, die wir plotten möchten. Die erste Liste, die wir erstellen,
enthält die Tage der Wanderung, und die zweite Liste enthält die entsprechenden Meilen, die wir an
jedem dieser Tage Dann rufen wir die Plotfunktion
mit der Tagesliste als X-Achsenwert und
der Liste der
gewanderten Kilometer als Y-Achsenwert auf Schließlich weisen wir
Bton an, die Zahl anzuzeigen, indem wir
die Show-Funktion aufrufen die Zelle ausführen, erhalten wir ein Diagramm der an jedem Tag
zurückgelegten Meilen Das ist in Ordnung, aber
Sie werden mir sicherlich zustimmen, dass diese
Handlung ziemlich einfach ist. Insbesondere
gibt es keinen Titel und die Achsen sind nicht
beschriftet. Lass uns das beheben. Um einem Diagramm einen Titel und
Achsenbeschriftungen hinzuzufügen, müssen
wir die Funktionen
Titel, X-Label und Y-Label importieren . Dann rufen wir jede Funktion übergeben den gewünschten Titel
oder die gewünschte Bezeichnung als Argument. Ordentlich. Wenn wir unseren Code erneut ausführen, erhalten
wir ein Diagramm mit einem aussagekräftigen Titel und
einer
richtig beschrifteten Achse Dies sind jedoch bei weitem nicht die einzigen
Anpassungsoptionen, die uns zur Verfügung stehen Nehmen wir zum Beispiel an, Jamie möchte in der Grafik eine horizontale Linie
zeichnen , die die durchschnittliche tägliche Meile darstellt, die sie in den fünf
Tagen gewandert Dies kann mit der AxhLine-Funktion in zwei Schritten
erfolgen. Im ersten Schritt
berechnen wir die durchschnittlich
täglich gewanderten Meilen Im zweiten Schritt übergeben
wir den Durchschnitt als Argument
der
AxhLine-Funktion Nachdem wir unseren Code ausgeführt
haben, erhalten wir ein aktualisiertes
Diagramm, in dem die durchschnittlichen täglichen Meilen durch eine
horizontale Linie
dargestellt werden durch eine
horizontale Linie
dargestellt Mit dieser neuen Linie, die dem Diagramm
hinzugefügt wurde, ist
es jetzt leicht zu erkennen, an welchen Tagen Jamie
mehr als der Durchschnitt gewandert Und das hat zur Folge, dass unsere Grafik immer
informativer
wird Dennoch stehen uns zahlreiche
zusätzliche Optionen zur Verfügung, um
die visuelle Attraktivität und
Effektivität unserer Grafik zu verbessern . Beispielsweise stellt
MtlTib Daten standardmäßig als
dünne blaue Linie ohne
Markierungen für einzelne
Datenpunkte dar dünne blaue Linie ohne Markierungen für einzelne Wir können jedoch
die Sichtbarkeit
unserer Daten verbessern, indem wir in
der Plotfunktion
einen Markerstil angeben Plotfunktion
einen Markerstil Die Übergabe der Zeichenfolge Oh
weist PyTon an, kreisförmige Markierungen um
die Datenpunkte herum hinzuzufügen und dabei die
Verbindungslinien zwischen ihnen
beizubehalten Beim Ausführen des Codes stellen wir fest,
dass Datenpunktmarkierungen entsprechend hinzugefügt wurden.
Das ist großartig. Lassen Sie uns nun unser Diagramm
interessanter gestalten, indem unterschiedliche Linienfarben für jede Datenreihe
unterschiedliche Linienfarben
und -stile verwenden. Nehmen wir zum Beispiel an, dass unsere durchschnittliche Meilenlinie gestrichelt und orange
sein soll Dies kann
mit den
Schlüsselwortargumenten AxH-Linien,
Farbe und Linienstil geschehen Schlüsselwortargumenten AxH-Linien,
Farbe und Linienstil Durch die Ausführung der Zelle wird unser Diagramm mit
den neuesten Änderungen
aktualisiert .
Ziemlich richtig. Als letzten Schliff fügen wir unserer Figur
eine Legende hinzu. Dazu benötigen wir
die Legendenfunktion. Meiner Meinung nach besteht die
bequemste Art,
die Legendenfunktion zu verwenden , darin, zunächst Beschriftungen für jede
Zeile in unserem Diagramm zu
erstellen. Rufen Sie dann einfach die
Legendenfunktion ohne Argument auf. Standardmäßig verwendet die Legendenfunktion die bereitgestellten Beschriftungen
, um die Legende zu erstellen. Wunderbar. Nun, das ist eine
professionell aussehende Grafik. Wie Sie sehen können,
bietet
das Piplot-Modul leistungsstarke Funktionen zur
Datenvisualisierung Tatsächlich enthält das
Piplot-Modul so viele Funktionen
, dass es umständlich
sein kann, sie
alle einzeln zu importieren sein kann, sie
alle einzeln Zum Glück bietet PyTon
einen effizienteren Ansatz. Das heißt, wir können
das gesamte Modul auf einmal importieren , indem wir die folgende Syntax
verwenden Importieren Sie Matplotlib dot Pilot. Wenn wir das
gesamte Modul auf diese Weise importieren, können
wir mithilfe der Punktnotation auf
die
Modulfunktion zugreifen mithilfe der Punktnotation auf
die
Modulfunktion Wie Sie sehen, kann die wiederholte Eingabe des vollständigen
Modulnamens umständlich sein. unseren Code zu rationalisieren, verwenden
wir daher beim
Import ganzer Module häufig Aliase Wir erstellen einen Alias, indem wir das Schlüsselwort
hinzufügen gefolgt von einer kurzen
beschreibenden Bezeichnung nach der Für das Pipelot-Modul ist PLT ein üblicher Alias auf diese Weise einen Alias definieren, können wir in unserem gesamten
Code die kürzere PLT anstelle
von matplotlib dot piePLT verwenden Code die kürzere PLT anstelle von matplotlib dot Fantastisch. Jamie ist begeistert von der Grafik
, die Pike gezeichnet Sie veröffentlicht es in den sozialen Medien
und erhält jede Menge Likes. Während wir uns darauf vorbereiten,
das Abschlussprojekt dieses Kurses in Angriff zu nehmen, verabschieden
wir uns vorerst
von Jamie und Pike Wir sehen uns auf den Trails,
Jamie und Pike. Wie Sie sehen können, ist Matpltlib
eine mächtige Bibliothek. Wir werden sie
in den Übungsbüchern
genauer untersuchen genauer Neben Mat Plutlb können Sie in den
Übungsbüchern auch mehrere
andere sehr
nützliche PyTON-Bibliotheken erkunden andere sehr
53. Python Standardbibliothek-Übungen: In dieser Arbeitsmappe haben Sie sich mit den
mathematischen
Zufalls - und Statistikmodulen aus der
Python-Standardbibliothek befasst Lassen Sie uns die Lösungen durchgehen. In der ersten Übung haben wir das Mathe-Modul
untersucht. In Teil A
erhielten wir eine Liste der Bevölkerungsdichten
und wurden gebeten, für jeden Wert in der Liste die Quadratwurzel
zu berechnen Dazu wenden wir die SQRT-Funktion des
Mathematik-Moduls an und fügen jedem Element zehn hinzu, indem wir
entweder eine Viererschleife oder
ein Listenverständnis verwenden entweder eine Viererschleife oder
ein Listenverständnis Beide Methoden geben uns die Größe des Schutzgebiets berechnet anhand der Anzahl
der Hirsche in jeder Herde, aber die Liste
ist prägnanter In Teil B wurden wir gebeten, die Wachstumsrate der Froschpopulation anhand
der bereitgestellten
Wachstumsgleichung und
der bereitgestellten Daten zu
berechnen Froschpopulation anhand
der bereitgestellten
Wachstumsgleichung und
der bereitgestellten Daten Um diese
Gleichung in Python zu implementieren, verwenden
wir die
Funktionen EXP und Log aus dem Mathematikmodul Die EXP-Funktion berechnet die natürliche Exponentialzahl und erhöht E auf die Potenz ihres Arguments, während die Log-Funktion
den natürlichen Logarithmus berechnet ,
wenn sie aufgerufen wird ohne eine andere Basis als Argument anzugeben Wir berechnen die wöchentliche Wachstumsrate der
Froschpopulationen auf 111,47%. In Teil C erhielten wir eine Liste des täglichen
Futterbedarfs für mehrere Arten und wurden
gebeten,
ihren Gesamtnahrungsbedarf für die Wintersaison von
120 Tagen zu berechnen ihren Gesamtnahrungsbedarf für die Wintersaison von
120 Tagen Entscheidend ist, dass
wir vor der
Berechnung der Gesamtaufnahme über die einhundertzwanzig Tage
jeden Wert aufrunden mussten, über die einhundertzwanzig Tage
jeden Wert aufrunden mussten, da die Notnahrung nur in ganzen Einheiten
verfügbar ist Zu diesem Zweck wenden wir die SEL-Funktion
aus dem Mathematikmodul auf jedes Element der
täglichen Nahrungsaufnahmeliste ein Listenverständnis
verwenden Als Nächstes multiplizieren wir
jeden gerundeten Wert mit 120 Tagen, um den Gesamtbedarf an Nahrung
für die Wintersaison Wie Sie sehen können, führt das Versäumnis, die täglichen Aufnahmemengen
vor der Multiplikation
aufzurunden , zu
merklich unterschiedlichen Gesamtwerten Alternativ können wir dasselbe Ergebnis erzielen , indem wir anstelle
eines Listenverständnisses
vier Schleifen verwenden anstelle
eines Listenverständnisses
vier Schleifen In Übung zwei haben wir
das Statistikmodul verwendet, um den Mittelwert, den
Median und den Modus der angegebenen Anzahl an
Elchpopulationen zu berechnen Median und den Modus der angegebenen Anzahl an
Elchpopulationen Das Statistikmodul nimmt
uns die Arbeit ab, indem es die Funktionen Mittelwert,
Median und Modus bereitstellt Wir übergeben einfach die
Liste der
Bevölkerungszahlen an jede der Funktionen
und geben die Ergebnisse aus Schließlich
haben wir uns in Übung drei mit dem Zufallsmodul befasst In Teil A wurden wir gebeten, die
einheitliche Funktion
der Zufallsmodule zu verwenden , um
die potenzielle
Restlebensdauer jedes Kaninchens, das wir beobachten, zu modellieren die potenzielle
Restlebensdauer jedes Kaninchens, das wir beobachten und
die voraussichtliche Gesamtlebensdauer zu berechnen Wir beginnen mit einem
Listenverständnis mit der Funktion Uniform,
die eine Gleitkommazahl
zwischen zwei angegebenen Werten generiert In unserem Beispiel generiert
unser Listenverständnis
bei einem Kaninchen,
das heute 8 Jahre alt ist, generiert
unser Listenverständnis eine zufällige Gleitkommazahl von 0-12 minus acht,
was vier ist, um die verbleibende potenzielle Lebensdauer zu modellieren Mithilfe des Listenverständnisses berechnen wir die prognostizierte Lebenserwartung für jedes Kaninchen in unserer Liste mit dem Alter von Kaninchen wir die prognostizierte Lebenserwartung für jedes Kaninchen in unserer Liste mit dem Alter von Kaninchen
. Um dann die
Gesamtlebensdauer für jedes Kaninchen zu berechnen, verwenden
wir ein anderes Listenverständnis Die ZIP-Funktion verknüpft das Alter
jedes Kaninchens mit entsprechenden prognostizierten
verbleibenden Lebensdauer Wir addieren das
aktuelle Alter jedes Kaninchens zu seiner voraussichtlichen verbleibenden Lebensdauer um die voraussichtliche
Gesamtlebensdauer zu berechnen Schließlich verwenden wir vier Schleifen,
um die Ergebnisse auszugeben. In Teil B erhielten wir
die Wahrscheinlichkeiten verschiedener
Wetterereignisse und wurden die Wahrscheinlichkeiten verschiedener gebeten,
das Wachstum der
Kaninchenpopulation in
den nächsten 12 Monaten zu modellieren das Wachstum der
Kaninchenpopulation in
den nächsten , um ihre Größe in
einem Jahr
prognostizieren zu können. Wir haben dafür die Funktion zur
Auswahl zufälliger Module verwendet. Wir geben die
Bevölkerungswachstumsraten als die Werte ein, aus denen
nach dem Zufallsprinzip ausgewählt werden soll, die Wetterwahrscheinlichkeiten als Gewichte, die die
Funktion verwenden sollte, und K ist gleich 12,
was der
Funktion mitteilt, dass sie
12 zufällige
Bevölkerungswachstumsraten auswählt 12 zufällige
Bevölkerungswachstumsraten Dieser Aufruf führt zu einer Liste von 12 simulierten
Bevölkerungswachstumsraten, eine für jeden der
nächsten Anschließend wenden
wir diese Raten in vier Schleifen auf
die Kaninchenpopulation an, wenden
wir diese Raten in vier Schleifen auf
die Kaninchenpopulation an deren Wachstum in den
nächsten 12 Monaten
kumulativ zunimmt Schließlich geben wir
die prognostizierte Kaninchenpopulation
für ein Jahr In Teil C haben wir
unsere Simulation dahingehend erweitert, dass sie mehrere
12-Monats-Populationsprognosen gleichzeitig Wir betten unseren Code aus Teil B in eine Vierschleife ein
, die zehnmal ausgeführt wird. Dabei fügen wir das Ergebnis
jeder Simulation an die Liste der simulierten Pops Wenn die Schleife nicht mehr läuft, geben wir die Liste mit zehn
simulierten Bevölkerungsprognosen aus In Teil D verwenden wir
das Statistikmodul, um die Liste von
zehn
Bevölkerungsprognosen zu analysieren , die wir
in Teil C erstellt haben. Insbesondere berechnen
wir die mittlere
Standardabweichung und die Quartile unserer Wie in der zweiten Übung
stellt
das Statistikmodul alle
erforderlichen Funktionen bereit,
sodass wir einfach die Funktionen für
die mittlere Standardabweichung
und die Quantile aufrufen die mittlere Standardabweichung
und die Quantile Standardmäßig berechnet die
Quantilfunktion Quartile,
aber sie ermöglicht es Ihnen auch, den N-Parameter anzupassen, um die Daten bei Bedarf in mehrere Abschnitte zu unterteilen die Daten bei Bedarf in Schließlich
haben wir in Teil E die CD-Funktion Random
Modules verwendet, um unsere Zufallswerte
reproduzierbar zu machen Der Startwert muss gesetzt werden, bevor Zufallswerte generiert Dadurch wird sichergestellt, dass alle von
der Choices-Funktion erzeugten
Werte zufällig sind , aber in zukünftigen Durchläufen
reproduziert werden können. Das Setzen eines Startwerts wird häufig zum Testen oder
Debuggen von Code
verwendet , bei dem Zufallswerte
verwendet werden Großartig. Wie Sie gesehen haben, ist
die Python-Standardbibliothek ein leistungsstarker Satz integrierter Tools, die bei der Lösung vieler
Arten von Problemen helfen
können . Aber wie wir
in früheren Videos erwähnt haben, gibt es viele andere
externe Bibliotheken, die
von der Python-Community bereitgestellt werden und die uns zur Verfügung stehen. In den nächsten Videos haben
Sie die Möglichkeit, mehrere
dieser Bibliotheken zu erkunden.
54. Matplotlib-Übungen: In dieser Arbeitsmappe
haben Sie gelernt, wie Sie mit dem verschiedene grundlegende Typen von
Diagrammen und Grafiken
erstellen können Matplotlib-Bibliothek Lassen Sie uns die Lösungen aufschlüsseln. In der ersten Übung
erhielten wir eine Liste mit Verkaufsdaten und nutzten ein
Liniendiagramm, um sie zu visualisieren. MatplotLib ermöglicht es uns,
ein Liniendiagramm zu erstellen, indem wir hier
die Plotfunktion mit einer
Liste von X-Koordinaten,
dem Tagesbereich und einer Liste
von Y-Koordinaten,
den Verkaufsdaten, aufrufen hier
die Plotfunktion mit einer
Liste von X-Koordinaten, dem Tagesbereich und einer Liste von Y-Koordinaten,
den Verkaufsdaten, Darüber hinaus können wir
das Liniendiagramm anpassen , indem wir eine Farbe, einen
Markerstil, eine
Linienbreite und eine Markierungsgröße
angeben Markerstil, eine
Linienbreite und eine Markierungsgröße Dann fügen wir einen Titel, X-Label und ein Y-Label hinzu, indem wir die
entsprechenden Funktionen aufrufen. Schließlich fügen wir ein Raster hinzu
und zeigen das Diagramm an. In Übung zwei
erhielten wir Listen mit Kategorien und
Verkaufsdaten und erstellten ein Balkendiagramm das die Umsatzverteilung
der drei Kategorien
zeigt. Dazu verwendeten wir die
Balkenfunktion und übergaben die Warenkategorien als X-Variable und die
Verkaufsdaten als Y-Variable. Zusätzlich haben wir eine Liste mit Farben zur Anpassung
der Diagrammbalken übergeben eine Liste mit Farben zur Anpassung
der und
einen Titel und Beschriftungen
für die X- und Y-Achse hinzugefügt . Um dann die Verkaufsdaten
am oberen Rand jedes Balkens hinzuzufügen , haben wir eine Libs-Textfunktion mit vier Schleifen und
Matplot verwendet Diese Funktion verwendet
X- und Y-Koordinaten für die Beschriftungen als
erste beiden Argumente, gefolgt von dem
anzuzeigenden Text und der
horizontalen Ausrichtung Schließlich zeigen wir das Diagramm an. In Übung drei
erhielten wir den Prozentsatz
der Kunden in verschiedenen Altersgruppen und erstellten ein Kreisdiagramm, um die Daten
zu visualisieren. Wir haben mit der Pi-Funktion von
Matplotlib ein Kreisdiagramm erstellt dabei die Prozentliste
als Daten und
die
Altersgruppenliste als Beschriftungen
übergeben Daten und
die
Altersgruppenliste Darüber hinaus verwendet die
Pi-Funktion das Labelformat „Slice
Percentage“ und die Liste mit Keilfarben als Schlüsselwortargumente Als Nächstes fügen wir unserem Diagramm einen Titel und eine
Legende hinzu. Die Legendenfunktion
verwendet die
anzuzeigenden Daten als beliebige
Argumente und andere
Formatierungsfunktionen wie Titel und Position als beliebige
Schlüsselwortargumente. Schließlich zeigen wir das Diagramm
mit der Show-Funktion an. Schließlich erhielten
wir in der vierten Übung Daten
zu den Werbeausgaben und den daraus resultierenden Verkäufen und erstellten ein Streudiagramm, um die Beziehung
zwischen den beiden Variablen zu visualisieren Zu diesem Zweck haben wir
die Streufunktion aufgerufen die Daten zu
Werbeausgaben und Verkäufen
weitergegeben Wir haben die Farbe und
Größe unserer Streupunkte mit
zwei zusätzlichen
Argumenten angepasst Größe unserer Streupunkte mit und dem Diagramm die
Beschriftungen
Titel X und Y hinzugefügt Diagramm die
Beschriftungen
Titel X und Y Schließlich haben wir das
Diagramm mit der Show-Funktion angezeigt. Großartig. Sie haben jetzt
Erfahrung mit der Erstellung von Linien -,
Balken- und Kreisdiagrammen sowie
Streudiagrammen mit MtPotIB Wir haben jedoch gerade erst begonnen, sein Potenzial
auszuloten. Matplotlib ist ein unverzichtbares Tool für die Datenvisualisierung
in Python, und ich ermutige Sie,
seine Funktionen weiter
zu erkunden , um
Ihre
Fähigkeiten zur Problemlösung in Zukunft zu verbessern Ihre
Fähigkeiten zur Problemlösung in
55. Pandas-Übungen: In dieser Arbeitsmappe haben Sie
die Pandas-Bibliothek untersucht, um Flugdaten zu analysieren
und zu manipulieren Lassen Sie uns die Lösungen besprechen. In Übung eins, Teil A, haben wir die angegebenen
Flugdaten in einen Datenrahmen geladen. Dazu haben wir einfach
unsere Daten an die
Dataframe-Funktion übergeben unsere Daten an die
Dataframe-Funktion Wenn wir dann unsere Daten ausgeben, sie als gut
formatierter Datenrahmen angezeigt In Teil B mussten wir
die ersten beiden Flüge in
unserem Fluginformationsdatenrahmen anzeigen die ersten beiden Flüge in
unserem Fluginformationsdatenrahmen DataFrames haben eine
Methode namens head, die eine ganze Anzahl
von Zeilen benötigt , um sie
als Argument anzuzeigen Die Ausgabe dieses
Methodenaufrufs mit dem Argument two sind die ersten beiden Zeilen
unseres Fluginformationsdatenrahmens In Teil C mussten wir
zusammenfassende Statistiken über
unseren Fluginformationsdatenrahmen erstellen . DataFrames bieten eine
Methode namens describe
, mit der verschiedene
nützliche Statistiken
wie Mittelwert und Standardabweichung berechnet wie Mittelwert In Übung zwei
haben wir gelernt, wie wir unseren Datenrahmen auf der
Grundlage bestimmter Bedingungen
filtern Grundlage In Teil A haben wir
einen Datenrahmen erstellt, der nur
Flüge nach LAX enthält Zu diesem Zweck verwendeten wir zunächst
einen bedingten Ausdruck, der identifizierte
, welche Werte in der
Zielspalte unseres Datenrahmens
LAX entsprachen Dadurch wurde eine Reihe von
Booleschen Werten erstellt , mit denen wir unseren
Datenrahmen filtern Der resultierende
Datenrahmen enthält nur die Flüge, die für LAX
bestimmt sind In Teil B haben wir unseren
Fluginformationsdatenrahmen so gefiltert, dass nur Flüge mit
einer Ankunftsverzögerung von mehr
als 20 Minuten
angezeigt einer Ankunftsverzögerung von mehr
als 20 Wie in Teil A haben wir
einen Ausdruck angegeben, um Flüge mit
Ankunftsverspätungen von weniger als oder
gleich 20 Minuten
herauszufiltern Flüge mit
Ankunftsverspätungen . Der resultierende
Datenrahmen enthält nur Flüge mit Verspätungen von
mehr als 20 Minuten. In Übung drei haben wir
Berechnungen mit
Datenrahmenspalten durchgeführt . In Teil A haben wir
eine neue
Spalte für die Gesamtverspätung hinzugefügt , um
die gesamten An- und
Abflugverspätungen für jeden Flug nachzuverfolgen . Um diese Spalte zu erstellen, haben wir die Werte in
den Spalten Abflugverzögerung und
Ankunftsverzögerung summiert und
Python angewiesen , diese Daten in
einer neuen Spalte namens Gesamtverzögerung zu speichern einer neuen Spalte namens Gesamtverzögerung Wenn wir den
aktualisierten Datenrahmen anzeigen, sehen
wir, dass unsere neue Spalte für die
Gesamtverzögerung hinzugefügt wurde In Teil B haben wir
die durchschnittliche Gesamtverspätung
aller Flüge berechnet . Da wir die
Spalte für
die Gesamtverspätung bereits in Teil A berechnet haben, rufen wir in der Spalte für die Gesamtverspätung einfach die Mittelwertmethode von
Panda auf. Das Ergebnis zeigt uns, dass die durchschnittliche Gesamtverspätung bei allen Flügen 35
Minuten beträgt. In Teil C haben wir
die durchschnittliche Gesamtverspätung
für Flüge nach ORD berechnet . Zu diesem Zweck haben wir zunächst
den Fluginformationsdatenrahmen gefiltert ,
wie wir es in Übung zwei getan haben. Dann wenden wir die Mittelwertmethode auf die Spalte mit der Gesamtverzögerung
des Datenrahmens an, der die für ORD bestimmten
Flüge enthält Wir ermitteln, dass die durchschnittliche
Verspätung für Flüge nach RD 46,25 Minuten beträgt Schließlich
haben wir in Übung vier gelernt, wie man Datenrahmen
sortiert In Teil A haben wir
den Fluginformationsdatenrahmen
nach der Gesamtverzögerung in
absteigender Reihenfolge sortiert den Fluginformationsdatenrahmen Gesamtverzögerung in
absteigender Reihenfolge Pandas bietet die
Methode zum Sortieren von Werten, an die wir die Spalte übergeben , nach
der sortiert werden soll, und ob die Reihenfolge aufsteigend oder
absteigend sein soll Dieser Methodenaufruf erzeugt
einen Datenrahmen, in dem die Flüge nach der
Gesamtverspätung in absteigender Reihenfolge sortiert werden Gesamtverspätung in absteigender Reihenfolge Schließlich sortieren
wir in Teil B unseren
Fluginformationsdatenrahmen nach Abflugverzögerung in
aufsteigender Reihenfolge Wie in Teil A verwenden wir die Methode „Werte sortieren“ und
geben
die Spalte an, Methode „Werte sortieren“ und
geben
die nach der
sortiert werden soll, und zwar in aufsteigender Reihenfolge Dieser Methodenaufruf gibt einen
Datenrahmen aus, in dem die Flüge nach der Abflugverspätung in aufsteigender Reihenfolge sortiert
sind Fantastisch. Pandas ist eine
leistungsstarke Python-Bibliothek für Datenmanipulation
und -analyse, die flexible
Datenstrukturen wie
Datenrahmen für den effizienten
Umgang mit strukturierten Daten bietet Datenrahmen für den effizienten
Umgang mit strukturierten Daten Sie können sie in
Ihren eigenen Projekten verwenden, um die Datenbereinigung,
-transformation
und -visualisierung sowie die Bearbeitung großer Datensätze
und die
Durchführung von Analysen zu
vereinfachen und -visualisierung sowie großer Datensätze
und die
Durchführung von Analysen
56. Sprachübersetzer-App-Projekt-Intro: Gratulation. Nach viel harter Arbeit hast
du es
zum Kursprojekt geschafft Ihre Aufgabe besteht nun darin,
eine
Sprachübersetzungsanwendung zu erstellen , die Text zwischen
verschiedenen Sprachen
übersetzen
und eine Sammlung
von Lieblingsübersetzungen verwalten kann Text zwischen
verschiedenen Sprachen
übersetzen . Sie müssen
Konzepte wie While-Schleifen,
Bibliotheken, Wörterbücher,
Bedingungen und mehr verwenden Bibliotheken, Wörterbücher,
Bedingungen und mehr In diesem Projektmodul finden
Sie detaillierte
Textanweisungen, finden
Sie detaillierte
Textanweisungen Sie durch
die
Erstellung Ihrer Anwendung führen Darüber hinaus haben wir
den Text einer Beispielinteraktion
mit dem Programm bereitgestellt den Text einer Beispielinteraktion , um Ihnen
eine bessere Vorstellung davon zu geben , wie die Menüs
und Funktionen funktionieren. Im Rest dieses Videos werde
ich in einer kurzen Demo zeigen, werde
ich in einer kurzen Demo zeigen wie die endgültige
Anwendung funktionieren wird. Wenn ein Benutzer
Ihre Anwendung startet, wird ihm ein
Menü mit Übersetzungsoptionen angezeigt. Option eins ist Quick Translate. Diese Option übersetzt
ein Wort, das der Benutzer unter Verwendung
der Standardsprache
von und nach Sprachen Option zwei ist das Drucken
verfügbarer Sprachen. Dadurch wird eine Liste
aller verfügbaren Sprachen in
der Übersetzerbibliothek angezeigt aller verfügbaren Sprachen in ,
die Sie installieren müssen. Option drei ist das Ändern der
Standardsprachen. Diese Funktion ermöglicht es dem Benutzer, Standardsprachen
für die Übersetzung
festzulegen sowohl die Quell
- als auch die Zielsprache
für die zukünftige Verwendung
anzugeben . Die anfänglichen Standardsprachen sind Englisch und Spanisch, aber Benutzer können jede
Sprache wählen, die sie bevorzugen. Option vier ist das Übersetzen
und Erkennen der Ausgangssprache. Hier muss der Benutzer nur die Zielsprache
angeben
und eine Phrase eingeben. Die Anwendung erkennt
automatisch die Ausgangssprache und übersetzt
die Phrase entsprechend. Option fünf ist das Übersetzen
und Spezifizieren von Sprachen. Diese Option fordert den Benutzer
auf, sowohl die Ausgangs
- als auch die Zielsprache auszuwählen , bevor er einen zu übersetzenden Satz
eingibt Und schließlich gibt es bei Option sechs
die Option „Verwaltete Favoriten“. Dadurch gelangt der Benutzer zu
einem Untermenü, in dem er ein Wörterbuch mit
seinen Lieblingsübersetzungen verwalten
kann. Wenn wir Option eins wählen, verwendet
die Anwendung die
Standardquellsprache Englisch und die
Standardzielsprache
Spanisch, um
den von uns eingegebenen Ausdruck zu übersetzen. Wenn wir Option zwei wählen, listet
die Anwendung alle Sprachen auf, die
über das Google
Translator-Modul verfügbar sind . Jede Sprache wird von
einer Abkürzung begleitet , die anstelle des
vollständigen Sprachnamens
verwendet werden kann . Als Nächstes wählen wir
Option vier und geben die Zielsprache zusammen mit dem zu
übersetzenden Wort ein. Die Anwendung erkennt
automatisch die Ausgangssprache und
führt die Übersetzung durch. Wenn wir schließlich Option sechs
wählen, rufen wir ein Untermenü zur Verwaltung bevorzugter Übersetzungen auf, in dem vier zusätzliche
Optionen verfügbar sind. Wenn wir Option eins wählen,
können wir einen Favoriten hinzufügen. Wir können die Lieblingsphrase
zusammen mit der Quell
- und Zielsprache eingeben . Dann
werden diese Informationen im
Favoriten-Wörterbuch gespeichert. Benutzer können so viele
Favoriten hinzufügen, wie sie möchten. Mit Option vier können wir
unser Favoriten-Wörterbuch einsehen. Hier sehen wir, dass alle Übersetzungen zusammen mit ihren
Quell- und Zielsprachen gespeichert
wurden . Wenn wir zu
den Übersetzeroptionen zurückkehren möchten , geben
wir Null ein. Und wir können das Programm
komplett beenden , indem wir erneut Null
eingeben. Großartig. Jetzt ist es Zeit für
dich, das Projekt zu starten. Denken Sie daran, dass in diesem Modul detaillierte Anweisungen
Schritt für Schritt
sowie ein Beispiel für eine Interaktion
verfügbar sind . Viel Glück und viel Spaß beim Programmieren.
57. Sprachübersetzer-App-Projektlösungen: Willkommen zum Video von Language
Translators Solutions. Sie sich keine Sorgen, wenn
Sie hier sind, weil Sie sich auf einer Stufe
festgefahren fühlen . Wir werden die
Lösung Schritt für Schritt durchgehen. Sie können weitermachen, bis Sie den Teil erreichen, der
Ihnen Probleme bereitet. Und wenn Sie hier sind
, weil Sie das
Projekt
bereits abgeschlossen haben , herzlichen Glückwunsch Sie haben
viel harte Arbeit geleistet. Lassen Sie uns jetzt eintauchen
und Ihre Antworten überprüfen. Im ersten Schritt beginnen wir mit der
Initialisierung des Projekts. Als erstes müssen wir eine Kopie des
mitgelieferten Notizbuchs
erstellen Als Nächstes installieren wir die Deep
Translator-Bibliothek, indem einfach den Befehl
PIP install Deep Translator ausführen In Schritt A schreiben wir die Funktion „Hauptmenü
anzeigen“, die die Standardsprache von und zu Sprachen
als Argumente Die Print-Anweisungen zeigen
das Hauptmenü des Programms an. In Schritt zwei B definieren wir
zwei globale Variablen, Standard von und Standard zwei. Diese werden für die
Schnellübersetzungsfunktion verwendet. Die Standardvariable „Von“
legt die Ausgangssprache während die
Standardvariable „Zwei “ die
Standardzielsprache festlegt. In Schritt zwei C aktualisieren wir
das Hauptprogramm, um die
Funktion „Hauptmenü anzeigen“ aufzurufen Funktion „Hauptmenü anzeigen die globalen Variablen, die wir
in Schritt zwei B definiert haben , als Argumente zu übergeben. In Schritt drei A fordern wir den Benutzer
mit einem Aufruf der
Eingabefunktion zur Wahl der
Übersetzungsoption auf. In Schritt drei B erstellen wir
einen bedingten Block, entscheidet, welche Aktion auf
der Grundlage der Benutzereingabe entscheidet, welche Aktion ausgeführt werden
soll. Schließlich werden wir
jede Print-Anweisung durch
den entsprechenden
Funktionsaufruf der Aktion ersetzen jede Print-Anweisung durch . Aber vorerst werden wir
Print-Anweisungen
als Platzhalter verwenden Print-Anweisungen
als Platzhalter Wenn ein Benutzer eine
Option auswählt, die nicht existiert, wird eine Fehlermeldung angezeigt In Schritt vier A definieren wir die globale Variable, mit der
wir die
Hauptprogrammschleife steuern. Dann erstellen
wir in Schritt vier B die Hauptprogrammschleife. Damit der Benutzer
so viele Übersetzungen machen kann,
wie er möchte, verwenden
wir eine Wile-Schleife, die
von der globalen Variablen gesteuert wird, die
wir zuvor festgelegt haben Anschließend verschieben wir den Code, der das Hauptmenü
anzeigt, Wahl des Benutzers
erfasst und die
entsprechende Aktion
innerhalb der While-Schleife bestimmt innerhalb der While-Schleife bestimmt Schließlich entfernen wir die
Print-Anweisung für Option Null und setzen stattdessen die Variable
should continue auf False. Wenn der Benutzer nun
Null eingibt, wird das Programm beendet. In Schritt fünf A schreiben wir
die Übersetzungsfunktion. Diese Funktion
benötigt drei Parameter die Ausgangssprache,
die Zielsprache und den zu übersetzenden Text. Innerhalb der Funktion verwenden wir das Google Translator-Modul und seine Übersetzungsmethode, um diese Übersetzung zu
verarbeiten. Nun mag es
etwas seltsam erscheinen,
eine Methode wie translate
für etwas aufzurufen eine Methode wie translate wie
eine Funktion aussieht, aber das liegt daran, dass
Google Translate tatsächlich ein Objekt erstellt. Das Konzept eines Objekts ist
ein Begriff der objektorientierten Programmierung, den wir in diesem Kurs nicht
behandelt haben .
Aber mach dir keine Sorgen. ist nicht
notwendig,
objektorientierte Programmierung zu verstehen , um die Bibliothek
für einfache Übersetzungen zu verwenden ,
wie wir es hier tun. Wir geben einfach das Ergebnis
der Übersetzungsmethode zurück , das den übersetzten Text
enthält. In Schritt fünf B
schreiben wir die Funktion
Quick Translate. Die Funktion verwendet die Quell
- und Zielsprache als Parameter und fordert
den Benutzer dann auf, den Text einzugeben, den
er übersetzen möchte Um die Übersetzung durchzuführen, rufen
wir die zuvor erstellte
Übersetzungsfunktion übergeben die Ausgangssprache, Zielsprache und den Text des
Benutzers als Argumente Schließlich erfassen wir
den übersetzten Text , der von der
Übersetzungsfunktion zurückgegeben wird, und zeigen ihn an. In Schritt fünf C aktualisieren wir
den
Bedingungsblock des Hauptprogramms, um
die Schnellübersetzungsfunktion aufzurufen die Schnellübersetzungsfunktion wenn der Benutzer Option eins
auswählt. Wir übergeben die Standardvariablen von und zu den
Sprachvariablen als Argumente. Die einzige Eingabe, die der
Benutzer für
diese Option machen muss, ist also der Text, den
er übersetzen möchte. In Schritt sechs A schreiben wir
eine Funktion zum Drucken der verfügbaren Sprachen
im Google Translator-Modul. Diese Funktion
benötigt keine Parameter. Innerhalb der Funktion rufen wir
die
Methode für unterstützte Sprachen von G auf und fordern die Rückgabe der Ergebnisse als Wörterbuch
an. Dann durchgehen wir
das Wörterbuch und drucken jede Sprache zusammen
mit der entsprechenden
Abkürzung aus. In Schritt 6 B
aktualisieren wir den
Bedingungsblock im Hauptprogramm, aktualisieren wir den
Bedingungsblock im Hauptprogramm um die
Funktion
Verfügbare Sprachen drucken aufzurufen , wenn Option
zwei ausgewählt ist. In Schritt 7 A
schreiben wir eine Funktion, um
die Standardsprachen festzulegen , die das Programm während der
Schnellübersetzungsfunktion verwenden
soll. Diese Funktion
benötigt keine Parameter. Innerhalb der Funktion
fordern wir den Benutzer auf,
eine neue
Standardquellsprache und
dann eine neue
Standardzielsprache einzugeben eine neue
Standardquellsprache und . Danach drucken wir eine
Bestätigungsnachricht, die den Benutzer
darüber informiert, dass die Sprachen
erfolgreich aktualisiert wurden. Schließlich geben wir sowohl
die Ausgangs- als auch die Zielsprache zurück. In Schritt 7 B aktualisieren
wir den
Bedingungsblock im Hauptprogramm, aktualisieren
wir den
Bedingungsblock im um
die Funktion „
Standardsprachen festlegen“ aufzurufen . Da diese Funktion
die neuen Quell- und
Zielsprachen als Tupel zurückgibt , entpacken
wir diese Werte direkt in die globalen
Standardsprachvariablen In Schritt acht A schreiben wir die Funktion translate detect
source lang, die eine Phrase in
eine bestimmte Zielsprache übersetzt und dabei automatisch
die Ausgangssprache erkennt Diese Funktion
benötigt keine Parameter. Innerhalb der Funktion
fordern wir den Benutzer auf,
die Zielsprache einzugeben. Dann rufen wir die
Schnellübersetzungsfunktion , die wir zuvor für
die Übersetzung definiert haben. Um
die Ausgangssprache automatisch zu erkennen, übergeben
wir die Zeichenfolge auto
als erstes Argument. Die vom Benutzer angegebene
Zielsprache wird als
zweites Argument übergeben. Da die
Schnellübersetzungsfunktion
den Benutzer sowohl zur Eingabe auffordert als auch den übersetzten Text ausgibt, müssen
wir
diese Aktionen in dieser Funktion nicht duplizieren diese Aktionen in dieser Funktion In Schritt 8 B aktualisieren wir
den Bedingungsblock im Hauptprogramm, um
die
Quellsprachenfunktion „Translate Detect“ aufzurufen Quellsprachenfunktion „Translate Detect In Schritt neun A schreiben wir die endgültige Übersetzungsfunktion,
translate specify angs. Bei dieser Funktion
muss der Benutzer sowohl die Quell
- als auch die Zielsprache
angeben Sobald diese bereitgestellt sind,
wird die Funktion Quick
Translate aufgerufen, die den
Benutzer zur Eingabe des
zu übersetzenden Textes auffordert und dann die Übersetzung
durchführt In Schritt neun B aktualisieren wir
den Bedingungsblock im Hauptprogramm, um
die Funktion Translate specify
Lang aufzurufen Funktion Translate specify
Lang In Schritt zehn A schreiben wir die Funktion zur Anzeige
des Favoritenmenüs. Diese Funktion benötigt
keine Eingaben und zeigt
dem Benutzer einfach das Menü an. In Schritt zehn B schreiben wir
die Funktion, die
das Favoriten-Wörterbuch verwaltet. Diese Funktion verwendet das
Favoriten-Wörterbuch als Eingabe. Innerhalb der Funktion definieren wir
eine neue Loop-Control-Variable, um einen Wile-Loop
zu verwalten, sodass die Benutzer so
oft mit
dem Menü des Favoriten interagieren können, wie sie möchten Innerhalb der Schleife zeigen wir das Favoritenmenü an und fordern den Benutzer auf, eine Option
auszuwählen Da wir diese Funktionen noch nicht
geschrieben haben, verwenden
wir Print-Anweisungen
als Platzhalter Wenn der Benutzer Null eingibt, setzen
wir die
Loop-Control-Variable auf False, wodurch die
Favoriten-Verwaltungsschleife verlassen und zum
Hauptprogrammmenü zurückkehrt In Schritt zehn C definieren wir
zunächst
eine neue globale Variable, um das
Favoriten-Wörterbuch zu speichern. das Favoriten-Wörterbuch zu
einer globalen Variablen machen , wird sichergestellt, dass es nicht jedes Mal zurückgesetzt wird, wenn der Benutzer auf
das Favoritenmenü zugreift Wir aktualisieren auch den
Bedingungsblock des
Hauptprogramms , um
die Funktion „Verwaltete Favoriten“ aufzurufen die Funktion „Verwaltete Favoriten das globale
Favoriten-Wörterbuch zu
übergeben Schließlich aktualisieren wir das
globale Favoriten-Wörterbuch mit dem Rückgabewert der verwalteten
Favoritenfunktionen. In Schritt 11 A schreiben
wir die Funktion „
Favoriten hinzufügen“. Zunächst fordert diese Funktion den Benutzer auf,
den Text einzugeben, den
er als Favorit speichern möchte. Als Nächstes bitten wir den Benutzer, die Ausgangssprache
des Originaltextes
einzugeben , gefolgt von der Zielsprache, in die er ihn übersetzen
möchte. Dann rufen wir die in Schritt 5 A
definierte
Übersetzungsfunktion auf, um die Übersetzung zu
bearbeiten, wobei wir den Text, die
Ausgangssprache und die
Zielsprache des Benutzers als Argumente übergeben. Das Übersetzungsergebnis wird in der
Übersetzungsvariablen
erfasst. Anschließend erstellen wir einen neuen
Eintrag im
Favoriten-Wörterbuch , wobei der
zu favorisierte Text als Schlüssel
und ein Wörterbuch, das die Ausgangssprache, die
Zielsprache und den
übersetzten Text als Wert enthält , verwendet wird. Schließlich geben wir
eine Bestätigungsnachricht aus, die den Benutzer
darüber informiert , dass sein Favorit erfolgreich zum Wörterbuch
hinzugefügt
wurde ,
und geben das Wörterbuch zurück. In Schritt 11 B aktualisieren wir
den bedingten Block
in der
Funktion Favoriten verwalten, den bedingten Block
in der
Funktion Favoriten verwalten um die Funktion zum Hinzufügen von
Favoriten auszuführen wenn der Benutzer Option eins auswählt. Wir aktualisieren auch das
Favoriten-Wörterbuch mit dem
Rückgabewert des Funktionsaufrufs. In Schritt 12 A schreiben wir die Funktion zum
Entfernen von Favoriten, die das
Favoriten-Wörterbuch als Parameter verwendet. Zunächst fordert die Funktion den Benutzer auf,
den
Favoriten einzugeben, den er entfernen möchte Als Nächstes prüfen wir, ob die Eingabe des Benutzers im
Favoriten-Wörterbuch vorhanden Ist dies der Fall, entfernen wir den Eintrag und drucken eine
Bestätigungsnachricht aus. Wenn die Eingabe nicht existiert, zeigen
wir stattdessen eine
Fehlermeldung an. Schließlich geben wir das
Favoriten-Wörterbuch zurück. In Schritt 12 B aktualisieren wir den bedingten Block in
der Funktion „Verwaltete Favoriten , um die
Funktion zum
Entfernen von Favoriten auszuführen wenn der Benutzer Option zwei wählt. In Schritt 13 A schreiben
wir die Funktion „
Favorit bearbeiten“. Zunächst fordert die Funktion den Benutzer auf,
den
Favoriten einzugeben, den er bearbeiten möchte Als Nächstes wird geprüft, ob der Favorit im Wörterbuch
existiert. Ist dies der Fall, wird der
Benutzer nach
einer neuen Zielsprache gefragt , in die der Favorit
übersetzt werden soll. Dann rufen wir die
Übersetzungsfunktion übergeben die ursprüngliche
Ausgangssprache, die neue Zielsprache und den zu übersetzenden Text. Dadurch wird der ursprüngliche Satz zurückgegeben der in die neue Sprache
übersetzt wurde. Wir aktualisieren das
Favoriten-Wörterbuch mit der neuen
Zielsprache und der aktualisierten Übersetzung und drucken anschließend eine
Bestätigungsnachricht aus. Wenn der Benutzer einen
Favoriten eingegeben hat, der nicht existiert
, wird eine Fehlermeldung angezeigt. Schließlich geben wir das
Favoriten-Wörterbuch zurück. In Schritt 13 B aktualisieren wir den bedingten Block
in der Funktion „Favoriten verwalten um die
Funktion
„Favoriten bearbeiten“ auszuführen wenn der Benutzer
Option drei auswählt. In Schritt 14 A schreiben
wir eine Funktion zum Drucken des aktuellen
Favoriten-Wörterbuchs. Zunächst prüft die Funktion ob das Wörterbuch Einträge
enthält. Wenn ja,
verwenden wir eine Vierschleife, um über alle Schlüssel und
Werte im Wörterbuch zu iterieren und sie in einer klaren
und gut formatierten Zeichenfolge
auszudrucken Wenn das Wörterbuch leer ist, zeigen
wir einfach
eine Fehlermeldung an In Schritt 14 B aktualisieren
wir den bedingten Block
in der Funktion „Verwaltete
Favoriten“, um die Funktionalität des
Druckfavoriten
auszuführen falls der Benutzer Option vier wählt. Schließlich machen
wir in Schritt 15 unser Programm
robuster, indem Fehler
behandeln, die durch ungültige Benutzereingaben
entstehen können. Wir beginnen mit der Änderung der
Hauptschleife unseres Programms. Wenn wir den
Benutzer zur Eingabe auffordern, schließen
wir den Code, der
die Eingabe in eine Ganzzahl umwandelt, in
einen Triblock Wenn der Benutzer nicht numerischen
Text eingibt und die Umwandlung fehlschlägt, fangen
wir den resultierenden
Wertfehler
im Except-Block ab, wo wir dem Benutzer eine informative
Fehlermeldung
anzeigen Außerdem verwenden wir das
Schlüsselwort continue, um
den Rest der aktuellen Iteration zu überspringen und die nächste zu starten,
um sicherzustellen, dass das Programm
nicht abstürzt Wenn die Umwandlung erfolgreich ist, der usblock ausgeführt und die endgültige formatierte
Zeichenfolge Wir wenden den gleichen Ansatz zur
Fehlerbehandlung auf die
Funktionsschleife der verwalteten Favoriten Hier verpacken wir die Benutzereingabe
in einen Triblock. Wenn die Umwandlung fehlschlägt,
fangen wir den Fehler im
Accept-Block ab, zeigen eine Fehlermeldung an und fahren mit der nächsten Iteration Wenn sie erfolgreich ist, wird der
se-Block wie erwartet ausgeführt. Großartig. Sie haben jetzt
gesehen, wie Sie eine App für Sprachübersetzungen mithilfe der Deep
Translator-Bibliothek
eine App für Sprachübersetzungen
erstellen, die Funktionen
wie schnelle Übersetzungen, anpassbare
Standardsprachen und Fehlerbehandlung bietet. Fühlen Sie sich frei, die App
weiter zu verfeinern und zu Ihrer eigenen zu machen. Erforsche und baue weiter. Es gibt immer mehr zu lernen.