Python 101, Probeklausur 2025-12-09#
Besprechung siehe Python 101, Probeklausur 2025-12-09, BESPRECHUNG
Prof. Dr. Johannes Busse, HAW LA, busse@haw-landshut.de
Familienname:
Vorname:
MatNr:
Papierklausur:
Anfangsbuchstaben vom Familiennamen am rechten Rand einkreisen
am linken Rand einkreisen: Studiengang, Studienbeginn
Falls Sie mehr Schreibraum benötigen: Nutzen Sie nicht die Rückseite, sondern die jeweils gegenüberliegende Seite einer Aufgabe.
Bitte lassen Sie den Korrektur-Rand rechts frei.
Es wird ausschließlich die Papier-Version der Klausur bewertet!
Das Jupyter Notebook ist lediglich ein erlaubtes Hilfsmittel unter vielen anderen Hilfsmitteln, ähnlich einem Taschenrechner. Zwar wird der Dozent bei der Korrektur nach Möglichkeit auch das elektronische Notebook anschauen. ber bewertet wird nur die Papierklausur. Übertragen Sie also alle Ergebnisse aus dem Notebook auf Papier.
Diese Klausur hat 40 Pkte (=100%), plus ein paar wenige Sonderpunkte. Unverbindlicher Notenspiegel: ab 18 Punkte = Note 4.0, 20=3.7, 22=3.3, …, 28=2.3, 34=1.3, 36=1.0
Punkte und Note Erstkorrektur:
ggf. Note Zweitkorrektur:
import datetime, os
print(f"{datetime.datetime.now()}, {os.getcwd()}")
2025-12-11 16:12:20.829427, /media/sf_abc123/l/LA_2025_ws/python-101/md
Aufgabe Operatoren (4 Pkte)#
(2025-12-09: gestrichen)
Aufgabe: String säubern (Gruppe A) (4 Pkte)#
gegeben:
zwei Strings
sundverboten
gesucht:
ein String
ok, aus dem alle Zeichen ausverbotenentfernt sind
# Kontext
s = "Hallo, Welt! wie gehts?"
verboten = ".,;?!"
ok = ""
# Ihre Lösung
... #
# Ihr Ergebnis
ok
''
# Test
ok == 'Hallo Welt wie gehts'
False
Aufgabe: Pasch gewürfelt? (Gruppe A) (4 Pkte)#
Würfeln Sie mit mit n Würfeln. (n kann auch deutlich größer sein als 2.) Es entsteht eine Liste von Werten, ggf. mit Wiederholungen.
gesucht:
Stellen Sie fest, ob Sie einen Pasch gewürfelt haben, d.h. ob alle Würfel den gleichen Wert zeigen.
Lösen Sie, indem Sie eine entsprechende Funktion definieren.
Lösungshinweis: Die einfachste Lösung erzeugt aus der Liste ein Set. Aber es gibt auch andere Lösungen.
# Kontext
wuerfe_1 = [ 1, 1, 1 ] # ein Pasch
wuerfe_2 = [ 2, 3, 2, 2 ] # kein Pasch
# Ihre Lösung
def pasch(wl):
... #
# Ihr Ergebnis
pasch(wuerfe_1), not pasch(wuerfe_2)
(None, True)
# Test
pasch(wuerfe_1) == True, pasch(wuerfe_2) == False
(False, False)
Aufgabe: Wie viele “große” Würfe? (Gruppe A) (4 Pkte)#
Gegeben:
Eine Liste von einigen Würfen mit 2 Würfeln.
Gesucht:
Wie viele “große” Würfe wurden gewürfelt?
Ein “großer” Wurf liegt vor, wenn 2 Würfel zusammen mindestens 10 Punkte ergeben.
Hinweis: Da hier nur 2 Würfel im Spiel sind, kann diese Aufgabe auch ohne Bezug auf die vorhergehende Aufgabe gelöst werden.
# Kontext
wuerfe = [ [5,6], [3,6], [2,5], [6,6] ]
# Ihre Lösung
anzahl_gross = 0
... #
# Ihr Ergebnis
anzahl_gross
0
# Test
anzahl_gross == 2
False
Aufgabe: Konfigurationsdatei (4 Pkte)#
gegeben:
eine bereits eingelesene Konfigurationsdatei mit key-value-Paaren als String
gesucht:
der Inhalt dieser Datei als Dict
Vereinfachende Annahmen: Kein key kommt doppelt vor. In den Values kommt kein Doppelpunkt vor.
Eine Lösung mit Comprehension gibt mehr Punkte.
# Kontext
kernelspec = """display_name: Python 3 (ipykernel)
language: python
name: python3"""
ksd = {} # kernelspec dict
# Ihre Lösung
... #
# Ihr Ergebnis
ksd
{}
# Test
ksd == {'display_name': 'Python 3 (ipykernel)',
'language': 'python',
'name': 'python3'}
False
Aufgabe: Dict als String repräsentieren (4 Pkte)#
gegeben:
ein einfaches, flaches Dict, z.B.
Volumeneiner Verpackung.
gesucht:
dieses Dict als String
Volumen_string, den man auch in eine Datei ‘rausschreiben könnte: Jede Zeile ein durch Doppelpunkt getrenntes Paar von Key und Value (siehe Test).
Eine Lösung mit f-String und Comprehension passt in eine Zeile ;-)
# Kontext
Volumen = {'Salz': 394, 'Maccaroni': 2101, 'Milch': 1010}
# Ihre Lösung
Volumen_string = ""
... #
# Ihr Ergebnis
Volumen_string
''
# Test
Volumen_string == 'Salz: 394\nMaccaroni: 2101\nMilch: 1010'
False
Aufgabe: Ortschaften zuordnen (Gruppe A) (4 Pkte)#
gegeben:
eine Liste von PLZ und Ortschaften – leider als String angegeben.
gesucht:
ein Dict
plz_ort, das zu jeder PLZ eine Menge der zugehörigen Ortschaften angibt
# Kontext
Orte = [ "84030 LA", "84032 LA", "84034 LA", "8430 Ergolding", "84032 Altdorf", "84032 Eugenbach"]
plz_ort = {}
# Ihre Lösung
... #
# Ihr Ergebnis
plz_ort
{}
# Test
plz_ort == {'84030': {'LA'},
'84032': {'Altdorf', 'Eugenbach', 'LA'},
'84034': {'LA'},
'8430': {'Ergolding'}}
False
Aufgabe: zusammen kochen (4 Pkte)#
gegeben:
ein Dict
DasMagIch, das für jede Person die Gerichte angibt, die sie gerne isst
gesucht:
eine Funktion
gemeinsam(), die für zwei Personen eine Liste der Gerichte zurückgibt, die beide mögen
Falls eine Person nicht im Dict enthalten ist, soll die Funktion None ergeben. Die Reihenfolge der Gerichte im Ergebnis ist unerheblich.
# Kontext
DasMagIch = {
"Emma" : ["Fisch", "Nudeln", "Pizza", "Schnitzel" ],
"Peter": [ "Nudeln", "Schnitzel"],
"Simon": ["Fisch", "Nudeln", "Pizza", "Salat"],
"Leonie" : [ "Nudeln", "Pizza", "Salat"]}
# Ihre Lösung
def gemeinsam(P1, P2):
"""Gibt die gemeinsamen Lieblingsessen von 2 Personen aus dem Dict `DasMagIch` zurück."""
... #
# Ihr Ergebnis
gemeinsam("Emma", "Leonie")
# Test
gemeinsam("Emma", "Leonie") == {'Nudeln', 'Pizza'}
False
Aufgabe: Volumen (Gruppe A) (8 Pkte)#
Gegeben
ein Dict
Abmessungen, das zu jeder Verpackung ihre Verpackungsmaße angibt
Die Verpackungsmaße sind in cm gegeben, L(änge) mal B(reite) mal H(öhe) – aber leider nicht einheitlich: eigentlich sollte es eine Liste sein, manchmal ist es aber lediglich ein String, durch Strichpunkt ; getrennt (Leerzeichen sind in solchen Strings gottseidank nicht enthalten).
gesucht:
eine Funktion
vol(), die das Volumen in vollen Kubikzentimetern (Datentypint) berechnetein Dict
Volumen, das zu jeder Verpackung ihr jeweiliges Volumen angibt
# Kontext
Abmessungen = {
"Salz": [ 4.7, 6, 14 ],
"Maccaroni": [ 5, 19.1, 22 ] ,
"Milch": "7.2;7.2;19.5" }
Volumen = {k: None for k in Abmessungen }
# Ihre Lösung
def vol(Maße):
... #
# Ihr Ergebnis
Volumen
{'Salz': None, 'Maccaroni': None, 'Milch': None}
# Test
Volumen == {'Salz': 394, 'Maccaroni': 2101, 'Milch': 1010}
False