lehrkraefte:blc:informatik:ffprg1-2020:loops

This is an old revision of the document!


Wiederholungen

Es gibt zwei grundlegende Typen von Wiederholungen:

  • Die Anzahl Wiederholungen ist schon vor der Wiederholung bekannt: for-loops
  • Die Anzahl Wiederholungen ist nicht bekannt: while-loops

Ein for-loop besteht aus zwei Elementen: Eine Laufvariable und einen Bereich.

for i in range(10):
    print(i)

Gibt die Zahlen von 0 bis 9 aus (10 Wiederholungen). Die Laufvariable ist i, der Bereich range(10), was den Zahlen von 0 bis und mit 9 entspricht.

  • range(n): Zahlen von 0 bis und mit n-1
  • range(a,b): Zahlen von a bis und mit b-1
  • range(a,b,s): Zahlen von a in s-Schritten bis zur grössten Zahl, die kleiner als b ist
for i in range(10,20,3):
    print(i)
# Liefert 10,13,16,19
prim = (2,3,5,7,11,13,17,19)
for p in prim:
    print("%d ist prim" % (p,))

Die Elemente des Arrays könnten auch beliebige Dinge sein.

Ein while-loop wird so lange wiederholt, wie eine Bedingung wahr ist.

n=0
k=100
p=1.01
while (k<200):
    k*=p
    n+=1
print(n)

Was berechnet das obige Programm?

while true:
   print("immer und immer wieder")

Manchmal ist es wünschenswert, eine Schleife abzubrechen (break) oder direkt zur nächsten Wiederholung (continue) zu springen.

a = 1
while a<10:
    a+=1
    if a>5:
        break  # Sofort die while-Schlaufe beenden
a = 1
while a<10:
   if a%2==0:
       continue  # Nächste Wiederholung
   # Was kompliziertes mit a machen
   a+=1
for i in range(5):
    for j in range(5):
        print("%d * %d = %d" %(i,j,i*j))

Aufgaben

Lesen Sie jeweils die Eingabe für das Programm von der Tastatur ein:

z = int(raw_input("Zahl = "))

Sie können wie folgt überprüfen, ob eine Zahl a durch eine Zahl b teilbar ist:

if a % b == 0:  # Wenn der Rest der Division von a durch b gleich Null ist, ist a druch b teilbar
    # Tu was

Sie können eine print-Ausgabe ohne Zeilenumbruch erreichen, indem Sie nach der schliessenden Klammer ein Komma anfügen:

print("Es geht "),
print("noch weiter")

Leider wird damit auch ein Leerschlag eingefügt. Eine flexiblere Methode ist die Verwendung von sys.stdout.write():

import sys
 
sys.stdout.write("Es geht")
sys.stdout.write("noch weiter\n")  # Am Schluss ein Zeilenumbruch mit \n
  • Schreiben Sie ein Programm, das sämtliche Teiler der eingegebenen Zahl ausgibt.
  • Schreiben Sie ein Programm, das überprüft, ob die eingegebene Zahl eine Primzahl ist.
  • Schreiben Sie ein Programm, das die Primfaktorenzerlegung der eingegeben Zahl ausgibt.
  • Schreiben Sie ein Programm, das perfekte Zahlen sucht, d.h. solche, die gleich der Summe Ihrer Teiler (sich selbst ausgenommen) sind.

Lösungsvorschläge

Lösungsvorschläge

  • lehrkraefte/blc/informatik/ffprg1-2020/loops.1580639821.txt.gz
  • Last modified: 2020/02/02 11:37
  • by Ivo Blöchliger