lehrkraefte:blc:informatik:glf20:programmieren:for-loops

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
lehrkraefte:blc:informatik:glf20:programmieren:for-loops [2020/09/11 21:49]
Ivo Blöchliger created
lehrkraefte:blc:informatik:glf20:programmieren:for-loops [2020/09/25 15:08]
Ivo Blöchliger [Wiederholungen mit for-loops]
Line 1: Line 1:
 ====== Wiederholungen mit for-loops ====== ====== Wiederholungen mit for-loops ======
-  * Testen und verstehen Sie folgendes Programm (auch mit Hilfe der Erklärungen unten).+<WRAP todo> 
 +Testen und verstehen Sie folgendes Programm (auch mit Hilfe der Erklärungen in den folgenden beiden Info-Boxen unten).
 <code python> <code python>
 for i in range(20): for i in range(20):
Line 6: Line 7:
 print("fertig") print("fertig")
 </code> </code>
 +</WRAP>
 +<WRAP info>
 Struktur eines for-loops: Struktur eines for-loops:
   * **Doppelpunkt** am Ende der Zeile mit dem ''for''   * **Doppelpunkt** am Ende der Zeile mit dem ''for''
Line 11: Line 14:
   * range(n) heisst von 0 bis **n-1**   * range(n) heisst von 0 bis **n-1**
   * Die **Laufvariable** (im obigen Beispiel ''i'') nimmt bei jedem Durchgang den nächsten Wert an.   * Die **Laufvariable** (im obigen Beispiel ''i'') nimmt bei jedem Durchgang den nächsten Wert an.
 +</WRAP>
 +<WRAP info>
 +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.
 +</WRAP>
  
-==== Aufgabe ====+<WRAP todo>
 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: 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:
 <code> <code>
Line 32: Line 43:
 Programmieren Sie Ihr Programm so, dass die akutelle Zahl und die Zuwachsrate am Anfang des Programm als Variablen definiert werden. Programmieren Sie Ihr Programm so, dass die akutelle Zahl und die Zuwachsrate am Anfang des Programm als Variablen definiert werden.
  
