lehrkraefte:blc:informatik:ffprg1-2020:loops

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg1-2020:loops [2020/02/10 16:48]
Ivo Blöchliger [Endlos-Schleife]
lehrkraefte:blc:informatik:ffprg1-2020:loops [2022/04/07 13:16] (current)
Ivo Blöchliger [Aufgaben]
Line 38: Line 38:
 k=100 k=100
 p=1.01 p=1.01
-while (k<200): +while (k<200):   # Wiederhole solange wie k<200 
-    k*=p +    k*=p   # Kurzform für k = k*
-    n+=1+    n+=1   # Kurzform für n = n+1
 print(n) print(n)
 </code> </code>
 Was berechnet das obige Programm? Was berechnet das obige Programm?
  
 +<hidden Lösung>
 +Das Programm berechnet die Anzahl Jahre, die nötig sind, bis das Ausgangskapital $k$ bei einem Zinsatz von $p-1$ auf über 200 angewachsen ist.
 +</hidden>
 ==== Endlos-Schleife ==== ==== Endlos-Schleife ====
 <code python> <code python>
Line 50: Line 53:
 while True: while True:
    print("immer und immer wieder")    print("immer und immer wieder")
-   time.sleep(0.5)+   time.sleep(0.5)   # Ein bisschen Pause, damit die Ausgabe nicht komplett überläuft.
 </code> </code>
  
 ===== break, continue ===== ===== break, continue =====
-Manchmal ist es wünschenswert, eine Schleife abzubrechen (**break**) oder direkt zur nächsten Wiederholung (**continue**) zu springen.+Manchmal ist es wünschenswert, eine ''while''- oder ''for'-Schleife irgendwo innerhalb abzubrechen (**break**) oder direkt zur nächsten Wiederholung (**continue**) zu springen, ohne den Rest des Blocks auszuführen
  
 <code python> <code python>
Line 62: Line 65:
     if a>5:     if a>5:
         break  # Sofort die while-Schlaufe beenden         break  # Sofort die while-Schlaufe beenden
 +    print("Sonst noch was mit %d tun" % a)
 </code> </code>
  
Line 67: Line 71:
 a = 1 a = 1
 while a<10: while a<10:
-   if a%2==0:+   if a%2==0:   # Wenn der Rest der Divison von a durch 2 Null ist, d.h. wenn a gerade ist.
        a+=3        a+=3
        continue  # Nächste Wiederholung        continue  # Nächste Wiederholung
Line 81: Line 85:
         print("%d * %d = %d" %(i,j,i*j))         print("%d * %d = %d" %(i,j,i*j))
 </code>         </code>        
 +
 +
 +===== Zeilenumbrüche =====
 +Sie können eine print-Ausgabe ohne Zeilenumbruch erreichen, indem Sie nach der schliessenden Klammer ein Komma anfügen:
 +<code python>
 +print("Es geht "),
 +print("noch weiter")
 +</code>
 +Leider wird damit auch ein Leerschlag eingefügt. 
 +
 +Noch mehr Kontrolle hat man, wen man die ganze Zeile erst in einem String aufbaut und diesen am Schluss ausgibt:
 +<code python>
 +zeile = "Die Zahlen 1"
 +for i in range(2,5):
 +   zeile += ", %d" % (i*i)
 +print(zeile)                 # Ausgabe: Die Zahlen 1, 4, 9, 16
 +</code>
  
 ====== Aufgaben ====== ====== Aufgaben ======
Line 90: Line 111:
 Sie können wie folgt überprüfen, ob eine Zahl a durch eine Zahl b teilbar ist: Sie können wie folgt überprüfen, ob eine Zahl a durch eine Zahl b teilbar ist:
 <code python> <code python>
-if a % b == 0:  # Wenn der Rest der Division von a durch b gleich Null ist, ist a druch b teilbar+if a % b == 0:  # Wenn der Rest der Division von a durch b gleich Null ist, ist a durch b teilbar
     # Tu was     # Tu was
 </code> </code>
  
-Sie können eine print-Ausgabe ohne Zeilenumbruch erreichen, indem Sie nach der schliessenden Klammer ein Komma anfügen: 
-<code python> 
-print("Es geht "), 
-print("noch weiter") 
-</code> 
-Leider wird damit auch ein Leerschlag eingefügt. Eine flexiblere Methode ist die Verwendung von sys.stdout.write(): 
-<code python> 
-import sys 
- 
-sys.stdout.write("Es geht") 
-sys.stdout.write("noch weiter\n" # Am Schluss ein Zeilenumbruch mit \n 
-</code> 
  
   * Schreiben Sie ein Programm, das sämtliche Teiler der eingegebenen Zahl ausgibt.   * Schreiben Sie ein Programm, das sämtliche Teiler der eingegebenen Zahl ausgibt.
  • lehrkraefte/blc/informatik/ffprg1-2020/loops.1581349710.txt.gz
  • Last modified: 2020/02/10 16:48
  • by Ivo Blöchliger