Übung: Notenspiegel
Die Punkte einer Klausur stehen in einer Liste. Eine eigene Funktion macht aus Punkten eine Note, und eine Schleife gibt jede Klausur aus, zählt die bestandenen und berechnet den Durchschnitt.
Vorher ansehen: Schleifen mit for, Entscheidungen mit if, elif und else
Was du lernst
In dieser Übung erstellst du den Notenspiegel einer Klausur und kannst danach:
- eine Funktion schreiben, die mit
if,elifundelseaus Punkten eine Note berechnet und mitreturnzurückgibt - mit
forundenumerate()jede Klausur nummeriert mit Punkten und Note ausgeben - in derselben Schleife mit einer Sammelvariablen zählen, wie viele Klausuren bestanden sind
- den Durchschnitt mit
sum()undlen()berechnen und mit:.1fauf eine Nachkommastelle ausgeben
Als Skript herunterladen
python-exercise-grades.py mit der Aufgabe als Kommentar, zum Ausführen in VS Code oder Positron
Aufgabe
Zehn Klausuren sind korrigiert, und ihre Punkte von 0 bis 100 stehen schon
im Programm. Schreib zuerst eine Funktion grade(points), die zu den Punkten
die Note zurückgibt: ab 90 Punkten eine 1, ab 75 eine 2, ab 60 eine 3, ab 50
eine 4 und darunter eine 5. Das Hauptprogramm main gibt dann jede Klausur
mit ihrer Nummer, ihren Punkten und ihrer Note aus. Zum Schluss schreibt es,
wie viele Klausuren bestanden sind, also eine 4 oder besser haben, und wie
viele Punkte es im Durchschnitt waren, mit einer Nachkommastelle.
So soll es aussehen
Klausur 1: 95 Punkte, Note 1
Klausur 2: 72 Punkte, Note 3
Klausur 3: 48 Punkte, Note 5
Klausur 4: 88 Punkte, Note 2
Klausur 5: 61 Punkte, Note 3
Klausur 6: 50 Punkte, Note 4
Klausur 7: 30 Punkte, Note 5
Klausur 8: 79 Punkte, Note 2
Klausur 9: 90 Punkte, Note 1
Klausur 10: 66 Punkte, Note 3
8 von 10 bestanden
Durchschnitt: 67.9 Punkte
Dein Programm
def main():
exams = [95, 72, 48, 88, 61, 50, 30, 79, 90, 66]
passed = 0
# Gib jede Klausur mit Nummer, Punkten und Note aus
# und zähle dabei, wie viele bestanden sind.
# Gib die Zahl der Bestandenen und den Durchschnitt aus.
def grade(points):
# Gib zu den Punkten die Note 1 bis 5 zurück.
return 5
main()Weil grade ihr Ergebnis zurückgibt, kannst du sie einzeln prüfen, bevor du
die Schleife schreibst. Ersetze dazu die letzte Zeile vorübergehend durch
print(grade(90), grade(89), grade(50), grade(49)); herauskommen soll
1 2 4 5.
TIPP 1 ANZEIGEN
In grade kommt es auf die Reihenfolge an: Prüfe zuerst points >= 90,
dann mit elif die Bedingung points >= 75 und so weiter nach unten, und
was übrig bleibt, landet im else. Python nimmt den ersten Zweig, dessen
Bedingung gilt, und so bekommen 95 Punkte nur die 1, obwohl 95 auch größer
als 75 ist.
TIPP 2 ANZEIGEN
for number, points in enumerate(exams, start=1): liefert in jeder Runde
die Nummer und die Punkte einer Klausur. Ruf im Rumpf grade(points) auf,
merk dir die Note in einer Variablen und zähl passed um eins hoch, wenn
die Note 4 oder kleiner ist.
LÖSUNG ANZEIGEN
def main():
exams = [95, 72, 48, 88, 61, 50, 30, 79, 90, 66]
passed = 0
for number, points in enumerate(exams, start=1):
mark = grade(points)
print(f"Klausur {number}: {points} Punkte, Note {mark}")
if mark <= 4:
passed += 1
average = sum(exams) / len(exams)
print(f"{passed} von {len(exams)} bestanden")
print(f"Durchschnitt: {average:.1f} Punkte")
def grade(points):
if points >= 90:
return 1
elif points >= 75:
return 2
elif points >= 60:
return 3
elif points >= 50:
return 4
else:
return 5
main()Eine einzige Schleife gibt jede Zeile aus und zählt dabei die Bestandenen,
während den Durchschnitt sum() und len() ganz ohne Schleife liefern.
Die Note heißt in main mark und nicht grade, weil dieser Name schon
der Funktion gehört: Eine Variable grade in main würde die Funktion
dort überdecken, und Python meldete beim Aufruf einen Fehler.
Für Schnelle
Gib zusätzlich aus, wie oft jede Note vorkommt, etwa Note 1: 2-mal. Leg
dafür vor der Schleife eine Liste counts = [0, 0, 0, 0, 0] an, deren erste
Stelle die Einsen zählt, die zweite die Zweien und so weiter, und erhöhe in
der Schleife mit counts[mark - 1] += 1 die passende Stelle. Eine zweite
Schleife mit enumerate(counts, start=1) gibt die fünf Zeilen danach aus.
Details
- Niveau
- Einstieg
- Module
- Digitalisierung und Programmierung
- In Lernpfaden
- Python für Anfänger
- Code
8592- Stand
- 1. November 2026
- Status
- veröffentlicht