Coding for KidsCoding for Kids
Kreative LevelHerausforderungenLehrerhandbuch
Für Funktionen abstimmen
Fortgeschrittener Python-Entwicklungskurs
Kapitel
>
Stufe

String- und Zeitmodule
String-Modul

Ziel

Kombiniere Anwendungsdaten und versende Antwortschreiben unter Verwendung des string-Moduls.

Da nun das Material für den Neubau des Bauernhofs berücksichtigt wurde, ist es an der Zeit, unsere Aufmerksamkeit auf neues Personal für den Hof zu richten. Wir haben mehrere Briefe, die für Bewerbungen verschickt werden müssen; das würde natürlich viel Schreibarbeit erfordern, jedoch können wir das string-Modul nutzen, um Vorlagen zu erstellen und Text zu formatieren, was die Handhabung größerer Textmengen erleichtert.

Der Import des string-Moduls erfolgt diesmal etwas anders als bei anderen Modulen, da wir Klassen importieren, die das Modul erweitern, und diese auf folgende Weise ausgeführt werden:

import string from string import Template from string import Formatter

Dies gibt uns Zugriff auf das Modul selbst sowie auf Template- und Formatierungsklassen, die ihre eigenen Funktionen beinhalten. Für unsere Zwecke werden wir die folgenden Funktionen und Klassen verwenden:

  • string.capwords(): Diese Funktion wandelt Wörter eines Strings in die richtige Groß- und Kleinschreibung um, indem der erste Buchstabe eines Wortes groß und die übrigen Buchstaben klein geschrieben werden, unabhängig davon, wie der String formatiert ist.
  • Template(): Dies ist eine String-Klasse, die verwendet wird, um ein Template-Objekt zu erstellen. Sie nutzt die Funktion substitute(), mit der du einen String vorbereiten und eine Stelle mit dem $-Zeichen markieren kannst, um Daten auszutauschen. Dies ermöglicht es dir, modulare Strings zu erstellen, die du nach Belieben verwenden kannst.
  • Formatter(): Dies ist eine String-Klasse, die dazu dient, einen String zu formatieren oder zusammenzustellen. Sie funktioniert ähnlich wie die Template()-Klasse, ist jedoch robuster und besser für längere String-Sequenzen geeignet. Sie verwendet die Funktion format(), mit der du einen String vorbereiten und String-Daten mithilfe von {} einfügen kannst.

Beginne damit, zum leuchtenden X-Zeichen zu gehen und die Funktion read() zu verwenden, während du dem Aktenschrank zugewandt bist. Dadurch erhältst du Zugriff auf Ordner, die nach verschiedenen Bewerbern benannt sind. Diese Ordner sind als drei (3) Listenkonstanten mit den Namen: folder_a, folder_b und folder_c vorhanden.

Gehe zum dunklen X-Zeichen über den grünen Teppich und wende dich dem Schreibtisch zu. Erstelle drei (3) Listen namens: names_a, names_b und names_c. Verwende List Comprehensions mit der Funktion string.capwords(), um die Namen korrekt zu formatieren. Ordne den Listen jeweils die Konstanten zu, die denselben Buchstaben in ihren Namen tragen. Zum Beispiel für names_a verwende string.capwords() mit folder_a, so: names_a = [string.capwords(x) for x in folder_a]. Verwende dieselbe Formel, um names_b und names_c zu befüllen.

Erstelle eine Liste namens all_names und füge die drei (3) Namenslisten zusammen, so: all_names = names_a + names_b + names_c. Dadurch werden alle Listen zu einer größeren Liste zusammengeführt. Fahre fort, indem du die Python-Funktion join() verwendest, um alle Listeneinträge zu einem String zu verbinden. Du kannst außerdem angeben, was zwischen den Listeneinträgen stehen soll, indem du es in Anführungszeichen setzt, so: all_names = ", ".join(all_templates). Verwende die vorgegebene write()-Funktion mit der Liste all_names, um alle Namen in korrekter Großschreibung niederzuschreiben.

Als Nächstes gehe zum goldenen X-Zeichen und wende dich dem Schreibtisch zu, denn hier werden wir Vorlagen einrichten. Wir besitzen bereits zwei vorgefertigte Template-Objekte namens red_templates und blue_templates:

red_template = Template( "Hello, $name , thank you for applying for this position.") blue_template = Template( "Esteemed , $name , your application has been approved.")

