Zum Inhalt springen
aviral gupta

// B1.3 · ca. 25 Min. · Einstieg

Text: Strings, Indizes und Slices

Nach dieser Lektion schreiben Sie jeden Text als Python-String, greifen Zeichen und Teile über ihre Position heraus und bauen geänderte Kopien.

Lektion 3 von 5 in B1 Erste Schritte

Danach können Sie

  • Strings mit Anführungszeichen, Escapes wie \n und Raw-Strings schreiben und mit + und * verbinden oder wiederholen
  • Einzelne Zeichen über ihren Index holen, von vorn oder von hinten, und sie mit len() zählen
  • Teile mit Slices herausschneiden und einen neuen String bauen, statt einen zu ändern
  1. Aufwärmen · Aufgabe 1 von 7

    Aufwärmen aus Lektion B1.2: Was gibt das aus?

    print(7 // 2, 7 % 2)
  2. Vorhersagen · Aufgabe 2 von 7

    Sagen Sie es vorher, bevor Sie weiterlesen: Was gibt das aus?

    word = "Python"
    print(word[0], word[-1], word[1:4])
  3. Üben · Aufgabe 3 von 7

    Setzen Sie einen Index ein, damit die Zeile h ausgibt, das vierte Zeichen.

    word = "Python"
    print(word[____])
    print(word[])
  4. Üben · Aufgabe 4 von 7

    Was gibt das aus?

    print("ab" * 3 + "!")
  5. Üben · Aufgabe 5 von 7

    Ordnen Sie jedem Ausdruck seinen Wert zu.

  6. Denksport · Aufgabe 6 von 7

    Knobelaufgabe. Ein Windows-Pfad hat sechs sichtbare Zeichen. Was gibt das aus?

    path = "C:\new"
    print(len(path))
  7. Anwenden · Aufgabe 7 von 7

    Mini-Aufgabe. Setzen Sie phone = "01701234567" an den Anfang eines Programms. Geben Sie die Nummer bis auf die letzten drei Ziffern verdeckt aus, ein Stern pro verdeckter Ziffer: ********567. Es muss auch funktionieren, wenn Sie phone in eine längere oder kürzere Nummer ändern.

    Prüfen Sie Ihr Ergebnis anhand dieser Liste

Selbst programmieren

Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.

Ausgearbeitetes Beispiel

Einen Produktcode lesen

Ein Shop schreibt seine Produktcodes als Land, Jahr und Nummer: DE-2026-0042. Weil jeder Code gleich aufgebaut ist, können Slices ihn nach Position zerlegen. Das Programm gibt jeden Teil aus, baut mit + ein kurzes Etikett und unterstreicht es mit *. Ändern Sie code in FR-2025-1234 und starten Sie erneut.

main.py

# Take a product code apart by position.
code = "DE-2026-0042"

country = code[:2]
year = code[3:7]
number = code[-4:]

print("Code:", code, "has", len(code), "characters")
print("Country:", country)
print("Year:", year)
print("Number:", number)
label = country + "/" + number
print(label)
print("-" * len(label))

Ausführen mit

python main.py

Ausgabe

Code: DE-2026-0042 has 12 characters
Country: DE
Year: 2026
Number: 0042
DE/0042
-------
  • code[:2] hat keinen Anfang, beginnt also bei Index 0: DE.
  • code[3:7] nimmt die Indizes 3 bis 6; Index 2 ist der erste Bindestrich.
  • code[-4:] nimmt die letzten vier Zeichen, egal wie lang der Code ist.
  • "-" * len(label) macht die Linie genau so lang wie das Etikett.
Ändern und ausführen

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Übungen

Übung 1 von 2

Kurzname

Das Programm beginnt mit first = "Grace" und last = "Hopper". Geben Sie den ersten Buchstaben des Vornamens, einen Punkt, ein Leerzeichen und den Nachnamen aus: G. Hopper. In einer zweiten Zeile geben Sie Letters: und die Zahl der Buchstaben beider Namen zusammen aus, 11. Die Prüfungen probieren auch andere Namen.

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Hinweise
  1. Hinweis 1

    first[0] ist das erste Zeichen des Vornamens.

  2. Hinweis 2

    Verbinden Sie die Teile mit +: first[0] + ". " + last.

  3. Hinweis 3

    len(first) + len(last) addiert die beiden Längen: print("Letters:", len(first) + len(last)).

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

first = "Grace"
last = "Hopper"

print(first[0] + ". " + last)
print("Letters:", len(first) + len(last))
Auf dem eigenen Computer ausführen

Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.

main.py

first = "Grace"
last = "Hopper"

# Line 1: G. Hopper
# Line 2: Letters: 11
print(first + " " + last)

test_main.py

import re

from learnrun import run_main


def run_with(**values):
    with open("main.py", encoding="utf-8") as f:
        code = f.read()
    for name, value in values.items():
        code, count = re.subn(rf"^{name} = .*$", f"{name} = {value!r}", code, count=1, flags=re.M)
        assert count == 1, f"main.py braucht oben die Zeile {name} = ..."
    with open("variant.py", "w", encoding="utf-8") as f:
        f.write(code)
    return run_main(path="variant.py").strip()


def test_short_name():
    """Aus Grace Hopper wird G. Hopper"""
    got = run_with(first="Grace", last="Hopper").splitlines()[:1]
    assert got == ["G. Hopper"], f"die erste Zeile ist {got!r}, erwartet: ['G. Hopper']"


def test_letters():
    """Grace Hopper hat 11 Buchstaben"""
    got = run_with(first="Grace", last="Hopper").splitlines()[1:]
    assert got == ["Letters: 11"], f"die zweite Zeile ist {got!r}, erwartet: ['Letters: 11']"


def test_other_name():
    """Aus Ada Lovelace wird A. Lovelace, mit 11 Buchstaben"""
    got = run_with(first="Ada", last="Lovelace").splitlines()
    assert got == ["A. Lovelace", "Letters: 11"], f"bei Ada Lovelace gab das Programm {got!r} aus"

Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.

Programm ausführen:

python main.py

Prüfungen ausführen (learnrun.py muss im selben Ordner liegen):

python learnrun.py test
learnrun.py herunterladen

Übung 2 von 2

Eine Kartennummer verdecken

card = "4111222233334444" enthält eine Kartennummer. Geben Sie sie aus, wobei jede Ziffer außer den letzten vier durch * ersetzt ist: ************4444. Berechnen Sie die Zahl der Sterne mit len(), denn die Prüfungen probieren auch Nummern anderer Länge.

Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.

Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.

Hinweise
  1. Hinweis 1

    card[-4:] sind immer die letzten vier Zeichen, egal wie lang die Nummer ist.

  2. Hinweis 2

    Die Zahl der Sterne ist len(card) - 4, und "*" * n wiederholt den Stern n-mal.

  3. Hinweis 3

    print("*" * (len(card) - 4) + card[-4:]): Die Klammern sorgen dafür, dass zuerst subtrahiert wird.

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

card = "4111222233334444"

print("*" * (len(card) - 4) + card[-4:])
Auf dem eigenen Computer ausführen

Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.

main.py

card = "4111222233334444"

# Stars for all but the last four digits, then the last four.
print("************" + card[12:])

test_main.py

import re

from learnrun import run_main


def run_with(**values):
    with open("main.py", encoding="utf-8") as f:
        code = f.read()
    for name, value in values.items():
        code, count = re.subn(rf"^{name} = .*$", f"{name} = {value!r}", code, count=1, flags=re.M)
        assert count == 1, f"main.py braucht oben die Zeile {name} = ..."
    with open("variant.py", "w", encoding="utf-8") as f:
        f.write(code)
    return run_main(path="variant.py").strip()


def test_sixteen_digits():
    """Eine 16-stellige Nummer zeigt nur ihre letzten vier Ziffern"""
    got = run_with(card="4111222233334444")
    assert got == "************4444", f"das Programm gab {got!r} aus, erwartet: '************4444'"


def test_shorter_number():
    """Eine 8-stellige Nummer bekommt vier Sterne"""
    got = run_with(card="12345678")
    assert got == "****5678", f"bei 12345678 gab das Programm {got!r} aus, erwartet: '****5678'"


def test_longer_number():
    """Eine 19-stellige Nummer bekommt fünfzehn Sterne"""
    got = run_with(card="6011000990139424123")
    assert got == "*" * 15 + "4123", f"bei einer 19-stelligen Nummer gab das Programm {got!r} aus"

Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.

Programm ausführen:

python main.py

Prüfungen ausführen (learnrun.py muss im selben Ordner liegen):

python learnrun.py test
learnrun.py herunterladen

Häufige Fehler

Ein Zeichen eines Strings ändern

word = "cat"
word[0] = "b"

Was Python ausgibt

TypeError: 'str' object does not support item assignment

Warum, und die Lösung

Strings lassen sich nicht mehr ändern, wenn sie einmal existieren. Bauen Sie aus den gewünschten Teilen einen neuen String und weisen Sie ihn zu: word = "b" + word[1:]. Der Name word verweist dann auf den neuen String, "bat".

Ein Index eins hinter dem Ende

word = "code"
print(word[4])

Was Python ausgibt

IndexError: string index out of range

Warum, und die Lösung

"code" hat 4 Zeichen mit den Indizes 0 bis 3, weil die Zählung bei 0 beginnt. Das letzte ist word[3], word[len(word) - 1] oder am einfachsten word[-1].

Text und Zahl mit + verbinden

age = 30
print("Age: " + age)

Was Python ausgibt

TypeError: can only concatenate str (not "int") to str

Warum, und die Lösung

+ verbindet zwei Strings oder addiert zwei Zahlen, mischt sie aber nicht. Übergeben Sie beides mit Komma an print(): print("Age:", age). Später lernen Sie auch str(age) und f-Strings kennen.

Dasselbe Anführungszeichen innen und außen

print('It's fine')

Was Python ausgibt

SyntaxError: unterminated string literal (detected at line 1)

Warum, und die Lösung

Das ' in It's beendet den String zu früh, und mit dem Rest kann Python nichts anfangen. Nehmen Sie die andere Sorte Anführungszeichen um den Text, "It's fine", oder schützen Sie das Zeichen mit Backslash: 'It\'s fine'.

Python im Browser: Pyodide 314.0.7, MPL-2.0. Lizenz und Quellcode

Abschlussquiz

5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.

Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.

Problem melden

Etwas ist falsch oder unklar? Beschreiben Sie es kurz, dann wird es geprüft und korrigiert.

#

Mindestens 20 Zeichen.

Nur, wenn Sie eine Antwort wünschen.

Kernideen

Anführungszeichen, Escapes und Raw-Strings

Ein String ist Text in einfachen oder doppelten Anführungszeichen; beides bedeutet dasselbe. Für ein Anführungszeichen im Text nehmen Sie die andere Sorte: "It's". Ein Backslash leitet ein Escape ein: \n ist ein Zeilenumbruch, \t ein Tabulator und \' ein Anführungszeichen, jeweils ein Zeichen. print() zeigt, was sie bedeuten. Sollen Backslashes erhalten bleiben, etwa in einem Windows-Pfad, schreiben Sie einen Raw-String mit r vor dem Anführungszeichen: r"C:\new". + verbindet Strings, * wiederholt einen: "ab" * 3 + "!" ist "ababab!".

Indizes und len()

Jedes Zeichen hat eine Position, seinen Index, gezählt ab 0. In word = "Python" ist word[0] das "P" und word[5] das "n". Negative Indizes zählen von rechts: word[-1] ist das letzte Zeichen, word[-2] das davor. len(word) liefert die Zahl der Zeichen, 6, der letzte Index ist also len(word) - 1. Ein Index hinter dem Ende, etwa word[6], bricht das Programm mit einem IndexError ab.

Slices und Strings, die sich nicht ändern

word[2:5] ist ein Slice: die Zeichen ab Index 2 bis ausschließlich 5, also "tho". Ohne Anfang beginnt er bei 0, ohne Ende geht er bis zum Schluss: word[:2] ist "Py", word[-2:] ist "on". Ein Slice über das Ende hinaus hört dort einfach auf, ohne Fehler. Strings lassen sich nicht ändern: word[0] = "J" ist ein TypeError. Bauen Sie stattdessen einen neuen String, "J" + word[1:], und weisen Sie ihn bei Bedarf demselben Namen zu.

Quellen

Zuletzt geprüft am 29. September 2026