Python 101 LN 3#
Übungsblatt 3, Punkte: 3
Bitte in diesem Übungsblatt in jeder Aufgabe die Metadaten ordentlich anpassen.
Aufgabe 1#
gegeben: eine verschachtelte Datenstruktur, z.B.
[ 1, [ 21, 22, 23 ], 3 ]
[1, [21, 22, 23], 3]
gesucht: Eine Zuweisung der einzelnen Teile dieser Liste von Listen an die drei Variablen eins
, zwei
, drei
.
# Aufgabe: LN3.1
# Name: Musterfrau, Erika
# MatNr: 012 34 56
eins, zwei, drei = [ 1, [ 21, 22, 23 ], 3 ] #...
eins, zwei, drei
(1, [21, 22, 23], 3)
assert eins == 1
assert zwei == [ 21, 22, 23 ]
assert drei == 3
Aufgabe 2#
gegeben:
Ein Dict
g
von Geburtstagen, z.B.
g = { "Anna": "2004-05-06", "Ben": "2005-05-26", "Charlie": "2002-02-26" }
g
{'Anna': '2004-05-06', 'Ben': '2005-05-26', 'Charlie': '2002-02-26'}
gesucht:
die Menge
g_monate
aller Monate, an denen jemand Geburtstag hat
Hinweis: Um aus einem Datums-String wie z.B. "2004-05-06"
den Monat herausholen eignet sich natürlich slicing ganz gut ;-)
# Aufgabe: LN3.2
# Name: Musterfrau, Erika
# MatNr: 012 34 56
# g_monate = set()
g_monate = { v[5:7] for v in g.values() } #...
# oder so:
g_monate = { v.split("-")[1] for v in g.values() } #...
assert g_monate == {'02', '05'}
Aufgabe 3#
gegeben:
Ein Dict
g
von Geburtstagen ähnlich wie in Aufgabe 2, jedoch in einer leicht anderen Datenstruktur, nämlich ein Dict von Listen:
g = { "Anna": [ 2004, 5 , 6], "Ben": [ 2005, 5, 6], "Charlie": [2002, 2, 26] }
g
{'Anna': [2004, 5, 6], 'Ben': [2005, 5, 6], 'Charlie': [2002, 2, 26]}
gesucht:
Eine Liste
g_mai
aller Personen, die im Mai Geburtstag haben.
# Aufgabe: LN3.3
# Name: Musterfrau, Erika
# MatNr: 012 34 56
g_mai = []
g_mai = [ k for k,v in g.items() if v[1] == 5 ] #...
g_mai
['Anna', 'Ben']
assert g_mai == [ 'Anna', 'Ben' ]
Aufgabe 4#
gegeben ein x
:
x = [ 0, [1, 2], 3]
Im folgenden ist ein etwas unverständlicher Slicing-Ausdruck. Wie man leicht ausprobieren kann, evaluiert dieser Ausdruck zu [1, 2]
:
x[x[1][0]:x[1][1]][x[0]]
[1, 2]
Aufgabe: Erstellen Sie bei gleichem x
kreativ einen anderen, idealerweise noch völlig unverständlicheren Ausdruck, der das Ergebnis {1, 3}
produziert!
# Aufgabe: LN3.4
# Name: Musterfrau, Erika
# MatNr: 012 34 56
set(x[::x[1][1]]) #...
{0, 3}
Hintergrund: https://pyobfusc.com/, die Python-Version von https://www.ioccc.org/index.html.