Zählen und Filtern
Das zweite Muster zählt: Wie viele Elemente einer Liste erfüllen eine Bedingung? Es sieht aus wie das Addieren, aber statt des Wertes addierst du 1, und zwar nur, wenn ein if es sagt:
temperaturen = [18, 24, 27, 15, 31, 22, 29]
heisse_tage = 0
for temperatur in temperaturen:
if temperatur >= 25:
heisse_tage += 1
print("Heiße Tage:", heisse_tage)Heiße Tage: 3Der Zähler heisse_tage beginnt vor der Schleife bei 0. Die Schleife sieht sich jede Temperatur an, und das if entscheidet, ob sie gezählt wird. heisse_tage += 1 wird nur für 27, 31 und 29 ausgeführt, also ist der Zähler am Ende 3. Beachte, dass heisse_tage += 1 zweimal eingerückt ist: Es gehört zum if, das in der Schleife steht. Das Ergebnis gibst du wieder nach der Schleife aus.
Manchmal willst du nicht nur wissen, wie viele, sondern auch, welche. Beginne dann mit einer leeren Liste und füge jedes passende Element mit .append() hinzu:
temperaturen = [18, 24, 27, 15, 31, 22, 29]
heiss = []
for temperatur in temperaturen:
if temperatur >= 25:
heiss.append(temperatur)
print("Heiße Temperaturen:", heiss)
print("Heiße Tage:", len(heiss))Heiße Temperaturen: [27, 31, 29]
Heiße Tage: 3So baust du aus den gewünschten Elementen eine neue Liste, und die ursprüngliche Liste bleibt, wie sie war. Und len() sagt dir, wie viele Elemente die neue Liste hat.
So schreibst du es:
Anweisungen
- 1
Die Liste
ergebnisseenthält die Punkte aus einem Test. Du bestehst mit 50 Punkten oder mehr. Zähle die Schüler, die bestanden haben: Erstelle eine Variablebestandenmit dem Wert0, geheergebnissemit einer Schleife durch und erhöhebestandenbei jedem Ergebnis von mindestens 50 um 1. Gib das Ergebnis nach der Schleife mitprint("Bestanden:", bestanden)aus. Die Ausgabe istBestanden: 5. - 2
Sammle jetzt auch die Ergebnisse unter 50: Erstelle vor der Schleife eine leere Liste
durchgefallenund füge in der Schleife jedes Ergebnis unter 50 mit.append()hinzu (einelsegenügt). Gib sie nach der Schleife mitprint("Durchgefallen:", durchgefallen)aus. Die Ausgabe istDurchgefallen: [45, 38, 29].