Skip to content

Kapitel 8: String-Operationen

🎯 Lernziele

In diesem Kapitel lernst du:

  • Strings verknüpfen und wiederholen
  • Auf Teilstrings zugreifen (Slicing)
  • String-Methoden verwenden
  • Strings formatieren (f-strings)

8.1 Grundlegende String-Operationen

🔤 Strings definieren

python
# Verschiedene Möglichkeiten
name1 = 'Python'        # Einfache Anführungszeichen
name2 = "Python"        # Doppelte Anführungszeichen
text = """Mehrzeiliger
Text"""                 # Triple-Quotes für mehrzeilige Strings

print(name1)
print(text)

➕ String-Verknüpfung (+)

python
vorname = "Max"
nachname = "Muster"
voller_name = vorname + " " + nachname
print(voller_name)  # Max Muster

# Achtung: Strings und Zahlen können nicht direkt verknüpft werden!
alter = 25
# print("Alter: " + alter)  # TypeError!
print("Alter: " + str(alter))  # Richtig: Alter: 25

✖️ String-Wiederholung (*)

python
print("Ha" * 3)  # HaHaHa
print("-" * 20)   # --------------------

📏 String-Länge (len())

python
text = "Python"
print(len(text))  # 6

# Mit Eingabe
name = input("Wie heißt du? ")
print(f"Dein Name hat {len(name)} Buchstaben")

8.2 String-Zugriff und Slicing

🔢 Indexzugriff

python
text = "Python"

# Positiver Index (von links)
print(text[0])  # P (erstes Zeichen)
print(text[1])  # y
print(text[5])  # n (letztes Zeichen)

# Negativer Index (von rechts)
print(text[-1])  # n (letztes Zeichen)
print(text[-2])  # o
print(text[-6])  # P (erstes Zeichen)

✂️ Slicing (Teilstrings extrahieren)

Syntax: string[start:ende:schritt]

python
text = "Python Programmierung"

# Einfaches Slicing
print(text[0:6])    # Python (Index 0 bis 5)
print(text[7:18])   # Programmierung

# Start oder Ende weglassen
print(text[7:])     # Programmierung (von 7 bis Ende)
print(text[:6])     # Python (von Anfang bis 5)

# Negativer Schritt (umdrehen)
print(text[::-1])   # gnugemmargorP nohtyP (umgekehrt)

# Jedes zweite Zeichen
print(text[::2])   # Pto rgamirn

💡 Praxisbeispiel

python
# E-Mail-Adresse zerlegen
email = "max.muster@example.com"

benutzername = email[:email.index("@")]
domain = email[email.index("@")+1:]

print(f"Benutzername: {benutzername}")  # max.muster
print(f"Domain: {domain}")              # example.com

8.3 String-Methoden (Hochfrequenz)

🔠 Groß-/Kleinschreibung

python
text = "Python Programmierung"

print(text.upper())     # PYTHON PROGRAMMIERUNG
print(text.lower())     # python programmierung
print(text.title())     # Python Programmierung (Jedes Wort groß)
print(text.capitalize())  # Python programmierung (Nur erster Buchstabe groß)

🔍 Suchen und Ersetzen

python
text = "Python ist toll. Python ist einfach."

# Suchen (erstes Vorkommen)
print(text.find("Python"))     # 0
print(text.find("Java"))       # -1 (nicht gefunden)

# Ersetzen
neu_text = text.replace("Python", "Java")
print(neu_text)  # Java ist toll. Java ist einfach.

# Alle Vorkommen zählen
print(text.count("Python"))  # 2

✂️ Leerzeichen entfernen

python
text = "   Python   "

print(text.strip())    # "Python" (beide Seiten)
print(text.lstrip())   # "Python   " (nur links)
print(text.rstrip())   # "   Python" (nur rechts)

# Auch für andere Zeichen
text2 = "!!!Python!!!"
print(text2.strip("!"))  # "Python"

🔪 Zerlegen und Zusammenfügen

python
# Split (String → Liste)
text = "Apfel,Banane,Orange"
früchte = text.split(",")
print(früchte)  # ['Apfel', 'Banane', 'Orange']

satz = "Python ist toll"
wörter = satz.split()
print(wörter)  # ['Python', 'ist', 'toll']

# Join (Liste → String)
früchte = ['Apfel', 'Banane', 'Orange']
text = ",".join(früchte)
print(text)  # Apfel,Banane,Orange

✅ Überprüfungsmethoden