-==== Aufgabe ==== +//Hinweis:// Die aktuellen Zahlen können nicht direkt mit den Zahlen vom März verglichen werden, da zur Zeit viel mehr getestet wird und die Positivrate sehr viel kleiner ist. D.h. die Dunkelziffer war im März sehr viel höher als zur Zeit. 
-Die Summe der ersten $n$ Zahlen werden auch Dreieckszahlen genanntweil damit mit Kugeln ein Dreieck legen kann. Diese Zahlen können wie folgt berechnet und ausgegeben werden:+ 
 +[[https://fginfo.ksbg.ch/~ivo/videos/informatik/python/tiger-jython-for-loop-corona-simulation.mp4|🎞▶️ Erklärvideo]] und auch auf [[https://web.microsoftstream.com/video/0a5bc9aa-c057-4334-918d-b308a9fc379d|Stream]] 
 +</WRAP> 
 + 
 +<WRAP todo> 
 +Die Summe der ersten $n$ Zahlen ergibt jeweils eine Dreieckszahl. Der Name kommt daherdass mit dieser Anzahl Kugeln jeweils ein gleichseitiges Dreieck gelegt werden kann. Diese Zahlen können wie folgt berechnet und ausgegeben werden:
 <code python> <code python>
 summe = 0 summe = 0
Line 40: Line 56:
     print("Dreieckszahl %2d ist %3d" % (n,summe))     print("Dreieckszahl %2d ist %3d" % (n,summe))
 </code> </code>
-  * 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.+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>
  
 +<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>
 +    *
 +   ***
 +  *****
 + *******
 +*********
 +</code>
  
 +[[https://fginfo.ksbg.ch/~ivo/videos/informatik/python/tiger-jython-for-loop-text-dreieck.mp4|🎞▶️ Erklärvideo]] auch auf [[https://web.microsoftstream.com/video/f7f1f951-fbf1-4d6e-9665-58a83570c719|Stream]].
 +
 +<hidden Zusatz-Aufgabe>
 +Produzieren Sie folgenden Output (hier ein Beispiel für 8 Zeilen):
 +<code text>
 +       ^
 +      /v\
 +     /vvv\
 +    /vvvvv\
 +   /vvvvvvv\
 +  /vvvvvvvvv\
 + /vvvvvvvvvvv\
 +/vvvvvvvvvvvvv\
 +      |||
 +      |||
 +      |||
 +</code>
 +Hinweise: Der Backslash wird mit "\\" geschrieben (weil der Backslash ist speziell, z.B. für \n aber auch z.B. für \", ein Anführungszeichen im String).
 +</hidden>
 +</WRAP>
 ===== Verschachtelte for-loops ===== ===== Verschachtelte for-loops =====
-Man kann for-loops verschachteln, der Code wird dann entsprechend weiter eingrückt:+<WRAP todo> 
 +Man kann for-loops verschachteln, der Code wird dann entsprechend weiter eingerückt. 
 + 
 +Testen und verstehen Sie folgenden Code:
 <code python> <code python>
 for x in range(3): for x in range(3):
     for y in range(5):     for y in range(5):
         print("x=%d, y=%d" % (x,y))         print("x=%d, y=%d" % (x,y))
 +    print("---")
 </code> </code>
 +Beachten Sie genau die Einrückung!
 +</WRAP>
  
-==== Aufgabe ====+<WRAP info> 
 +Manchmal ist es unumgänglich, einen String (Zeichenkette) stückweise aufzubauen, z.B. wie folgt: 
 +<code python> 
 +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 
 +</code> 
 +</WRAP> 
 + 
 +<WRAP todo> 
 +**HINWEIS**: Diese Aufgabe ist anspruchsvoll ich erwarte nur von wenigen, diese ganz selbständig lösen zu können. 
 + 
 +Schreiben Sie ein Program, das eine Multiplikationstabelle wie folgt ausgibt (und einfach auf den Bereich bis 20 ausgedehnt werden könnte): 
 +<code text> 
 + * |                    10 
 +-------------------------------------------- 
 + 1 |                    10 
 + 2 |          10  12  14  16  18  20 
 + 3 |        12  15  18  21  24  27  30 
 + 4 |      12  16  20  24  28  32  36  40 
 + 5 |    10  15  20  25  30  35  40  45  50 
 + 6 |    12  18  24  30  36  42  48  54  60 
 + 7 |    14  21  28  35  42  49  56  63  70 
 + 8 |    16  24  32  40  48  56  64  72  80 
 + 9 |    18  27  36  45  54  63  72  81  90 
 +10 |  10  20  30  40  50  60  70  80  90 100 
 +</code> 
 +[[https://fginfo.ksbg.ch/~ivo/videos/informatik/python/tiger-jython-for-loop-verschachtelt-multiplikationstabelle.mp4|🎞▶️ Erklärvideo]] und auch auf [[https://web.microsoftstream.com/video/d87636aa-bd19-4d83-b567-d554efce46c8|Stream]] 
 + 
 +<hidden Zusatzaufgabe> 
 +Generieren Sie die Tabelle als HTML-Code, den Sie dann im Browser betrachten können. 
 +  * Tabellen in HTML-Code: [[https://www.w3schools.com/html/html_tables.asp|W3Schools, english]] oder [[https://wiki.selfhtml.org/wiki/HTML/Tabellen/Aufbau_einer_Tabelle|SelfHtml, deutsch]] 
 +  * 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. ''htmlcode'' und diesen dann wie folgt in eine Datei schreiben: 
 +<code python> 
 +# hier den ganzen Code in der Variablen htmlcode aufbauen 
 +with open("tabelle.html", "w") as datei:  # Die Datei wird im gleichen Ordner gespeichert, wo ihr Programm gespeichert ist. 
 +    datei.write(htmlcode) 
 +</code> 
 +</hidden> 
 +</WRAP>
  
  
Line 63: Line 156:
 for i in range(13): for i in range(13):
     print("Woche %2d: %4d" % (i, aktuell*(1+zuwachs/100)**i))     print("Woche %2d: %4d" % (i, aktuell*(1+zuwachs/100)**i))
 +</code>
 +
 +<code python>
 +n = inputInt("Wie viele Stockwerke?")
 +for i in range(n):
 +    print(" "*(n-i-1)+"*"*(2*i+1))
 +</code>
 +
 +<code python>
 +n = inputInt("Wie viele Stockwerke?")
 +print(" "*(n-1)+"^")
 +for i in range(1,n):
 +    print(" "*(n-i-1)+"/"+"v"*(2*i-1)+"\\")
 +print((" "*(n-2)+"|||\n")*3)
 </code> </code>
  
Line 72: Line 179:
     volumen = volumen + summe     volumen = volumen + summe
     print("Tetraederzahl %2d ist %3d" % (n,volumen))     print("Tetraederzahl %2d ist %3d" % (n,volumen))
 +</code>
 +
 +<code python>
 +n=10
 +zeile = " * |"  
 +for i in range(1,n+1):
 +   zeile = zeile + "%4d" % i
 +print(zeile)
 +print("-"*(4*(n+1)))
 +for i in range(1,n+1):
 +    zeile = "%2d |"%i
 +    for j in range(1,n+1):
 +        zeile = zeile + "%4d" % (i*j)
 +    print(zeile)
 </code> </code>
          
  • lehrkraefte/blc/informatik/glf20/programmieren/for-loops.txt
  • Last modified: 2020/10/22 08:28
  • by Ivo Blöchliger