Python 101, Klausur 2026-01-10, 15:30 Uhr#
Prof. Dr. Johannes Busse
(Aufgabengruppe b)
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: Benzinpreise (b)#
gegeben: Wir erheben Benzinpreise in verschiedenen Regionen.
# m ... Preis für 1l Benzin in Cent -- leider als String gegeben
m = [ '180', '183', '177', '164', '167', '167']
gesucht: durchschnittlicher Benzinpreis schnitt, billigster Preis billig, teuerster Preis teuer.
# Ergebnis-Variablen definieren
schnitt, billig, teuer = 0,0,0
# hier Ihre Programmierung
... #
Ellipsis
# Ihr Ergebnis
ergebnis = f"{schnitt=}, {billig=}, {teuer=}"
ergebnis
'schnitt=0, billig=0, teuer=0'
# Test
ergebnis == 'schnitt=173.0, billig=164, teuer=183'
False
Aufgabe 2: Vokale im String (b)#
gegeben: Ein String s, Beispiel:
s = "Hallo Erika Musterfrau!"
gesucht: Wie viele Vokale (“aeiou”) enthält der String?
s2 = {}
vokale = "aeiou"
# Hier Ihre Lösung:
... #
Ellipsis
# Ihr Ergebnis
s2
{}
# Test
s2 == 8
False
Aufgabe 3: Wechselsumme (b)#
gegeben: Eine Notebook-Zelle, die aus einer Integer-Zahl die Wechselsumme (alternierende Quersumme) berechnte:
zahl = 12345
wechselsumme = sum( int(ziffer) * (-1)**i for i, ziffer in enumerate(f"{zahl}" ))
wechselsumme
3
Teil 1 gesucht: Wir benötigen eine Funktion wechselsumme(x), die diese Berechnung anstellt.
# Ihre Programmierung
def wechselsumme(x):
return sum( int(z) * (-1)**i for i, z in enumerate(f"{x}") )
# Ihr Ergebnis
wechselsumme(12345)
3
# Test
wechselsumme(12345) == 3
True
Teil2 gegeben: Eine Liste l von Zahlen:
l = [ 123, 2345, 34567 ]
Gesucht: eine Liste q, die die Wechelsumme jeder Zahl in l enthält.
# Variable anlegen
w = []
# Ihre Programmierung
... #
Ellipsis
# Ihr Ergebnis
w
[]
# Test
w == [2, -2, 5]
False
Aufgabe 4: Familie 2 CSV (b)#
gegeben: Eine Tabelle von Kind, Vater, Mutter zeilenweiser Darstellung.
werte = [
[ "Kind", "Vater", "Mutter" ],
['Kain', 'Adam', 'Eva'],
['Ismail', 'Ibrahim', 'Hadschar'],
['Isaak', 'Abraham', 'Sara'] ]
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 == """Kind;Vater;Mutter
Kain;Adam;Eva
Ismail;Ibrahim;Hadschar
Isaak;Abraham;Sara"""
False
Aufgabe 5: CSV 2 Messwerte (b)#
gegeben: In einer CSV-Datei sind Messwerte gegeben (z.B. Geschlecht, Körpergröße, Alter). Wenn wir die Datei einlesen erhalten wir folgenden String data:
data = """m;180;21
m;183;27
m;177;23
f;164;19
f;167;25
f;167;24"""
Gesucht: Wir benötigen eine Tabelle in der Form einer Liste von Listen, zeilenweise.
# Variable definieren
table = []
# Ihre Programmierung
... #
Ellipsis
# Ihr Ergebnise
table
[]
# Test
table == [['m', '180', '21'],
['m', '183', '27'],
['m', '177', '23'],
['f', '164', '19'],
['f', '167', '25'],
['f', '167', '24']]
False
Aufgabe 6: Synonyme segmentieren (b)#
gegeben ist eine Datei von Synonym-Gruppen:
syngroups = """Geld Mäuse Zaster Schotter Kohle
Stuhl Hocker Schemel
Hallo Privjet
Bye Ade"""
gesucht: Zähle Anzahl der Synonymgruppen (Zeilen) und Wörter insgesamt.
# 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 ==4, num_woerter == 12
(False, False)
Aufgabe 7: String to Number (b)#
gegeben: Ein Dict von Name und Geburtsjahr
# g ... Geburtstage
g = { "Anna": "2005", "Ben": "2004", "Charly": "2005" }
gesucht: Eine etwas höherwertige Repräsention der Geburtstage als ein Dictionary von Zahlenwerten
# Ergebnis-Variable definieren
g1 = {}
# Hier die Lösung programmieren
... #
Ellipsis
# Ihre Lösung
print(g1)
{}
# Test
g1 =={'Anna': 2005, 'Ben': 2004, 'Charly': 2005}
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