Programmieren mit Python: Verzweigungen & while-Schleifen

In diesem Dossier wiederholen wir die Grundwerkzeuge des Programmierens. Wir beschränken uns bewusst auf sehr wenige Sprachelemente: Variablen, Ein-/Ausgabe, Verzweigungen (if/elif/else) und while-Schleifen. Alles andere (for-Schleifen, Funktionen, Listen, Dictionaries) ist nicht erlaubt – ausser in den Zusatzaufgaben ganz am Schluss.

Das mag zuerst nach einer Einschränkung aussehen. Tatsächlich ist es aber genau umgekehrt: Mit diesen wenigen Bausteinen lässt sich jedes Programm schreiben. Wer sie sicher beherrscht, hat das Fundament gelegt.

Die Aufgaben werden von Kapitel zu Kapitel anspruchsvoller. Löse sie der Reihe nach und schaue dir die Lösung erst an, wenn du selbst einen ernsthaften Versuch unternommen hast.

Wichtige Python-Befehle

Der Werkzeugkasten: 6 Muster, die du auswendig können musst

Wir starten ganz gemütlich. Hier geht es nur darum, wieder ein Gefühl für Variablen, input() und print() zu bekommen.

Aufgabe: Schreibe ein Programm, das nach dem Namen und dem Geburtsjahr fragt und dann ausgibt: Hallo Anna, du wirst dieses Jahr 17 Jahre alt.

Lösung

Aufgabe: Frage die Länge und die Breite eines Rechtecks ab und gib Fläche und Umfang aus.

Lösung

