Python lernen · Schritt 11 von 14
Im MUD: so zerlegt die Engine „greif rauber an“

Zum Spiel · 12.09.2026

Zum Spiel: Text und Befehle

So zerlegt die Falkenmoor-Engine „greif rauber an“ in Verb und Ziel — strip, lower, split und der Mini-Parser für deine eigenen Befehle.

Ein Text-MUD ist im Kern ein Programm, das Sätze liest und Decisions trifft: „greif rauber an“ → Verb greif, Ziel rauber. Hier lernst du die Text-Werkzeuge, mit denen die Falkenmoor-Engine (genauer: teiles_ok() und der Befehlsverteiler) genau das macht.

Eingaben sind roh

Was Spieler tippen, ist unordentlich: Leerzeichen am Rand, Großschreibung, ein Zeilenumbruch vom Enter. Drei Aufrufe putzen das:

roh = input("Befehl: ")        # z. B. "  GREIF Raider an\n"
befehl = roh.strip().lower()
print(befehl)               # "greif raider an"
  • strip() schneidet Leerzeichen und Umbrüche an beiden Enden ab.
  • lower() macht alles klein — „GREIF“ und „greif“ sind dann derselbe Befehl.
  • Beide ändern den Text nicht, sie liefern einen neuen zurück.

split: den Satz in Wörter zerlegen

teile = "greif rauber an".split()
print(teile)   # ['greif', 'rauber', 'an']

verb = teile[0]
ziel = teile[1] if len(teile) > 1 else None
print(verb, "→", ziel)

Ohne Argument teilt split() an jedem Leerzeichen. Mit einem Trenner und maxsplit kontrollierst du, wie oft geteilt wird — wichtig für Ziele aus mehreren Wörtern:

teile = "nimm roter trank".split(" ", 1)
print(teile)   # ['nimm', 'roter trank']

startswith: Befehle erkennen

befehl = "sag hallo zusammen"

if befehl.startswith("sag"):
    print("Chat:", befehl[3:].strip())

Der Mini-Parser

Jetzt alles zusammen — ein Befehlsverteiler im Miniaturformat:

roh = input("Befehl: ")
teile = roh.strip().lower().split()

if not teile:
    print("…?")
elif teile[0] == "greif" and len(teile) >= 2:
    print("Du greifst", teile[1], "an.")
elif teile[0] == "nimm":
    ziel = " ".join(teile[1:])
    print("Du nimmst:", ziel)
else:
    print("Was meinst du mit", roh, "?")

Falkenmoors teiles_ok() prüft genau diese Schritte — zerlegt, Länge kontrolliert, Verb erkennen — nur mit mehr Befehlen und einer Kette von elif im Befehlsverteiler.

So übst du das

  • Befehlserkenner ausbauen: schau, nimm, inventar — jede Erweiterung ist eine elif-Zeile.
  • Wortzähler: einen Satz in Wörter zerlegen und mit dem Zähler-Muster aus dem Dictionaries-Artikel zählen.
  • Echo mit Stil: Eingaben bereinigen und als Dialogzeile formatieren.
  • Schlechte Eingaben sammeln: leere Eingabe, nur Leerzeichen, nur Großbuchstaben — was liefert der Parser?

Übungen

Übung 1 — Die unordentliche Eingabe

Bereinige ' GREIF Raider AN ' (Groß-/Kleinschreibung, Leerzeichen) und gib Ziel und Verb aus.

Musterlösung zeigen
roh = "  GREIF Raider AN  "
teile = roh.strip().lower().split()
print("Verb:", teile[0])
print("Ziel:", teile[1])

Übung 2 — Ziel aus mehreren Wörtern

Zerlege 'nimm roter trank' so, dass Verb und komplettes Ziel getrennt herauskommen — mit split(" ", 1).

Musterlösung zeigen
roh = "nimm roter trank"
verb, ziel = roh.split(" ", 1)
print("Verb:", verb)
print("Ziel:", ziel)

Übung 3 — Chat-Erkennung

Gib den Text nach „sag“ aus, wenn der Befehl mit sag beginnt — sonst eine Fehlermeldung.

Musterlösung zeigen
befehl = "sag hallo zusammen"

if befehl.startswith("sag"):
    print("Chat:", befehl[3:].strip())
else:
    print("Kein Chat-Befehl.")

Übung 4 — Der Richtungs-Wälzer

Übersetze Kurzbefehle mit einem Dictionary: nnorden, ssueden, oosten, wwesten.

Musterlösung zeigen
wege = {"n": "norden", "s": "sueden", "o": "osten", "w": "westen"}

eingabe = "o"
print("Du gehst:", wege.get(eingabe, "ins Ungewisse"))

Quiz — Teste dich

Erst überlegen, dann aufklappen — so trainiert es am meisten!

  1. Was ergibt " a b ".strip()?
  2. Wie viele Elemente hat "greif rauber an".split()?
  3. Was ergibt "NORDEN".lower()?
  4. Was ist "nimm roter trank".split(" ", 1)[1]?
  5. Ist "sag hallo".startswith("sag") wahr?
Quiz-Lösungen anzeigen
  1. "a b" — nur die Ränder werden abgeschnitten, das innere Leerzeichen bleibt.
  2. Drei — an jedem Leerzeichen wird geteilt.
  3. "norden".
  4. "roter trank" — es wird nur einmal geteilt, der Rest steht im zweiten Element.
  5. Ja — der Text beginnt mit „sag“.

Mehr aus der Kategorie „Zum Spiel“

← Zurück zum Lehrpfad