Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| talit:tutorial_oop3 [2025-05-26 05:13] – [Aufgabe E: JSON-Serialisierung] hof | talit:tutorial_oop3 [2025-10-28 08:38] (aktuell) – [Score berechnen] hof | ||
|---|---|---|---|
| Zeile 203: | Zeile 203: | ||
| * Der neueste Versuch soll mehr Gewicht haben als lange zurückliegende Versuche. | * Der neueste Versuch soll mehr Gewicht haben als lange zurückliegende Versuche. | ||
| - | Es bietet sich an, mit einem Decay zu arbeiten: jedes Mal, wenn ein neuer Wert dazukommt, wird der alte Score mit einem Faktor <1 multipliziert. Mit einem Faktor von 0.5 setzt sich der Score zur Hälfte aus dem neuesten Test, zur anderen Hälfte aus dem bisherigen Score zusammen: | + | Es bietet sich an, mit einem _Decay_ (_de_: Zerfall) |
| $$\begin{aligned} score_{new} &= 0.5 \cdot (test_0 + score_{old}) \\ | $$\begin{aligned} score_{new} &= 0.5 \cdot (test_0 + score_{old}) \\ | ||
| &= 0.5 \cdot (test_0 + 0.5 \cdot (test_1 + 0.5 \cdot (test_2 + \ldots))) \\ | &= 0.5 \cdot (test_0 + 0.5 \cdot (test_1 + 0.5 \cdot (test_2 + \ldots))) \\ | ||
| Zeile 344: | Zeile 344: | ||
| import json | import json | ||
| with open(filename, | with open(filename, | ||
| - | json.dump(json_list, | + | json.dump(json_list, |
| - | </code | + | </ |
| - | > | + | |
| ### Statische Methoden | ### Statische Methoden | ||
| Fürs Einlesen kommt die umgekehrte `json.load` Funktion zum Einsatz. Allerdings haben wir noch ein kleines Problem: Eine VocabularyUnit existiert ja noch gar nicht, wenn wir sie einlesen wollen aus der Datei. Wir benötigen also eine Funktion, die nicht an eine bestimmte Unit gebunden ist. Diese werden mit `@staticmethod` annotiert und haben keinen `self` Parameter. Statische Funktionen werden direkt über den Klassennamen aufgerufen. | Fürs Einlesen kommt die umgekehrte `json.load` Funktion zum Einsatz. Allerdings haben wir noch ein kleines Problem: Eine VocabularyUnit existiert ja noch gar nicht, wenn wir sie einlesen wollen aus der Datei. Wir benötigen also eine Funktion, die nicht an eine bestimmte Unit gebunden ist. Diese werden mit `@staticmethod` annotiert und haben keinen `self` Parameter. Statische Funktionen werden direkt über den Klassennamen aufgerufen. | ||
| Zeile 374: | Zeile 375: | ||
| return VocabularyUnit(pairs) | return VocabularyUnit(pairs) | ||
| </ | </ | ||
| - | |||
| ### Aufgabe F | ### Aufgabe F | ||
| Füge statische Methoden zu `VocabularyUnit` und `WordPair` hinzu, um die gespeicherten Daten wieder einlesen zu können. | Füge statische Methoden zu `VocabularyUnit` und `WordPair` hinzu, um die gespeicherten Daten wieder einlesen zu können. | ||
| Zeile 394: | Zeile 394: | ||
| </ | </ | ||
| + | |||
| + | ### Aufgabe G - Webapp | ||
| + | S. auch [[talit: | ||