lehrkraefte:snr:informatik:glf22:python:listen-altes-material

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:snr:informatik:glf22:python:listen-altes-material [2022/09/26 18:12]
Olaf Schnürer [Bereits bekannte Sachverhalte zu Listen und Strings]
lehrkraefte:snr:informatik:glf22:python:listen-altes-material [2022/09/26 20:44] (current)
Olaf Schnürer
Line 2: Line 2:
 ====== Listen ====== ====== Listen ======
  
-<WRAP round todo> 
-Teste das Programm 
-<code python> 
-schuelerliste = ["Anna", "Berta", "Charly", "Daniel", "Emil", "Ida", "Berta"] 
-print(schuelerliste[0]) 
-print(schuelerliste[4]) 
-print(schuelerliste) 
  
-# len steht fuer length 
-print(len(schuelerliste)) 
-</code> 
-</WRAP> 
  
-<WRAP round info> 
-Der Ausdruck ''["Anna", "Berta", "Charly", "Daniel", "Emil", "Ida", "Berta"]'' im obigen Programm erzeugt eine sogenannte //Liste// 
-Abstrakt ist eine Liste eine Datenstruktur, die eine geordnete endliche Folge von Elementen enthält. Wie im Beispiel können Elemente mehrfach vorkommen. 
-Der Wert der Variablen ''schuelerliste'' ist diese Liste. 
-</WRAP> 
  
