Fortgeschrittener Python-Entwicklungskurs
Kapitel
>
Stufe
Mathematische Module
Einführung in das Mathematikmodul
Ziel
Prüfe Grundstücksurkunden und Grundstücksgrenzen auf dem Bauernhof, überprüfe sie und verarbeite die Zahlen mit den Funktionen des Math-Moduls.
Im Büro ganz am Rande des Hauptgebäudes befindet sich ein Archiv mit alten Bauplänen für das Gebäude und Grundstücksurkunden. Es gibt Pläne, den Bauernhof nach Osten zu erweitern, aber es ist wichtig, vor der Prüfung der Baupläne alle Unterlagen in Ordnung zu bringen. Dies erfolgt durch die Verwendung des python’s math-Moduls.
import math
Wie das zuvor verwendete statistics-Modul verfügt auch das math-Modul über eine Sammlung mathematischer Funktionen, die wir zur Erweiterung der eingebauten Python-Bibliothek verwenden können:
-
math.isnan(): Prüft, ob der eingegebene Wert keine Zahl ist -
math.isinf(): Prüft, ob der eingegebene Wert eine unendliche Zahl ist -
math.isfinite(): Prüft, ob der eingegebene Wert endlich ist -
math.prod(): Multipliziert alle übergebenen Argumente -
math.pow(): Nimmt zwei Argumente und gibt den Wert des ersten Arguments hoch (Potenz) des zweiten Arguments zurück -
math.trunc(): Kürzt das angegebene Argument ab, entfernt den Dezimalteil einer Gleitkommazahl und wandelt sie in eine ganze Zahl um. (Es wird nicht gerundet, sondern nur der Dezimalteil entfernt) -
math.copysign(): Nimmt zwei Argumente, kopiert das Vorzeichen (-,+) vom zweiten Argument und wendet es auf das erste Argument an -
math.factorial(): Nimmt ein Argument und multipliziert dieses in absteigender Reihenfolge bis 1. Zum Beispiel, wenn der Wert5ist, rechnet es:5x4x3x2x1und liefert ein Ergebnis.
Wir werden diese Funktionen verwenden, um einige Daten zu überprüfen und aufzuzeichnen, um die Entwicklungsprojekte vorzubereiten. Es gibt drei Listen-Konstanten, die Schemata für das Farmland enthalten: red_schematics, green_schematics, blue_schematics. Diese Schemata enthalten nicht numerische und unbrauchbare Werte, verwende die Mathematikfunktionen, um die Elemente zu identifizieren und die brauchbaren Daten zu finden, damit wir sie aufzeichnen können.
Zuerst gehe zum dunklen X-Marker auf dem roten Teppich und verwende eine Schleife, um die Elemente der Listen-Konstante red_schematics zu durchlaufen, um brauchbare Elemente zu identifizieren.
for x in red_schematics: y = math.isnan (float(x)) if y == True: player.speak("Not a Number") else: y = math.isinf(float(x)) if y == True: player.speak("Is infinite") else: player.speak(x)
Die Schleife durchläuft alle Elemente der Liste. Die Funktion math.isnan() identifiziert nicht numerische Einträge, während math.isinf() unendliche Werte erkennt, die für die Datensammlung nicht verwendet werden können. Erstelle eine neue Liste namens red_values und benutze eine List Comprehension, um die unerwünschten Elemente zu entfernen, indem du math.isfinite() zur Filterung einsetzt, wie folgt: red_values = [x for x in red_schematics if math.isfinite(float(x))].
Fasse anschließend alle Zahlen zusammen, indem du die Funktion math.prod() verwendest, um alle Elemente in der Liste miteinander zu multiplizieren, wie folgt: red_values = math.prod(red_values).
Wende diesen Filtervorgang auch auf die dunklen X-Marker auf den grünen und blauen Teppichen an, indem du die Listen-Konstanten green_schematics und blue_schematics verwendest und die Elemente in Listen namens green_values und blue_values zusammenführst. Gehe zum goldenen X-Marker, wende dich dem Schreibtisch zu und benutze die im Editor vorgefertigte write()-Funktion, um die brauchbaren Schemadaten aufzuzeichnen. Sobald du alles zusammengetragen hast, gehe zum hellen X-Marker und benutze die open()-Funktion, um den nächsten Raum zu betreten.
Sobald du im nächsten Raum bist, gibt es ein paar Schreibtische mit einigen Grundstücksurkunden und Koordinaten. Es ist eine gute Idee, einige Daten aufzuzeichnen, bevor du die neuen Erweiterungen des Bauernhofs im nächsten Bereich jenseits der Brücke überprüfst. Gehe zum hellen X-Marker vor der Kiste mit Karten beim ersten Schreibtisch und benutze die read()-Funktion, um Indexdaten für die Grundstücksurkunden zu erhalten.
Gehe zum dunklen X-Marker auf dem violetten Teppich, erstelle eine Variable namens purple_data und verwende die Funktion math.pow(), um die erfassten Daten zur Ermittlung der Koordinaten zu potenzieren. Setze den Index hoch 3, wie folgt: purple_data = math.pow( -index data- , 3 ), und vergiss nicht, die zuvor gelesenen Indexdaten hinzuzufügen. Benutze math.trunc(), um den Dezimalteil der Variable zu entfernen, wie folgt: purple_data = math.trunc(purple_data). Sobald dies erledigt ist, verwende an dem X-Marker die im Editor vorgefertigte write()-Funktion mit purple_data, um die in der Variable gespeicherten Daten aufzuzeichnen.
Zum Abschluss gehe zum hellen X-Marker vor dem Aktenschrank neben dem oberen Schreibtisch. Benutze erneut die read()-Funktion, um Indexdaten zu erhalten. Diese Daten müssen aufgeschlüsselt werden, um weitere Koordinateninformationen für das Grundstück zu enthüllen. Erstelle eine Variable namens white_data, um den im Aktenordner gefundenen Datenwert zu speichern, und eine Variable namens sign, um die im Aktenordner gefundene Vorzeichen-Zahl zu speichern. Gehe zum dunklen X-Marker auf dem weißen Teppich und verwende die Funktion math.copysign() mit den beiden erstellten Variablen als Argumente und weise den Wert white_data zu, wie folgt: white_data = math.copysign(white_data,sign).
Sobald dies erledigt ist, benutze white_data und wende math.factorial() an, um den Index zu multiplizieren. Konvertiere white_data in einen Integer und verwende ihn mit der Funktion, wie folgt: white_data = math.factorial(int(white_data)). Verwende die vorgefertigte write()-Funktion, um white_data aufzuzeichnen und so das Level abzuschließen.