Zum Inhalt springen

Listen

Einführung

Listen sind wie Aktenschränke. Die Schubladen enthalten Informationen verschiedener Art. Beispielsweise kannst du in einer Schublade einen Text, in einer anderen eine Zahl und einer weiteren einfach nur einen Wahrheitswert aufbewahren. Du kannst sogar in einer Schublade im Grunde einen weiteren Aktenschrank aufbewahren. In der Informatik ist das möglich. Da freuen sich Ordnungsfanatiker genauso wie Messies.

Grundgerüst

#eine Liste
warenkorb= ["Apfel", "Birne", "Banane", 6, True]

Übungen

Übung 1: Grundlagen

#eine Liste
warenkorb = ["Apfel", "Birne", "Banane", 6, True]

print(*warenkorb,sep='\n') #Ausgabe aller Elemente, Trennzeichen ist \n (neue Zeile)

warenkorb[2] #ist informatisch das 2. Element, das an dritter Stelle (gezählt 0,1,2) steht

warenkorb[1] = "Himbeere" #ändert das 1. Element von 'Birne' in 'Himbeere'
  1. Probiere den Code oben aus. Ändere die Werte und ergänze 3 weitere Werte.
  2. Gib das 4. Element der Liste per print()-Befehl aus.
  3. Ändere den Wert des 3. Elements in “Banana” und gib ihn per print() aus.
  4. Betimme den Typ der letzten beiden Elemente mit dem type()-Befehl, gib den Typ per print() aus.
  5. Bestimme die Länge der Liste mit len(warenkorb), gib das Ergebnis per print() aus.

Mini-Test

len() und type() sind interne Funktionen in Python und ziemlich nützlich, merken lohnt sich also.

Übung 2: Existenz von Elementen in Listen prüfen

einkauf = ["Apfel", "Birne", "Banane", "Tomate", "Gurke"]

if "Apfel" in einkauf:
    print("Apfel ist in der Liste.")
  1. Was macht das Skript oben? Mache dir das zunächst wirklich klar, versuche es auch noch ein mal mit einem ganz eigenen Beispiel. Gib nur dein eigenes Beispiel ab. (a)
  2. Teste das ganze oben auch mit einer for-Schleife statt mit “in”. Schau dir dazu die Lösung unten an. Gib diese Aufgabe mit deiner eigenen Liste ab. (a)
  3. Erstelle eine Liste mit numerischen Einträgen (also Integern) und prüfe mit einer for-Schleife, ob die Werte kleiner, größer oder gleich 0 sind. (a)

[expand title=”Lösung zeigen”]

einkauf = ["Apfel", "Birne", "Banane", "Tomate", "Gurke"]

for i in range(len(einkauf)):
    if einkauf[i] == "Apfel":
        print("Apfel ist in der Liste.")

[/expand]

Übung 3: Listenelemente löschen und ergänzen

  1. Recherchiere, was der pop()-Befehl mit Listen in Python macht. Schreibe eine Liste und teste den Befehl damit. Mache mit print()-Befehlen vor und nach Anwendung des pop()-Befehls deutlich, was passiert ist. (a)
  2. Mit einkauf.append(“Orange”) kannst du der Liste Einkauf Orange hinzufügen. Füge 3 weitere Elemente hinzu, gebe anschließend alle Elemente der Liste aus, und zwar mit dieser Methode: print(*list, sep=’\n’) (a)

Übung 4: Listen zusammenführen

obst = ["Apfel", "Birne", "Banane"]
gemuese = ["Tomate", "Gurke", "Kürbis"]

obst_und_gemuese = obst + gemuese

print(obst)
print(gemuese)
print(obst_und_gemuese)
  1. Probiere den Code oben aus. Ändere die Werte und teste erneut.
  2. In Python ist es denkbar einfach, Listen zusammenzuführen. Probiere eigene Varianten aus.
    1. Klappt es auch mit 3 Listen?
    2. Klappt es auch mit Listen, die verschiedene Datentypen enthalten?
  3. Du kannst auch einfach bestehende Listen mit einer anderen erweitern. Das geht mit liste1.extend(liste2). Erstelle zwei Listen und erweitere die eine mit der anderen. Was ist der Unterschied zu der ersten Variante? Schreibe die Antwort auf diese Frage als Kommentar in den Code. (a)
  4. Extra: Führe Listen mit verschiedenen Datentypen zusammen, lösche dann alle Einträge eines bestimmten Datentyps aus der zusammengesetzten Liste.

Übung 5: Listenelemente mischen und sortieren

In Python existieren fertige Methoden (also Funktionen), mit denen man Listen sortieren kann. Du kannst sowohl Listen mit Strings als auch mit Integern/Floats sortieren. Bei gemischten Listen mit Springs und Integern funktioniert das nicht.

