Kosten der Klassenfahrt
AFB I–IIDie 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")
- Ordne den Begriffen Parameter, Wert beim Aufruf, Rückgabewert und lokale Variable jeweils die passende Stelle im Programm zu.
- Berechne die Ausgabe des Programms. Berechne außerdem die Kosten pro Person, wenn 30 Personen mitfahren.
- Erläutere, was sich an der Ausgabe ändert, wenn Julian in Zeile 3
print(gesamt / personen)statt return schreibt.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
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.
Planer für die Fahrradtour
AFB II–IIIFü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.
- Implementiere zwei Funktionen
fahrzeit(strecke, tempo)undpausen(minuten)sowie ein Hauptprogramm, das Strecke und Tempo einliest und Fahrzeit, Anzahl der Pausen und Gesamtzeit ausgibt. - Wende dein Programm auf die geplante Tour an: 45 km mit 18 km/h. Gib die Ausgabe an.
- Diskutiere, ob es sinnvoll ist, für so ein kurzes Programm eigene Funktionen zu schreiben.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
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.
