Übungsaufgaben — gestaffelt nach Schwierigkeit
Diese Seite bündelt Übungsaufgaben zu if ... elif ... else, while, random und Funktionen — von leichten Abwandlungen bekannter Aufgaben bis hin zu kleinen Mini-Projekten, die alles kombinieren. Lassen Sie sich Zeit, und schauen Sie nur in die Lösung, wenn Sie wirklich nicht weiterkommen.
Wetter-Entscheidung
Auto-GradingSchreiben Sie eine Funktion
entscheide_kleidung(temperatur), die basierend auf der Temperatur"T-Shirt"oder"Jacke"zurückgibt.
- Über 20 Grad:
"T-Shirt"- 20 Grad oder weniger:
"Jacke"
Mögliche Lösungdef entscheide_kleidung(temperatur): if temperatur > 20: return "T-Shirt" else: return "Jacke"Ein klassisches Beispiel für eine einfache Verzweigung. Wenn die Bedingung
temperatur > 20wahr ist, kommt der erste Block (T-Shirt), sonst derelse-Block (Jacke). Achten Sie auf den Grenzfall: 20 Grad ist nicht "über 20" — also fällt 20 inselse.
Gerade oder ungerade?
Auto-GradingSchreiben Sie eine Funktion
gerade_oder_ungerade(zahl), die für eine beliebige ganze Zahl die Wörter"gerade"oder"ungerade"zurückgibt mitreturn.Tipp: Eine Zahl ist genau dann gerade, wenn
zahl % 2 == 0.
Mögliche Lösungdef gerade_oder_ungerade(zahl): if zahl % 2 == 0: return "gerade" else: return "ungerade"Der Modulo
% 2ergibt 0 bei geraden Zahlen und 1 bei ungeraden — ein klassischesif/elsereicht für die Entscheidung. Wenn Sie sich vergegenwärtigen, dassreturneine Funktion beendet, merken Sie, dass man sich daselsesparen könnte:def gerade_oder_ungerade(zahl): if zahl % 2 == 0: return "gerade" return "ungerade"
Rechteck-Fläche
Auto-GradingSchreiben Sie eine Funktion
rechteck_flaeche(breite, laenge), die den Flächeninhalt eines Rechtecks berechnet und zurückgibt.
Mögliche Lösungdef rechteck_flaeche(breite, laenge): flaeche = breite * laenge return flaecheOder noch kompakter:
return breite * laenge. Eine Funktion mit zwei Parametern und einem Rückgabewert — der typische Aufbau, den Sie in der Funktionen-Lektion vom Würfel- und Quader-Volumen kennen.
Bestanden oder nicht
Auto-GradingSchreiben Sie eine Funktion
bestanden(punkte, max_punkte), die prüft, ob der Prozentsatz der erreichten Punkte mindestens 50 % beträgt. Die Funktion soll"Bestanden"oder"Durchgefallen"zurückgeben.
Mögliche Lösungdef bestanden(punkte, max_punkte): if punkte / max_punkte >= 0.5: return "Bestanden" else: return "Durchgefallen"Der Prozentsatz wird durch Division berechnet (
punkte / max_punkte). Achten Sie darauf, dass Sie nicht Ganzzahldivision (//) verwenden, sonst könnten z.B. 24 von 50 Punkten fälschlicherweise als 0 % berechnet werden. In Python 3 ist/automatisch eine Gleitkommadivision, was hier richtig ist.
Liste mit Zahlen befüllen
Auto-GradingSchreiben Sie eine Funktion
zahlen_bis(zahl), die eine Liste von 1 biszahlaufbaut und zurückgibt.Tipp: Beginnen Sie mit einer leeren Liste
ergebnis = []und nutzen Sieergebnis.append(...), um Zahlen hinzuzufügen.
Mögliche Lösungdef zahlen_bis(zahl): ergebnis = [] for i in range(1, zahl + 1): ergebnis.append(i) return ergebnisDie natürliche Wahl ist hier eine
for-Schleife, weil wir die Anzahl Durchgänge ja im Voraus kennen — nämlich genauzahlMal.Sie könnten dieselbe Aufgabe auch mit
whilelösen, müssten dann aber eine Zählvariable selbst hochzählen:def zahlen_bis(zahl): ergebnis = [] i = 1 while i <= zahl: ergebnis.append(i) i += 1 # nicht vergessen, sonst Endlosschleife! return ergebnisFaustregel:
forwenn die Anzahl Durchgänge vorher feststeht,whilewenn das Ende von einer Bedingung abhängt, die wir während der Schleife laufend prüfen müssen.
Summe bis n
Auto-GradingSchreiben Sie eine Funktion
summe_bis(n), die die Summe aller Zahlen von 1 bisnberechnet und zurückgibt (z.B. für 5 wäre das 1 + 2 + 3 + 4 + 5 = 15).
Mögliche Lösungdef summe_bis(n): summe = 0 for i in range(1, n + 1): summe = summe + i return summeEine
for-Schleife liegt hier nahe, weil die Anzahl Durchgänge — nämlichn— schon zu Beginn feststeht. Eine Variablesummewird mit 0 initialisiert und in jedem Durchgang umivergrössert.Das gleiche Ergebnis erreichen Sie mit einer
while-Schleife:def summe_bis(n): summe = 0 i = 1 while i <= n: summe = summe + i i += 1 return summeHier müssen Sie den Zähler
iselbst hochzählen — etwas mehr Schreibarbeit als beifor.whilewird dann interessant, wenn die Anzahl Durchgänge nicht vorher bekannt ist (siehe z.B. die Zinseszins-Aufgabe weiter unten).
Durch 3 teilbar auflisten
Auto-GradingSchreiben Sie eine Funktion
liste_durch_drei(obergrenze), die alle Zahlen von 1 bisobergrenzedurchgeht und nur die durch 3 teilbaren in einer Liste zurückgibt.Tipp: Eine Zahl ist durch 3 teilbar, wenn
zahl % 3 == 0.
Mögliche Lösungdef liste_durch_drei(obergrenze): ergebnis = [] for i in range(1, obergrenze + 1): if i % 3 == 0: ergebnis.append(i) return ergebnisHier kombinieren wir
for(zum Durchlaufen der Zahlen),if(zum Prüfen der Teilbarkeit) und.append()(zum Befüllen der Liste). Das Pattern werden Sie als Schweizer Taschenmesser immer wieder brauchen.