Python 101, Klausur 2026-01-10, 13:30 Uhr#
Prof. Dr. Johannes Busse
(Aufgabengruppe a)
ACHTUNG: Dieses Notebook ist ein erlaubtes Hilfsmittel. Es muss nicht benutzt werden, aber die Benutzung könnte helfen, die Papierklausur besser zu machen. Bewertungsrelevant ist ausschließlich die zugehörige Papierklausur.
Aufgabe 1: Körpergrößen (a)#
gegeben: Wir messen die Körpergrößen von Menschen in einem Hörsaal.
# m ... Messwerte Körpergröße in cm -- leider als String gegeben
m = [ '180', '183', '177', '164', '167', '167']
gesucht: durchschnittliche Körpergröße schnitt, kleinste Körpergröße klein, größte Körpergröße gross in der Gruppe.
# Ergebnis-Variablen definieren
schnitt, klein, gross = 0,0,0
# hier Ihre Programmierung
... #
Ellipsis
# Ihr Ergebnis
ergebnis = f"{schnitt=}, {klein=}, {gross=}"
ergebnis
'schnitt=0, klein=0, gross=0'
# Test
ergebnis == 'schnitt=173.0, klein=164, gross=183'
False
Aufgabe 2: String Maskieren (a)#
gegeben: Ein String s, Beispiel:
s = "Hallo Erika Musterfrau!"
gesucht: Eine “Maskierung” des Strings, die dadurch entsteht, dass man alle Vokale (“aeiou”) entfernt.
s2 = {}
vokale = "aeiou"
# Hier Ihre Lösung:
... #
Ellipsis
# Ihr Ergebnis
s2
{}
# Test
s2 == 'Hll Erk Mstrfr!'
False
Aufgabe 3: Quersumme (a)#
Teil 1
gegeben: Eine Notebook-Zelle, die aus einer Integer-Zahl die (einfache) Quersumme berechnet:
zahl = 12345
quersumme = sum( int(ziffer) for ziffer in f"{zahl}" )
quersumme
15
gesucht: Wir benötigen eine Funktion quersumme(x), die diese Berechnung anstellt.
# Ihre Programmierung
... #
# Ihr Ergebnis
print( quersumme(12345) )
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[11], line 2
1 # Ihr Ergebnis
----> 2 print( quersumme(12345) )
TypeError: 'int' object is not callable
# Test
quersumme(12345) == 15
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[12], line 2
1 # Test
----> 2 quersumme(12345) == 15
TypeError: 'int' object is not callable
Teil2
gegeben: Eine Liste l von Zahlen:
l = [ 123, 2345, 34567 ]
Gesucht: eine Liste q, die die Quersumme jeder Zahl in l enthält.
# Variable anlegen
q = []
# Ihre Programmierung
... #
Ellipsis
# Ihr Ergebnis
q
[]
# Test
q == [6, 14, 25]
False
Aufgabe 4: Messwerte 2 CSV (a)#
gegeben: Eine Tabelle von Messwerten für Geschlecht, Körpergröße, Alter in zeilenweiser Darstellung.
werte = [
[ "Geschlecht", "Körpergröße", "Alter" ],
['m', '180', '21'],
['m', '183', '27'],
['m', '177', '23'] ]
gesucht: ein einziger String, der diese Tabelle in Form einer CSV-Datei repräsentiert.
# Variable definieren
csv = ""
# Ihre Lösung
... #
Ellipsis
# Ihr Ergebnis
print(csv)
# Test
csv == """Geschlecht;Körpergröße;Alter
m;180;21
m;183;27
m;177;23"""
False
Aufgabe 5: CSV 2 Familie (a)#
gegeben: In einer CSV-Datei sind Namen von Kinden und ihren Eltern gegeben. Wenn wir die Datei einlesen erhalten wir folgenden String data:
data = """Kind;Vater;Mutter
Kain;Adam;Eva
Ismail;Ibrahim;Hadschar
Isaak;Abraham;Sara"""
Gesucht: Wir benötigen eine Tabelle dieser Daten in der Form einer Liste von Listen, zeilenweise.
# Variable definieren
table = []
# Ihre Programmierung
... #
Ellipsis
# Ihr Ergebnise
table
[]
# Test
table == [['Kind', 'Vater', 'Mutter'],
['Kain', 'Adam', 'Eva'],
['Ismail', 'Ibrahim', 'Hadschar'],
['Isaak', 'Abraham', 'Sara']]
False
Aufgabe 6: Textdatei Gedicht segmentieren (a)#
gegeben ist ein schönes Gedicht als String.
gedicht = """Klarer Code fließt sanft,
Python wird zu Poesie.
Einfach, schön."""
gesucht: Zähle Zeilen und Wörter.
# Variablen definieren
num_zeilen, num_woerter = 0, 0
# hier Ihre Programmierung
... #
Ellipsis
# Ihr Ergebnis
f"{num_zeilen=}, {num_woerter=}"
'num_zeilen=0, num_woerter=0'
# Test
num_zeilen ==3, num_woerter == 10
(False, False)
Aufgabe 7: String to List (a)#
gegeben: Ein Dict von Name und Geburtsdatum
# g ... Geburtstage
g = { "Anna": "2005-02-10", "Ben": "2004-02-23", "Charly": "2005-02-10" }
gesucht: Eine etwas höherwertige Repräsentation der Geburtstage als ein Dictionary von Listen.
# Ergebnis-Variable definieren
g1 = {}
# Hier die Lösung programmieren
... #
Ellipsis
# Ihre Lösung
print(g1)
{}
# Test
g1 == {'Anna': ['2005', '02', '10'], 'Ben': ['2004', '02', '23'], 'Charly': ['2005', '02', '10']}
False
Aufgabe 8: Geburtstagsdict (a, b)#
gegeben: Ein Dict von Name und Geburtsdatum. Das Geburtsdatum ist als Liste von Strings in der Form [ jjjj, mm, tt ] gegeben.
# g2 ... Geburtstage
g2 = {'Anna': ['2005', '02', '10'], 'Ben': ['2004', '02', '23'], 'Charly': ['2005', '02', '10']}
gesucht: Eine noch höherwertige Repräsention der Geburtstage als ein Dictionary von Dictionaries.
# Ergebnis-Variable definieren
g3 = {}
# Hier die Lösung programmieren
... #
Ellipsis
# Ihre Lösung
g3
{}
# Test
g3 == {'Anna': {'jahr': '2005', 'monat': '02', 'tag': '10'},
'Ben': {'jahr': '2004', 'monat': '02', 'tag': '23'},
'Charly': {'jahr': '2005', 'monat': '02', 'tag': '10'}}
False
Aufgabe 9: Geburtstage im gleichen Jahr (a, b)#
gegeben: Eine (z.B. Excel- oder CSV-)Tabelle, die (z.B. mit Pandas) bereits eingelesen und in ein Dict aus Dicts überführt wurde:
# g3 ... Geburtstage als Dict von Dicts
g3 = {'Anna': {'jahr': '2005', 'monat': '02', 'tag': '10'},
'Ben': {'jahr': '2004', 'monat': '02', 'tag': '23'},
'Charly': {'jahr': '2005', 'monat': '02', 'tag': '10'}}
Wir haben hier ja eine Abbildung von Person nach Geburtstag.
gesucht:
Wir wollen zu jedem Jahr wissen, welche Personen in diesem Jahr Geburtstag haben. (Das ist eine Art Umkehr-Abbildung von
g3).
Die Datenstruktur des Ergebnisses soll das Dict g3_invers sein, das zu jedem Jahr eine Menge von Personen enthält, siehe unten “Test”.
# Ergebnis-Variable definieren
g3_invers = {}
# hier Ihre Lösung
... #
Ellipsis
# Ihre Lösung
g3_invers
{}
# Test
g3_invers == {'2005': {'Anna', 'Charly'}, '2004': {'Ben'}}
False