lehrkraefte:snr:informatik:glf22:python:listen

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 [2022/09/27 11:47]
Olaf Schnürer [Expertenwissen zur Extraktion von Teilisten]
lehrkraefte:snr:informatik:glf22:python:listen [2023/11/21 12:37] (current)
Olaf Schnürer [Modifikation von Listen]
Line 271: Line 271:
   - Gib das 4. Element der Liste aus.   - Gib das 4. Element der Liste aus.
   - Entferne das letzte Element aus der Liste und gib es aus.   - Entferne das letzte Element aus der Liste und gib es aus.
-  - Gib die Liste aus (dies kannst du im Folgenden immer mal machen).+  - Gib die Liste aus (dies kannst du im Folgenden immer mal wieder als Test machen).
   - Füge die Zahlen 17, 42, 15, 42 und 91 hinten an die Liste an.   - Füge die Zahlen 17, 42, 15, 42 und 91 hinten an die Liste an.
   - Lösche das dritte Element aus der Liste und gib es aus.   - Lösche das dritte Element aus der Liste und gib es aus.
Line 335: Line 335:
 quadratzahlen = [x * x for x in range(1, 101)] quadratzahlen = [x * x for x in range(1, 101)]
 </code> </code>
 +<hidden Bemerkung für Mathematiker>
 +Diese "Listenerzeugung mit interner for-loop" ist der mathematischen Notation $\{x^2 \mid x \in \{1, \dots, 100\}\}$ nachempfunden. Sprechweise: "Die Menge aller $x^2$ für $x$ in der Menge der Zahlen von 1 bis 100."
 </hidden> </hidden>
- 
-<hidden Bemerkung für Mathematiker> 
-Die "Listenerzeugung mit interner for-loop" ist der mathematischen Notation $\{x^2 \mid x \in \{1, \dots, 100\}\}$ für die Menge der Quadratzahlen nachempfunden. Sprechweise: "Die Menge aller $x^2$ für $x$ in der Menge der Zahlen von 1 bis 100." 
 </hidden> </hidden>
 </WRAP> </WRAP>
Line 357: Line 356:
 (2) Eine Liste aus 20 Elementen, deren $i$-tes Element die $i$-fache Hintereinanderschreibung des Worts "la" ist (das dritte Element ist beispielsweise der String "lalala"). (Hinweis: Rechnen mit Strings) (2) Eine Liste aus 20 Elementen, deren $i$-tes Element die $i$-fache Hintereinanderschreibung des Worts "la" ist (das dritte Element ist beispielsweise der String "lalala"). (Hinweis: Rechnen mit Strings)
  
