Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Übung 9

Heinrich-Heine-Universität Düsseldorf

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: Welt

Dabei 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:

Aufgabe 3 (optional) – NPC- oder Markt-Simulation mit Coroutines

Implementieren Sie mindestens drei Coroutines, die unabhängig voneinander Aktionen ausführen.

Beispiele:

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:

Die API soll mindestens einen GET- und einen POST-Endpunkt enthalten.

Testen Sie die API über die automatisch erzeugte Dokumentation unter /docs.

1