Der Preis einer Zeile
Auf einem Kassenbon steht auch, wie viel jede Zeile kostet: der Preis eines Stücks mal die Menge. Zwei Brote zu je 3 € kosten 6 €.
Das berechnest du in einer neuen Funktion, zeilenpreis(position). Sie bekommt einen Artikel (ein Dictionary) und gibt den Preis seiner Zeile mit return zurück. Warum eine Funktion für eine einzige Multiplikation? Du brauchst den Preis einer Zeile an zwei Stellen: auf dem Kassenbon und in der nächsten Übung, wenn du die ganze Bestellung addierst. Und ein guter Name sagt dir, was der Code bedeutet: zeilenpreis(position) ist leichter zu verstehen als position["preis"] * position["menge"].
Denk an den Unterschied zwischen return und print(): print() zeigt einen Wert nur an, während return ihn an den Code zurückgibt, der die Funktion aufgerufen hat und dann damit arbeiten kann. Du kannst eine Funktion zum Beispiel direkt in den geschweiften Klammern eines f-Strings aufrufen:
def verdoppeln(zahl):
return zahl * 2
print(f"Das Doppelte von 4 ist {verdoppeln(4)}")Das Doppelte von 4 ist 8Würde verdoppeln() das Ergebnis ausgeben, statt es zurückzugeben, würde das Programm die 8 in einer eigenen Zeile ausgeben, und der f-String bekäme None, das eine Funktion ohne return zurückgibt: Das Doppelte von 4 ist None.
Halte alle Funktionen zusammen, zwischen den Daten oben und dem Aufruf unten. Schreibe die neue über kassenbon_ausgeben(), die sie verwenden wird.
So schreibst du es:
Anweisungen
- 1
Schreibe unter den Daten (über
kassenbon_ausgeben()) eine Funktionzeilenpreis(position), die den Preis eines Stücks des Artikels mal seine Menge zurückgibt. - 2
Hänge in
kassenbon_ausgeben()an das Ende jeder Zeile den Preis der Zeile an, berechnet mitzeilenpreis():Brot: 2 x 3 € = 6 €.