Fingerübungen 1: Listen#

einfache Listen#

Aufgabe: Index von Listen-Elementen#

Gegeben: Eine Liste Z von Zahlen

Z = [1, 7, 3, -6, 7, 12 ]

Gesucht: Eine Liste der Zahlen in Z, die durch 3 teilbar sind

Z_3 = None
... # 
assert Z_3 == [ 3, -6, 12 ]
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[3], line 1
----> 1 assert Z_3 == [ 3, -6, 12 ]

AssertionError: 

Gesucht: Eine Liste der Indizes der durch 3 teilbaren Zahlen in Z

Z_idx = None
... #  list comprehension
assert Z_idx == [ 2, 3, 5 ]
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[5], line 1
----> 1 assert Z_idx == [ 2, 3, 5 ]

AssertionError: 

Veränderung: Gegeben ist das Alphabet in klein- und Großbuchstaben: abc...xyzABC...XYZ". Gesucht:

  • Eine Liste der Indizes aller (auch großgeschriebenen) Vokale

abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
abc_idx = None
... # 
Ellipsis
assert "".join([abc[i] for i in abc_idx ]) == 'aeiouAEIOU'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[7], line 1
----> 1 assert "".join([abc[i] for i in abc_idx ]) == 'aeiouAEIOU'

TypeError: 'NoneType' object is not iterable

Strings als Listen#

Aufgabe: Vokale entfernen#

Gegeben: ein String

S = "Hallo Welt!"

Gesucht: ein (i.A. kürzerer) String, bei dem alle Vokale entfernt sind

S_ohne_Vokale = None
S_ohne_Vokale = "".join([ c for c in S if c.lower() not in "aeiou" ])
assert S_ohne_Vokale == "Hll Wlt!"

Aufgabe: Wörter ohne Sonderzeichen#

Gegeben: Eine Liste von Strings, z.B.

L = [ "Grüß", "Gott", "in", "Bayern!" ]

Gesucht (1): Eine Liste, in der alle Wörter in Kleinbuchstaben verwandelt und alle Sonderzeichen entfernt sind. Verwenden Sie dazu die Funktion isalpha().

L_klein  = []
for string in L:
    ... # 
assert L_klein  == [ "grüß", "gott", "in", "bayern" ]
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[13], line 1
----> 1 assert L_klein  == [ "grüß", "gott", "in", "bayern" ]

AssertionError: 

Aufgabe: Wörter ohne Sonderzeichen#

Eine Liste, in der alle Strings rückwärts gelesen sind

L_rueckwärts = ...
#assert L_rueckwärts == [ "ßürG", "ttoG", "ni", "!nreyaB" ]

Gesucht (3): Kombination von (1) und (2): Kleinbuchstaben, keine Sonderzeichen, rückwärts

L_klein_rueckwärts = ...
#assert L_klein_rueckwärts == [ "ßürg", "ttog", "ni", "nreyab" ]

Aufgabe: Drei-Tupel#

Gegeben

  • ein Text

text = "Hallo Welt!"

Gesucht:

  • eine Liste von Drei-Tupeln, d.h. von je 3 aufeinander folgenden Zeichen

L_3t_alle = ...
#assert L_3t_alle == [ "Hal", "all", "llo", "lo ", "o W", ... ]

Gesucht:

  • alle Drei-Tupel, die aber nicht über Leerzeichen hinweggehen

L_3t = ...
#assert L_3t == [ "Hal", "all", "llo", "Wel", "elt", "lt!" ]

Gesucht:

  • die vorangehende Lösung als Liste von Listen

L_3t_liste = ...
#assert L_3t_liste == [ [ "Hal", "all", "llo" ], [ "Wel", "elt", "lt!" ] ]

Aufgabe: Text to Dict#

Gegeben ist folgender Text:

Ubuntu_Versionen = """
4.10 Warty Warthog
5.04 Hoary Hedgehog
5.10 Breezy Badger
20.04 Focal Fossa
22.04 Jammy Jellyfish
22.10 Kinetic Kudu 
23.04 Lunar Lobster
"""

Gesucht:

  • ein Dict

Ubuntu_Versionen_dict = ...
#assert Ubuntu_Versionen_dict == { '4.10': Warty Warthog, '5.04': 'Hoary Hedgehog', ... }

Aufgabe: String to Number#

Gegeben:

  • Eine Liste von Strings

Einkauf = [ "Anzahl:", "33", "Stück", "Preis:", "19.90", "Euro"  ]

Gesucht:

  • Liste der darin enthaltenen Zahlen als float oder `int

Einkauf_Werte = ...
#assert Einkauf_Werte == [ 33, 19.90 ]

Aufgabe: Stabreime erkennen#

Ein Stabreim (https://de.wikipedia.org/wiki/Stabreim) ist vereinfacht ein Spruch oder ein Gedicht, bei dem sich viele Anfangs-Buchstaben von Wörtern reimen.

Gegeben: Eine Gedichtzeile

Wagner_Walkuere = "Wer so die Wehrlose weckt, dem ward, erwacht, sie zum Weib!"

Gesucht: Menge der Anfangsbuchstaben (Kleinbuchstaben)

WW_Anfangsbuchstaben = ...
#assert WW_Anfangsbuchstaben == { 'w', 's', 'd', ... }

Gesucht: dict von Listen von Wörtern, die den selben Anfangsbuchstaben haben

WW_w_woerter = ...
#assert WW_w_woerter == { 'w': [ 'Wer', 'Wehrlose', 'weckt, 'ward', 'Weib' ], 's': [ 'so', 'sie' ], ... }

Gesucht: dict, das zu jedem Anfangsbuchstaben die Anzahl liefert

WW_w_Anzahl = ...
#assert WW_w_Anzahl == { 'w': 5, 's': 2, ... }

Gesucht: der Anfangsbuchstabe, der am häufigsten vorkommt (und damit den eigentlichen Stabreim identifiziert):

  • z.B. hier das w

Gesucht: Eine Funktion, die zu einer Gedichtzeile eine Liste der eigentlichen Stabreim-Wörter liefert.

Aufgabe: Zwillingsformeln#

Gegeben: eine Liste von Zwillings- (und anderen Vielfach-) Formeln

Zwillingsformeln = [ "Haus und Hof", "Leib und Leben", "Lebe lange und lustig", "schlank und rank", "Mord und Totschlag", "Wissen und Gewissen", "Wein und Bier", "frisch, fromm, fröhlich und frei" ]

Gesucht: Liste von Listen der Vielfachformel-Wörter, die zugleich Stabreime sind. (Groß/Kleinschreibung ist irrelevant))

Mehrlinge_Liste = ...
#assert Mehrlinge_Liste == [ ['Haus', 'Hof'], ['Leib', 'Leben'], ['Lebe', 'lange', 'lustig' ], ["frisch", "fromm", "fröhlich", "frei" ] ]