Wie Programmiere ich einen Bahnpreisrechner in Python?
Das sind die preislichen Vorraussetzungen:
jede Fahrt wird pauschal mit 3,50€ abgerechnet, darin enthalten sind die ersten 20km einer Fahrt
o bei Fahrten bis einschließlich 150km wird pro angefangenem 10km-Block, der über die obigen
20km hinausgeht, 1,50€ verrechnet.
o alle weiteren Kilometer werden mit 0,10€/km, verrechnet.
2 Antworten
Um einen Bahnpreisrechner in Python zu programmieren, der die genannten preislichen Voraussetzungen berücksichtigt, kannst du wie folgt vorgehen:
- Zuerst definierst du eine Funktion, die die Eingabe der Kilometeranzahl annimmt.
- Danach berechnest du den Preis basierend auf den genannten Bedingungen:
- Die ersten 20 km sind in der Pauschale enthalten.
- Für Fahrten bis 150 km wird pro angefangenem 10-km-Block über 20 km hinaus 1,50 € berechnet.
- Für alle Kilometer über 150 km wird 0,10 €/km berechnet.
Hier ist ein Beispielcode für den Bahnpreisrechner:
def berechne_bahnpreis(kilometer):
# Grundpreis für die ersten 20 km
grundpreis = 3.50
preis = grundpreis
if kilometer <= 20:
return preis
elif kilometer <= 150:
# Kilometer über 20 km
zusaetzliche_km = kilometer - 20
# Anzahl der 10-km-Blöcke (aufgerundet)
bloecke = (zusaetzliche_km + 9) // 10
preis += bloecke * 1.50
else:
# Für die ersten 150 km (bis zu 130 km über die ersten 20 km hinaus)
zusaetzliche_km = 150 - 20
bloecke = (zusaetzliche_km + 9) // 10
preis += bloecke * 1.50
# Für Kilometer über 150 km
weitere_km = kilometer - 150
preis += weitere_km * 0.10
return preis
# Beispielaufruf
kilometer = float(input("Geben Sie die gefahrenen Kilometer ein: "))
preis = berechne_bahnpreis(kilometer)
print(f"Der Preis für {kilometer} km beträgt {preis:.2f} €.")
Erklärung:- Grundpreis: Die ersten 20 km kosten pauschal 3,50 €.
- Kilometer 21 bis 150: Jeder angefangene 10-km-Block kostet 1,50 €.
- Kilometer über 150: Jeder zusätzliche Kilometer kostet 0,10 €.
Dieser Code sollte den gewünschten Preis basierend auf den eingegebenen Kilometern korrekt berechnen.
Kannst es auch so machen:
ceil(x) : kleinste ganze Zahl größer gleich x
from math import ceil
def calc_price(distance):
if distance > 150:
return 23 + 0.1*(distance-150)
elif distance > 20:
return 3.5 + ceil((distance-20)/10)*1.5
return 3.5