Testklausur python-101, Mo 2024-06-03#
WICHTIG: Dieses Jupyter Notebook ist in der Klausur python-101 lediglich ein erlaubtes Hilfsmittel unter vielen anderen Hilfsmitteln, ähnlich einem anonym benutzbaren Taschenrechner. Ihre Eingaben im Notebook können insbesondere vom Dozenten nicht eingesehen und auch nicht bewertet werden.
Also: Übertragen Sie alle Ergebnisse aus dem Notebook auf Papier. Es wird ausschließlich die Papier-Version der Klausur bewertet.
Dauer der Klausur:
60 Minuten
plus 10 Minuten Karenzzeit zum Übertragen der Ergebnisse auf Papier.
Name, Vorname, MatNr etc.:
in der Papierklausur: Auf dem letzten Blatt “Persönliche Angaben” angeben, damit ich anonym korrigieren kann.
in der elektronischen Version NICHT angebeben, sondern anonym benutzen – ähnlich wie einen Taschenrechner.
HINWEIS: Diese Testklausur ermöglicht es den Studierenden insbesondere, die Technik des Exahm-Raums kennenzulernen. Inhaltlich erhebt die Testklausur nur bedingt den Anspruch, für Umfang und Schwierigkeit ein Beispiel zu geben.
Aufgabe#
Gegeben ist eine Liste von Zahlen:
z = [ 1, 2, 3, 5, 10 ]
Gesucht: Eine Liste z2
der Quadratzahlen dieser Zahlen, hier z.B. z2 == [1, 4, 9, 25, ... ]
z2 = ...
... #
z2 == [1, 4, 9, 25, 100]
False
Aufgabe#
gegeben:
eine leider lange Liste von Kriegen aus https://de.wikipedia.org/wiki/Liste_von_Kriegen#Große_Kriege_seit_dem_Zweiten_Weltkrieg, Ausschnitt:
Kriege = """seit 2009: Krieg gegen die Taliban in Pakistan
2010–2011: Bürgerkrieg in der Elfenbeinküste
seit 2012: Konflikt in Mali
2013–2018: Bürgerkrieg im Südsudan
seit 2014: Krieg in der Ostukraine
seit 2023: Krieg in Israel und Gaza"""
Teilaufgabe#
gegeben:
obige “Liste”
Kriege
als String
gesucht:
dieser String als eine Liste von einzelnen Zeilen als Strings
K_liste = ...
... #
K_kurz = [ 'seit 2009: Krieg gegen die Taliban in Pakistan',
'2010–2011: Bürgerkrieg in der Elfenbeinküste',
'seit 2012: Konflikt in Mali' ]
K_liste[0:3] == K_kurz
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[4], line 10
2 #
7 K_kurz = [ 'seit 2009: Krieg gegen die Taliban in Pakistan',
8 '2010–2011: Bürgerkrieg in der Elfenbeinküste',
9 'seit 2012: Konflikt in Mali' ]
---> 10 K_liste[0:3] == K_kurz
TypeError: 'ellipsis' object is not subscriptable
Teilaufgabe#
gegeben:
die obige Liste
K_kurz
(die ersten 3 Elemente aus obiger Teilaufgabe)
gesucht:
eine Liste aller “Namen” von Kriegen aus
K_kurz
ohne Zeitangabe
K_namen = ... # Namen von Kriegen
... #
K_namen == [' Krieg gegen die Taliban in Pakistan',
' Bürgerkrieg in der Elfenbeinküste',
' Konflikt in Mali']
True
Teilaufgabe#
gegeben:
obige Liste
K_kurz
gesucht:
Eine Liste der Namen aller Kriege aus
K_kurz
, die noch andauern
K_kurz_andauernd = ...
... #
K_kurz_andauernd == ['Krieg gegen die Taliban in Pakistan', 'Konflikt in Mali']
True
Aufgabe#
Gesucht:
eine Liste
Monate
als Strings:[ '01', '02', ..., '12' ]
.
Berechnen Sie mit einer List-Comprehension.
Monate = ...
... #
Monate == ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']
True
Hinweis: Eine Zahl wie z.B. 3
kann man mit folgenden f-string in einen String mit führenden Nullen verwandeln:
zahl = 3
zahlstring = f'{zahl:02}'
zahlstring
'03'
Aufgabe#
Gegeben: ein Dict Feiertage
:
Feiertage = { 'Weihnachten': '24.12', 'Silvester': '31.12', 'Neujahr': '01.01',
'Erster Mai': '01.05', 'Tag der Deutschen Einheit': '03.10' }
Teilaufgabe#
gesucht:
eine Menge
Monate_mit_Feiertag
: In welchen Monaten gibt es einen Feiertag?
M = ['01', '02', '03', '04', '05', '06',
'07', '08', '09', '10', '11', '12']
Monate_mit_Feiertag = ...
... #
Monate_mit_Feiertag == {'01', '05', '10', '12'}
True
Teilaufgabe#
gesucht:
eine Menge
Monate_OHNE_Feiertag
: In welchen Monaten gibt es keinen Feiertag?
Hinweis: Sie dürfen bei Bedarf gerne die folgende Liste M
benutzen.
Monate_OHNE_Feiertag = ...
... #
Monate_OHNE_Feiertag == {'02', '03', '04', '06', '07', '08', '09', '11'}
True
Aufgabe#
Gegeben ist ein Dict von Dicts, das zu Familien die Familienmitglieder und ihre Rollen angibt:
Familien = { 'Maier' : { 'Martin': 'Vater', 'Monika': 'Mutter',
'Maria': 'Tochter', 'Merle': 'Tochter' },
'Schulz': { 'Sabine': 'Mutter', 'Sarah': 'Tochter', 'Sieglinde': 'Oma' }}
gesucht:
ein Dict
Familie_Groesse
: Wie viele Familienmitglieder hat jede Familie?eine Menge
Alle_Rollen
: Welche Rollen gibt es in diesen Familien?eine Liste
Alle_Toechter
: Wie heißen die Töchter?
Familie_Groesse = ...
... #
Familie_Groesse == {'Maier': 4, 'Schulz': 3}
True
Alle_Rollen = ...
... #
Alle_Rollen == {'Mutter', 'Oma', 'Tochter', 'Vater'}
True
Alle_Toechter = ...
... #
Alle_Toechter == ['Maria', 'Merle', 'Sarah']
True
Aufgabe#
Kontext: Es wird n
mal mit zwei Würfeln gewürfelt, die Augen der beiden Würfel werden addiert, Bsp.:
2+2=4, 4+3=7, 3+3=6, 2+6=8, 2+6=8, 5+2=7, 2+2=4, 3+3=6, 6+6=12, 2+6=8, 3+6=9, 5+3=8, 5+6=11, 4+2=6, 3+5=8, 4+4=8, 3+3=6, 4+2=6, 2+5=7, 2+4=6
Teilaufgabe#
Gesucht:
ein Dict
wuerfe
, das für jeden Wurf die absolute Häufigkeit angibt
Ergänzen Sie das folgende Progrämmchen!
import random as rd
rd.seed(42) # außerhalb der Klausur besser: `None` to use current system time
n = 20 # außerhalb der Klausur besser z.B. n = 1000
wuerfe = ...
... #
for i in range(n):
a = rd.randrange(2, 7)
b = rd.randrange(2, 7)
wurf = a + b
# print(f"{a}+{b}={wurf}", end=', ')
... #
... #
... #
wuerfe == {4: 2, 7: 3, 6: 6, 8: 6, 12: 1, 9: 1, 11: 1}
True
Teilaufgabe#
gegeben:
obiges Dict
wuerfe
gesucht:
ein zweites Dict
wuerfe_relativ
, in dem für jeden Wurf die Wurf-Häufigkeit als relative Häufigkeit in Prozent angegeben ist.
(Das geht einfach: absolute Wurf-Häufigkeit durch n teilen, dann mit 100 mulitiplizieren).
wuerfe_rel = {}
... #
wuerfe_rel == { 4: 10.0, 7: 15.0, 6: 30.0, 8: 30.0, 12: 5.0, 9: 5.0, 11: 5.0}
True
Aufgabe#
gegeben:
zwei gleich lange Listen
Name
undAlter
Name = [ "Anna", "Ben", "Charly" ]
Alter = [ 23, 22, 20 ]
gesucht:
ein Dict, das für jeden Namen das Alter angibt
Teilaufgabe#
Lösen Sie die Aufgabe mit zip()
!
Name_Alter = {}
... #
Name_Alter
{'Anna': 23, 'Ben': 22, 'Charly': 20}
Teilaufgabe#
Lösen Sie die Aufgabe ohne zip()!
... #
{'Anna': 23, 'Ben': 22, 'Charly': 20}
Aufgabe#
gegeben sind folgende Variablen:
s = "abc" # String
l = [ "1", "2", "3" ] # Liste
zwei = 2
neun = 9
d = { "pi" : 3.14, "e": 2.71, "g": 9.81 }
Gesucht ist jeweils mindestens eine Rechnung mit diesen Variablen, die das angegebene Ergebnis hat. Beispiel:
# gegeben
"abcabc" == ...
# mögliche Lösungen
"abcabc" == 2 * s
"abcabc" == s + s
True
Noch ein Beispiel:
# gegeben
[ 'a', 'b', 'c' ] == ...
# Lösung(en)
[ 'a', 'b', 'c' ] == list( s )
[ 'a', 'b', 'c' ] == [ x for x in s ]
True
Jetzt sind Sie an der Reihe!
[ "1", "2", "3", "abc" ]
... #
True
[ 1, 2, 3 ]
... #
True
{ 3.14, 2.71, 9.81 }
... #
True
Persönliche Angaben#
Familienname:
Vorname:
Matrikelnummer:
Studiengang:
Drittversuch?