lehrkraefte:blc:informatik:glf20:programmieren:while

This is an old revision of the document!


Schleifen: while

Schleifen, werden benötigt, um einen Codeblock, den man auch als Schleifenkörper bezeichnet, wiederholt auszuführen. In Python gibt es zwei Schleifentypen: die while-Schleife und die for-Schleife.

Die meisten Schleifen enthalten einen Zähler oder ganz allgemein Variablen, die im Verlauf der Berechnungen innerhalb des Schleifenkörpers ihre Werte ändern. Ausserhalb, d.h. noch vor dem Beginn der Schleife, werden diese Variablen initialisiert.

  • Zähler werden ausserhalb der Schleife initialisiert.

Vor jedem Schleifendurchlauf wird geprüft, ob ein Ausdruck, in dem diese Variable oder Variablen vorkommen, wahr ist. Dieser Ausdruck bestimmt das Endekriterium der Schleife. Solange die Berechnung dieses Ausdrucks “True” liefert wird der Rumpf der Schleife ausgeführt. Nachdem alle Anweisungen des Schleifenkörpers durchgeführt worden sind, springt die Programmsteuerung automatisch zum Anfang der Schleife, also zur Prüfung des Endekriteriums zurück und prüft wieder, ob diese nochmals erfüllt ist. Wenn ja, geht es wie oben beschrieben weiter, ansonsten wird der Schleifenkörper nicht mehr ausgeführt und es wird mit dem Rest des Skriptes fortgefahren. Das nebenstehende Diagramm zeigt dies schematisch.

  • Solange das Kriterium erfüllt ist (TRUE) wird der Code innerhalb der Schleife ausgeführt.

Kopieren, testen und verstehen Sie folgenden Code:

counter = 0
while counter < 10:
    print(counter)
    counter += 1

Bei einer While-Schleife kann es leicht passieren, dass die Schleife endlos weiterläuft. Im Gegensatz zu einer For-Schleife muss die Variable bei einer While-Schleife manuell verändert werden.

Schreiben Sie ein Programm, bei welchem der Benutzer eine zufällige Zahl zwischen 1 und 100 erraten muss.

Beispiel einer Ausgabe

Neue Zahl: 15
Zahl zu gross
Neue Zahl:

Nun drehen wir den Spiess um. Schreiben Sie ein Programm, welches eine zufällige Zahl zu finden versucht. Versuchen Sie einen möglichst effizienten Algorithmus zu finden.

Schreibe ein Programm, welches eine Liste bestehend aus ganzen Zahlen aufsteigend sortiert. Der Benutzer soll per Eingabe entscheiden, welche Elemente in die Liste kommen und er soll so viele Elementen eingeben können, wie er will. Wenn er mit der Eingabe fertig ist, soll er mit einem Befehl (zum Beispiel q) die Eingabe beenden.

FIZZ BUZZ! Programmieren Sie ein Programm, das alle Zahlen von 1 bis 100 ausgibt, aber alle jene, die durch 3 teilbar sind durch fizz ersetzt, jene, die durch 5 teilbar sind durch buzz ersetzt und jene, die sowohl durch 3 als auch durch 5 teilbar sind durch fizz buzz ersetzt.

Verlangte Ausgabe bis 30

Verlangte Ausgabe bis 30

1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizz buzz
16
17
fizz
19
buzz
fizz
22
23
fizz
buzz
26
fizz
28
29
fizz buzz
  • Geben Sie alle Teiler einer Zahl aus.
  • Geben Sie die Primfaktorzerlegung einer Zahl aus.
  • Bestimmen Sie, ob eine gegebene Zahl eine Primazahl ist oder nicht.
  • Geben Sie die Primzahlen der Reihe nach aufsteigend aus.

Lösungvorschläge

Lösungvorschläge

for i in range(1,101):
    if i % 3 == 0  and  i % 5 == 0:
        print("fizz buzz")
    elif i % 3 == 0:
        print("fizz")
    elif i % 5 == 0:
        print("buzz")
    else:
        print(i)
t = inputInt("Temperatur in Grad Celsius")
text  =  "%d°C ist " % t
if (t<15):    
    text += "kalt"   # eine Abkürzung für text = text + "kalt"
elif t<25:
    text += "warm"
else:
    text += "heiss"
 
print(text+".")
# Definition der Koeffizienten
a,b,c = 0,0,0
print("Gleichung %.2fx^2%+.2fx%+.2f = 0" % (a,b,c))
 
if a==0:  # Lineare Gleichung
    if b==0:  # Gleichung ohne x
        if c==0:
            print("Wahre Aussage, L=R, jedes x ist Lösung")
        else:
            print("Falsche Aussage, keine Lösung")
    else:
        print("Lineare Gleichung, eine Lösung: x=%f" % (-c/b))
else: # Quadratische Gleichung
    d = b*b-4*a*c  # Diskriminante
    if (d<0):
        print("Keine reelle Lösung")
    elif d==0:
        print("Genau eine Lösung x=%f" % (-b/(2*a)))
    else:
        d = d**0.5 # Wurzel aus der Diskriminante
        x1 = (-b-d)/(2*a)
        x2 = (-b+d)/(2*a)
        print("Zwei Lösungen x1=%f und x2=%f" % (x1, x2))
  • lehrkraefte/blc/informatik/glf20/programmieren/while.1603870049.txt.gz
  • Last modified: 2020/10/28 08:27
  • by mirco.triner