Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:programmieren_iii [2024-01-15 08:07] – [Aufgabe I7] hof | gf_informatik:programmieren_iii [2025-02-10 14:02] (aktuell) – hof | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
Bisher haben wir in Variablen einzelne Werte gespeichert. Kann man auch *mehrere Werte* in einer Variablen speichern? Ja! Mit Listen! | Bisher haben wir in Variablen einzelne Werte gespeichert. Kann man auch *mehrere Werte* in einer Variablen speichern? Ja! Mit Listen! | ||
- | Eine Liste erstellt | + | Eine Liste wird erstellt, indem die Elemente in `[` eckigen Klammern `]` (_en_: brackets) eingeschlossen werden: |
<code python> | <code python> | ||
alphabet = [' | alphabet = [' | ||
</ | </ | ||
- | Die Liste im Beispiel oben hat die **Elemente** ' | + | |
- | ^ Position Index ^ 0 ^ 1 ^ 2 ^ 3 ^ 4 ^ | + | Die Liste im Beispiel oben hat die fünf **Elemente** |
- | |Element| ' | + | |
+ | ^ Position | ||
+ | |Element| | ||
Beachte, dass das erste Element den **Index 0** hat! | Beachte, dass das erste Element den **Index 0** hat! | ||
- | Über den Index kann man auf ein **Element zugreifen**. Dazu schreibt man zuerst den Namen der Liste und dann den Index in eckigen Klammern: | + | ==== Selektion und Modifikation ==== |
+ | |||
+ | Über den Index kann man auf ein **Element zugreifen**, das Element wird _ausgewählt_ oder **selektiert**. Dazu schreibt man zuerst den Namen der Liste und dann den Index in eckigen Klammern: | ||
<code python> | <code python> | ||
print(alphabet[2]) # gibt ' | print(alphabet[2]) # gibt ' | ||
- | alphabet[3] = ' | + | alphabet[3] = ' |
- | print(alphabet) # Ausgabe: [' | + | print(alphabet) |
</ | </ | ||
Zeile 28: | Zeile 34: | ||
alphabet.append(' | alphabet.append(' | ||
alphabet.insert(1,' | alphabet.insert(1,' | ||
- | alphabet.pop(3) # Entfernt Element an Position 3, Liste nachher: [' | + | alphabet.pop(3) |
- | alphabet.pop() | + | alphabet.pop() |
</ | </ | ||
Zeile 36: | Zeile 42: | ||
len(alphabet) # Anzahl Elemente in Liste | len(alphabet) # Anzahl Elemente in Liste | ||
</ | </ | ||
+ | |||
+ | ==== Iteration ==== | ||
Oft möchte man durch alle Elemente einer Liste **durchgehen** und etwas mit diesen machen, z.B. sie in die Konsole printen: | Oft möchte man durch alle Elemente einer Liste **durchgehen** und etwas mit diesen machen, z.B. sie in die Konsole printen: | ||
<code python> | <code python> | ||
alphabet = [' | alphabet = [' | ||
- | i = 0 # Startindex, 0, weil wir zuerst das vorderste Element (hier ' | + | i = 0 |
- | while i < len(alphabet): | + | while i < len(alphabet): |
- | print(alphabet[i]) # lese Element aus Liste aus, alphabet[i], | + | print(alphabet[i]) |
- | i = i + 1 # erhöhe Index | + | i = i + 1 |
</ | </ | ||
In der Bedingung `i < len(alphabet)` ermitteln wir mit len(alphabet) die Länge der Liste. Wichtig ist auch, dass der Index `i` *kleiner* (und nicht kleiner gleich) ist als diese Länge, da sonst versucht wird, auf Element zuzugreifen, | In der Bedingung `i < len(alphabet)` ermitteln wir mit len(alphabet) die Länge der Liste. Wichtig ist auch, dass der Index `i` *kleiner* (und nicht kleiner gleich) ist als diese Länge, da sonst versucht wird, auf Element zuzugreifen, | ||
Zeile 71: | Zeile 79: | ||
* am Ende ein " | * am Ende ein " | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 90: | Zeile 98: | ||
Betrachte die Liste: | Betrachte die Liste: | ||
+ | |||
<code python> | <code python> | ||
likeable_football_clubs = [" | likeable_football_clubs = [" | ||
Zeile 97: | Zeile 106: | ||
1. Die Bayern haben nichts in dieser Liste verloren. Bitte entferne sie, danke! Füge weiter deinen Lieblingsklub hinzu. | 1. Die Bayern haben nichts in dieser Liste verloren. Bitte entferne sie, danke! Füge weiter deinen Lieblingsklub hinzu. | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
- | <code python> | ||
<code python> | <code python> | ||
likeable_football_clubs = [" | likeable_football_clubs = [" | ||
Zeile 126: | Zeile 134: | ||
Natürlich sollen sämtliche Schritte voll automatisiert ablaufen. Tauscht man die Liste mit einer anderen Liste, so soll der Code auch funktionieren. | Natürlich sollen sämtliche Schritte voll automatisiert ablaufen. Tauscht man die Liste mit einer anderen Liste, so soll der Code auch funktionieren. | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 172: | Zeile 180: | ||
</ | </ | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 208: | Zeile 216: | ||
Definiere eine Funktion `mittelwert(numbers)`, | Definiere eine Funktion `mittelwert(numbers)`, | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 288: | Zeile 296: | ||
* Modifiziere nun deinen Code so, dass der Abstand zwischen den Linien (a) enger oder (b) grösser wird. | * Modifiziere nun deinen Code so, dass der Abstand zwischen den Linien (a) enger oder (b) grösser wird. | ||
- | In den bisherigen for-Schleifen wurde der Parameter in jedem Durchlauf um 1 erhöht. Möchten wir, dass grössere Schritte gemacht werden, können wir wie folgt vorgehen: | + | === Startwert === |
+ | |||
+ | Statt immer bei null zu starten, kann der Startwert auch angegeben werden: | ||
+ | <code python> | ||
+ | for m in range(10, | ||
+ | print(m) | ||
+ | </ | ||
+ | |||
+ | Mit zwei Parametern interpretiert `range` den ersten als Start- und den zweiten als (exklusiven) Endwert. | ||
+ | |||
+ | === Schrittweite === | ||
+ | In den bisherigen for-Schleifen wurde der Parameter in jedem Durchlauf um 1 erhöht. Möchten wir, dass grössere Schritte gemacht werden, können wir _drei_ Parameter verwenden: | ||
<code python> | <code python> | ||
for m in range(0, | for m in range(0, | ||
Zeile 294: | Zeile 313: | ||
</ | </ | ||
- | Der Parameter `m` hat im ersten Durchlauf den Wert `0`. In jedem weiteren Durchlauf wird er um `10` erhöht, | + | Der Parameter `m` hat im ersten Durchlauf den Wert `0`. In jedem weiteren Durchlauf wird er um `10` erhöht, |
#### Positionen einer Liste aufzählen | #### Positionen einer Liste aufzählen | ||
Zeile 319: | Zeile 338: | ||
=== Aufgabe I2 === | === Aufgabe I2 === | ||
- | Verwende eine *for-Schleife* und die `rightArc`-Funktion um eine Spirale zu erzeugen, ähnlich wie diejenige im Bild. | + | Verwende eine *for-Schleife* und die `circle`-Funktion um eine Spirale zu erzeugen, ähnlich wie diejenige im Bild. |
{{ : | {{ : | ||
Zeile 333: | Zeile 352: | ||
<code python> | <code python> | ||
for i in range(4, | for i in range(4, | ||
- | print(i) | + | |
</ | </ | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 355: | Zeile 374: | ||
</ | </ | ||
- | < | + | < |
++++Lösung| | ++++Lösung| | ||
<code python> | <code python> | ||
Zeile 375: | Zeile 395: | ||
=== Aufgabe I6 === | === Aufgabe I6 === | ||
- | Finde den Index (die Position) von `" | + | Finde den Index (die Position) von `" |
`[' | `[' | ||
- | < | + | < |
++++Lösung| | ++++Lösung| | ||
<code python> | <code python> | ||
Zeile 398: | Zeile 418: | ||
Der Aufruf ohne Argument soll weiterhin die Siebnerreihe addieren. | Der Aufruf ohne Argument soll weiterhin die Siebnerreihe addieren. | ||
- | < | + | < |
++++Lösung| | ++++Lösung| | ||
<code python> | <code python> | ||
Zeile 414: | Zeile 434: | ||
</ | </ | ||
+ | === Aufgabe I8 === | ||
+ | **Teil 1**: Schreibe eine Funktion `reverse(liste)`, | ||
+ | <nodisp 1> | ||
+ | ++++Lösung| | ||
+ | <code python> | ||
+ | def reverse(liste): | ||
+ | result = [] | ||
+ | # range erzeugt eine Zahlenfolge n, n-1, ... 3, 2, 1, 0: | ||
+ | # | ||
+ | # Der letzte Index ist 0, das exklusive Ende damit -1 | ||
+ | # Die Schrittweite ist -1 (wir zählen ja rückwärts) | ||
+ | for index in range(len(liste) - 1, -1, -1): | ||
+ | result.append(liste[index]) | ||
+ | return result | ||
+ | |||
+ | names = [' | ||
+ | print(reverse(names))</ | ||
+ | ++++ | ||
+ | </ |