- 
-===== Schleifen über Listen ===== 
-<WRAP round todo> 
-Der folgende Code illustriert, wie man eine Schleife programmiert, deren Laufvariable nacheinander die Elemente der Liste als Wert annimmt: 
-<code python> 
-schuelerliste = ["Anna", "Berta", "Charly", "Daniel", "Emil", "Ida", "Berta"] 
-for s in schuelerliste: 
-    print(s) 
-</code> 
-</WRAP> 
- 
-<WRAP round info> 
-Hier noch zwei Alternativen, die dasselbe wie der obige Code bewirken, aber etwas weniger elegant sind:  
-  * Mit einer ''for''-Schleife: <code python> 
-schuelerliste = ["Anna", "Berta", "Charly", "Daniel", "Emil", "Ida", "Berta"] 
-for zaehler in range(len(schuelerliste)): 
-    print(schuelerliste[zaehler]) 
-</code> 
-   * Mit einer ''while''-Schleife; diese führe ich hier durch die Hintertür ein: So lange die Bedingung zwischen dem Schlüsselwort ''while'' und dem Doppelpunkt wahr ist, wird  der eingerückte Code-Block wieder und wieder ausgeführt): <code python> 
-schuelerliste = ["Anna", "Berta", "Charly", "Daniel", "Emil", "Ida", "Berta"] 
-zaehler = 0  
-while zaehler < len(schuelerliste): 
-    print(schuelerliste[zaehler]) 
-    zaehler = zaehler + 1 
-</code> 
-</WRAP> 
- 
-<WRAP round todo> 
-Ergänze die Liste um weitere fünf Namen und modifiziere mindestens eines der obigen Programm so, dass nur jeder zweite Name aus der Liste ausgegeben wird! 
-Wenn du magst, kannst du bei jedem Namen zusätzlich seine (gerade) Nummer in der Liste ausgeben. 
-</WRAP> 
- 
- 
-===== Extraktion von Teil-Listen ===== 
- 
-<WRAP round todo> 
-Der folgende Code illustriert, wie man Teillisten einer Liste bekommt. Versuche, die Syntax zu verstehen! Sie ist ähnlich wie beim ''range''-Befehl. 
-<code python> 
-schuelerliste = ["Anna", "Berta", "Charly", "Daniel", "Emil", "Ida", "Berta"] 
-a = schuelerliste[1:4] 
-print(a) 
-b = schuelerliste[:4]  
-# Lässt man den ersten Parameter weg, wird dieser also automatisch auf ... gesetzt. 
-print(b)  
- 
-c = schuelerliste[2: 
-# Lässt man den zweiten Parameter weg, wird dieser automatisch auf ... gesetzt. 
-print(c) 
- 
-d = schuelerliste[:] 
-# Lässt man beide Parameter weg, so werden diese automatisch auf ... und ... gesetzt. 
-# Dies ist nützlich, um eine Kopie der Liste zu erstellen, vgl. die Diskussion unten, wo wir erklären, dass Listen //mutabel// sind. 
-print(d) 
- 
-# Die beiden Parameter dürfen auch negativ sein! Was bewirkt das? Hinweis: Zähle vom Ende der Liste! 
-e = schuelerliste[-4:-1] 
-print(e)  
- 
-# Auch ein dritter Parameter ist erlaubt (als Schrittweite). 
-f = schuelerliste[0:5:2] 
-print(f)  
- 
-</code> 
-Expertenwissen: 
-Sogar negative Schrittweiten sind erlaubt. 
-<code python> 
-g = schuelerliste[6:2:-1] 
-print(g) 
-</code> 
-Um die Reihenfolge der Elemente einer Liste umzukehren, ist die folgende Syntax erlaubt. 
-<code python> 
-h = schuelerliste[::-1]  
-# Beachte hier, dass die weggelassenen beiden ersten Parameter hier nicht wie oben durch ... und ... ersetzt werden, 
-# sondern auf Grund der negativen Schrittweite durch ... und ... 
-print(h) 
-</code> 
-</WRAP> 
- 
-<WRAP round todo> 
-Oben hast du ein Programm geschrieben, dass nur jeden zweiten Namen aus einer Liste ausgibt. Das geht mit dem neuen Wissen deutlich kürzer! Wie? 
-</WRAP> 
- 
- 
-===== Modifikation von Listen ===== 
- 
-<WRAP round todo> 
-Der folgende Code illustriert, wie man eine Liste modifizieren kann! Versuche herauszubekommen, was jeder Befehl bewirkt! 
-<code python> 
-schuelerliste = ["Anna", "Berta", "Charly", "Daniel", "Emil", "Ida", "Berta"] 
-schuelerliste[2] = "Carl" 
-print(schuelerliste) 
-schuelerliste.append("Friedrich") 
-print(schuelerliste) 
-schuelerliste.append("Marie") 
-print(schuelerliste) 
-name = schuelerliste.pop(3) 
-print(name) 
-print(schuelerliste) 
-name = schuelerliste.pop() 
-print(name) 
-print(schuelerliste) 
-schuelerliste.insert(2, "Gustav") 
-print(schuelerliste) 
-x = schuelerliste.index("Carl") 
-print(x) 
-print(schuelerliste) 
-schuelerliste.remove("Carl") 
-print(schuelerliste) 
-schuelerliste.sort() 
-print(schuelerliste) 
-schuelerliste.reverse() 
-print(schuelerliste) 
-</code> 
-Beachte die neue Syntax: (Name der Liste) + Punkt + Funktionsaufruf! Solche Funktionsaufrufe verändern bisweilen nur die Liste (wie ''insert'') bisweilen verändern sie die Liste und liefern einen Rückgabewert (wie ''pop'').  
-</WRAP> 
- 
-<WRAP round todo> 
-Schreibe ein Programm, welches den Benutzer nach Zahlen fragt und diese in einer Liste speichert. Wenn der Benutzer anstelle einer Zahl den Buchstaben ''q'' eingibt, soll die gesamte Liste ausgegeben werden und das Programm soll enden. 
- 
-Hinweis: Verwende eine ''while''-Schleife. Verwende den Befehl ''input'' statt ''inputString'' oder ''inputInt'', damit sowohl Zahlen als auch Buchstaben als Eingabe akzeptiert werden. 
-</WRAP> 
- 
-===== Was Listen alles enthalten können ===== 
- 
-<WRAP round info> 
-Listen sind sehr flexible Datenstrukturen: Sie können als Elemente verschiedene Datentypen (Integers/ganze Zahlen; Strings/Zeichenketten; Boolesche Werte/Wahrheitswerte etc.) enthalten; Elemente können sogar selbst Listen sein: 
-<code python> 
-seltsameliste = ["Anna", 2, "Charly", True, [1, 2, False, "Hallo"]] 
-print(seltsameliste) 
-print(seltsameliste[4]) 
-print(seltsameliste[4][2]) 
-</code> 
-</WRAP> 
- 
-===== Listen erzeugen ===== 
- 
-<WRAP round todo> 
-Verstehe die folgenden Befehle! 
-<code python> 
-zahlen = list(range(10)) 
-print(zahlen) 
-zahlen2 = list(range(10, 30, 3)) 
-print(zahlen2) 
- 
-zahlen3 = [x*x for x in zahlen] 
-print(zahlen3) 
-</code> 
-</WRAP> 
- 
-<WRAP round todo> 
-Schreibe ein Programm, das mit Hilfe des [[https://de.wikipedia.org/wiki/Sieb_des_Eratosthenes|Siebs des Eratosthenes]] eine Liste aller Primzahlen bis zu einer gegebenen Grenze ''n'' ausgibt. 
-</WRAP> 
  
 ===== Listen sind mutabel/veränderlich (englisch mutable) ===== ===== Listen sind mutabel/veränderlich (englisch mutable) =====
  • lehrkraefte/snr/informatik/glf22/python/listen-altes-material.1664208721.txt.gz
  • Last modified: 2022/09/26 18:12
  • by Olaf Schnürer