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")
| Methode | Wirkung |
|---|---|
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
Pruefen, ob zwei Texte gleich oder ungleich sind.
Eingaben vereinheitlichen (z. B. lower, strip), bevor man vergleicht.
Was passiert im Computer?
- Python vergleicht Strings zeichenweise (für den Anfang: exakte Gleichheit).
- Groß- und Kleinbuchstaben sind verschiedene Zeichen.
- Leerzeichen sind echte Zeichen – auch am Rand.
strip/lowererzeugen 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
| Irrtum | Richtig |
|---|---|
| Groß/Klein egal automatisch | Nur wenn du lower/upper nutzt |
| Leerzeichen egal | Rand-Leerzeichen mit strip entfernen |
| Vergleich ändert den Text | nein – er liefert nur bool |
"4" == 4 ist True | oft 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.
stripundlower(oderupper) vor dem Check.- Ideal für Quiz, Menüs und Passwort-Wörter.
- Bald: mit
ifdarauf reagieren statt nur True/False zu printen.
Mini-Quiz
- Ist
"Ja" == "ja"True? - Warum
strip? - Kann man Texte mit
!=vergleichen?
Loesungen
- False.
- Entfernt störende Leerzeichen an den Rändern.
- Ja.
Textvergleiche sitzen! Mini-Projekt: Antwortpruefer.