
Ich habe mir in EXCEL ein Konstrukt geschaffen, zur Überwachung der bisher gefahrenen Kilometer unserer Leasingfahrzeuge und ob diese noch im Bereich der veranschlagten Laufleistung pro Jahr sind oder nicht. Falls nicht, soll berechnet werden, wie hoch die Überschreitung ist und was die Aufzahlung hochgerechnet auf die Laufzeit ist.
In Excel war das ja kein Problem, das logisch mit einer Formel abzubilden. Jetzt dachte ich mir aber, ob das die KI, also ChatGPT auch hinbekommt und mir ein Python Programm auspackt, dass mir den aktuellen Kilometerstand abfragt und anhand vom aktuellen Datum diese Berechnung durchführt.
Offen gestanden habe ich nicht geglaubt, dass das funktioniert. Also habe ich folgenden Prompt definiert:
Erstelle ein Python Programm zur Ausgabe der aktuellen Aufzahlung in Euro für gefahren Mehrkilometer bei einer Leasingnutzung über 4 Jahre. Leasingbeginn war der 15.1.2025, Leasinglaufzeit 4 Jahre, freie Kilometer pro Jahr sind 15000 Kilometer, Zuzahlung von 25 Eurocent pro mehr gefahrenen Kilometer bei Rückgabe. Als Eingabe soll der aktuelle Kilometerstand abgefragt werden, als aktuelles Datum das heutige zur Berechnung genommen werden. Die Ausgabe soll die aktuellen Mehrkilometer berechnen sowie die daraus resultierende aktuelle Aufzahlung. Zudem soll die hochgerechnete Aufzahlung bei der Leasingrückgabe ausgegeben werden.
Ich hatte damit gerechnet, dass ChatGPT nun weitere Fragen stellt und/oder lange braucht oder gar daran scheitert. Aber nach nicht einmal zwei Sekunden spuckte mir die KI folgenden Code aus:
import datetime
def leasing_mehrkilometer():
# Vertragsdaten
leasingbeginn = datetime.date(2025, 1, 15)
leasingende = datetime.date(2029, 1, 15) # 4 Jahre Laufzeit
jahresfreikilometer = 15000
kosten_mehrkm = 0.25 # Euro pro Mehrkilometer
# Heutiges Datum
heute = datetime.date.today()
# Kilometerstand abfragen
try:
km_stand = int(input("Bitte aktuellen Kilometerstand eingeben: "))
except ValueError:
print("Ungültige Eingabe. Bitte eine Zahl eingeben.")
return
# Berechnung bisher erlaubter Kilometer
gesamtfreikilometer = jahresfreikilometer * 4
gesamt_tage = (leasingende - leasingbeginn).days
vergangene_tage = (heute - leasingbeginn).days
if vergangene_tage < 0:
print("Der Leasingvertrag hat noch nicht begonnen.")
return
erlaubte_km_bis_heute = (vergangene_tage / gesamt_tage) * gesamtfreikilometer
# Mehrkilometer berechnen
mehrkilometer = max(0, km_stand - erlaubte_km_bis_heute)
aktuelle_aufzahlung = mehrkilometer * kosten_mehrkm
# Hochrechnung bis Vertragsende
# Durchschnittliche km/Tag -> hochrechnen
if vergangene_tage > 0:
km_pro_tag = km_stand / vergangene_tage
prognose_km = km_pro_tag * gesamt_tage
prognose_mehrkm = max(0, prognose_km - gesamtfreikilometer)
prognose_aufzahlung = prognose_mehrkm * kosten_mehrkm
else:
prognose_aufzahlung = 0
# Ausgabe
print("\n--- Leasing Mehrkilometer Berechnung ---")
print(f"Heutiges Datum: {heute.strftime('%d.%m.%Y')}")
print(f"Bisher erlaubt: {erlaubte_km_bis_heute:,.0f} km")
print(f"Tatsächlich gefahren: {km_stand:,.0f} km")
print(f"Aktuelle Mehrkilometer: {mehrkilometer:,.0f} km")
print(f"Aktuelle Aufzahlung: {aktuelle_aufzahlung:,.2f} €")
print(f"Hochgerechnete Aufzahlung bei Rückgabe: {prognose_aufzahlung:,.2f} €")
if __name__ == "__main__":
leasing_mehrkilometer()
und das funktionierte sogar auf Anhieb:

