Informatik

for-in-Schleifen

Bisher hast du Listen immer mit einem Zähler durchlaufen:

zaehler = 0
while zaehler < len(hoehen):
    forward(hoehen[zaehler])
    zaehler = zaehler + 1

Das funktioniert – ist aber umständlich. Für den häufigsten Fall gibt es eine kürzere Schreibweise.

Aufgabe 1: Eine neue Art von Schleife

Wir betrachten eine Modifikation des Beispiels aus der letzten Lektion.

Analysiere, wie die hier neu eingeführte Art von Schleife funktioniert. Vergleiche sie Zeile für Zeile mit der Version mit Zähler.


      
    
from turtle import * shape("turtle") screensize(400, 300) speed(0) pensize(20) penup() goto(-60, -80) left(90) pendown() hoehen = [40, 60, 20, 100, 80] for zahl in hoehen: forward(zahl) backward(zahl) penup() right(90) forward(20) left(90) pendown()
  • for zahl in hoehen: bedeutet: „Nimm nacheinander jedes Element der Liste und nenne es zahl."
  • Die Schleifenvariable enthält direkt den Wert, nicht den Index. Du brauchst also kein hoehen[...] mehr.
  • Der Zähler entfällt vollständig: kein zaehler = 0, kein len(...), kein zaehler = zaehler + 1.
  • Diese Schleifenform heißt for-each-Schleife („für jedes Element").

Die dir bekannte Form for i in range(10): ist übrigens dasselbe Prinzip: range(10) erzeugt die Zahlen 0 bis 9, und die Schleife geht sie der Reihe nach durch.

Aufgabe 2: Wann passt welche Schleife?

Beurteile, ob sich die Aufgaben aus der letzten Lektion ebenfalls mit der neuen Schleifenform umsetzen lassen:

a) die Punkte aus der Liste durchmesser,

b) die Bäume aus den beiden Listen durchmesser und hoehen.

Modifiziere die Programme oder erkläre, warum es nicht sinnvoll wäre.

Auflösung

a) Ja, problemlos. Es gibt nur eine Liste, und wir brauchen nur die Werte:

for d in durchmesser:
    dot(d)
    forward(90)

b) Nein, hier nicht sinnvoll. Wir brauchen bei jedem Schritt Werte aus zwei Listen, die zusammengehören. Die for-in-Schleife läuft aber immer nur über eine Liste – der Index zur Nummer des Baums fehlt dann.

Faustregel:

  • Brauchst du nur die Werte einer Liste → for-in
  • Brauchst du die Position, oder greifst du auf mehrere Listen gleichzeitig zu → Schleife mit Zähler

Aufgabe 3: Das Maximum – noch einmal

Modifiziere die Maximum-Funktion aus der letzten Lektion so, dass sie die neue Schleifenform verwendet.

Denke daran, das Problem mit den negativen Zahlen gleich mit zu lösen.


      
    
def maximum(zahlen): # Dein Code hier return 0 print(maximum([40, 60, 20, 100, 80]))
Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 4: Das Minimum

Entwickle eine Funktion minimum(zahlen), die die kleinste Zahl einer Liste bestimmt.


      
    
def minimum(zahlen): # Dein Code hier return 0 print(minimum([40, 60, 20, 100, 80]))
Tipp

Du musst am Maximum nur zwei Kleinigkeiten ändern: den Namen der Variablen und die Richtung des Vergleichs.

Aufgabe 5: Der Mittelwert

Entwickle eine Funktion mittelwert(zahlen), die den Mittelwert der Zahlen einer Liste berechnet.

Hinweis: Sind in der Liste zum Beispiel die Zahlen 10, 20 und 60 gespeichert, ist das Ergebnis 30.


      
    
def mittelwert(zahlen): # Dein Code hier return 0 print(mittelwert([10, 20, 60]))
Tipp 1: Zwei Schritte

Der Mittelwert ist die Summe aller Zahlen geteilt durch ihre Anzahl.

Die Summe bildest du mit einer for-in-Schleife, die Anzahl liefert len(zahlen).

Tipp 2: Welche Division?

Achte darauf, die normale Division mit dem einfachen Schrägstrich zu verwenden. Mit der Ganzzahldivision würde bei [1, 2] fälschlicherweise 1 statt 1.5 herauskommen.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Zusatzaufgabe 1: Das Maximum hervorheben

Entwickelt werden soll ein Programm, das Folgendes leistet:

In einer Liste sind positive Werte vorgegeben. Die Turtle zeichnet dazu ein Säulendiagramm. Der größte dieser Werte wird dabei farblich hervorgehoben. Kommt der maximale Wert mehrfach vor, wird er auch mehrfach markiert.

Ein Säulendiagramm, bei dem die höchsten Säulen rot markiert sind


      
    
from turtle import * shape("turtle") screensize(560, 360) speed(0) werte = [40, 60, 20, 100, 80, 100, 50] # Dein Code hier
Tipp 1: Zwei Durchgänge

Du brauchst zwei Schleifen nacheinander:

  1. Zuerst das Maximum bestimmen – dafür kannst du deine Funktion aus Aufgabe 3 verwenden.
  2. Dann zeichnen und bei jedem Wert prüfen, ob er dem Maximum entspricht.
Tipp 2: Warum zwei Durchgänge nötig sind

Beim Zeichnen der ersten Säule weißt du noch gar nicht, ob später eine höhere kommt. Das Maximum muss also vorher feststehen.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Zusatzaufgabe 2: Noch mehr Markierungen

Erweitere das Programm aus Zusatzaufgabe 1 so, dass auch das Minimum und der Mittelwert in geeigneter Weise markiert werden.

Überlege dir selbst, wie du den Mittelwert sinnvoll darstellst – er entspricht ja meist keiner der Säulen.

Tipp: Der Mittelwert als Linie

Zeichne den Mittelwert als waagerechte Linie quer über das Diagramm. Dafür musst du nur die Turtle auf die passende Höhe setzen und einmal quer laufen lassen.


Selbsttest

for-in-Schleifen

Teilbare URL erstellen

Abschnitte auswählen