mitmario.dev

Text

Python Sandbox 3 Min Lesezeit 4 BeispieleLektion 3 von 8

Zahlen sind die eine Hälfte von dem, womit Programme arbeiten. Die andere Hälfte ist Text. Namen, Adressen, Artikelbezeichnungen, ganze Zeilen aus einer Datei. Text heißt auf Englisch string, in Python kurz str. Das Wort passt ziemlich gut, denn ein Text ist eine Schnur aus Zeichen, eins hinter dem anderen.

Anführungszeichen, einfache und doppelte

Einfache und doppelte Anführungszeichen
print("Hallo")
print('Hallo')
print("Mias Laden heißt 'Zur Ecke'")
print('Sie sagte: "Bis morgen."')

Ein Text steht in Anführungszeichen. Ob einfache oder doppelte, ist Python egal, die ersten beiden Zeilen tun genau dasselbe. Wenn du von PHP kommst, kennst du dort einen Unterschied zwischen den beiden. In Python gibt es keinen.

Nützlich wird die Wahl, wenn im Text selbst Anführungszeichen vorkommen. Ein Text in doppelten darf einfache enthalten und umgekehrt, so wie in Zeile drei und vier. Schwierig wird es nur, wenn du dieselbe Sorte innen und außen brauchst. Dann kommt ein Backslash davor, und das Zeichen gehört zum Text, statt ihn zu beenden: "Sie sagte: \"Bis morgen.\"". Meistens liest sich der Wechsel der Sorte aber besser.

In diesem Kurs steht Text in doppelten Anführungszeichen, solange nichts dagegen spricht.

Zeilenumbrüche

Zeilenumbrüche im Text
print("Erste Zeile\nZweite Zeile")
print("""Einkaufsliste:
Brot
Milch""")

Ein Backslash hat in einem Text noch eine zweite Aufgabe. \n ist nicht etwa ein Backslash mit einem n. Es ist ein einzelnes Zeichen, der Zeilenumbruch (n wie newline). Wenn er mitten im Text steht, geht die Ausgabe in der nächsten Zeile weiter.

Für längere Texte über mehrere Zeilen gibt es eine bequemere Form mit drei Anführungszeichen am Anfang und am Ende. Dazwischen darf der Text so viele Zeilen haben, wie er will, und die Umbrüche bleiben da, wo sie im Code stehen. Das kommt später bei längeren Texten und bei Befehlen über mehrere Zeilen wieder vor.

Umlaute und ß gehen übrigens überall einfach so, im Text wie in der Ausgabe. Python arbeitet mit Unicode, und da sind Umlaute ganz normale Zeichen.

Zusammenkleben, wiederholen, zählen

Zusammenkleben, wiederholen, zählen
vorname = "Mia"
nachname = "Schulz"
name = vorname + " " + nachname
print(name)
print("=" * 20)
print(len(name))
print(len("Käse"))

Im Beispiel stecken drei Werkzeuge:

  • + klebt zwei Texte aneinander. Und zwar ohne Lücke, deshalb steht in der dritten Zeile das " " dazwischen. Ohne das bekommst du MiaSchulz.
  • * wiederholt einen Text. "=" * 20 ergibt zwanzig Gleichheitszeichen. Klingt nach Spielerei, ist aber der schnellste Weg zu einer Linie unter einer Überschrift.
  • len() zählt die Zeichen. len(name) ist 10: drei für Mia, eins für das Leerzeichen, sechs für Schulz. Ein Leerzeichen ist ein Zeichen wie jedes andere.

In der letzten Zeile ist len("Käse") wirklich 4. Das klingt selbstverständlich, ist es aber nicht in jeder Sprache. Manche zählen ein ä als zwei Zeichen, weil es im Speicher zwei Byte belegt. Python zählt, was man sieht.

+ und * sind dieselben Zeichen wie beim Rechnen. Was gemeint ist, entscheidet Python anhand der Werte. Zwei Zahlen werden addiert, zwei Texte aneinandergehängt. Bei Text und Zahl gemischt ist Schluss.

Text und Zahl passen nicht zusammen

Text und Zahl mit Plus
summe = 5
print("Summe: " + summe)

"Summe: " + summe soll einen Text und eine Zahl verbinden, und das macht Python nicht. Die Meldung lautet TypeError: can only concatenate str (not "int") to str. Übersetzt heißt das, dass man an einen Text nur einen Text hängen kann und keine ganze Zahl.

Das wirkt kleinlich. Es hat aber einen Grund. Was soll "5" + 5 sein, 10 oder 55? Manche Sprachen raten, und je nach Sprache raten sie verschieden. Python rät nicht und lässt dich entscheiden.

Bis jetzt hilft das Komma in print, also print("Summe:", summe). Die beiden richtigen Lösungen kommen in den nächsten zwei Lektionen. In 2.4 geht es darum, wie man Werte bequem in einen Text einsetzt, und in 2.5, wie man aus einer Zahl einen Text macht und umgekehrt.

Zum Mitnehmen

Einfache und doppelte Anführungszeichen tun dasselbe, und ein Backslash mit n macht einen Zeilenumbruch. Plus klebt Texte aneinander, mal wiederholt einen, len() zählt die Zeichen, und Text plus Zahl endet in einem TypeError.

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.