mitmario.dev

Text mit Werten

Python Sandbox 3 Min Lesezeit 4 BeispieleLektion 4 von 8

Menge: (3) sieht nach einer harmlosen Ausgabe aus. Mit + wird trotzdem nichts daraus, weil sich Text und Zahl so nicht verbinden lassen. Das Komma in print hilft zwar, aber dann setzt print die Leerzeichen, wo es will.

Mit Komma kommen Leerzeichen dazu
menge = 3
print("Menge: (", menge, ")")
print(f"Menge: ({menge})")

In der ersten Zeile siehst du das Problem: Menge: ( 3 ). print setzt zwischen jeden Teil ein Leerzeichen, auch dort, wo keins hingehört. Die zweite Zeile trifft die Ausgabe genau. Der Unterschied ist ein f vor dem Text.

Ein f vor dem Text

Wenn vor dem öffnenden Anführungszeichen ein f steht, wird aus dem Text ein f-String (f für formatted). Darin darfst du geschweifte Klammern setzen. Was in den Klammern steht, rechnet Python aus und setzt das Ergebnis genau an dieser Stelle ein, ohne ein einziges Leerzeichen dazuzuschreiben, das du nicht selbst getippt hast. Und umwandeln musst du auch nichts, weil Zahlen von selbst zu Text werden.

Werte in Text einsetzen
artikel = "Kaffee"
preis = 6.99
menge = 2
print(f"{menge} x {artikel} kostet {menge * preis} Euro")

In die Klammern dürfen nicht nur Namen, sondern ganze Rechnungen. {menge * preis} rechnet und setzt 13.98 ein. So schreibt man jede Ausgabe, die mehr als ein Wort ist, und ab jetzt stehen die Ausgaben im Kurs fast immer so da.

Das f vergisst man am Anfang gern. Dann steht im Ergebnis wörtlich {menge} x {artikel}, mit Klammern. Wenn du das siehst, weißt du sofort, was fehlt.

Wie es aussehen soll

Nach einem Doppelpunkt in den Klammern darf eine Formatangabe stehen. Am Wert ändert sie nichts. Sie legt nur fest, wie er im Text erscheint.

Zwei Nachkommastellen
preis = 2.5
print(f"Preis: {preis} Euro")
print(f"Preis: {preis:.2f} Euro")
print(f"Summe: {0.1 + 0.2:.2f}")

Mit {preis:.2f} steht der Wert als Kommazahl mit genau zwei Stellen nach dem Punkt da. Aus 2.5 wird 2.50, so wie man es auf einem Preisschild erwartet. Die dritte Zeile löst nebenbei das Problem aus Lektion 2.2. 0.30000000000000004 mit zwei Stellen ist einfach 0.30. Gerundet wird dabei nur in der Ausgabe, der Wert selbst bleibt, wie er ist.

Die Formatangabe liest man von links nach rechts. .2 steht für zwei Nachkommastellen, f für eine Kommazahl. .0f rundet auf ganze Zahlen, .1f auf eine Stelle.

Spalten

Für Tabellen fehlt noch, dass Dinge untereinanderstehen. Dafür bekommt die Formatangabe eine Breite.

Spalten mit fester Breite
name = "Brot"
preis = 2.49
print(f"|{'Artikel':<10}|{'Preis':>8}|")
print(f"|{name:<10}|{preis:>8.2f}|")

Die senkrechten Striche sind nur da, damit man die Ränder sieht. {name:<10} macht den Wert zehn Zeichen breit und linksbündig, der Rest wird mit Leerzeichen aufgefüllt. {preis:>8.2f} macht ihn acht Zeichen breit und rechtsbündig, mit zwei Nachkommastellen. Das < und das > sind wie Pfeile. Sie zeigen in die Richtung, in die der Text rutscht.

So stehen die Preise untereinander wie auf einem Kassenbon, egal ob ein Artikel Brot heißt oder Vollkornbrot. Wer schon einmal versucht hat, so etwas mit Leerzeichen von Hand auszurichten, weiß das zu schätzen.

In der ersten Zeile des Beispiels steht in den Klammern ein fester Text, 'Artikel'. Dafür gibt es eine Regel. Innen stehen andere Anführungszeichen als außen, also außen doppelte und innen einfache. Ab Python 3.12 dürfen es auch dieselben sein. Auf vielen Rechnern läuft aber noch eine ältere Version, und da wäre f"{"Artikel"}" ein Syntaxfehler. Mit wechselnden Zeichen läuft es überall.

Amerikanisch bleibt vorerst der Punkt als Dezimalzeichen, also 2.50 statt 2,50. Dafür entsteht in Abschnitt 6 ein kleines Werkzeug. Bis dahin sieht der Kassenbon eben aus wie aus einem amerikanischen Supermarkt.

Zum Mitnehmen

Ein f vor dem Anführungszeichen, und alles in geschweiften Klammern wird ausgerechnet und eingesetzt. Nach einem Doppelpunkt darin steht, wie es aussehen soll.

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 4 Beispielen zum Ausprobieren

    Steht hier, ohne Konto lesbar.

  • Aufgabe, dein Code läuft auf einem Server

    Öffnet sich mit dem Basis Konto.