Diese Datei:
COMPILIERT mit notebook7 in der dsci-exahm virtuellen Maschine
primär ein Test, ob unsere Testklausur technisch auch in der Exahm-Umgebung läuft;
wenn wir schon mal dabei sind, könnten das auch einige echte Klausuraufgaben in der Exahm-Umgebung sein (die aber nicht das gesamte Spektrum der möglichen Klausuraufgaben abdecken).
Versionen:
v1: 2023-12-12
v1.1: 2024-01-17
Python 101, WS 2023, Testklausur 2023-12-12#
Persönliche Daten (Name, MatNr, Studiengang) bitte nicht hier, sondern auf der letzten Seite eintragen, damit ich anonym korrigieren kann.
Quadratzahlen#
Gegeben:
Eine Liste
in_bspvon Zahlen.
Gesucht:
Eine Funktion
dq(liste), die für alle Zahlen ausin_bsp, die Vielfache von3sind, das Quadrat zurückliefert.
Bitte lösen Sie mit List Comprehension.
# Beispiel
in_bsp = [0, 1, 2, 3, 4]
out_bsp = [ 0, 9 ]
# dq ... dreier quadrate
def dq(liste):
... #
# assert dq(in_bsp) == out_bsp
Zweitupel#
Gegeben:
eine Zahl
n
Gesucht:
eine Funktion, die eine Liste aller 2-Tupel der natürlichen Zahlen von
1bisnzurückgibt.
Bitte lösen Sie mit List Comprehension.
# Beispiel
n = 3
out_bsp = [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
def zweitupel(n):
... #
# assert zweitupel(3) == out_bsp
Deltas#
Gegben:
eine Liste von Zahlen
Gesucht:
eine Funktion, die die größte Differenz zwischen zwei aufeinanderfolgenden Zahlen in dieser Liste zurückgibt.
in_bsp = [ 4, 3, 1, -2, 5]
out_bsp = 7
def deltas(l):
... #
# assert deltas(in_bsp) == out_bsp
Spannweite einer Funktion#
Gegeben:
eine Funktion
f(x)ein Startwert
x1, eine Schrittweitestepund ein Endwertx2x1,stepundx2sind Integer-Zahlen (also keine Floats)
Gesucht:
Die “Spannweite” einer Funktion, d.h. die Differenz vom kleinsten zum größten Wert, den
f(x)zurückgibt, wenn manf(x)empirisch mitxim Intervallx1bisx2mit Schrittweitesteptestet.
Hinweis: Sie müssen keine Funktion definieren, es genügt eine Jupyter Notebook Zelle.
# eine Beispiel-Funktion, die auch ganz anders sein kann
def f(x):
return round(x ** .5, 2)
x1, x2, step = 0, 9, 3
werte_bsp = [0.0, 1.73, 2.45, 3.0]
spannweite_bsp = 3.0
spannweite = None
... #
... #
# assert spannweite == spannweite_bsp
Welche Ausgabe wird erzeugt?#
Aufgaben des Type “Welche Ausgabe wird erzeugt” sind eigentlich nur auf Papier sinnvoll. Wäre Prüfung elektronisch, würde man einfach den gegebenen Code ausführen. Dennoch der Vollständigkeit ein Beispiel für diesen Aufgabentyp ;-)
out = None
# out = { x%y for x in range(10) for y in range(1, x) }
... #
Ellipsis
Code Korrigieren#
Gegeben:
ein Dict mit Einwohnern pro PLZ
ein Dict, das angibt, welche PLZ in welcher Region ist
Gesucht:
Einwohner der Region Oberbayern (München, Starnberg etc.)
einwohner = { 80313 : 1512491, 82319: 23741,
84028 : 75457, 84049: 12358, 84137: 12584 }
regionen = {"oberbayern" : {80313, 82319}, # München, Starnberg etc.
"niederbayern" : { 84032, 84028, 84049, 84137 } } # LA, Essenbach etc.
ob_summe = None # sollte die Summe der Einwohner von Regionen in Oberbayern sein.
Ein Studienkollege probiert es mit folgendem Code, ist aber mit dem Ergebnis nicht zufrieden:
# ob_summe = sum( [ x for x in einwohner if x in niederbayern] )
# ob_summe
(a) Welche Fehler finden Sie? Beschreiben Sie in Stichworten!
(b) Korrigieren Sie den Code, indem Sie in der folgenden Zelle eine ähnliche, aber bessere Lösung finden.
... #
# ob_summe
Ellipsis
Persönliche Daten#
Persönliche Daten (Name, MatNr, Studiengang) bitte nicht auf dem Deckblatt, sondern hier auf der letzten Seite eintragen, damit ich anonym korrigieren kann.
Familienname:
Vorname:
MatNr:
Studiengang:
freiwillige Angaben, nicht bewertungsrelevant:
Drittversuch?
Punkte auf Codewars?