| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
| gf_informatik:programmieren_iii [2026-04-29 19:04] – [Aufgabe I3 (optional)] hof | gf_informatik:programmieren_iii [2026-04-30 05:25] (aktuell) – [For-Schleife] hof |
|---|
| |
| ===== For-Schleife ===== | ===== For-Schleife ===== |
| | <nodisp 2> |
| | ++++TODO hof| |
| | * Einstieg mit direkter for-Schleife. |
| | * Einführung indirekte for-Schleife, z.B. `for index in [1, 6, 7]: print(liste[index])` |
| | * Erst dann Einführung von `range`. |
| | ++++ |
| | </nodisp> |
| |
| ==== Theorie ==== | ==== Theorie ==== |
| |
| === Aufgabe I6 === | === Aufgabe I6 === |
| Finde den Index (die Position) von `"Bebraham"` in der folgenden Liste. Nutze eine `for ... in range` Schleife, bei der die `range` über die Länge der Liste geht, wie [[#indirekte_for-schleife|hier]] erklärt. | |
| |
| `['Cebraham', 'Debraham', 'Bebraham', 'Abraham']` | <bottom-exercise id="i6"> |
| | <div part="prompt"> |
| | <p>Finde den Index (die Position) von <code>"Bebraham"</code> in der folgenden Liste. Nutze eine <code>for ... in range</code> Schleife, bei der die <code>range</code> über die Länge der Liste geht. |
| |
| **Zusatzaufgabe:** Schreibe eine Funktion `suchen(l, query)` die in einer beliebigen Liste `l` nach dem Element `query` sucht und dessen Index zurückgibt! | <pre>['Cebraham', 'Debraham', 'Bebraham', 'Abraham']</pre> |
| |
| <nodisp 1> | <p><b>Zusatzaufgabe:</b> Schreibe eine Funktion <code>suchen(l, query)</code> die in einer beliebigen Liste <code>l</code> nach dem Element <code>query</code> sucht und dessen Index zurückgibt! |
| ++++Lösung| | </div> |
| <code python> | <template data-type="starter"> |
| | names = ['Cebraham', 'Debraham', 'Bebraham', 'Abraham'] |
| | </template> |
| | <template data-type="test"> |
| | assert "2" in output_lines() |
| | assert suchen(['Cebraham', 'Debraham', 'Bebraham', 'Abraham'], 'Bebraham') == 2 |
| | assert suchen("Abrakadabra", "k") == 4 |
| | </template> |
| | <template data-type="solution"> |
| names = ['Cebraham', 'Debraham', 'Bebraham', 'Abraham'] | names = ['Cebraham', 'Debraham', 'Bebraham', 'Abraham'] |
| for index in range(len(names)): | for index in range(len(names)): |
| |
| print(suchen(names, "Bebraham")) | print(suchen(names, "Bebraham")) |
| </code> | </template> |
| ++++ | </bottom-exercise> |
| </nodisp> | |
| |
| === Aufgabe I7 === | === Aufgabe I7 === |
| **Teil 1**: Schreibe eine Funktion `reihensumme()`, die die Summe aller Zahlen der Siebnerreihe zurückgibt, also $7 + 14 + 21 + \ldots + 63 + 70 = 385$. | <bottom-exercise id="i7"> |
| Verwende dazu eine `for zahl in range(...)` Schleife. | <div part="prompt"> |
| | <p><b>Teil 1</b>: Schreibe eine Funktion <code>reihensumme()</code>, die die Summe aller Zahlen der Siebnerreihe zurückgibt, also <code>7 + 14 + 21 + … + 63 + 70 = 385</code>. |
| | <p>Verwende dazu eine <code>for zahl in range(...)</code> Schleife. |
| | |
| **Teil 2**: Ändere die Funktion so, dass der Teiler über ein Funktionsargument gewählt werden kann. | <p><b>Teil 2</b>: Ä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 <code>reihensumme(5)</code> soll beispielsweise die Summe der Fünferreihe von 5 bis 50 berechnen und 275 zurückgeben. |
| Der Aufruf ohne Argument soll weiterhin die Siebnerreihe addieren. | Der Aufruf ohne Argument soll weiterhin die Siebnerreihe addieren. |
| | </div> |
| <nodisp 1> | <template data-type="starter"> |
| ++++Lösung| | def reihensumme(): |
| <code python> | """Gibt die Summe der Siebnerreihe zurück.""" |
| | </template> |
| | <template data-type="test"> |
| | assert reihensumme() == 385, "Teil 1: Reihensumme soll 385 zurückgeben" |
| | assert reihensumme(5) == 275, "Teil 2: reihensumme(5) soll 275 zurückgeben" |
| | </template> |
| | <template data-type="solution"> |
| def reihensumme(n=7): | def reihensumme(n=7): |
| """Berechnet die Summe der n-er-Reihe.""" | """Berechnet die Summe der n-er-Reihe.""" |
| print(reihensumme()) | print(reihensumme()) |
| print(reihensumme(5)) | print(reihensumme(5)) |
| </code> | </template> |
| ++++ | </bottom-exercise> |
| </nodisp> | |
| |
| === Aufgabe I8 === | |
| **Teil 1**: Schreibe eine Funktion `reverse(liste)`, die eine neue Liste erstellt und die Elemente von `liste` in umgekehrter Reihenfolge darin abspeichert und die umgekehrte Liste zurückgibt. Die eingebauten Funktionen `reverse` und `reversed` dürfen nicht benützt werden - verwende stattdessen eine [[#schrittweite|negative Schrittweite]] für `range`. | |
| |
| <nodisp 1> | === Aufgabe I8 === |
| ++++Lösung| | <bottom-exercise id="i8"> |
| <code python> | <div part="prompt"> |
| def reverse(liste): | <p>Schreibe eine Funktion <code>umdrehen(liste)</code>, die eine neue Liste erstellt und die Elemente von <code>liste</code> in umgekehrter Reihenfolge darin abspeichert und die umgekehrte Liste zurückgibt. Die eingebauten Funktionen <code>reverse</code> und <code>reversed</code> dürfen nicht benützt werden - verwende stattdessen eine negative Schrittweite für <code>range</code>. |
| | </div> |
| | <template data-type="starter"> |
| | def umdrehen(liste): |
| | """Gibt eine neue Liste mit den gleichen Elementen, aber in umgekehrter Reihenfolge zurück.""" |
| | </template> |
| | <template data-type="test"> |
| | assert umdrehen(['Cebraham', 'Debraham', 'Bebraham', 'Abraham']) == ['Abraham', 'Bebraham', 'Debraham', 'Cebraham'] |
| | </template> |
| | <template data-type="solution"> |
| | def umdrehen(liste): |
| result = [] | result = [] |
| # range erzeugt eine Zahlenfolge n, n-1, ... 3, 2, 1, 0: | # range erzeugt eine Zahlenfolge n, n-1, ... 3, 2, 1, 0: |
| |
| names = ['Cebraham', 'Debraham', 'Bebraham', 'Abraham'] | names = ['Cebraham', 'Debraham', 'Bebraham', 'Abraham'] |
| print(reverse(names))</code> | print(umdrehen(names))</code> |
| ++++ | </template> |
| </nodisp> | </bottom-exercise> |