Jede dieser Vorlagen enthält eine einzigartige Nachricht; sie haben jedoch einen gemeinsamen Platzhalter mit der Bezeichnung $name. Das Symbol $ wird verwendet, um einen Platzhalter zu kennzeichnen, der durch einen String deiner Wahl ersetzt werden kann – in diesem Fall, wie der Titel andeutet, ein Name. Wenn kein Wert eingesetzt wird, verwendet die Vorlage einfach den Platzhalter im String selbst. Ergänzend dazu erstelle eine Liste namens all_templates.

Erstelle eine for-Schleife mit vier (4) Durchläufen, mit der wir die Namen in den drei (3) Namenslisten durch die Vorlagen mit integrierten Namen ersetzen. Zum Beispiel wenden wir die Vorlage red_template auf die Liste names_a an. Verwende die Funktion substitute() der Template()-Klasse, um den Platzhalter $name in der Vorlage durch die Namen in der Liste zu ersetzen.

for x in range(4): names_a[x] = red_template.substitute(name=names_a[x])

Führe denselben Vorgang mit names_b und names_c durch, wobei du für names_b ebenfalls red_template und für names_c blue_template verwendest.

Sobald alle Namenslisten mit den neuen Vorlagen befüllt sind, ist es Zeit, diese zu überprüfen. Erstelle eine neue Liste namens all_templates und füge alle Namenslisten zusammen, so: all_templates = names_a + names_b + names_c. Verwende erneut die Funktion join(), um alle vorgefertigten Namen in ein lesbares Format zu überführen, beispielsweise: all_templates = "\n".join(all_templates). Nutze die vorgegebene write()-Funktion mit all_templates, um alle Überschriften der verschiedenen Namen darzustellen.

Als Nächstes gehe zum dunklen X-Zeichen über den roten Teppich und wende dich dem Schreibtisch zu. Hier werden wir den ersten Satz von Briefen formatieren und verfassen. Beginne damit, zwei (2) Formatter-Objekte namens red_1 und red_2 mit der Klassennotation zu erstellen, so: red_1 = Formatter(), red_2 = Formatter(). Erstelle für die Erstellung der Briefe eine Liste namens red_letters.

Wie zuvor werden wir eine for-Schleife mit vier (4) Durchläufen verwenden. Wir haben zwei Sätze vorgefertigter Strings, die mithilfe der Funktion format() formatiert werden und den Namensvariablen hinzugefügt werden. Diese formatierten Strings werden der Liste red_letters hinzugefügt, wodurch eine umfassende Liste von Briefen entsteht, die versendet werden sollen. Zum Beispiel werden die red_1-Formatobjekte mit der Liste names_a formatiert und der Liste red_letters hinzugefügt.

for x in range(4): red_letters.append(red_1.format( "{} Orientation will begin next week, please report to the office...", names_a[x]))

Verfahre ebenso mit dem red_2-Formatobjekt, indem du dessen vorgefertigten String verwendest und die Liste names_b in die Schleife einfügst. Sobald alles eingerichtet ist, benutze die Funktion join() mit red_letters, um die Daten in einer einzigen Datei zusammenzuführen, so: red_letters = "\n".join(red_letters). Verwende anschließend die Funktion write() mit red_letters, um alle formatierten Briefe, die verschickt werden, niederzuschreiben.

Abschließend gehe zum dunklen X-Zeichen über den blauen Teppich und wende dich dem Schreibtisch zu. Hier werden wir den letzten Satz von Briefen formatieren und verfassen. Wie zuvor erstelle zwei (2) Formatter-Objekte namens blue_1 und blue_2 mit der Klassennotation, so: blue_1 = Formatter(), blue_2 = Formatter(). Erstelle eine Liste namens blue_letters, um alle Briefe zu formatieren und zu verfassen.

Erstelle erneut eine for-Schleife mit vier (4) Durchläufen und verwende die vorgefertigten Strings, um die Namenslisten zu formatieren und mithilfe der Funktion format() der Liste blue_letters hinzuzufügen. In diesem Fall werden die blue_1-Formatobjekte mit der Liste names_c und die blue_2-Formatobjekte mit der Liste names_b kombiniert. Dies erfolgt analog zum Vorgehen über dem roten Teppich, jedoch mit anderen Werten, was die Vielseitigkeit der Verwendung von Formatierungen und Vorlagen unterstreicht. Sobald alles abgeschlossen ist, verwende die Funktion write() mit blue_letters, um die letzten Briefe abzulegen und die Ebene abzuschließen.

Codebuch