Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:tutorial_oop3 [2025-05-19 20:13] hoftalit:tutorial_oop3 [2025-05-26 14:11] (aktuell) – [Aufgabe F] hof
Zeile 307: Zeile 307:
  
 Wie sieht die `ConsoleLearner.learn` Methode jetzt aus? Wie sieht die `ConsoleLearner.learn` Methode jetzt aus?
- 
 ## Speichern & Lesen ## Speichern & Lesen
 Wir möchten `VocabularyUnits` in eine Datei speichern und von dort wieder lesen können. Es bietet sich an, eine Unit als JSON-Objekt zu speichern. JSON (JavaScript Object Notation) sind Dictionaries, die als Keys nur Strings, als Werte ausschliesslich Strings, Zahlen, Boolean-Werte, Listen und wiederum JSON-Objekte enthalten. Ein `WordPair` könnte zum Beispiel so aussehen: Wir möchten `VocabularyUnits` in eine Datei speichern und von dort wieder lesen können. Es bietet sich an, eine Unit als JSON-Objekt zu speichern. JSON (JavaScript Object Notation) sind Dictionaries, die als Keys nur Strings, als Werte ausschliesslich Strings, Zahlen, Boolean-Werte, Listen und wiederum JSON-Objekte enthalten. Ein `WordPair` könnte zum Beispiel so aussehen:
Zeile 315: Zeile 314:
 </code> </code>
  
 +Eine ganze Unit wäre dann eine Liste solcher Objekte:
 +
 +<code python>
 +[
 +  {
 +    "word1": "Baum",
 +    "word2": "tree",
 +    "correct": 24,
 +    "incorrect": 4,
 +    "score": 0.9249845921993256
 +  },
 +  {
 +    "word1": "Blume",
 +    "word2": "flower",
 +    "correct": 30,
 +    "incorrect": 14,
 +    "score": 0.9999847523718017
 +  }
 +]
 +</code>
 ### Aufgabe E: JSON-Serialisierung ### Aufgabe E: JSON-Serialisierung
  
Zeile 325: Zeile 344:
         import json         import json
         with open(filename, 'w') as out:         with open(filename, 'w') as out:
-            json.dump(json_list, out)+            json.dump(json_list, out, indent=2 # indent=2 aligns the output nicely
 </code> </code>
 +
  
 ### Statische Methoden ### Statische Methoden
Zeile 355: Zeile 375:
             return VocabularyUnit(pairs)             return VocabularyUnit(pairs)
 </code> </code>
 +### Aufgabe F
 +Füge statische Methoden zu `VocabularyUnit` und `WordPair` hinzu, um die gespeicherten Daten wieder einlesen zu können.
 +
 +Ein Beispielprogramm für unseren Code könnte nun so aussehen:
 +
 +<code python>
 +from voci import *
 +
 +filename = 'data/test.voci'
 +unit = VocabularyUnit.read_from(filename)
 +
 +learner = ConsoleLearner()
 +try:
 +    learner.learn(unit)
 +    unit.print_stats()
 +finally:   # Code im finally-Block wird jedenfalls ausgeführt, auch wenn eine Exception passiert ist.
 +    unit.save_to(filename)
 +</code>
 +
 +
 +### Aufgabe G - Webapp
 +S. auch [[talit:flask_webserver]] und [[ef_informatik:webapps:start]].
  • talit/tutorial_oop3.1747685589.txt.gz
  • Zuletzt geändert: 2025-05-19 20:13
  • von hof