Zum Hauptinhalt springen

Texte vergleichen

Warum brauchen wir das?

Programme fragen oft nach Text:

  • "ja" oder "nein"
  • Quiz-Antworten
  • Passwort-Wörter
  • Menüwahl "start"
  • Lieblingsfarbe "blau"

Dann musst du Texte vergleichen. Klingt einfach – bis echte Menschen tippen: Ja, JA, ja, jA. Ohne Vorbereitung wird fast alles fälschlich False.

Definition: String-Vergleich

Definition – String-Vergleich:
Zwei Strings sind gleich (==), wenn sie dieselbe Zeichenfolge haben.
Groß- und Kleinschreibung zählen: "Ja" und "ja" sind verschieden.

Definition – Normalisieren:
Normalisieren heißt, eine Eingabe vor dem Vergleich zu vereinheitlichen
(z. B. Rand-Leerzeichen weg, alles klein).

print("a" == "a") # True
print("a" == "A") # False
print("a" != "b") # True

Das Problem mit echten Eingaben

antwort = input("Mitmachen? (ja/nein) ")
print(antwort == "ja")

User tippt Ja, JA oder ja → oft False, obwohl „gemeint“ ja war.
Das ist kein Python-Bug – Python ist nur sehr genau.

Lösung: bereinigen vor dem Vergleich

antwort = input("Mitmachen? (ja/nein) ").strip().lower()
print(antwort == "ja")
MethodeWirkung
strip()Leerzeichen an den Rändern weg
lower()alles klein → fairer Vergleich

Py: „Erst sauber machen, dann vergleichen.“
Lily: „So fühlt sich das Programm freundlich an.“
Buggy liebt Ja mit Leerzeichen und freut sich über unfaire False-Werte.

Weitere Beispiele

farbe = "rot"
print(farbe == "rot")
print(farbe == "Rot")
print(farbe.lower() == "rot")
code = input("Code: ").strip()
print(code == "START") # hier: Gross/Klein beachten!

Wenn der Code groß gemeint ist, normalisierst du anders:

code = input("Code: ").strip().upper()
print(code == "START")

Wähle die Normalisierung passend zur Regel.

Neue Wörter

String-Vergleichstring comparison

Pruefen, ob zwei Texte gleich oder ungleich sind.

Normalisierennormalize

Eingaben vereinheitlichen (z. B. lower, strip), bevor man vergleicht.

Was passiert im Computer?

  1. Python vergleicht Strings zeichenweise (für den Anfang: exakte Gleichheit).
  2. Groß- und Kleinbuchstaben sind verschiedene Zeichen.
  3. Leerzeichen sind echte Zeichen – auch am Rand.
  4. strip/lower erzeugen bereinigte neue Strings für den Check.

Mentales Bild: Zwei Namensschilder müssen buchstabenidentisch sein – sonst sind sie nicht gleich. Normalisieren ist wie beide Schilder in dieselbe Schriftart bringen, bevor man sie vergleicht.

Häufige Irrtümer

IrrtumRichtig
Groß/Klein egal automatischNur wenn du lower/upper nutzt
Leerzeichen egalRand-Leerzeichen mit strip entfernen
Vergleich ändert den Textnein – er liefert nur bool
"4" == 4 ist Trueoft False – str vs int
Nur == brauchst du!= ist genauso nützlich

Probiere es selbst

Experiment 1

print("Python" == "Python")
print("Python" == "python")

Experiment 2 – start

cmd = input("Befehl: ").strip().lower()
print(cmd == "start")

Experiment 3 – zwei Namen

a = input("Name 1: ").strip().lower()
b = input("Name 2: ").strip().lower()
print(a == b)

Experiment 4 – ohne vs. mit strip

Tippe absichtlich Leerzeichen und vergleiche.

Fehlerdetektiv

antwort = input("Loesung: ")
print(antwort == "berlin")
Loesung anzeigen
antwort = input("Loesung: ").strip().lower()
print(antwort == "berlin")

Übungen

Level 1 – Entdecken

Gib aus: "cat" == "cat" und "cat" == "dog".

Loesung
print("cat" == "cat") # True
print("cat" == "dog") # False

Level 2 – Anwenden

Quiz 2+2, Antwort als Text "4".

Loesung
antwort = input("2+2= ").strip()
print(antwort == "4")

Level 3 – Erweitern

Geheimwort "python" mit lower und strip.

Loesung
wort = input("Geheimwort: ").strip().lower()
print(wort == "python")

Mini-Challenge

Team-Check: Eingabe muss "code-club" sein (egal welche Großschreibung).
Erkläre: Warum normalisieren wir vor dem Vergleich?

Zusammenfassung

  • Strings mit == / != vergleichen.
  • Groß/Klein und Leerzeichen beachten.
  • strip und lower (oder upper) vor dem Check.
  • Ideal für Quiz, Menüs und Passwort-Wörter.
  • Bald: mit if darauf reagieren statt nur True/False zu printen.

Mini-Quiz

Mini-QuizWas hilft gegen Gross/Klein-Probleme beim Vergleich?
  1. Ist "Ja" == "ja" True?
  2. Warum strip?
  3. Kann man Texte mit != vergleichen?
Loesungen
  1. False.
  2. Entfernt störende Leerzeichen an den Rändern.
  3. Ja.

Textvergleiche sitzen! Mini-Projekt: Antwortpruefer.