Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:glf20:programmieren:for-loops [2020/09/23 07:00] – [Verschachtelte for-loops] Ivo Blöchliger | lehrkraefte:blc:informatik:glf20:programmieren:for-loops [2020/10/22 06:28] (current) – Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Wiederholungen mit for-loops ====== | ||
| + | <WRAP todo> | ||
| + | Testen und verstehen Sie folgendes Programm (auch mit Hilfe der Erklärungen in den folgenden beiden Info-Boxen unten). | ||
| + | <code python> | ||
| + | for i in range(20): | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP info> | ||
| + | Struktur eines for-loops: | ||
| + | * **Doppelpunkt** am Ende der Zeile mit dem '' | ||
| + | * Der Code, der wiederholt wird, wird **eingerückt**. | ||
| + | * range(n) heisst von 0 bis **n-1** | ||
| + | * Die **Laufvariable** (im obigen Beispiel '' | ||
| + | </ | ||
| + | <WRAP info> | ||
| + | Der '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | Die Grössen müssen **immer Ganzzahlen** sein. Die obere Grenze ist immer ausgeschlossen. | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | **Stand der Aufgabe: 20. September 2020** | ||
| + | |||
| + | Schreiben Sie ein Programm, das die Neuansteckungen mit Corona simuliert mit einer wöchentlichen Zunahme um 15%. Die Ausgabe soll z.B. wie folgt aussehen: | ||
| + | < | ||
| + | Aktuelle Zahl 500, wöchentliche Zunahme 15% | ||
| + | Woche 0: 500 | ||
| + | Woche 1: 575 | ||
| + | Woche 2: 661 | ||
| + | Woche 3: 760 | ||
| + | Woche 4: 874 | ||
| + | Woche 5: 1005 | ||
| + | Woche 6: 1156 | ||
| + | Woche 7: 1330 | ||
| + | Woche 8: 1529 | ||
| + | Woche 9: 1758 | ||
| + | Woche 10: 2022 | ||
| + | Woche 11: 2326 | ||
| + | Woche 12: 2675 | ||
| + | </ | ||
| + | Programmieren Sie Ihr Programm so, dass die akutelle Zahl und die Zuwachsrate am Anfang des Programm als Variablen definiert werden. | ||
| + | |||
| + | // | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | **Hinweis vom 22. Oktober 2020**: Aktuell ist die Positivrate wieder so schlecht wie im März (bei ca. 20%), die Neuansteckungen sind aber viel höher, mit einer Zuwachsrate von ca. 120% pro Woche. Im Moment sind die Hospitalisationen noch tief, die wachsen aber mit der gleichen Zuwachsrate an, und werden das auch noch 2-3 Wochen **nach** dem Ergreifen von drastischen Massnahmen tun. | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Die Summe der ersten $n$ Zahlen ergibt jeweils eine Dreieckszahl. Der Name kommt daher, dass mit dieser Anzahl Kugeln jeweils ein gleichseitiges Dreieck gelegt werden kann. Diese Zahlen können wie folgt berechnet und ausgegeben werden: | ||
| + | <code python> | ||
| + | summe = 0 | ||
| + | for n in range(11): | ||
| + | summe = summe + n | ||
| + | print(" | ||
| + | </ | ||
| + | Mit diesen Kugeldreiecken lassen sich Pyramiden bauen (genauer Tetraeder). Wie viele Kugeln hat die Pyramide mit Seitenlänge 10? Schreiben Sie ein Programm, dass alle Tetraeder-Zahlen ausgibt. | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Schreiben Sie ein Programm, das die Anzahl Zeilen einliest, und dann ein folgendes Dreieck (mit dieser Anzahl Zeilen) produziert, hier 5: | ||
| + | <code text> | ||
| + | * | ||
| + | *** | ||
| + | ***** | ||
| + | | ||
| + | ********* | ||
| + | </ | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | <hidden Zusatz-Aufgabe> | ||
| + | Produzieren Sie folgenden Output (hier ein Beispiel für 8 Zeilen): | ||
| + | <code text> | ||
| + | ^ | ||
| + | /v\ | ||
| + | /vvv\ | ||
| + | /vvvvv\ | ||
| + | / | ||
| + | /vvvvvvvvv\ | ||
| + | / | ||
| + | / | ||
| + | ||| | ||
| + | ||| | ||
| + | ||| | ||
| + | </ | ||
| + | Hinweise: Der Backslash wird mit " | ||
| + | </ | ||
| + | </ | ||
| + | ===== Verschachtelte for-loops ===== | ||
| + | <WRAP todo> | ||
| + | Man kann for-loops verschachteln, | ||
| + | |||
| + | Testen und verstehen Sie folgenden Code: | ||
| + | <code python> | ||
| + | for x in range(3): | ||
| + | for y in range(5): | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | Beachten Sie genau die Einrückung! | ||
| + | </ | ||
| + | |||
| + | <WRAP info> | ||
| + | Manchmal ist es unumgänglich, | ||
| + | <code python> | ||
| + | zeile = "" | ||
| + | for i in range(1, | ||
| + | zeile = zeile + " | ||
| + | print(zeile) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | **HINWEIS**: | ||
| + | |||
| + | Schreiben Sie ein Program, das eine Multiplikationstabelle wie folgt ausgibt (und einfach auf den Bereich bis 20 ausgedehnt werden könnte): | ||
| + | <code text> | ||
| + | * | | ||
| + | -------------------------------------------- | ||
| + | 1 | | ||
| + | 2 | | ||
| + | 3 | | ||
| + | 4 | | ||
| + | 5 | | ||
| + | 6 | | ||
| + | 7 | | ||
| + | 8 | | ||
| + | 9 | | ||
| + | 10 | 10 20 30 40 50 60 70 80 90 100 | ||
| + | </ | ||
| + | [[https:// | ||
| + | |||
| + | <hidden Zusatzaufgabe> | ||
| + | Generieren Sie die Tabelle als HTML-Code, den Sie dann im Browser betrachten können. | ||
| + | * Tabellen in HTML-Code: [[https:// | ||
| + | * Speichern Sie den erzeugten HTML-Code in einer Datei mit der Endung .html | ||
| + | * Alternativ können Sie den ganzen Code als String in eine Variable speichern, z.B. '' | ||
| + | <code python> | ||
| + | # hier den ganzen Code in der Variablen htmlcode aufbauen | ||
| + | with open(" | ||
| + | datei.write(htmlcode) | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Lösungsvorschläge ====== | ||
| + | <hidden Lösungvorschläge> | ||
| + | < | ||
| + | zuwachs = 15 | ||
| + | aktuell = 500 | ||
| + | |||
| + | print(" | ||
| + | for i in range(13): | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | <code python> | ||
| + | n = inputInt(" | ||
| + | for i in range(n): | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | <code python> | ||
| + | n = inputInt(" | ||
| + | print(" | ||
| + | for i in range(1,n): | ||
| + | print(" | ||
| + | print((" | ||
| + | </ | ||
| + | |||
| + | <code python> | ||
| + | summe = 0 | ||
| + | volumen = 0 | ||
| + | for n in range(11): | ||
| + | summe = summe + n | ||
| + | volumen = volumen + summe | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | <code python> | ||
| + | n=10 | ||
| + | zeile = " * |" | ||
| + | for i in range(1, | ||
| + | zeile = zeile + " | ||
| + | print(zeile) | ||
| + | print(" | ||
| + | for i in range(1, | ||
| + | zeile = "%2d |"%i | ||
| + | for j in range(1, | ||
| + | zeile = zeile + " | ||
| + | print(zeile) | ||
| + | </ | ||
| + | | ||
| + | </ | ||
| + | |||