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…Prüfung
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…Prüfung
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…Prüfung
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…Prüfung
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…Prüfung
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…Prüfung
Quellen & weiterführende Literatur
Wo das hier vermittelte Wissen offiziell dokumentiert ist.
Offizielle Python-Dokumentation
- Python Tutorial — 4. More Control Flow Tools: docs.python.org/3/tutorial/controlflow.html
- Python Tutorial — 4.7. Defining Functions: docs.python.org/3/tutorial/controlflow.html#defining-functions
- Python Tutorial — 5.1. More on Lists: docs.python.org/3/tutorial/datastructures.html#more-on-lists
- Python HOWTO — Sorting (Kontext für Pythons eingebautes Sortieren — hier implementieren wir es aber selbst): docs.python.org/3/howto/sorting.html
- PEP 8 — Style Guide for Python Code: peps.python.org/pep-0008
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.