Woche 21#
SS 2026, Klausurvorbereitung Nachschreibeklausur
Ansatz: Wir erstellen eine Aufgabenstellungen, die eine Vielzahl von einzelnen kleinen Aufgaben und -Lösungen erlaubt. Wer die kann, wird der Klausur mit großer Freude entgegenblicken!
Vorgehen, wenn Sie nicht weiterkommen: Fragen Sie auch eine KI, Sie werden ein Programm bekommen. Verstehen sie das Programm. Fragen Sie öfters, ggf. auch explizit nach unterschiedlichen Lösungen, vergleichen Sie die verschiedenen Lösungen. Schließen Sie die KI, schlafen Sie eine Nacht darüber. Versuchen Sie am nächsten Morgen, die Lösung ohne KI selbst hinzubekommen.
gegeben:
Funktion n:1, z.B. Modulnummer - Prüfung.
gesucht:
inverse Abbildung 1:n, Prüfung - Menge von Modulnummern
klausur = { "wif110": "Programmieren 1", "aif120": "Programmieren 1", "wif640": "Seminar"}
kinvers = { "Programmieren 1": [ "wif110", "aif120" ], "Seminar": [ "wif640" ] }
Lösung 1:
ergebnis = {}
for k, v in klausur.items():
# print( f"{k=}, {v=}")
if v not in ergebnis.keys():
ergebnis[v] = []
ergebnis[v].append( k )
print( f"{ergebnis=}" )
ergebnis={'Programmieren 1': ['wif110', 'aif120'], 'Seminar': ['wif640']}
Lösung 2: Dicht ergebnis vorher schon initialisieren
set(klausur.values())
{'Programmieren 1', 'Seminar'}
ergebnis = { v: [] for v in set(klausur.values()) }
ergebnis
{'Programmieren 1': [], 'Seminar': []}
for k, v in klausur.items():
ergebnis[v].append( k )
ergebnis
{'Programmieren 1': ['wif110', 'aif120'], 'Seminar': ['wif640']}
gegeben:
2 Spalten einer Tabelle
stadt = [ "Landshut", "Ulm","Nürnberg" ]
einwohner_in_1000 = [ 70, 120, 500 ]
gesucht:
die Tabelle zeilenweise als eine Liste von Tupeln
mit zip():
...
Ellipsis
Ohne zip, Tipp: zwei Möglichkeiten, durch eine Liste durchzulaufen:
for x in stadt:
print(x)
Landshut
Ulm
Nürnberg
for i in range( len( stadt ) ):
print( stadt[i] )
Landshut
Ulm
Nürnberg
for i in range( len( stadt ) ):
print( stadt[i] , einwohner_in_1000[i])
Landshut 70
Ulm 120
Nürnberg 500
Und jetzt die Lösung selber machen:
stadt_einwohner = []
...
Ellipsis
Ohne zip mit Comprehension:
stadt_einwohner = [ ... ]
Test:
stadt_einwohner == [ ("Landshut", 70), ("Ulm", 120), ("Nürnberg", 500) ]
False
gegeben: ein Dict mit Geburtsdatum
# gb ... geburtsdaten
gb = {
"Lovelace, Ada": "1815-12-10",
"Turing, Alan": "1912-06-23",
"Hopper, Grace": "1906-12-09",
"Zuse, Konrad": "1910-06-22",
"van Rossum, Guido": "1956-01-31"
}
Füge die folgenden Menschen dem Dict hinzu:
menschen_1956 = [
("Steinmeier, Frank-Walter", "1956-01-05"),
("Grönemeyer, Herbert", "1956-04-12"),
("Hanks, Tom", "1956-07-09")
]
Eine Liste aller in gb enthaltenen Namen:
...
Ellipsis
Eine Liste aller in gb enthaltenen Datums-Strings:
...
Ellipsis
Eine Liste aller in gb enthaltenen Jahre (ohne Duplikate):
...
Ellipsis
Überführe das Geburtsdatum in eine besser verarbeitbare Struktur, Beispiel:
```{code-cell} ipython3
gb_key_liste =
{ "Lovelace, Ada": [ "1815", "12", "10"],
"Turing, Alan": [ "1912", "06", "23" ] ,
... }
und auch so:
gb_key_dict = { "Lovelace, Ada": { "jjjj": "1815", "mm": "12", "tt": "10" },
"Turing, Alan": { "jjjj": "1912", "mm": "06", "tt": "23" } ,
...: ... }
Auch die Namen wollen wir in Vorname und Familienname aufteilen, z.B. so:
gb_key_liste = { ("Lovelace", "Ada"): [ "1815", "12", "10"],
("Turing", "Alan"): [ "1912", "06", "23" ] ,
...: ... }
gesucht: ein dict, das zu jedem Jahr die zugehörigen Menschen angibt, z.B.
jahr_personen = {
'1815': { ('Lovelace, Ada', '1815-12-10') },
'1956': {
('van Rossum, Guido', '1956-01-31'),
('Steinmeier, Frank-Walter', '1956-01-05'),
('Grönemeyer, Herbert', '1956-04-12'),
('Hanks, Tom', '1956-07-09') },
...: ..., }