Materialien zum Unterricht

Die for-Schleife

Bevor man mit der for-Schleife durchstarten kann, sollte man sich die sequentiellen Datentypen ansehen.

Bearbeite die Aufgaben und komme danach auf diese Seite zurück.

Wofür kann man eine for-Schleife nutzen?

So funktioniert die for()-Schleife

Eine for-Schleife wird mit Hilfe einer Laufvariable i von links nach rechts durchlaufen.
Im ersten Durchlauf erhält i als Variablenwert den ersten Wert des sequentiellen Datentyps ( z.B. liste[0] ).
Mit diesem Wert kann nun gearbeitet werden.
Die Laufvariable i bekommt in jedem Durchlauf einen neuen Variablenwert zugeordnet, nämlich genau den Wert, der im sequentiellen Datentyp an der Stelle liste[ i ] steht.


Gib die Unterschiede der for()-Schleife gegenüber der while()-Schleife an:


Beispiel Liste:

Beispiel Tupel:

Beispiel String:

Aufgabe 1:

Programmname: for_a1.py

Die Aufgabe Listen und Schleifen wurde hier mit einer while-Schleife gelöst. Das geht auch kürzer!

Löse die Aufgabe mit Hilfe einer for-Schleife.


Lösung
tiere = ["Hund", "Katze", "Maus"]
for i in tiere:
    print (i, type(i))

Die range()-Funktion

Je nach den übergebenen Variablen kann die range()-Funktion den Zähler entweder bei 0 oder bei einer beliebigen Zahl starten lassen und gleichzeitig das Ende der Schleife sowie optional die Schrittweite festlegen.

Siehe range()-Funktion.

Es folgen die Grundlegenden Informationen, damit die Aufgaben bearbeitet werden können.

range(y)

Die Funktion range(y) gibt eine Sequenz von Zahlen in Einerschritten aus.
Diese Sequenz startet bei 0 und endet bei y-1.

Variable Bedeutung
y Endwert der Sequenz. Die Sequenz endet vor diesem Wert (nicht inklusiv).

range(x,y)

Die Funktion range(x,y) gibt eine Sequenz von Zahlen, beginnend bei x, in Einerschritten aus.
Diese Sequenz startet bei x und endet bei y-1.

Variable Bedeutung
x Startwert der Sequenz. Die Sequenz beginnt bei diesem Wert.
y Endwert der Sequenz. Die Sequenz endet vor diesem Wert (nicht inklusiv).

Statt der Variablen können auch kleine Berechnungen eingesetzt werden (z.B. y+1)

Aufgabe 2:

Programmname: for_a2_range.py

Schreibe einen Code, der die Zahlen von 0 bis n (n... von Nutzer eingegebene Zahl) miteinander addiert und am Ende das Ergebnis ausgibt.
Nutze dazu die Funktion range().


Tipp 1
Der Wert an der 1. Stelle ist 0
Tipp 2
Der Wert an der letzten Stelle ist n-1
Tipp 3
Anders als bei einer while-Schleife wird die Variable n
einmalig zu Beginn der for-Schleife abgefragt.
Tipp 4
Man kann in jedem Schleifendurchlauf n einen neuen Wert zuweisen.


Lösung
n = int(input("Gib eine Zahl ein: "))
for i in range(n):
    n += i
print(n)


Verschachtelte for()-Schleifen

Schleifen lassen sich auch ineinander verschachteln. D.h. innerhalb einer Schleife wird erneut eine Schleife aufgerufen.
Das Prinzip sollte vom Calliope Mini bekannt sein.

Aufgabe 3:

Programmname: for_a3.py

Im folgenden Beispiel arbeitet die erste Schleife die Liste mit den Ziffern 1 und 2 ab und wird somit 2 mal durchlaufen.
Die zweite Liste enthält 3 Elemente. Sie soll innerhalb der ersten Schleife aufgerufen werden und muss daher einegrückt stehen.
Die Ausgabe erfolgt innerhalb der zweiten for-Schleife. Das Programm liefert dadurch 2*3=6 Ausgaben.

  1. Erweitere im Programm die Ausgabe so, dass die Zahlen als Additionsaufgaben ausgegeben werden.
  2. Ändere das Programm so um, dass das kleine Einmaleins ausgegeben wird.

Beispielbilder:

... ...


Lösung zu 1
liste_1 = [1,2]
liste_2 = [3,4,5]
for i in liste_1:
    for j in liste_2:
        print(i,"+",j,"=",i+j)
Lösung zu 2
liste_2 = [3,4,5]
for i in liste_2:
    for j in range(1,10):
        print(j,"*",i,"=",i*j)

Abschlussaufgabe

Programmname: for_fakultaet.py

Das Programm sollte schon einmal mit der while()-Schleife bearbeitet worden sein.

Jetzt soll das Programm mit der for()-Schleife umgesetzt werden.

Die Fakultät ist in der Mathematik eine Funktion, die einer natürlichen Zahl das Produkt aller natürlichen Zahlen (ohne Null) kleiner und gleich dieser Zahl zuordnet.
Dabei gilt:

Formel für die Fakultät

Schreibe einen Code der eine beliebige, positive natürliche Zahl einliest. Anschließend soll die Fakultät der eingelesenen Zahl berechnet und nur das Ergebnis ausgegeben werden.
Beachte auch, dass bei 0! als Ergebnis 1 angezeigt werden muss.
Das Programm sollte in der ausführung folgendermaßen aussehen:

Programm Fakultaet Programm Fakultaet
Tipp: Codefragmente 1
externer Link
Tipp: Codefragmente 2
externer Link
Tipp: Codefragmente 3
externer Link

Beispiellösung 1
Hier für Lösung klicken!

Zusatz 1

Ergänze dein Programm so, dass bei der Eingabe von Zahlen kleiner als 0 eine Fehlermeldung ausgegeben wird.
Das Programm soll danach keine weiteren Anweisungen durchlaufen.

Zusatz 2

Ergänze dein Programm so, dass bei fehlerhaften Eingaben die Abfrage so oft wiederholt wird, bis eine gültige Eingabe übergeben wurde.