Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:programmieren_iii [2026-04-29 15:00] – [Indirekte for-Schleife] hofgf_informatik:programmieren_iii [2026-04-30 05:25] (aktuell) – [For-Schleife] hof
Zeile 315: Zeile 315:
  
 ===== 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 ====
Zeile 417: Zeile 424:
 {{ :gf_informatik_1m_20_21:spiralen_duo.png?250 |}} {{ :gf_informatik_1m_20_21:spiralen_duo.png?250 |}}
  
 +<bottom-exercise id="i1" layout="canvas" showswitcher>
 +<template data-type="starter">
 +from turtle import *
 +</template>
 +<template data-type="solution">
 +from turtle import *
 +
 +t = Turtle()
 +t.speed(0)
 +
 +t.teleport(-75, 50)
 +for side in range(32):
 +    t.forward(side * 4)
 +    t.left(90)
 +
 +t.teleport(75, 50)
 +for side in range(64):
 +    t.forward(side * 2)
 +    t.left(90)
 +</template>
 +</bottom-exercise>
 === Aufgabe I2 === === Aufgabe I2 ===
  
Zeile 423: Zeile 451:
 {{ :gf_informatik_1m_20_21:spirale.png?200 |}} {{ :gf_informatik_1m_20_21:spirale.png?200 |}}
  
 +<bottom-exercise id="i2" layout="canvas" showswitcher>
 +<template data-type="starter">
 +from turtle import *
 +</template>
 +<template data-type="solution">
 +from turtle import *
 +
 +t = Turtle()
 +t.speed(0)
 +
 +for radius in range(16):
 +    t.circle(radius * 5, 180)
 +</template>
 +</bottom-exercise>
 === Aufgabe I3 (optional) === === Aufgabe I3 (optional) ===
  
Zeile 429: Zeile 471:
 {{ :gf_informatik_1m_20_21:spirale_rechteckig.png?250 |}} {{ :gf_informatik_1m_20_21:spirale_rechteckig.png?250 |}}
  
 +<bottom-exercise id="i3" layout="canvas" showswitcher>
 +<template data-type="starter">
 +from turtle import *
 +</template>
 +<template data-type="solution">
 +from turtle import *
 +
 +t = Turtle()
 +t.speed(0)
 +
 +for side in range(28):
 +    t.forward(side * 8)
 +    t.left(90)
 +    t.forward(side * 4)
 +    t.left(90)
 +</template>
 +</bottom-exercise>
 === Aufgabe I4 === === Aufgabe I4 ===
-Wandle in `while`-Schleife um: + 
-<code python>+<bottom-exercise id="i4"> 
 +<div part="prompt"> 
 +Wandle in <code>while</code>-Schleife um: 
 +<pre>
 for i in range(4,12): for i in range(4,12):
     print(i)     print(i)
-</code> +</pre
- +</div
-<nodisp 1> +<template data-type="solution">
-++++Lösung:| +
-<code python>+
 i = 4 i = 4
 while i < 12: while i < 12:
     print(i)     print(i)
     i = i + 1     i = i + 1
-</code> +</template
-++++ +</bottom-exercise> 
-</nodisp>+
 === Aufgabe I5 === === Aufgabe I5 ===
-Wandle in möglichst kurze for-Schleife (max. 2 Zeilen) um: + 
-<code python>+<bottom-exercise id="i5"> 
 +<div part="prompt"> 
 +Wandle in möglichst kurze <code>for</code>-Schleife (max. 2 Zeilen) um: 
 +<pre>
 i = 10 i = 10
 while i < 29: while i < 29:
     print(i)     print(i)
     i = i + 3     i = i + 3
-</code> +</pre
- +</div
-<nodisp 1> +<template data-type="solution">
- +
-++++Lösung| +
-<code python>+
 for i in range(10, 29, 3): for i in range(10, 29, 3):
     print(i)     print(i)
-""" +</template
-OUTPUT: +</bottom-exercise>
-10 +
-13 +
-16 +
-19 +
-22 +
-25 +
-28 +
-""" +
-</code> +
-++++ +
-</nodisp>+
  
 === 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> Schleifebei der die <code>range</code> über die Länge der Liste geht.
  
-**Zusatzaufgabe:** Schreibe eine Funktion `suchen(lquery)` 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)):
Zeile 497: Zeile 555:
  
 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 + &hellip; + 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."""
Zeile 521: Zeile 587:
 print(reihensumme()) print(reihensumme())
 print(reihensumme(5)) print(reihensumme(5))
-</code> +</template
-++++ +</bottom-exercise> 
-</nodisp>+
  
 === Aufgabe I8 === === Aufgabe I8 ===
-**Teil 1**: Schreibe eine Funktion `reverse(liste)`, die eine neue Liste erstellt und die Elemente von `listein umgekehrter Reihenfolge darin abspeichert und die umgekehrte Liste zurückgibt. Die eingebauten Funktionen `reverseund `reverseddürfen nicht benützt werden - verwende stattdessen eine [[#schrittweite|negative Schrittweite]] für `range`+<bottom-exercise id="i8"> 
- +<div part="prompt"> 
-<nodisp 1+<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>
-++++Lösung| +</div> 
-<code python+<template data-type="starter"
-def reverse(liste):+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:
Zeile 542: Zeile 615:
  
 names = ['Cebraham', 'Debraham', 'Bebraham', 'Abraham'] names = ['Cebraham', 'Debraham', 'Bebraham', 'Abraham']
-print(reverse(names))</code> +print(umdrehen(names))</code> 
-++++ +</template> 
-</nodisp>+</bottom-exercise> 
  • gf_informatik/programmieren_iii.1777474851.txt.gz
  • Zuletzt geändert: 2026-04-29 15:00
  • von hof