Dr. Konrad Völkel
Renato Sprenger-Vuković
Heinrich-Heine-Universität Düsseldorf
Sommersemester 2026
Einführung in Python
Übungsblatt 9
Aufgabe 1 – Ereignisstrom mit Generatoren¶
Viele Anwendungen erzeugen fortlaufend Ereignisse, die von anderen Teilen des Programms verarbeitet werden.
Implementieren Sie einen Generator events(), der fortlaufend
Ereignisse erzeugt. Ein Ereignis soll mindestens einen Typ und eine
Beschreibung besitzen.
Nutzen Sie den Generator anschließend in Ihrer Wirtschaftssimulation oder CYOA-Anwendung, um Spielereignisse (z. B. Kauf, Verkauf, Begegnung, Entscheidung, Questabschluss, …) zu erzeugen und auszugeben.
Erweitern Sie die Lösung optional um eine Coroutine, die Ereignisse über
send(...) empfängt und in einem Log speichert.
Hinweis zu Coroutines¶
Generatoren können nicht nur Werte mittels yield erzeugen, sondern
auch Werte empfangen.
Beispiel:
def logger():
while True:
nachricht = yield
print("LOG:", nachricht)
log = logger()
next(log) # Coroutine starten
log.send("Hallo")
log.send("Welt")Ausgabe:
LOG: Hallo
LOG: WeltDabei pausiert die Coroutine bei yield. Mit send(...) wird die
Ausführung fortgesetzt und der übergebene Wert wird als Ergebnis des
yield-Ausdrucks verwendet.
Aufgabe 2 – API für Spielstände¶
Erweitern Sie Ihre Wirtschaftssimulation oder Ihre CYOA-Anwendung um eine REST-API mit FastAPI.
Implementieren Sie mindestens die folgenden Endpunkte:
GET /saveLiefert den aktuellen Spielzustand.
POST /loadLädt einen Spielzustand aus den übergebenen Daten.
GET /statsLiefert ausgewählte Statistiken Ihrer Anwendung.
Aufgabe 3 (optional) – NPC- oder Markt-Simulation mit Coroutines¶
Implementieren Sie mindestens drei Coroutines, die unabhängig voneinander Aktionen ausführen.
Beispiele:
Händler ändern Preise.
NPCs bewegen sich durch die Spielwelt.
Zufallsereignisse treten auf.
Führen Sie die Coroutines abwechselnd aus und geben Sie die erzeugten Aktionen aus.
Aufgabe 4 (optional) – HTTP-API für Aktionen¶
Stellen Sie zentrale Aktionen Ihrer Anwendung über eine REST-API bereit.
Beispiele:
Kauf oder Verkauf eines Gegenstands
Ausführen einer Spielaktion
Auswahl einer Handlungsmöglichkeit
Die API soll mindestens einen GET- und einen POST-Endpunkt enthalten.
Testen Sie die API über die automatisch erzeugte Dokumentation unter
/docs.
1