mitmario.dev

Synthese: Spritkostenrechner

Python Sandbox 3 Min Lesezeit 2 BeispieleLektion 7 von 8

Was kostet die Fahrt? Die Frage ist alt und vor jedem Urlaub wieder neu. Für ein kleines Werkzeug, das sie beantwortet, sind inzwischen alle Teile da: Werte mit Namen, Rechnen, Text, Umwandeln, Fragen. Zum ersten Mal entsteht daraus etwas, das man wirklich benutzen kann.

Erst der Plan

Bevor auch nur eine Zeile Code entsteht, lohnt sich ein Zettel mit drei Fragen. Was geht hinein? Was soll herauskommen? Und wie kommt man vom einen zum anderen?

Für die Spritkosten sieht das so aus:

  • Hinein gehen drei Zahlen: die Strecke in Kilometern, der Verbrauch in Litern auf 100 Kilometer und der Preis für einen Liter.
  • Heraus kommt ein Betrag in Euro, mit zwei Nachkommastellen, weil es um Geld geht.
  • Dazwischen liegt eine Formel, die man sich einmal klarmacht. Der Verbrauch gilt für 100 Kilometer, also braucht die Fahrt strecke * verbrauch / 100 Liter. Und jeder Liter kostet den Literpreis.

Das klingt nach Schulaufgabe, und so soll es auch klingen. Viele Fehler in kleinen Programmen entstehen nicht beim Tippen, sondern weil vorher niemand aufgeschrieben hat, was eigentlich passieren soll. Mit dem Zettel in der Hand musst du danach nur noch übersetzen. Dieser Gedanke zieht sich durch den ganzen Kurs, und auch das Abschlussprojekt fängt mit so einem Zettel an.

Die Formel ausprobieren

Bevor das Programm fragt, kann man die Formel mit festen Zahlen ausprobieren. Dann weiß man, dass die Rechnung stimmt, bevor die Eingaben dazukommen.

Die Formel mit festen Zahlen
strecke = 420
verbrauch = 5.8
literpreis = 1.79

liter = strecke * verbrauch / 100
kosten = liter * literpreis

print(f"{liter:.1f} Liter, {kosten:.2f} Euro")

420 Kilometer bei 5,8 Litern auf 100 Kilometer sind gut 24 Liter, und die kosten bei 1,79 Euro je Liter 43,60 Euro. Die Rechnung ist auf zwei Zeilen verteilt, erst die Liter, dann die Kosten. Schneller wird sie dadurch nicht, aber jedes Zwischenergebnis hat einen Namen, und das liest sich leichter. Und wenn etwas nicht stimmt, siehst du im Reiter Debug jeden Zwischenwert einzeln.

In der Ausgabe stehen die Liter mit einer Nachkommastelle, .1f, und das Geld mit zwei. Für den Kurs ist das egal. Für jemanden, der die Zahl liest, nicht.

Eine Entscheidung vorweg

Die Aufgabe dieser Lektion hat eine Besonderheit. Bei langen Fahrten soll das Programm noch etwas mehr ausgeben. Dafür braucht es eine Zeile, die eigentlich erst in Abschnitt 3 dran ist. Hier kommt sie vorab, damit sich das Werkzeug auch wie eins anfühlt.

Ein if entscheidet
strecke = float(input("Strecke in km? "))
if strecke > 300:
    print("Das ist eine lange Fahrt.")
print("Gute Fahrt!")

if strecke > 300: heißt „wenn die Strecke größer als 300 ist“. Was darunter eingerückt steht, also eine Stufe nach rechts, läuft nur dann. Was danach wieder ganz links steht, läuft immer. Mit 420 in eingabe.txt erscheinen beide Sätze, mit 120 nur noch die gute Fahrt.

Mehr musst du über if im Moment nicht wissen. Der Doppelpunkt am Ende der Zeile gehört dazu, die Einrückung auch. Wenn du nach einem Doppelpunkt Enter drückst, rückt der Editor von selbst ein. Wie es mit else und mehreren Fällen weitergeht, ist Thema von Abschnitt 3.

Was die Aufgabe will

Der Zettel von oben ist fast schon das Programm, und im Startcode wartet das if nur noch auf seine Zeile. Geprüft wird mit einer langen Fahrt, bei der die Zeile je Person erscheinen muss, und mit einer kurzen, bei der sie fehlen muss. Ein Werkzeug, das bei jeder Strecke dasselbe tut, wäre keins.

Zum Mitnehmen

Vor dem Code steht ein Zettel mit dem, was hineingeht, was herauskommt und welche Formel dazwischen liegt, und die Formel läuft zuerst mit festen Zahlen. Eine eingerückte Zeile unter einem if läuft nur bei langen Fahrten.

Jetzt du

Basis Konto, kostenlos

Zu dieser Lektion gehört eine Aufgabe. Du schreibst den Code selbst, und nach jedem Lauf sagt dir eine Prüfliste, was schon stimmt.

Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.

In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.

Was in dieser Lektion steckt

  • Artikel mit 2 Beispielen zum Ausprobieren

    Steht hier, ohne Konto lesbar.

  • Aufgabe, dein Code läuft auf einem Server

    Öffnet sich mit dem Basis Konto.