MINT lernen

Funktionen mit Rückgabewert

Zwei Sachaufgaben zu Funktionen mit Rückgabewert mit Hinweisen und Erwartungshorizont.

Dein Fortschritt:
0 / 0 Aufgaben
1

Kosten der Klassenfahrt

AFB I–II

Die 9b plant eine Klassenfahrt. Der Bus kostet pauschal 900 €, die Jugendherberge 28 € pro Person und Nacht. Julian hat dafür eine Funktion geschrieben:

def kosten(personen, bus, preis_nacht, naechte):    gesamt = bus + personen * preis_nacht * naechte    return gesamt / personenk = kosten(25, 900, 28, 3)print("Pro Person:", k, "Euro")
  1. Ordne den Begriffen Parameter, Wert beim Aufruf, Rückgabewert und lokale Variable jeweils die passende Stelle im Programm zu.
  2. Berechne die Ausgabe des Programms. Berechne außerdem die Kosten pro Person, wenn 30 Personen mitfahren.
  3. Erläutere, was sich an der Ausgabe ändert, wenn Julian in Zeile 3 print(gesamt / personen) statt return schreibt.

Hinweise

Hinweis zu Aufgabe a)
Parameter stehen im Funktionskopf, die Werte beim Aufruf in Zeile 5.
Hinweis zu Aufgabe b)
Erst die Übernachtungen für alle, dann den Bus dazu, dann teilen.
Hinweis zu Aufgabe c)
Was steht dann in k?

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)

Parameter: personen, bus, preis_nacht, naechte (Zeile 1). Werte beim Aufruf: 25, 900, 28, 3 (Zeile 5). Rückgabewert: gesamt / personen (Zeile 3), er landet in k. Lokale Variable: gesamt — sie existiert nur innerhalb der Funktion.

Erwartungshorizont zu Aufgabe b)

25 · 28 · 3 = 2100 €, plus 900 € Bus = 3000 €, geteilt durch 25: „Pro Person: 120.0 Euro“. Bei 30 Personen: 900 + 30 · 28 · 3 = 3420 €, 3420 : 30 = 114.0 € pro Person.

Erwartungshorizont zu Aufgabe c)

Beim Aufruf druckt die Funktion selbst „120.0“. Sie gibt aber nichts zurück, deshalb ist k = None und die zweite Zeile lautet „Pro Person: None Euro“:

120.0
Pro Person: None Euro

Mit dem Ergebnis kann man also nicht weiterrechnen — genau dafür braucht man return.

2

Planer für die Fahrradtour

AFB II–III

Für den Wandertag plant die Klasse eine Fahrradtour. Das Programm soll aus Strecke (km) und Durchschnittstempo (km/h) die reine Fahrzeit in Minuten berechnen. Nach jeder vollen Stunde Fahrzeit wird eine Pause von 15 Minuten eingeplant.

  1. Implementiere zwei Funktionen fahrzeit(strecke, tempo) und pausen(minuten) sowie ein Hauptprogramm, das Strecke und Tempo einliest und Fahrzeit, Anzahl der Pausen und Gesamtzeit ausgibt.
  2. Wende dein Programm auf die geplante Tour an: 45 km mit 18 km/h. Gib die Ausgabe an.
  3. Diskutiere, ob es sinnvoll ist, für so ein kurzes Programm eigene Funktionen zu schreiben.

Hinweise

Hinweis zu Aufgabe a)
Zeit = Strecke : Tempo (in Stunden), mal 60 ergibt Minuten. Volle Stunden zählt // 60.
Hinweis zu Aufgabe b)
Rechne erst die Stunden aus: 45 : 18.
Hinweis zu Aufgabe c)
Denke an Lesbarkeit, Testen und daran, was passiert, wenn das Programm wächst.

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)
def fahrzeit(strecke, tempo):    return strecke / tempo * 60def pausen(minuten):    return int(minuten // 60)strecke = float(input("Strecke in km: "))tempo = float(input("Tempo in km/h: "))fahrt = fahrzeit(strecke, tempo)anzahl = pausen(fahrt)gesamt = fahrt + 15 * anzahlprint("Fahrzeit:", fahrt, "Minuten")print("Pausen:", anzahl)print("Gesamtzeit:", gesamt, "Minuten")
Erwartungshorizont zu Aufgabe b)

45 : 18 = 2,5 h = 150 Minuten. Volle Stunden: 150 // 60 = 2 Pausen, also 150 + 30 = 180 Minuten.

Fahrzeit: 150.0 Minuten
Pausen: 2
Gesamtzeit: 180.0 Minuten
Erwartungshorizont zu Aufgabe c)

Pro: Jede Funktion hat einen klaren Namen und eine Aufgabe, man kann sie einzeln testen (z. B. pausen(59) muss 0 liefern) und später wiederverwenden, etwa für die Rückfahrt oder mehrere Etappen. Ändert sich eine Regel (Pause alle 45 Minuten), gibt es genau eine Stelle zum Anpassen. Contra: Das Programm wird etwas länger, und für eine einmalige Rechnung wäre eine Zeile schneller geschrieben. Fazit: Sobald eine Rechnung mehrfach vorkommt oder getestet werden soll, lohnen sich Funktionen — hier schon bei zwei Rechenregeln.