At My Fingertips
Rapid Playground
Nachdem du im vorherigen Kapitel den modularen Entwurf kennengelernt hast, widmen wir uns nun einem weiteren fundamentalen Konzept in der Programmierung: Schleifen oder Wiederholungen.
Schleifen sind ein zentraler Bestandteil des modularen Designs und ermöglichen es, bestimmte Aufgaben effizient und wiederholt auszuführen. Dies ist besonders nützlich, um unsere Module in vielfältigen Szenarien anzuwenden. In dieser Aktivität wirst du die for
-Schleife genauer erkunden, eine äusserst leistungsfähige Kontrollstruktur in der Programmierung, die es ermöglicht, einen bestimmten Anweisungsblock mehrmals auszuführen. Du wirst sehen, wie Schleifen den modularen Ansatz ergänzen und dir dabei helfen, Code effektiver zu organisieren und Aufgaben in wiederholbare Einheiten zu zerlegen.
Bis jetzt haben wir über "Namen" gesprochen, um Werte in Python zu speichern. Dabei wurde bewusst der Begriff "Variable" vermieden, da die gespeicherten Werte bisher nicht verändert wurden. Allerdings ändert sich das jetzt! Du wirst lernen, Variablen zu verwenden, um Werte zu speichern und diese Werte im Laufe des Programms zu ändern.
Du kannst dir eine Variable wie einen Behälter vorstellen, in den du einen Wert legst. Der Name der Variable bleibt derselbe, aber der Wert, den sie repräsentiert, kann sich ändern. Du kannst diesen Namen verwenden, um auf den aktuellen Wert der Variable zuzugreifen oder ihn zu verändern, indem du der Variable einen neuen Wert zuweist (und damit den alten Wert überschreibst).
In Kapitel A wurde zum ersten Mal eine Variable verwendet. Hier ist noch einmal das entsprechende Codestück:
blattspreite = ellipse(70, 100, gruen)
In diesem Fall hatten wir den Namen blattspreite
verwendet, um eine Ellipsen-Grafik zu speichern. Die Variable blattspreite
fungiert als Behälter, in dem die Informationen zur Ellipse gespeichert werden können. Man kann diesen Namen später verwenden, um auf die Ellipse zuzugreifen oder sie zu ändern. Dies wird mit der folgenden Codezelle klarer. Klicke auf "AUSFÜHREN" und du siehst: Es werden zwei verschiedene Grafiken ausgegeben, obwohl beide zeige_grafik
Aufrufe als Argument den Namen blattspreite
erhalten.
Jetzt, da du ein Grundverständnis dafür hast, was Variablen sind, lass uns die for
-Schleife genauer betrachten.
for
-SchleifeEine for
-Schleife wird verwendet, um eine bestimmte Anweisung oder einen Anweisungsblock wiederholt auszuführen. Sie eignet sich besonders gut für Aufgaben, die eine vorher festgelegte Anzahl von Durchläufen erfordern. Hier ist eine grundlegende Schablone für eine for
-Schleife in Python:
for <Variable> in <Sequenz>:
<Anweisung 1>
<Anweisung 2>
...
<Anweisung n>
Zitat aus Dalwigk, F. (2022). Python für Einsteiger: Programmieren lernen mit dem großen Python Buch - Schritt für Schritt zum Python Profi – auch ohne Vorkenntnisse! Eulogia Verlags GmbH., S. 208-9:
Das Schlüsselwort
for
leitet einefor
-Schleife ein. Danach folgt eine<Variable>
, in der nacheinander die Werte der<Sequenz>
gespeichert werden. Die<Sequenz>
steht dabei für ein Objekt, das man schrittweise durchlaufen kann. Man spricht auch von einem iterierbaren Objekt. Zwischen der<Variable>
und der<Sequenz>
befindet sich das Schlüsselwortin
, mit dem du anzeigst, woraus die Werte für die<Variable>
geschöpft werden sollen, nämlich aus der<Sequenz>
. Die Funktionsweise einerfor
-Schleife kann man fast schon direkt an dem Schleifenkopf ablesen, denn wenn du die Zeile
for <Variable> in <Sequenz>:
wörtlich übersetzt und statt
<Variable>
den Begriff Element verwendest, dann steht dort "für jedes Element in der Sequenz ...". Hinter dem Doppelpunkt, der den Schleifenkopf beendet, folgt dann das, was für jedes Element aus der<Sequenz>
gemacht werden soll. Die<Anweisungen>
werden in jedem Schleifendurchlauf nacheinander abgearbeitet und bilden den sogenannten Schleifenkörper. Beachte, dass die<Anweisungen>
eingerückt werden. Diefor
-Schleife endet, sobald alle Elemente in der<Sequenz>
durchlaufen wurden.
Das folgende sog. Flussdiagramm visualisiert den grundlegenden Aufbau einer
for
-Schleife:
Bevor wir wieder mit Grafiken arbeiten, lass uns zur Abwechslung mal zu Zahlen und Wörtern wechseln.
Oben war mehrfach von dem Begriff <Sequenz>
die Rede.
Vielleicht hast du angefangen zu zählen: 0, 1, 2, 3, 4, 5. Vielleicht hast du an einen bevorstehenden Voci-Test gedacht - und all die Wörter, die du noch lernen solltest. Oder doch eher an die Namen derjenigen, die du zu deiner Geburtstagsfeier einladen willst?
In all diesen Fällen hast du das Wort Sequenz mit einer Abfolge oder Auflistung gleichgesetzt! Das ist gut, denn: Diesen drei Ideen ist gemeinsam, dass die entsprechenden Zahlen oder Wörter in einer Liste gesammelt werden können. Und ja, Listen gibt es auch in Python!
Liste
Die Liste
ist die wohl wichtigste sog. Datenstruktur, um die du in Python nicht herumkommst. Zum Glück ist sie sehr intuitiv zugänglich, da wir im Alltag überall mit ihr konfortiert werden (wie du gerade gesehen hast).
In Listen
werden Daten in einer bestimmten Reihenfolge gespeichert. Und genau das kannst du dir zunutze machen, wenn du in einer for
-Schleife als <Sequenz>
eine Liste
verwendest.
Wichtig:
Eine Liste
wird durch eckige Klammern gekennzeichnet, in die <Elemente>
mit Kommas getrennt eingetragen werden können. Hinter dem letzten Eintrag folgt kein Komma.
Hinweis: Die Tastenkombinationen für eckige Klammern unterscheiden sich leicht zwischen macOS und Windows:
Betriebssystem | Öffnende Klammer [ | Schliessende Klammer ] |
---|---|---|
macOS | ⌥ + 5 | ⌥ + 6 |
Windows | Alt Gr + ü (oder Alt Gr + 8 ) | Alt Gr + ¨ (oder Alt Gr + 9 ) |
Die Zahlen 0 - 5 könnten also z.B. wie folgt in einer Liste stehen:
[0, 1, 2, 3, 4, 5]
...oder auch so, wenn sie in dieser Reihenfolge gespeichert werden sollen:
[3, 2, 1, 4, 5, 0]
Entsprechend sieht es mit Namen aus: Kevin, Mia, Thomas, Claudia und Lukas können als Strings in einer Liste gespeichert werden - und bei Bedarf auch einer Variablen zugewiesen werden.
namen = ["Kevin", "Mia", "Thomas", "Claudia", "Lukas"]
Mit einer for
-Schleife kannst du nun z.B. die Listen-Einträge nacheinander ausgeben. Dabei gehst du wie folgt vor:
for
leitest du den Schleifenkopf ein.<Variable>
. Hier kannst du statt kryptischer Namen wie i
(was übrigens für Index steht) oder elem
etwas wählen, das zu dem Inhalt deiner Liste passt. Da die erste Liste Zahlen enthält, könntest du z.B. den Variablennamen zahl
verwenden.in
und deine Liste, die durchlaufen werden soll.zahlen = [0, 1, 2, 3, 4, 5]
for zahl in zahlen:
In der Variable zahl
werden jetzt nacheinander die Werte aus der Liste zahlen
gespeichert. Möchtest du diese ausgeben, übergibst du die Variable zahl
als Parameter nicht - wie du das bisher mit den Grafiken getan hast - an die Funktion zeige_grafik
, sondern an die Funktion print
.
print
Mithilfe von print
lassen sich Werte ausgeben. Neben Zahlen und Strings kann in den Klammern eine Variable übergeben werden, die immer durch ihren Wert ersetzt und ausgegeben wird.
Drücke unten auf "AUSFÜHREN" und überzeuge dich selbst!
Die Variable zahl
wird in jedem Schleifendurchlauf verwendet, um die Werte aus der Liste zahlen
nacheinander zu durchlaufen und zu verarbeiten.
1. Schleifendurchlauf:
zahl
gleich 0
, da 0
der erste Wert in der Liste ist.print(zahl)
ausgeführt, was dazu führt, dass die 0
ausgegeben wird.2. Schleifendurchlauf:
zahl
auf den nächsten Wert in der Liste gesetzt, in diesem Fall 1
.print(zahl)
erneut ausgeführt und gibt die 1
aus.3. Schleifendurchlauf:
zahl
aktualisiert, diesmal auf 2
.print(zahl)
gibt 2
aus.4. Schleifendurchlauf:
zahl
wird auf 3
aktualisiert.print(zahl)
gibt 3
aus.5. Schleifendurchlauf:
zahl
wird auf 4
aktualisiert.print(zahl)
gibt 4
aus.6. Schleifendurchlauf:
zahl
auf 5
aktualisiert.print(zahl)
gibt 5
aus.Nachdem alle Werte in der Liste durchlaufen wurden, endet die for
-Schleife, da keine weiteren Werte mehr übrig sind.
Schreibe bzw. ergänze in der Codezelle unten den entsprechenden Code für eine for
-Schleife, welche die Namen der Liste von oben ausgibt!
Aber wie erleichtert uns all dies das Erstellen und Bearbeiten von Grafiken?
Studiere dazu die folgenden Code-Beispiele und die jeweilige gewünschte Ausgabe. Aber Achtung, es gibt noch einzelne Lücken, die du füllen, und Fehler, die du beheben musst!
Als nächstes wenden wir uns einer Funktion zu, die es uns ermöglicht, for
-Schleifen noch vielseitiger zu gestalten. Damit kannst du Grafiken auf eine noch effizientere Weise erstellen und bearbeiten.
range
Funktion in for
-SchleifenMithilfe der Funktion range
kannst du eine Sequenz von aufeinanderfolgenden Zahlen erzeugen, die in einer for
-Schleife durchlaufen werden können. Die range
Funktion erhält bis zu drei Parameter:
range(start, stop, step)
start
(optional): Startwert der Sequenz. Standardmässig beginnt start
bei 0
.stop
: Endwert, bis zu dem die Sequenz erzeugt wird. Dieser Wert ist exklusiv, d.h., er ist nicht Teil der erzeugten Sequenz.step
(optional): Schritt, mit dem die Zahlen in der Sequenz erhöht werden. Standardmässig beträgt step
1
.Beispiel 1: Einfache range
-Verwendung
Dieses Beispiel liefert dasselbe Resultat wie unsere obige Variante mit der Liste [0, 1, 2, 3, 4, 5]
: sie gibt die Zahlen von 0 bis 5 aus. Die range
Funktion erzeugt automatisch eine Sequenz von 0
bis 5
(exklusiv 6
).
Beispiel 2: range
mit Start- und Endwerten
Hier wird die range
Funktion verwendet, um eine Sequenz von 2
bis 7
(exklusiv 8
) zu erstellen und in der for
-Schleife auszugeben.
Beispiel 3: range
mit Start-, End- und Schrittwerten
In diesem Beispiel wird die range
Funktion verwendet, um eine Sequenz von 1
bis 9
(exklusiv 10
) mit einem Schritt von 2
zu erstellen. Dies führt zur Ausgabe der ungeraden Zahlen von 1
bis 9
.
Damit bist du gerüstet für die nachfolgenden Aufgaben!
Erstelle eine for
-Schleife, die mithilfe der range
Funktion...
for
-Schleife aufgebaut ist und verwendet wird, um wiederholte Aufgaben in Python auszuführen.print
verwenden, um Textausgaben in deinen Programmen zu erzeugen.range
in for
-Schleifen, um eine Sequenz von Zahlen zu erzeugen.This activity has been created by Lichtsteiner and is licensed under CC BY-SA 4.0.
for-Schleife
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)