python
# Verschiedene Prüfungen
print("Python".isalpha())    # True (nur Buchstaben)
print("123".isdigit())      # True (nur Zahlen)
print("Python123".isalnum()) # True (Buchstaben oder Zahlen)
print("   ".isspace())      # True (nur Leerzeichen)
print("PYTHON".isupper())   # True (nur Großbuchstaben)
print("python".islower())   # True (nur Kleinbuchstaben)

8.4 String-Formatierung

🎨 Verschiedene Methoden

1. %-Formatierung (älter)

python
name = "Python"
alter = 25
print("Mein Name ist %s und ich bin %d Jahre alt." % (name, alter))

2. .format()-Methode

python
name = "Python"
alter = 25
print("Mein Name ist {} und ich bin {} Jahre alt.".format(name, alter))
print("Mein Name ist {n} und ich bin {a} Jahre alt.".format(n=name, a=alter))

3. f-strings (EMPFOHLEN - Python 3.6+)

python
name = "Python"
alter = 25

# Einfach und lesbar
print(f"Mein Name ist {name} und ich bin {alter} Jahre alt.")

# Berechnungen direkt im String
x = 10
y = 20
print(f"{x} + {y} = {x + y}")  # 10 + 20 = 30

# Formatierungsoptionen
pi = 3.14159
print(f"Pi: {pi:.2f}")  # Pi: 3.14 (2 Nachkommastellen)

# Ausrichtung
print(f"{'Python':10}")   # Linksbündig (10 Zeichen)
print(f"{'Python':>10}")  # Rechtsbündig
print(f"{'Python':^10}")  # Zentriert

8.5 Praxisbeispiele

📧 Beispiel 1: E-Mail-Validator (einfach)

python
email = input("Gib deine E-Mail ein: ")

if "@" in email and "." in email:
    print("E-Mail scheint gültig zu sein.")
else:
    print("Ungültige E-Mail-Adresse!")

📞 Beispiel 2: Telefonnummer formatieren

python
# Eingabe: 017012345678
telefonnummer = input("Gib deine Nummer ein: ")

# Nur Ziffern behalten
nur_zahlen = ''.join(filter(str.isdigit, telefonnummer))

# Formatieren
if len(nur_zahlen) == 11:
    formatiert = f"{nur_zahlen[:4]} {nur_zahlen[4:7]} {nur_zahlen[7:]}"
    print(f"Formatierte Nummer: {formatiert}")
else:
    print("Ungültige Nummernlänge!")

🔐 Beispiel 3: Passwort-Überprüfung

python
passwort = input("Gib ein Passwort ein: ")

if len(passwort) < 8:
    print("Passwort zu kurz (mindestens 8 Zeichen)")
elif not any(c.isdigit() for c in passwort):
    print("Passwort muss mindestens eine Zahl enthalten")
elif not any(c.isupper() for c in passwort):
    print("Passwort muss mindestens einen Großbuchstaben enthalten")
else:
    print("Passwort ist sicher!")

⚠️ Häufige Fehler

❌ Fehler 1: Strings sind unveränderlich

python
text = "Python"
# text[0] = "J"  # TypeError! Strings können nicht verändert werden!

# Richtig: Neuen String erstellen
text = "J" + text[1:]
print(text)  # Jython

❌ Fehler 2: Index außerhalb des Bereichs

python
text = "Python"
# print(text[10])  # IndexError!

# Sicherer Zugriff
if len(text) > 10:
    print(text[10])
else:
    print("Index zu groß!")

❌ Fehler 3: Vergessen, Strings in Zahlen umzuwandeln

python
# Falsch
# alter = input("Alter: ")
# print(alter + 1)  # TypeError!

# Richtig
alter = int(input("Alter: "))
print(alter + 1)  # 26 (wenn 25 eingegeben)

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ Strings zu definieren und zu verknüpfen
  • ✅ Auf einzelne Zeichen zuzugreifen (Index)
  • ✅ Teilstrings mit Slicing zu extrahieren
  • ✅ Nützliche String-Methoden (upper, lower, find, replace, etc.)
  • ✅ Strings mit f-strings zu formatieren
  • ✅ Häufige Fehler zu vermeiden

🎯 Übung

  1. Schreibe ein Programm, das einen Satz rückwärts ausgibt
  2. Erstelle ein Programm, das überprüft, ob ein Wort ein Palindrom ist
  3. Schreibe ein Programm, das alle Vokale aus einem Text entfernt
  4. Formatiere einen Text als Tabelle mit f-strings (Ausrichtung)

⏭️ Nächstes Kapitel

In Kapitel 9 lernen wir Listen und Tupel - die wichtigsten Container für Daten!

Frei für alle Anfänger