Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:snr:informatik:python:loops [2021/09/15 16:35] – [Bonus-Aufgaben] Olaf Schnürer | lehrkraefte:snr:informatik:python:loops [2021/09/22 12:41] (current) – [Verschachtelte for-Schleifen] Olaf Schnürer | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== for-Schleifen (englisch: for loops) über Zahlbereiche ====== | ||
| + | <WRAP round box> | ||
| + | Schleifen werden verwendet, wenn ein Programmteil mehrfach ausgeführt werden soll. | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Teste und verstehe das folgende Programm. | ||
| + | <code python> | ||
| + | for i in range(0, 15): | ||
| + | print(i) | ||
| + | print(" | ||
| + | </ | ||
| + | Was passiert, wenn du '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | </ | ||
| + | |||
| + | <WRAP round info> | ||
| + | Vermutlich verstehst du nun bereits, wie eine for-Schleife funktioniert. Beachte: | ||
| + | * Die sogenannte // | ||
| + | * Statt '' | ||
| + | * Der Doppelpunkt '':'' | ||
| + | * Der mehrfach auszuführende Code ist vier Zeichen eingerückt. | ||
| + | </ | ||
| + | |||
| + | <WRAP round info> | ||
| + | Die '' | ||
| + | |||
| + | Der erste Parameter kann optional weggelassen werden und wird dann als '' | ||
| + | |||
| + | Es gibt auch die 3-Parameter Variante '' | ||
| + | * '' | ||
| + | * '' | ||
| + | </ | ||
| + | |||
| + | <WRAP round box> | ||
| + | Stets kann man versuchen, sich im Internet schlau zu machen, wenn etwas unklar ist. Die Kunst ist hier, die richtigen (englischen) Suchbegriffe zu finden. Manchmal ist dies relativ verständlich: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | Manchmal eher nicht: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Schreibe ein Programm, das für alle Zahlen zwischen $1$ und $20$ sowohl die Zahl als auch deren Quadrat ausgibt: | ||
| + | < | ||
| + | Das Quadrat von 1 ist 1. | ||
| + | Das Quadrat von 2 ist 4. | ||
| + | ... | ||
| + | Das Quadrat von 20 ist 400. | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Schreibe ein Programm, das eine Zahl als Eingabe entgegennimmt (oder diese am Anfang des Programms als Variable definiert) und dann ein Dreieck der folgenden Form produziert, hier im Fall der Eingabe 6: | ||
| + | <code text> | ||
| + | * | ||
| + | ** | ||
| + | *** | ||
| + | **** | ||
| + | ***** | ||
| + | ****** | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Schreibe ein Programm, das die Anzahl der Neuansteckungen mit Corona simuliert. Die Ausgabe soll beispielsweise wie folgt aussehen: | ||
| + | <code python> | ||
| + | Anzahl der Neuansteckungen heute: 300 | ||
| + | Wöchentliche Zunahme: 17% | ||
| + | Woche 0: 300 | ||
| + | Woche 1: 351 | ||
| + | Woche 2: 410 | ||
| + | Woche 3: 480 | ||
| + | Woche 4: 562 | ||
| + | Woche 5: 657 | ||
| + | Woche 6: 769 | ||
| + | Woche 7: 900 | ||
| + | Woche 8: 1053 | ||
| + | Woche 9: 1232 | ||
| + | Woche 10: 1442 | ||
| + | Woche 11: 1687 | ||
| + | Woche 12: 1974 | ||
| + | </ | ||
| + | Am Anfang des Programms sollen aktuelle Anzahl und Zuwachsrate als Variablen definiert werden. Das Prozentzeichen wird mit ''< | ||
| + | </ | ||
| + | |||
| + | 2aLM und 2dNP (noch bei Corona) bis hier 08.09.2021 | ||
| + | |||
| + | 2aLM und 2dNP bis hier 15.09.2021 (war wohl doch noch einiges zu Corona zu tun...) | ||
| + | |||
| + | ===== Verschachtelte for-Schleifen ===== | ||
| + | |||
| + | <WRAP round box> | ||
| + | Innerhalb eine for-Schleife können weitere for-Schleifen stehen. | ||
| + | <code python> | ||
| + | for i in range(3): | ||
| + | print(" | ||
| + | for j in range(3): | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | Hier noch ein weiteres Beispiel. | ||
| + | <code python> | ||
| + | for i in range(10): | ||
| + | s = "" | ||
| + | for j in range(10): | ||
| + | s = s + "(%d, %d), " % (i,j) | ||
| + | print(s) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Schreibe ein Programm, das abhängig von einer Variablen '' | ||
| + | <code text> | ||
| + | * | | ||
| + | -------------------------------------------- | ||
| + | 1 | | ||
| + | 2 | | ||
| + | 3 | | ||
| + | 4 | | ||
| + | 5 | | ||
| + | 6 | | ||
| + | 7 | | ||
| + | 8 | | ||
| + | 9 | | ||
| + | 10 | 10 20 30 40 50 60 70 80 90 100 | ||
| + | </ | ||
| + | <hidden Hinweis> | ||
| + | Schreibe zuerst ein Programm, dass die folgende Ausgabe erzeugt, und kümmere dich danach um die schönere Formatierung. | ||
| + | <code text> | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | 10 20 30 40 50 60 70 80 90 100 | ||
| + | </ | ||
| + | <hidden Falls Du nicht weiterkommst:> | ||
| + | <code python> | ||
| + | n = 10 | ||
| + | for i in range(1, n+1): | ||
| + | s = "" | ||
| + | for j in range(1, n+1): | ||
| + | s = s + " | ||
| + | print(s) | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | 2dNP bis hier 22.09.2021 | ||
| + | ===== Bonus-Aufgaben ===== | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Schreibe ein Programm, dass abhängig von einer Variablen '' | ||
| + | <code text> | ||
| + | +1+2+3+4+5+6+7+8+9+10=55 | ||
| + | </ | ||
| + | <hidden Hinweis:> | ||
| + | |||
| + | Das Folgende soll nicht verwendet werden, gehört aber zur mathematischen Allgemeinbildung: | ||
| + | <WRAP round info 70%> | ||
| + | Die [[https:// | ||
| + | $ \frac{n (n+1)}2$ | ||
| + | ist, in Formeln: | ||
| + | $$1+2+\dots+n = \frac{n(n+1)}{2}$$ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP round todo> | ||
| + | Schreibe ein Programm, dass die [[https:// | ||
| + | Sie gibt an, wie sich eine idealisierte Kaninchenpopulation [[https:// | ||
| + | |||
| + | Wie schnell wächst diese Folge? Vergleiche mit der Folge, deren $n$-tes Glied durch $x_n=\left(\frac{1+\sqrt{5}}2\right)^n$ gegeben ist, indem du für jedes $n$ den Quotienten $\frac{f_n}{x_n}$ berechnest, wobei $f_n$ das $n$-te Glied der Fibonacci-Folge ist. | ||
| + | <hidden Hinweis> | ||
| + | Will man die Werte zweier Variablen tauschen, braucht man eigentlich eine Hilfsvariable: | ||
| + | <code python> | ||
| + | x = 1 | ||
| + | y = 2 | ||
| + | print(x, y) | ||
| + | z = x | ||
| + | x = y | ||
| + | y = z | ||
| + | print(x, y) | ||
| + | </ | ||
| + | Python ist aber sehr benutzerfreundlich und erlaubt Folgendes: | ||
| + | <code python> | ||
| + | x = 1 | ||
| + | y = 2 | ||
| + | print(x, y) | ||
| + | x, y = y, x | ||
| + | print(x, y) | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Einige Lösungsvorschläge ===== | ||
| + | <hidden Corona-Simulation> | ||
| + | <code python> | ||
| + | # Anfangsdaten | ||
| + | anzahl_anfang = 300 | ||
| + | zunahme_prozent = 17 | ||
| + | wochen = 12 | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | # aktuelle Anzahl | ||
| + | x = anzahl_anfang | ||
| + | |||
| + | for t in range(wochen + 1): | ||
| + | print(" | ||
| + | x = x * (1 + zunahme_prozent / 100) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden Multiplikationstabelle> | ||
| + | <code python> | ||
| + | n = 10 | ||
| + | erstezeile = " * |" | ||
| + | for i in range(1, n+1): | ||
| + | erstezeile = erstezeile + " | ||
| + | print(erstezeile) | ||
| + | |||
| + | zweitezeile = (n+1) * 4 * " | ||
| + | print(zweitezeile) | ||
| + | |||
| + | for i in range(1, n+1): | ||
| + | s = ("%2d |" % i) | ||
| + | for j in range(1, n+1): | ||
| + | s = s + " | ||
| + | print(s) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden Summe der ersten $n$ Zahlen> | ||
| + | <code python> | ||
| + | n = 10 | ||
| + | summe = 0 | ||
| + | ausgabe = "" | ||
| + | for i in range(1, | ||
| + | summe = summe + i | ||
| + | ausgabe = ausgabe + " | ||
| + | # Alternativ: ausgabe = ausgabe + " | ||
| + | print(ausgabe + " | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Link zur Kursseite ===== | ||
| + | |||
| + | [[lehrkraefte: | ||
| + | |||
| + | |||