Sortieren

#Beispiel mit Strings
obst = ["Apfel", "Birne", "Banane"]
print(*obst, sep='\n')
obst.sort()
print('--------')
print(*obst, sep='\n')

#Beispiel mit Floats
zahlen = [6,7,8,9,3,2,4,1]
print(*zahlen, sep='\n')
zahlen.sort()
print('--------')
print(*zahlen, sep='\n')
  1. Probiere die Codes oben aus.

Mischen

Für das Mischen von Listenelementen in Python benötigst du das Paket random. Mit import random am Anfang deines Skriptes kannst du das Paket laden und Methoden dieses Pakets nutzen.

  1. Recherchiere, mit welcher Methode des Paketes random man Listenelemente mischen kann. Probiere es zunächst mit einer Beispielliste aus, bevor du die Fragen unten beantwortest.

[expand title=”Tipp zum Mischen”]

Die Methode lautet shuffle(). Du musst noch herausfinden, wie man sie nutzt.

[/expand]

Übung 6 (extra): Löffelsprache

Die Löffelsprache ist eine Geheimsprache, die nur wenige beherrschen. Wenn du auch zu den in dieser Hinsicht ungelenken Menschen wie ich gehörst, kannst du dir eine Stütze bauen.

Die Aufgabe besteht darin, einen angegebenen Text so zu verändern, dass die Vokale entsprechend der Löffelsprache ersetzt werden.

[expand title=”Vokal-Substitute anzeigen”]

  • e = elewe
  • a = alewa
  • i = ilewi
  • o = olewo
  • u = ulewu
  • ü = ülewü
  • ö = ölewö
  • ä = älewä
  • ie = ielewie
  • au = aulewau
  • ei = eilewei

[/expand]

Theoretisch weißt du nun, wie man die Aufgaben lösen kann. Das heißt du könntest es mit Stift und Papier lösen. Aber wer möchte das schon so machen!

Lösungsschritte und Fragen dahin

  • Hast du die obige Reihenfolge richtig gelöst und kannst alle Schritte nachvollziehen?
  • Weißt du, wie du die einzelnen Bausteine des Algorithmus erstellen kannst? Du benötigst unter anderem
    • einen if-Block, um die Ersetzungen zu managen
    • Befehle für die Konvertierungen [katex]string\rightarrow liste[/katex] und wieder zurück [katex]liste\rightarrow string[/katex]
#Start für unser Beispiel
text = 'Wenn du das beim Vorlesen direkt verstehst, kannst du die Löffelsprache.'
print(text)

#list(string) macht eine Liste aus Charactern aus einem String.  
textAsList = list(text)
print(textAsList)

#Start für das Neuzusammensetzen
rebuildText = "" #Beginne mit einem leeren String
for i in range(len(textAsList)): #durchläuft alle Elemente der Liste textAsList
    #hier kannst du passend zur Löffelsprache substitutieren
    rebuildText += textAsList[i] #dem leeren String wird jedes Element der Liste nacheinander angefügt
print(rebuildText) #Ausgabe des ggf. veränderten Textes

[expand title = “So geht es auch …”]

Vielleicht hast du versucht, diese Aufgabe auf andere, schnelle Weise zu lösen. Der oben vorgeschlagene Weg ist umständlicher, aber du lernst auf deinem Niveau etwas mehr dazu. Der folgende Ansatz funktioniert jedoch auch:

#Text, kann auch per Input eingegeben werden
text = 'Wenn du das beim Vorlesen direkt verstehst, kannst du die Löffelsprache.'

#Liste von Listen, die die Ersetzungen(Substitute) vorgibt 
substitute = [
    ['e','elewe'],
    ['a','alewa'],
    ['i','ilewi'],
    ['o','olewo'],
    ['u','ulewu'],
    ['ü','ülewü'],
    ['ö','ölewö'],
    ['ä','älewä'],
    ['ie','ielewie'],
    ['au','aulewau'],
    ['ei','eilewei']
    ]

#Für jedes Element x der Liste substitute wird die folgende for-Schleife durchlaufen
for x in substitute:
    #der neue Text ist der alte Text mit der Ersetzung
    text = text.replace(x[0],x[1]) #x ist ein Element der übergeordneten Liste und selbst eine Liste mit zwei Elementen. Beispiel: Das 0te Element von substitute hat die Elemente x[0] = 'e' und x[1]='elewe'
print(text)

[/expand]

3 Kommentare

  1. Wow! Alles so ordentlich und sorgfältig hinterlegt. Vielen Dank!

  2. Wow! Alles so ordentlich und sorgfältig hinterlegt. Vielen Dank!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert