Modul 1 — Algorithmische Muster

Wie man ein Problem in Schritte zerlegt.

Was bedeutet „low-level"?

In diesem Modul implementierst du Funktionen, die in der Standardbibliothek längst fertig sind (max(), sort(), collections.Counter). Das ist Absicht: Wer einmal selbst sortiert oder ein Maximum gesucht hat, versteht viel besser, was passiert, wenn man die Standardfunktionen später einfach aufruft.

Drei wiederkehrende Muster

  • Filtern/Trennen: über eine Liste laufen und Werte je nach Bedingung in eine von mehreren Hilfslisten einsortieren.
  • Reduzieren: über eine Liste laufen und einen einzigen Wert daraus ableiten (Summe, Maximum, …).
  • Abbilden (Mapping): eine Funktion auf jedes Element anwenden und die Ergebnisse in einer neuen Liste sammeln.

Jedes dieser Muster taucht in den Aufgaben mindestens einmal auf.

HinweisEingaben in den Aufgaben

In den meisten Aufgaben liest du die Werte mit input() ein (aus dem Modul „Variablen" bekannt) — die Prüfung speist die Eingaben automatisch ein und vergleicht deine Ausgabe Zeile für Zeile. Bei der Quadrate-Aufgabe (Mapping) definierst du die Liste dagegen selbst; dort steht das Schreiben der Funktion und das Abbilden im Vordergrund. Die Beispiele hier nutzen feste Werte, damit du sie direkt ausführen kannst.

Beispiel 1.1 — Mapping: Funktion auf jedes Element anwenden

Python wird geladen…
Ausgabe

    

Modul 2 — Maximum suchen & in zwei Listen trennen

Zwei klassische Reduktions- und Filter-Patterns.

Maximum manuell finden

Das Muster: Setze eine Hilfsvariable auf den ersten Wert, laufe über alle weiteren Werte und ersetze die Hilfsvariable, wenn du etwas Größeres siehst.

groesste = zahlen[0]
for z in zahlen:
    if z > groesste:
        groesste = z

Das gleiche Muster funktioniert für das Minimum — einfach < statt >.

Beispiel 2.1 — Maximum ohne max()

Python wird geladen…
Ausgabe

    

Eine Liste in zwei Listen aufteilen

Lege vor der Schleife zwei leere Listen an. Innerhalb der Schleife entscheidet eine if-Abfrage, in welche der beiden Listen das aktuelle Element kommt.

Beispiel 2.2 — gerade/ungerade trennen

Python wird geladen…
Ausgabe

    

Modul 3 — Häufigkeiten in einem Dictionary zählen

Das klassische „Counter"-Muster.

Idee

Ein dict ist perfekt, um zu zählen, wie oft etwas vorkommt: Schlüssel = das gezählte Objekt, Wert = aktueller Zähler. Beim ersten Auftreten wird der Schlüssel mit 1 angelegt, danach jeweils um 1 erhöht.

if x in ergebnis:
    ergebnis[x] = ergebnis[x] + 1
else:
    ergebnis[x] = 1

Neu hier: x in ergebnis prüft, ob x bereits ein Schlüssel im Dictionary ist (liefert True/False). So unterscheidest du „erstes Vorkommen" von „schon gesehen".

Beispiel 3.1 — Buchstaben zählen

Python wird geladen…
Ausgabe

    

TippAuch für Dictionaries als Eingabe

Wenn deine Eingabe schon eine Liste von Dictionarys ist (z. B. mehrere Schüler), greifst du in der Schleife einfach mit schueler["name"] auf den Wert zu — wie in der Dictionary-Lerneinheit gezeigt.

Modul 4 — Sortieren mit Vergleich & iterative Näherung

Zwei klassische While-Algorithmen.

Bubble-Sort: Vergleichen und Tauschen

Eine sehr einfache Sortierung: Du läufst immer wieder durch die Liste und vergleichst jeweils zwei Nachbarn. Ist der linke größer als der rechte, tauschst du sie. Nach mehreren Durchläufen ist die Liste sortiert.

if a[j] > a[j + 1]:
    temp = a[j]
    a[j] = a[j + 1]
    a[j + 1] = temp

In Python geht das Tauschen auch in einer Zeile: a[j], a[j+1] = a[j+1], a[j].

Zwei neue Bausteine: Bubble-Sort braucht eine Schleife in der Schleife (die äußere wiederholt die Durchläufe, die innere vergleicht die Nachbarn) — das ist die erste geschachtelte Schleife in dieser Reihe. Und a = zahlen.copy() legt eine Kopie der Liste an, damit die Original-Liste des Aufrufers unverändert bleibt.

Beispiel 4.1 — Bubble-Sort von Hand

Python wird geladen…
Ausgabe

    

Iterative Näherung mit while

Sehr oft willst du eine Operation so lange wiederholen, bis eine Grenze erreicht ist — z. B. verdopple, bis der Wert mindestens 100 ist. Eine while-Schleife mit einer veränderlichen Variable und einem Schritt-Zähler ist genau das richtige Muster.

Beispiel 4.2 — Verdoppeln bis zur Grenze

Python wird geladen…
Ausgabe

    

Quellen & weiterführende Literatur

Wo das hier vermittelte Wissen offiziell dokumentiert ist.

Offizielle Python-Dokumentation

Tutorials & Lehrbücher

  • Real Python — Conditional Statements in Python: realpython.com/python-conditional-statements
  • Real Python — Defining Your Own Python Function: realpython.com/defining-your-own-python-function
  • Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms. 4. Auflage, MIT Press, 2022 — Hintergrund zu Sortier- und Suchalgorithmen.
  • Theis, Thomas: Einstieg in Python. 7. Auflage, Rheinwerk Verlag, 2023 — Kapitel zu Funktionen, Listen und Dictionarys.
  • Klein, Bernd: Einführung in Python 3. 4. Auflage, Hanser Verlag, 2021 — Abschnitte zu Datenstrukturen und Algorithmen.