Beispiel - Preisberechnungen
Preisberechnung - eine komplizierte Sache
Weißt du, wie der Zahlungsbetrag eines Artikels zustande kommt?
- Der Listenpreis ist der Grundpreis, von dem die Rechnung ausgeht. Als Beispiel betrachten wir einen Listenpreis von 159.00€.
- Der Listenpreis kann um einen bestimmten Betrag ermäßigt werden. Diese Ermäßigung heißt Rabatt. Im Beispiel wird ein Rabatt von 5% gewährt. Vom Listenpreis gehen also 7.95€ ab. Der neue Preis (man nennt ihn auch Nettorechnungsbetrag) beträgt jetzt 151.05€.
- Jetzt kommt die Mehrwertsteuer hinzu. Bis auf einige Ausnahmen wie Bücher beträgt der Mehrwertsteuersatz derzeit in Deutschland 19%. Aus dem Nettorechnungsbetrag erhält man so den Bruttorechnungsbetrag. Im Beispiel ergibt sich eine Mehrwertsteuer von gerundet 28.70€ und somit ein Bruttorechnungsbetrag von 179.75€.
- Von diesem Bruttorechnungsbetrag kann bei Barzahlung ein weiterer Nachlass gewährt werden. Diese Ermäßigung heißt Skonto. Es ergibt sich dann der zu entrichtende Zahlungsbetrag. Im Beispiel erhält man aus dem Bruttorechnungsbetrag 179.75€ bei einem Skontoprozentsatz von 2% einen Nachlass von gerundet 3.60€. Es ergibt sich ein Zahlungsbetrag von 176.15€.
Aufgabe 1
Berechne den Zahlungsbetrag eines Artikels, dessen Listenpreis mit 280€ angegeben ist und der mit 19% Mehrwertsteuer zu versehen ist. Mit dem Händler wurde ein Rabattsatz von 15% und ein Skontosatz von 1.5% vereinbart.
Automatisierung von Preisberechnungen
Für die schnelle Durchführung von Preisberechnungen soll eine Funktion mit folgendem Verhalten entwickelt werden.
Für die Funktionsdefinition könnte man einen Berechnungsausdruck entwickeln, der aus den übergebenen Größen direkt den Rückgabewert bestimmt.
def zahlungsbetrag(listenpreis, pRabatt, pMwSt, pSkonto):
return listenpreis*(1-pRabatt/100)*(1+pMwSt/100)*(1-pSkonto/100)
Bei komplizierteren Berechnungen kann ein solcher Berechnungsausdruck recht lang werden. Der Nachteil eines langen und komplizierten Berechnungsausdrucks ist, dass er schwer zu durchschauen ist.
Zwischenspeichern von Werten
Eine Möglichkeit, die Verständlichkeit von komplizierten Berechnungen zu erhöhen, besteht darin, die Berechnung in Schritte zu zerlegen. Man benutzt dann oft Hilfsvariablen, um bereits berechnete Werte zwischenzuspeichern.
def zahlungsbetrag(listenpreis, pRabatt, pMwSt, pSkonto):
rabatt = (listenpreis / 100) * pRabatt
nettopreis = listenpreis - rabatt
mehrwertsteuer = (nettopreis / 100) * pMwSt
bruttopreis = nettopreis + mehrwertsteuer
skonto = (bruttopreis / 100) * pSkonto
endpreis = bruttopreis - skonto
return endpreis
Aufgabe 2
(a) Analysiere die Funktionsdefinition. Kannst du jede Programmzeile erklären?
(b) Teste die Funktion im Online Python Tutor. Beobachte, wie hier die Variablen erzeugt und mit Werten versehen werden. Teste die Funktion auch in einer normalen Python-Umgebung.
Überschreiben von Werten
Hier eine weitere Möglichkeit, die Funktion zahlungsbetrag
zu definieren.
def zahlungsbetrag(listenpreis, pRabatt, pMwSt, pSkonto):
rabatt = (listenpreis / 100) * pRabatt
preis = listenpreis - rabatt
mehrwertsteuer = (preis / 100) * pMwSt
preis = preis + mehrwertsteuer
skonto = (preis / 100) * pSkonto
preis = preis - skonto
return preis
Aufgabe 3
(a) Analysiere auch diese Funktionsdefinition. Worin unterscheidet sie sich von der Definition oben? Kannst du auch hier jede Programmzeile erklären?
(b) Teste diese Funktion im Online Python Tutor. Beobachte, wie hier die Variablen erzeugt und mit
Werten versehen werden. Beobachte insbesondere, wie sich der Wert der Variablen preis
ändert.
Aufgabe 4
Kann man bei der Berechnung des Zahlungsbetrags die Reihenfolge der Berechnungsschritte abändern (z.B. erst Rabatt und Skonto abziehen und dann erst die Mehrwertsteuer hinzuaddieren)? Untersuche diese Frage, indem du die Funktionsdefinition aus Aufgabe 3 geeignet abänderst.
Quellen
- [1]: Dialog - Urheber: KB - Lizenz: Inf-Schule.de