Sogar mit grafischer Ausgabe möglich
Ich dachte mir nun, treibe ich es mal auf die Spitze und fordere die KI noch etwas heraus und wünschte mir die Ausgabe eines Graphen zu dieser Berechnung. Was soll ich sagen, auch das war keine Problem:
import datetime
try:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
MATPLOTLIB_AVAILABLE = True
except ImportError:
MATPLOTLIB_AVAILABLE = False
def leasing_mehrkilometer():
# Vertragsdaten
leasingbeginn = datetime.date(2025, 1, 15)
leasingende = datetime.date(2029, 1, 15) # 4 Jahre Laufzeit
jahresfreikilometer = 15000
kosten_mehrkm = 0.25 # Euro pro Mehrkilometer
# Heutiges Datum
heute = datetime.date.today()
# Kilometerstand abfragen
try:
km_stand = int(input("Bitte aktuellen Kilometerstand eingeben: "))
except ValueError:
print("Ungültige Eingabe. Bitte eine Zahl eingeben.")
return
# Berechnung bisher erlaubter Kilometer
gesamtfreikilometer = jahresfreikilometer * 4
gesamt_tage = (leasingende - leasingbeginn).days
vergangene_tage = (heute - leasingbeginn).days
if vergangene_tage < 0:
print("Der Leasingvertrag hat noch nicht begonnen.")
return
erlaubte_km_bis_heute = (vergangene_tage / gesamt_tage) * gesamtfreikilometer
# Mehrkilometer berechnen
mehrkilometer = max(0, km_stand - erlaubte_km_bis_heute)
aktuelle_aufzahlung = mehrkilometer * kosten_mehrkm
# Hochrechnung bis Vertragsende
if vergangene_tage > 0:
km_pro_tag = km_stand / vergangene_tage
prognose_km = km_pro_tag * gesamt_tage
prognose_mehrkm = max(0, prognose_km - gesamtfreikilometer)
prognose_aufzahlung = prognose_mehrkm * kosten_mehrkm
else:
prognose_aufzahlung = 0
prognose_km = 0
# Ausgabe
print("\n--- Leasing Mehrkilometer Berechnung ---")
print(f"Heutiges Datum: {heute.strftime('%d.%m.%Y')}")
print(f"Bisher erlaubt: {erlaubte_km_bis_heute:,.0f} km")
print(f"Tatsächlich gefahren: {km_stand:,.0f} km")
print(f"Aktuelle Mehrkilometer: {mehrkilometer:,.0f} km")
print(f"Aktuelle Aufzahlung: {aktuelle_aufzahlung:,.2f} €")
print(f"Hochgerechnete Aufzahlung bei Rückgabe: {prognose_aufzahlung:,.2f} €")
# Diagramm nur erzeugen, wenn matplotlib verfügbar ist
if MATPLOTLIB_AVAILABLE:
monate = []
erlaubte_km_punkte = []
prognose_km_punkte = []
aktuelles_datum = leasingbeginn
while aktuelles_datum <= leasingende:
monate.append(aktuelles_datum)
tage_bis_jetzt = (aktuelles_datum - leasingbeginn).days
erlaubte_km_punkte.append((tage_bis_jetzt / gesamt_tage) * gesamtfreikilometer)
if vergangene_tage > 0:
prognose_km_punkte.append((tage_bis_jetzt / gesamt_tage) * prognose_km)
else:
prognose_km_punkte.append(0)
if aktuelles_datum.month == 12:
aktuelles_datum = aktuelles_datum.replace(year=aktuelles_datum.year + 1, month=1)
else:
aktuelles_datum = aktuelles_datum.replace(month=aktuelles_datum.month + 1)
plt.figure(figsize=(12, 6))
plt.plot(monate, erlaubte_km_punkte, label="Erlaubte Kilometer (linear)", linestyle="--", color="green")
plt.plot(monate, prognose_km_punkte, label="Hochgerechnete Kilometer", linestyle="-", color="red")
plt.scatter([heute], [km_stand], color="blue", label="Aktueller Kilometerstand")
plt.title("Leasing Kilometerentwicklung")
plt.xlabel("Datum")
plt.ylabel("Kilometer")
plt.legend()
plt.grid(True, linestyle=":")
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m.%Y'))
plt.gcf().autofmt_xdate()
plt.tight_layout()
plt.show()
else:
print("Hinweis: matplotlib ist nicht installiert. Es wird kein Diagramm angezeigt.")
print("Sie können matplotlib mit folgendem Befehl installieren:")
print(" pip install matplotlib")
# Fallback: ASCII-Diagramm (grobe Darstellung)
print("\n--- ASCII Diagramm (vereinfachte Darstellung) ---")
max_km = max(gesamtfreikilometer, int(prognose_km), km_stand)
schritte = 50 # Breite des Diagramms in Zeichen
erlaubte_ratio = erlaubte_km_bis_heute / max_km
gefahren_ratio = km_stand / max_km
erlaubte_balken = int(erlaubte_ratio * schritte)
gefahren_balken = int(gefahren_ratio * schritte)
print("Erlaubt : [" + "#" * erlaubte_balken + "-" * (schritte - erlaubte_balken) + "]")
print("Gefahren: [" + "#" * gefahren_balken + "-" * (schritte - gefahren_balken) + "]")
if __name__ == "__main__":
leasing_mehrkilometer()
Die Ausgabe dann entsprechend:
