Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Einstieg - Geschachtelte Listen

Hochzeitsvorbereitung

Die Liste der Hochzeitsgäste ist bereits sehr lang.

Damit bei den Vorbereitungen keine Fehler unterfaufen, soll die Gästeliste mit einem Programm verwaltet und verarbeitet werden.

Aufgabe 1

In einem ersten Ansatz werden alle Gäste der Reihe nach in eine Liste aufgenommen.

gaeste = ["Ursula", "Winfried", "Ulrike", "Klaus", ...]

Die Gästeliste soll ausgedruckt werden. Es stehen zwei Programme zur Auswahl.

Programm 1:

gaeste = ["Ursula", "Winfried", "Ulrike", "Klaus", ...]

def ausgabe(liste):
    i = 0
    while i < len(liste):
        element = liste[i]
        print(element)
        i = i + 1

# Test
ausgabe(gaeste)

Programm 2:

gaeste = ["Ursula", "Winfried", "Ulrike", "Klaus", ...]

def ausgabe(liste):
    if len(liste) == 0:
        pass
    else:
        erstesElement = liste[0]
        restListe = liste[1:]
        print(erstesElement)
        ausgabe(restListe)

# Test
ausgabe(gaeste)

(a) Vergleiche die beiden Programme. Welche Unterschiede sind erkennbar?

(b) Warum leisten beide Programme das Gewünschte? Erläutere hierzu die jeweilige Arbeitsweise.

Aufgabe 2

In einem zweiten Ansatz werden alle Gruppierungen bei der Darstellung mit Listen beibehalten.

gaeste = [
    ["Ursula", "Winfried"], 
    ["Ulrike", "Klaus"], 
    ["Christiane", "Tim"], 
    ["Andreas"], 
    ["Ulrike", "Peter", ["Kea", "Lena", "Paula"]], 
    ...
    ]

Beachte, dass eine Gruppierung hier eine Untergruppierung enthalten kann und dieses wiederum eine Untergruppierung usw..

Das folgende Programm druckt die Gästeliste aus.

def ausgabe(liste):
    if len(liste) == 0:
        pass
    else:
        erstesElement = liste[0]
        restListe = liste[1:]
        if type(erstesElement) == list:
            ausgabe(erstesElement)
        else:
            print(erstesElement)
        ausgabe(restListe)

# Test 
ausgabe(gaeste)

(a) Analysiere den Quelltext. Erkläre, wie das Programm bei der Verarbeitung der geschachtelten Listen vorgeht.

(b) Warum lässt sich im Fall geschachtelter Listen nicht so einfach ein iteratives Programm entwickeln?

X

Fehler melden

X

Suche