Mikroaufgaben#

Diese Fingerübungsdatei: Skizze einiger Mikroaufgaben, wie sie auch in größerer Zahl in der Klausur vorkommen könnten – entweder eindeutig isoliert wie hier, oder als Teil einer leicht komplexeren Aufgabe.

Die Sterne geben ungefähr die Schwierigkeit an.

Quadratzahlen von 1 bis 20 *#

erzeuge eine Liste der Quadratzahlen von 0 bis 20

Brüche ausrechnen ****#

gegeben: Eine Liste von Brüchen als String. Gesucht: Ein Dict, das zu den Bruchzahlen den Wert als Zahl angibt.

brueche_bsp = [ "1/4", "2/5" ]
brueche_bsp_werte = { "1/4": 0.25, "2/5": 0.4 }

Lösung: siehe demo_2023-12-15

das ganz kleine Einmaleins *#

erzeuge in einem Dict das ganz kleine Einmaleins von 1 bis 3. Bsp:

k_1x1_bsp = { (1,1):1, (1,2):2, (2,3):6, (3,3): 9 }
k_1x1x = ...
#assert k_1x1[(3,3)] == 9

Deltas von Messwerten **#

gegeben: Liste von Messwerten, z.B. eine Temperaturkurve;

gesucht: Liste der Deltas (der Unterschiede) zwischen je 2 Messwerten.

inverses Dict ***#

gegeben: ein Dict;

gesucht: das “inverse” Dict, das angibt, welcher Key auf einen bestimmten Value zeigt.

Klar: Da im Dict mehrere Keys den gleichen Wert haben können, muss das inverse Dict auf Mengen von Schlüsseln des Ursprungs-Dicts zeigen).

dct_bsp = { "eins": 1, "oans": 1, "zwoa": 2 }
dct_invers_dct_bsp = { 1: {"eins", "oans"}, 2: {"zwoa"} }

Eine etwas “nerdige” Lösung ist schon gegeben und sieht so aus:

dct_invers_dct = { zahl: { text for text, z in dct_bsp.items() if z == zahl }  for zahl in dct_bsp.values()  }
dct_invers_dct
{1: {'eins', 'oans'}, 2: {'zwoa'}}

Wie sieht eine Lösung aus, die konventionell ohne Comprehension gebaut ist?

Geburtstage im Mai ***#

Gegeben: Ein Dict von Geburtstagen.

Gesucht: Ein Dict, das zu jedem Monat angibt, wer in diesem Monat Geburtstag hat.

bd = { "Anna": "01.05.1998", "Ben": "27.05.1995", "Charly": "17.03.2001", "Dave": "3.5.1999" }
bd_month = { 5: [ "Anna", "Ben", "Dave" ], 3: [ "Charly" ] }

Aussprache von Zahlen ****#

gegeben: Das Dict Aussprache enthält verschiedene Dicts, die die Aussprache einer Zahl in verschiedenen Sprachen beschreiben.

Gesucht: Für welche Zahlen ist in welcher Sprache die Aussprache angegeben?

# Bsp: 
Aussprache = {
  "EN": { 1: "one", 2: "two" },
  "DE": { 1: "eins", 11: "elf" },
  "RU": { 1: "один" }
  }

Aussprache_keys_bsp = {
  1: {"EN", "DE", "RU"},
  2: {"EN"},
  11: {"DE"}
  }

Eine nerdige Lösung sieht so aus:

Aussprache_keys = { z: { Land for Land in Aussprache if z in Aussprache[Land] } 
                   for z in { Zahl for Land in Aussprache.values() for Zahl in Land } }
Aussprache_keys
{1: {'DE', 'EN', 'RU'}, 2: {'EN'}, 11: {'DE'}}

Vorgehen für eine besser lesbare Lösung: ;-)

  • Set aller keys in Aussprache bestimmen ({1, 2, 11}), und da dann auch glieich ein initiales Dict daraus machen, mit leeren Mengen: Aussprache_keys == { 1:{}, 2:{}, 11:{} }

  • Für alle Länder in Aussprache: die entprechenden Aussprachen in die Mengen aus Aussprache_keys hinzufügen.

bruch2zahl **#

gegeben: In einer Anwendung seien Brüche als String gegeben, z.B. “3/4”.

Gesucht: Eine Funktion bruch2zahl(), die den Wert eines Bruches als Kommazahl zurückgibt.

Lösung: siehe demo_2023-12-15

Zahlenliste runden ***#

Gegeben: eine “Sammlung” von Kommazahlen, die als Liste oder als Dict angelegt sein kann.

Gesucht: eine Funktions_rund(), die die Zahlen dieser Sammlung auf 2 Nachkommaziffern rundet.

Schwierigkeit: Die Funktion soll mit einer Liste und einem Dict funktionieren.

Zahlen_bsp1 = [ 1, 0.693147181, 3.14149 ]
Zahlen_bsp2 = { "eins": 1, "ln2": 0.693147181, "pi": 3.14159 } 

Zahlen_bsp1_gerundet = [ 1, 0.69, 3.14 ]
Zahlen_bsp2_gerundet = { "eins": 1.00, "ln2": 0.69, "pi": 3.14 } 

geordnete Menge ***#

Gegeben: Eine Liste von ganzen Zahlen; gesucht: eine Funktion gm(), die eine Liste dieser Zahlen zurückgibt, in der nur das jeweils erste Vorkommen jeder Zahl verzeichnet ist. (Das Ergebnis ist so etwas wie eine “geordnete Menge”).

zahlen_bsp = [ 3, 2, 2, 1, 2, 1, 4 ]
zahlen_bsp_gm = [ 3, 2, 1, 4 ]

Summe eines Baumes von Zahlen ***#

gegeben: Eine beliebig tief verschachtelte Liste von Listen (also ein Baum) von Zahlen.

Gesucht: Die Summe der darin enthaltenen Zahlen.

Palindrom *#

Gegeben: Ein String. Gesucht: Ist das ein Palindrom, d.h. lautet der String von vorne und von hinten gelesen gleich?