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 [2025-11-20 09:51] – hof | gf_informatik:programmieren_iii [2026-02-10 08:12] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Programmieren III: Listen, for-Schleifen ====== | ====== Programmieren III: Listen, for-Schleifen ====== | ||
| + | < | ||
| ===== Listen ===== | ===== Listen ===== | ||
| Zeile 18: | Zeile 19: | ||
| |Element| `' | |Element| `' | ||
| - | Beachte, dass das erste Element den **Index 0** hat! | + | Beachte, dass das erste Element den **Index 0** hat((Warum beginnt die Nummerierung bei 0? [[wp> |
| ==== Selektion und Modifikation ==== | ==== Selektion und Modifikation ==== | ||
| Zeile 46: | Zeile 47: | ||
| 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> | + | <html>< |
| alphabet = [' | alphabet = [' | ||
| i = 0 # Startindex, 0, weil wir zuerst das vorderste Element (hier ' | i = 0 # Startindex, 0, weil wir zuerst das vorderste Element (hier ' | ||
| Zeile 52: | Zeile 53: | ||
| print(alphabet[i]) | print(alphabet[i]) | ||
| i = i + 1 # erhöhe Index | i = i + 1 # erhöhe Index | ||
| - | </code> | + | </bottom-editor></ |
| 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, | ||
| Noch etwas eleganter geht dasselbe mit einer `for`-Schleife (mehr dazu im nächsten Kapitel). Dabei wird die Schleifen-Variable (im Beispiel `e`) in jedem Durchgang der Schleife auf das nächste Element der Liste gesetzt. | Noch etwas eleganter geht dasselbe mit einer `for`-Schleife (mehr dazu im nächsten Kapitel). Dabei wird die Schleifen-Variable (im Beispiel `e`) in jedem Durchgang der Schleife auf das nächste Element der Liste gesetzt. | ||
| - | <code python> | + | <html>< |
| - | for e in L: | + | alphabet = [' |
| + | for e in alphabet: | ||
| print(e) | print(e) | ||
| - | </code> | + | </bottom-editor></ |
| Mit folgendem Code überprüft man, ob ein Element in einer Liste steht: | Mit folgendem Code überprüft man, ob ein Element in einer Liste steht: | ||
| - | <code python> | + | <html>< |
| if ' | if ' | ||
| print(' | print(' | ||
| else: | else: | ||
| print(' | print(' | ||
| - | </code> | + | </bottom-editor></ |
| ==== Aufgaben H ==== | ==== Aufgaben H ==== | ||
| Zeile 79: | Zeile 82: | ||
| * am Ende ein " | * am Ende ein " | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| alphabet = [" | alphabet = [" | ||
| Zeile 91: | Zeile 94: | ||
| print(alphabet) | print(alphabet) | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 106: | Zeile 109: | ||
| 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> | + | <html>< |
| likeable_football_clubs = [" | likeable_football_clubs = [" | ||
| Zeile 122: | Zeile 125: | ||
| likeable_football_clubs.append(" | likeable_football_clubs.append(" | ||
| print(likeable_football_clubs) | print(likeable_football_clubs) | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 134: | Zeile 137: | ||
| 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> | + | <html>< |
| numbers = [68, 71, 53, 34, 66, 55, 80, 93, 24, 49, 68, 73, 9, 8, 93, 22, 44, 11, 82] | numbers = [68, 71, 53, 34, 66, 55, 80, 93, 24, 49, 68, 73, 9, 8, 93, 22, 44, 11, 82] | ||
| Zeile 157: | Zeile 160: | ||
| i = i + 2 | i = i + 2 | ||
| print(summe3) | print(summe3) | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| + | |||
| === Aufgabe H4 === | === Aufgabe H4 === | ||
| Zeile 180: | Zeile 184: | ||
| </ | </ | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| def liste_anzahl(liste, | def liste_anzahl(liste, | ||
| count = 0 | count = 0 | ||
| Zeile 205: | Zeile 209: | ||
| numbers = [3, | numbers = [3, | ||
| - | print(liste_anzahl(numbers, | + | suche = 3 |
| - | print(liste_max(numbers)) | + | print(f' |
| - | print(liste_min(numbers)) | + | print(f'{liste_max(numbers)} ist das Maximum der Liste.' |
| - | </code> | + | print(f'{liste_min(numbers)} ist das Minimum der Liste.' |
| + | </bottom-editor></ | ||
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 216: | Zeile 221: | ||
| Definiere eine Funktion `mittelwert(numbers)`, | Definiere eine Funktion `mittelwert(numbers)`, | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| - | <code python> | + | <html>< |
| def mittelwert(numbers): | def mittelwert(numbers): | ||
| summe = 0 | summe = 0 | ||
| Zeile 225: | Zeile 230: | ||
| return summe / len(numbers) | return summe / len(numbers) | ||
| - | print("Der Mittelwert ist " + str(mittelwert([3.8, | + | print(f'Der Mittelwert ist {mittelwert([3.8, |
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 233: | Zeile 239: | ||
| Programmiere eine Funktion `liste_haeufigste(liste)`: | Programmiere eine Funktion `liste_haeufigste(liste)`: | ||
| + | |||
| + | <nodisp 1> | ||
| + | ++++Lösung: | ||
| + | < | ||
| + | def liste_anzahl(liste, | ||
| + | count = 0 | ||
| + | for elem in liste: | ||
| + | if elem == x: | ||
| + | count = count + 1 | ||
| + | return count | ||
| + | |||
| + | def liste_haeufigste(liste): | ||
| + | max_anzahl = 0 # die Häufigkeit des bisherigen Siegers | ||
| + | sieger = [] # die bisherigen Sieger | ||
| + | for element in liste: | ||
| + | anzahl = liste_anzahl(liste, | ||
| + | if anzahl > max_anzahl: | ||
| + | # Neuer Sieger | ||
| + | max_anzahl = anzahl | ||
| + | sieger = [element] | ||
| + | elif anzahl == max_anzahl and element not in sieger: | ||
| + | # Gleich häufig wie bisheriger Sieger | ||
| + | sieger.append(element) | ||
| + | return sieger, max_anzahl | ||
| + | |||
| + | numbers = [3, | ||
| + | print(liste_haeufigste(numbers)) | ||
| + | </ | ||
| + | ++++ | ||
| + | </ | ||
| Zeile 315: | Zeile 351: | ||
| Der Parameter `m` hat im ersten Durchlauf den Wert `0`. In jedem weiteren Durchlauf wird er um `10` erhöht, solange er kleiner ist als der Endwert `101`. Ersetzen wir die Zahl `101` durch `110`, so ist das Resultat genau das gleiche. Erst mit `111` ist die grösste ausgegebene Zahl `110`. | Der Parameter `m` hat im ersten Durchlauf den Wert `0`. In jedem weiteren Durchlauf wird er um `10` erhöht, solange er kleiner ist als der Endwert `101`. Ersetzen wir die Zahl `101` durch `110`, so ist das Resultat genau das gleiche. Erst mit `111` ist die grösste ausgegebene Zahl `110`. | ||
| - | #### Positionen einer Liste aufzählen | + | #### Indirekte for-Schleife |
| `range()` ist zusammen mit `len()` äusserst praktisch, um alle gültigen Positionen (Indices) einer Liste aufzuzählen: | `range()` ist zusammen mit `len()` äusserst praktisch, um alle gültigen Positionen (Indices) einer Liste aufzuzählen: | ||
| Zeile 332: | Zeile 368: | ||
| === Aufgabe I1 === | === Aufgabe I1 === | ||
| - | Du hast hoffentlich herausgefunden, | + | Du hast hoffentlich herausgefunden, |
| {{ : | {{ : | ||
| Zeile 355: | Zeile 391: | ||
| </ | </ | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| <code python> | <code python> | ||
| Zeile 374: | Zeile 410: | ||
| </ | </ | ||
| - | < | + | < |
| ++++Lösung| | ++++Lösung| | ||
| Zeile 395: | Zeile 431: | ||
| === Aufgabe I6 === | === Aufgabe I6 === | ||
| - | Finde den Index (die Position) von `" | + | Finde den Index (die Position) von `" |
| `[' | `[' | ||
| - | < | + | **Zusatzaufgabe: |
| + | |||
| + | < | ||
| ++++Lösung| | ++++Lösung| | ||
| <code python> | <code python> | ||
| Zeile 406: | Zeile 444: | ||
| if names[index] == ' | if names[index] == ' | ||
| print(index) | print(index) | ||
| + | |||
| + | # Als Funktion: | ||
| + | def suchen(l, query): | ||
| + | for index in range(len(l)): | ||
| + | if l[index] == query: | ||
| + | return index | ||
| + | |||
| + | print(suchen(names, | ||
| </ | </ | ||
| ++++ | ++++ | ||
| Zeile 415: | Zeile 461: | ||
| **Teil 2**: Ändere die Funktion so, dass der Teiler über ein Funktionsargument gewählt werden kann. | **Teil 2**: Ändere die Funktion so, dass der Teiler über ein Funktionsargument gewählt werden kann. | ||
| - | Der Aufruf reihensumme(5) soll beispielsweise die Summe der Fünferreihe von 5 bis 50 berechnen und 275 zurückgeben. | + | Der Aufruf |
| 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 437: | Zeile 483: | ||
| **Teil 1**: Schreibe eine Funktion `reverse(liste)`, | **Teil 1**: Schreibe eine Funktion `reverse(liste)`, | ||
| - | < | + | < |
| ++++Lösung| | ++++Lösung| | ||
| <code python> | <code python> | ||