Funktionen und Listen
Ein Argument kann ein beliebiger Wert sein, auch eine Liste. Eine Funktion, die eine Liste bekommt, kann sie mit einer Schleife durchgehen und ein Ergebnis zurückgeben. Diese Funktion zählt, wie viele Zahlen in einer Liste größer als eine Grenze sind:
def zaehle_ueber(zahlen, grenze):
anzahl = 0
for zahl in zahlen:
if zahl > grenze:
anzahl += 1
return anzahl
temperaturen = [18, 25, 31, 22, 28]
print(zaehle_ueber(temperaturen, 24))
print(zaehle_ueber([5, 10, 15], 7))Das gibt aus:
3
2Der Parameter zahlen enthält die Liste, die der Aufruf übergibt: zuerst die Liste temperaturen, dann [5, 10, 15]. Das Zählen kennst du aus der Lektion über Schleifen, aber jetzt steckt es in einer Funktion, und du kannst mit einer einzigen Zeile in jeder Liste zählen. Und weil anzahl eine lokale Variable ist, beginnt jeder Aufruf wieder bei 0.
Achte darauf, wo das return steht: nach der Schleife, wenn alle Zahlen geprüft sind. In Python entscheidet das die Einrückung: return anzahl ist so weit eingerückt wie for, gehört also nicht zur Schleife. Ein häufiger Fehler ist, es eine Stufe weiter einzurücken, in die Schleife hinein:
def zaehle_ueber(zahlen, grenze):
anzahl = 0
for zahl in zahlen:
if zahl > grenze:
anzahl += 1
return anzahl
temperaturen = [18, 25, 31, 22, 28]
print(zaehle_ueber(temperaturen, 24))Das gibt aus:
0Jetzt steht return im Rumpf der Schleife. Es beendet die ganze Funktion und damit die Schleife schon im ersten Durchlauf. Die Funktion hat nur die erste Zahl, 18, geprüft und deshalb 0 zurückgegeben.
Eine Funktion kann auch eine Liste zurückgeben: Erstelle vor der Schleife eine leere Liste, füge ihr in der Schleife mit .append() Elemente hinzu und gib sie nach der Schleife zurück. Und eine Funktion kann andere Funktionen verwenden, zum Beispiel sum() und len().
So schreibst du es:
Anweisungen
- 1
Das Programm endet mit dem Fehler
NameError: name 'durchschnitt' is not defined. Schreibe die Funktion anstelle des Kommentars:durchschnitthat einen Parameterzahlenund gibt den Durchschnitt der Zahlen in der Liste zurück, also ihre Summe geteilt durch ihre Anzahl. Du kannst sie mit einer Schleife oder mitsum()addieren, undlen(zahlen)sagt dir, wie viele es sind. Das Programm gibt dann die Durchschnittstemperaturen zweier Wochen aus,21.0und13.0. - 2
Schreibe unter der Funktion
durchschnitteine Funktionwarme_tagemit zwei Parametern,temperaturenundgrenze. Sie gibt eine neue Liste der Temperaturen zurück, die größer alsgrenzesind. Gib am Ende des Programmswarme_tage(woche1, 20)aus. Das Programm gibt[21, 24, 23]aus.