Alaeddin und die Wunderlampe
Wörter zählen
In dieser Aufgabe sollst Du herausfinden, welche Wörter in der Geschichte "Alaeddin und die Wunderlampe" am häufigsten auftreten. Dazu benötigen wir unterschiedliche Datentypen, um Dinge zu zählen und zu sortieren.
Schreibe ein Programm, das die Wörter in der Datei alaeddin.txt zählt und die häufigsten 100 ausgibt.
Hinweise
Hinweis 1
Wie sollte die Ausgabe aussehen?
Schreibe einige beispielhafte Zeilen der Ausgabe auf.
Antworten auf die Hinweisfragen
Hinweis 2
Welche Schritte sollte das Programm ausführen und in welcher Reihenfolge?
Zeichne ein Flußdiagramm.
Antworten auf die Hinweisfragen
Hinweis 3
Welcher Datentyp in Python ist gut dazu geeignet, Dinge zu zählen?
Hinweis 4
Welche Programmzeilen benötigst Du, um
- den Datentyp zu initialisieren?
- ein einzelnes Wort zu zählen?
Antworten auf die Hinweisfragen
Hinweis 5
Welche Python-Funktionen kannst Du verwenden, um
- Eine Textdatei einzulesen?
- Einen String in Wörter aufzuteilen?
Antworten auf die Hinweisfragen
Hinweis 6
Welcher Datentyp in Python ist gut zum Sortieren geeignet?
Wie würdest Du die Wörter und deren Anzahl in dieser Datenstruktur repräsentieren? Nach welchen Kriterien sortiert Python Integers, Strings, Tupel und andere Listen? Wie würden sie sortiert werden?
Antworten auf die Hinweisfragen
Hinweis 7
An welcher Stelle der Ausgabe würdest Du Wörter wie “ist”, “Zauberer”, “Ring” oder “Tageslicht” erwarten? Prüfe ob die Ausgabe Deiner Erwartung entspricht.
Falls sie es nicht tut, teste Dein Programm zuerst mit einem kurzen Textabschnitt (2-3 Zeilen).
Antworten auf die Hinweisfragen
Hinweis 8
Vorsicht: Sonderzeichen und Großbuchstaben können beim Aufteilen der Wörter das Ergebnis verzerren. Entferne die Sonderzeichen, bevor Du anfängst zu zählen. Wie läßt sich das erreichen?
Antworten auf die Hinweisfragen
Antworten auf die Hinweisfragen
Antwort auf Hinweisfrage 1
Beispielhafte Ausgabe:
1311 und
223 prinzessin
175 sultan
Antwort auf Hinweisfrage 2
- Lies die Datei ein
- Teile sie in Wörter auf
- Zähle jedes Wort
- Sortiere die Wörter nach Anzahl
- Gib die häufigsten Wörter + Anzahlen aus.
Antwort auf Hinweisfrage 3
Dictionaries sind zum Zählen von Dingen geeignet
Antwort auf Hinweisfrage 4
Dictionary initialisieren:
counter = {}
Ein einzelnes Wort zählen:
counter.setdefault('palast', 0)
counter['palast'] += 1
Antwort auf Hinweisfrage 5
Lesen einer Textdatei:
text = open(dateiname).read()
Einen String zerteilen:
woerter = text.split()
Antwort auf Hinweisfrage 6
Listen in Python lassen sich gut sortieren. Listen können Tupel enthalten, z.B.:
daten = [ (12, 34), (56, 78) ]
daten.sort()
Versuche die folgenden Listen in der Python Shell zu sortieren:
[('aaa', 100), ('bbb', 20)]
und
[(100, 'aaa'), (20, 'bbb')]
Antwort auf Hinweisfrage 7
Die ersten vier Plätze sollten sein:
1311 und
990 die
968 der
867 er
Antwort auf Hinweisfrage 8
Sonderzeichen lassen sich einzeln mit der Funktion str.replace
entfernen, z.B. str.replace('.', '')
.
Quellenangabe
Alaeddin und die Wunderlampe von Curt Moreck ( https://www.gutenberg.org/ebooks/22413)