-(3) Die Liste aller ganzen Zahlen von 5 bis 20.+(3) Die Liste aller (ganzenZahlen von 5 bis 20.
  
 (4) Die Liste aller Zahlen von 7 bis 97 "mit Schrittweite 10", also die Liste ''[7, 17, 27, 37, 47, 57, 67, 77, 87, 96]''. (4) Die Liste aller Zahlen von 7 bis 97 "mit Schrittweite 10", also die Liste ''[7, 17, 27, 37, 47, 57, 67, 77, 87, 96]''.
Line 419: Line 418:
  
 ====== Bonusmaterial ====== ====== Bonusmaterial ======
 +
 +===== Aufgabe: Sieb des Eratosthenes =====
 +
 +<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, etwa ''n = 1000000''.
 +
 +<hidden Hinweis>
 +Das Programm geht beispielsweise so los:
 +<code python>
 +n = 1000000
 +prim = [True for i in range(n + 1)]
 +prim[0] = False
 +prim[1] = False
 +</code>
 +Solange ''prim[x]'' wahr ist, ist ''x'' ein Kandidat für eine Primzahl. Wenn ''x'' beim Sieb des Eratosthenes gestrichen wird, setzen wir ''prim[x] = False''.
 +</hidden>
 +</WRAP>
 +
 +===== Aufgabe: Snake programmieren =====
 +
 +Die Schlange bei Snake bzw. genauer die Liste ihrer Koordinaten ist ein perfektes Beispiel für eine Liste, die modifiziert wird: Vorne wird etwas hinzugefügt, hinten etwas entfernt... Beim Apfel-Essen wird nur etwas hinzugefügt.
 +
 +<WRAP center round todo>
 +Snake weiterprogrammieren! 
 +
 +(Verwende etwa die Musterlösung zum "Box-Steuer-Programm". Verwende zwei Listen, eine für x-Koordinaten und eine für y-Koordinaten der Schlange. Verwende append und pop. Alternative: Verwende eine Liste, deren Elemente "2-Tupel" alias Listen mit zwei Einträgen sind (oder gar echte Tupel oder gar dictionaries).)
 +</WRAP>
  
 ===== Expertenwissen zur Extraktion von Teilisten ===== ===== Expertenwissen zur Extraktion von Teilisten =====
Line 460: Line 486:
 Achtung beim Kopieren von Listen: Da können Dinge passieren, die man auf den ersten Blick nicht erwartet! Achtung beim Kopieren von Listen: Da können Dinge passieren, die man auf den ersten Blick nicht erwartet!
  
-Hier ist der Link zu meinen alten Erklärungen dazu: https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:snr:informatik:python:listen#listen_sind_mutabel_veraenderlich_englisch_mutable+Hier ist der Link zu meinen alten Erklärungen dazu (wird eventuell bald verbessert): https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:snr:informatik:python:listen#listen_sind_mutabel_veraenderlich_englisch_mutable
 </WRAP> </WRAP>
  
Line 488: Line 514:
 s s
 </code> </code>
 +Auch kannst du eine for-Schleife über die Einzelzeichen eines Strings laufen lassen. Dies kannst du auch in der Python-Shell testen, da man dort auch mehrzeilige Befehle eingeben darf (beachte die Einrückung und dass du nach der Eingabe von ''print(z)'' zweimal ''Enter'' drücken musst).
 +<code python>
 +for z in "Hallo":
 +    print(z)
 +</code>
 +
 +=== Zusatzinformationen ===
  
-Hier noch einige nützliche Zusatzinformationen: 
 Du kannst dir eine Liste der "Attribute" des Strings s mit dem folgenden Befehl anzeigen lassen: Du kannst dir eine Liste der "Attribute" des Strings s mit dem folgenden Befehl anzeigen lassen:
 <code python> <code python>
 dir(s) dir(s)
 </code> </code>
-Die in dieser Liste mit einem Unterstrich anfangenden Attribute sind "privat" und sollten nicht verwendet werden. Um die anderen anzeigen zu lassen, gib das folgende ein (eine Erweiterung der obigen Notation für Listen-Erzeugung mit interner for-Schleife um eine if-Bedingung):+Die in dieser Liste mit einem Unterstrich anfangenden Attribute sind "privat" und sollten nicht verwendet werden. Um die anderen anzeigen zu lassen, gib das Folgende ein(Es handelt sich um eine Erweiterung der obigen Notation für "Listen-Erzeugung mit interner for-Schleifeum eine if-Bedingung: Nur diejenigen Elemente werden in die Liste aufgenommen, die die angegebene Bedingung erfüllen.)
 <code python> <code python>
 [befehl for befehl in dir(s) if befehl[0] != "_"] [befehl for befehl in dir(s) if befehl[0] != "_"]
Line 502: Line 534:
 s.upper() s.upper()
 </code> </code>
- 
 </WRAP> </WRAP>
  
 +===== Listen von Zahlen graphisch darstellen =====
  
 +<code python saeulendiagramm.py>
 +from matplotlib import pyplot
  
 +xWerte = [i for i in range(-10, 30)]
 +yWerte = [(x-3)*(x+2)*(x-25) for x in xWerte]
 +pyplot.bar(xWerte, yWerte, color='blue')
 +pyplot.show()
 +</code>
 +
 +<code python graph.py>
 +from matplotlib import pyplot
 +
 +xWerte = [i for i in range(-10, 30)]
 +yWerte = [(x-3)*(x+2)*(x-25) for x in xWerte]
 +pyplot.plot(xWerte, yWerte, color='blue')
 +pyplot.show()
 +</code>
 +
 +===== Weiteres Material =====
 +
 +Siehe etwa die Erklärungen (und Quizzes) zu Listen und Strings auf https://www.w3schools.com/python/default.asp.
 +
 +===== Verwandte Datenstrukturen: Tupel, Mengen und Wörterbücher (= tuples, sets and dictionaries) =====
 +
 +Neben Listen gibt es auch Tupel, Mengen und Wörterbücher in Python, siehe etwa 
 +
 +  * https://www.w3schools.com/python/python_tuples.asp 
 +  * https://www.w3schools.com/python/python_sets.asp
 +  * https://www.w3schools.com/python/python_dictionaries.asp
  
-====== To be added somewhere ====== 
  
-<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, etwa ''n = 1000000''. 
  
-Gib Hilfe: Nimm Liste von Booleans! 
-</WRAP> 
  
-<WRAP center round todo> 
-Snake weiterprogrammieren! 
-</WRAP> 
  
  
  • lehrkraefte/snr/informatik/glf22/python/listen.1664272075.txt.gz
  • Last modified: 2022/09/27 11:47
  • by Olaf Schnürer