Aufgabe: Eine Anzahl Sekunden wird eingegeben (z.B. $3'750$). Gib sie im Format 1 h 2 min 30 s aus.

Tipp: Du brauchst die Ganzzahldivision // und den Modulo-Operator %.

Lösung

Ein Programm soll nicht immer dasselbe tun. Mit if, elif und else treffen wir Entscheidungen.

Aufgabe: Lies eine ganze Zahl ein und gib aus, ob sie gerade oder ungerade ist.

Lösung

Aufgabe: Lies eine ganze Zahl ein und gib aus, ob sie positiv, negativ oder null ist.

Lösung

Aufgabe: Lies drei Zahlen ein und gib die grösste aus. Verwende dazu nur if/elif/else (kein max()).

Lösung

Aufgabe: Lies eine Punktzahl zwischen $0$ und $100$ ein und gib die Note nach folgender Tabelle aus:
Punkte Note
90–100 6
75–89 5
60–74 4
40–59 3
0–39 2

Fange auch ungültige Eingaben (kleiner als $0$ oder grösser als $100$) ab.

Lösung

Aufgabe: Lies ein Jahr ein und gib aus, ob es ein Schaltjahr ist. Regel:
  • Durch $4$ teilbar → Schaltjahr,
  • ausser durch $100$ teilbar → kein Schaltjahr,
  • ausser durch $400$ teilbar → doch Schaltjahr.

Teste dein Programm mit $2024$, $1900$, $2000$ und $2023$.

Lösung

Eine while-Schleife wiederholt einen Block solange eine Bedingung wahr ist. Drei Dinge gehören immer dazu:

  1. Initialisierung: die Laufvariable vor der Schleife setzen
  2. Bedingung: wann soll weitergemacht werden?
  3. Veränderung: die Laufvariable im Schleifenkörper verändern

Vergisst du Punkt 3, läuft dein Programm ewig. Mit Ctrl + C brichst du eine Endlosschleife ab.

Aufgabe: Gib die Zahlen von $1$ bis $10$ aus, jede auf einer eigenen Zeile.

Lösung

Aufgabe: Lies eine Zahl $n$ ein und mache einen Countdown von $n$ bis $0$. Am Schluss soll Start! ausgegeben werden.

Lösung

Aufgabe: Gib alle Vielfachen von $7$ aus, die kleiner als $100$ sind.

Löse die Aufgabe auf zwei Arten:

  1. mit einer Laufvariablen, die in Siebnerschritten wächst
  2. mit einer Laufvariablen, die in Einerschritten wächst, plus einer Verzweigung

Lösung

Aufgabe: Gib alle Zweierpotenzen aus, die höchstens $1000$ sind: $1, 2, 4, 8, \ldots$

Lösung

Aufgabe: Gib eine Tabelle der Quadratzahlen und Kubikzahlen von $1$ bis $12$ aus:
 n     n^2     n^3
 1       1       1
 2       4       8
 3       9      27
 ...

Tipp: Mit \t erzeugst du einen Tabulator.

Lösung

Jetzt kommt das wohl wichtigste Muster überhaupt: der Akkumulator. Wir legen eine Variable an, die das Zwischenergebnis speichert, und verändern sie in jedem Schleifendurchgang.

Aufgabe: Lies eine Zahl $n$ ein und berechne die Summe $1 + 2 + 3 + \ldots + n$.

Lösung

Aufgabe: Berechne die Fakultät $n! = 1 \cdot 2 \cdot 3 \cdot \ldots \cdot n$.

Lösung

Aufgabe: Berechne die Summe aller geraden Zahlen von $1$ bis $n$, und gleichzeitig die Summe aller ungeraden. Gib beide aus.

Lösung

Aufgabe: Du legst $1000$ Franken zu $2\%$ Zins pro Jahr an. Nach wie vielen Jahren hast du zum ersten Mal mehr als $2000$ Franken? Gib auch den Kontostand nach jedem Jahr aus.

Lösung

Bis jetzt haben wir immer eine feste Anzahl Zahlen verarbeitet. Nun soll der Benutzer selbst entscheiden, wann Schluss ist. Dazu vereinbart man einen Abbruchwert (engl. sentinel), z.B. die $0$.

Aufgabe: Lies so lange Zahlen ein, bis der Benutzer $0$ eingibt. Gib danach die Summe aller eingegebenen Zahlen aus.

Lösung

Aufgabe: Erweitere das vorige Programm: Gib zusätzlich die Anzahl der eingegebenen Zahlen und den Mittelwert aus. Achte darauf, dass dein Programm nicht abstürzt, wenn der Benutzer sofort $0$ eingibt.

Lösung

Aufgabe: Lies wieder Zahlen ein, bis $0$ eingegeben wird. Gib die grösste und die kleinste eingegebene Zahl aus. Es dürfen auch negative Zahlen eingegeben werden!

Lösung

Aufgabe: Programmiere eine Passwortabfrage. Das Passwort lautet python. Der Benutzer hat höchstens drei Versuche. Bei richtigem Passwort: Willkommen!, nach drei Fehlversuchen: Zugang gesperrt.

Lösung

Jetzt wird es interessant: Innerhalb der Schleife treffen wir Entscheidungen.

Aufgabe: Wie viele Zahlen von $1$ bis $100$ sind durch $3$ teilbar, aber nicht durch $5$? Lass das Programm die Antwort berechnen.

Lösung

Aufgabe: Der Computer denkt sich eine Zufallszahl zwischen $1$ und $100$. Der Benutzer rät. Nach jedem Tipp gibt das Programm zu klein oder zu gross aus. Bei richtigem Tipp wird die Anzahl der Versuche ausgegeben.

Lösung

Aufgabe (Collatz): Lies eine natürliche Zahl $n > 0$ ein und wende folgende Regel wiederholt an:
  • Ist $n$ gerade, ersetze $n$ durch $n/2$.
  • Ist $n$ ungerade, ersetze $n$ durch $3n+1$.

Gib jeden Zwischenschritt aus und höre auf, sobald $n = 1$ erreicht ist. Zähle die Schritte.

Probiere danach $n = 27$ aus.

Lösung

Aufgabe: Berechne die Quersumme einer eingegebenen Zahl. Beispiel: $4271 \rightarrow 4+2+7+1 = 14$.

Tipp: Mit n % 10 bekommst du die letzte Ziffer, mit n // 10 schneidest du sie ab.

Lösung

Aufgabe: Drehe eine eingegebene Zahl um: $4271 \rightarrow 1724$. Das Ergebnis soll eine Zahl sein, kein String.

Lösung

Aufgabe: Lies eine Zahl $n \geq 2$ ein und prüfe, ob sie eine Primzahl ist.

Lösung

Aufgabe: Gib alle Primzahlen bis $100$ aus. Du brauchst dazu zwei ineinander verschachtelte while-Schleifen.

Lösung

Aufgabe: Berechne den grössten gemeinsamen Teiler zweier Zahlen mit dem euklidischen Algorithmus:

Ersetze wiederholt das Paar $(a, b)$ durch $(b,\ a \bmod b)$, bis $b = 0$ ist. Dann ist $a$ der ggT.

Lösung

Aufgabe: Berechne die Quadratwurzel einer positiven Zahl $x$ mit dem Heron-Verfahren, ohne math.sqrt zu verwenden.

Starte mit einer Näherung $g = x/2$ und verbessere sie wiederholt mit $$g_{\text{neu}} = \frac{1}{2}\left(g + \frac{x}{g}\right)$$ bis sich der Wert kaum mehr ändert.

Lösung

Aufgabe: Wandle eine eingegebene Dezimalzahl in ihre Binärdarstellung um, ohne bin() zu verwenden.

Tipp: Teile wiederholt durch $2$ und sammle die Reste ein – aber achte auf die Reihenfolge!

Lösung

Aufgabe: Gib mit verschachtelten while-Schleifen folgende Figuren aus. Die Höhe $n$ wird eingelesen.
*            Figur 1:        *****      Figur 2:          *
**                           ****                        ***
***                          ***                        *****
****                         **                        *******
*****                        *

Lösung

Aufgabe: Gib die kleine Einmaleins-Tabelle ($1$ bis $10$) als sauberes Gitter aus.

Lösung

Aufgabe (Knacknuss): Ein Bauer hat Hühner und Kaninchen. Zusammen haben die Tiere $35$ Köpfe und $94$ Beine. Wie viele Tiere jeder Sorte hat er? Löse die Aufgabe mit einer while-Schleife durch systematisches Ausprobieren – nicht mit einem Gleichungssystem.

Lösung

Wer alles Bisherige gelöst hat, darf sich hier austoben. Ab jetzt sind Listen erlaubt. Die wichtigsten Befehle:

liste = []                    # leere Liste
liste = [3, 1, 4, 1, 5]       # Liste mit Startwerten
 
liste.append(9)               # Element hinten anfügen
liste[0]                      # erstes Element (Zählung beginnt bei 0!)
liste[-1]                     # letztes Element
len(liste)                    # Anzahl Elemente
liste[2] = 7                  # Element überschreiben
liste.pop(1)                  # Element an Position 1 entfernen
Aufgabe: Lies Zahlen ein, bis $0$ eingegeben wird, und speichere sie in einer Liste. Gib danach aus: Anzahl, Summe, Mittelwert, Maximum und Minimum – und zwar alles selbst berechnet mit while-Schleifen, ohne sum(), max() oder min().

Lösung

Aufgabe: Sortiere eine Liste von Zahlen mit Bubble Sort: Gehe die Liste wiederholt durch und vertausche benachbarte Elemente, wenn sie in der falschen Reihenfolge stehen. Wiederhole, bis kein Tausch mehr nötig war.

Lösung

Aufgabe (Sieb des Eratosthenes): Finde alle Primzahlen bis $100$, ohne eine einzige Division durchzuführen.

Idee: Schreibe alle Zahlen von $2$ bis $100$ auf. Nimm die erste unmarkierte Zahl – sie ist prim. Streiche danach alle ihre Vielfachen. Wiederhole.

Lösung

Aufgabe (Umgekehrtes Zahlenraten): Jetzt denkt du dir eine Zahl zwischen $1$ und $1000$, und der Computer rät. Nach jedem Tipp antwortest du mit k (zu klein), g (zu gross) oder r (richtig).

Programmiere den Computer so, dass er möglichst wenige Versuche braucht.

Lösung

  • gf_informatik/python_basic_aufgaben.1787907922.txt.gz
  • Zuletzt geändert: 2026-08-28 09:05
  • von sca