This is an old revision of the document!
Wiederholungen mit for-loops
Testen und verstehen Sie folgendes Programm (auch mit Hilfe der Erklärungen unten).
for i in range(20): print("%2d im Quadrat ist %3d" % (i, i*i)) print("fertig")
Struktur eines for-loops:
- Doppelpunkt am Ende der Zeile mit dem
for
- Der Code, der wiederholt wird, wird eingerückt.
- range(n) heisst von 0 bis n-1
- Die Laufvariable (im obigen Beispiel
i
) nimmt bei jedem Durchgang den nächsten Wert an.
Der range
-Befehl kann noch weitere Parameter übernehmen, um mehr Flexibilität über die Laufvariable zu erhalten:
range(10,20)
läuft von 10 bis und mit 19.range(5,15,2)
läuft von 5 bis und mit 13 in 2er-Schritten (d.h. 5,7,9,11,13).range(10,0,-1)
läuft rückwärts von 10 bis 1
Die Grössen müssen immer Ganzzahlen sein. Die obere Grenze ist immer ausgeschlossen.
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.
Die Summe der ersten $n$ Zahlen werden auch Dreieckszahlen genannt, weil damit mit Kugeln ein Dreieck legen kann. Diese Zahlen können wie folgt berechnet und ausgegeben werden:
summe = 0 for n in range(11): summe = summe + n print("Dreieckszahl %2d ist %3d" % (n,summe))
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.
Schreiben Sie ein Programm, das die Anzahl Zeilen einliest, und dann ein folgendes Dreieck (mit dieser Anzahl Zeilen) produziert, hier 5:
* *** ***** ******* *********
Verschachtelte for-loops
Man kann for-loops verschachteln, der Code wird dann entsprechend weiter eingerückt.
Testen und verstehen Sie folgenden Code:
for x in range(3): for y in range(5): print("x=%d, y=%d" % (x,y)) print("---")
Beachten Sie genau die Einrückung!
Manchmal ist es unumgänglich, einen String (Zeichenkette) stückweise aufzubauen, z.B. wie folgt:
zeile = "" # Leerer String zum Anfangen for i in range(1,11): zeile = zeile + "%3d" % i # Hinten zum String hinzufügen. ACHTUNG: % ist eine Punktoperation und wird vor dem + ausgeführt. print(zeile) # Danach ausgeben
Schreiben Sie ein Program, das eine Multiplikationstabelle wie folgt ausgibt (und einfach auf den Bereich bis 20 ausgedehnt werden könnte):
* | 1 2 3 4 5 6 7 8 9 10 -------------------------------------------- 1 | 1 2 3 4 5 6 7 8 9 10 2 | 2 4 6 8 10 12 14 16 18 20 3 | 3 6 9 12 15 18 21 24 27 30 4 | 4 8 12 16 20 24 28 32 36 40 5 | 5 10 15 20 25 30 35 40 45 50 6 | 6 12 18 24 30 36 42 48 54 60 7 | 7 14 21 28 35 42 49 56 63 70 8 | 8 16 24 32 40 48 56 64 72 80 9 | 9 18 27 36 45 54 63 72 81 90 10 | 10 20 30 40 50 60 70 80 90 100