Python 101 LN 3

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.