Wir haben bereits gesehen, wie wir mit dem Schlüsselwort not eine Aussage in ihr Gegenteil verkehren können:

while not kara.treeFront():
    kara.move()

Die Funktion kara.treeFront() gibt einen Wahrheitswert zurück: Entweder wahr oder falsch, in Python True oder False. Kara soll solange weiterlaufen, als kein Baum vor ihr steht. Mit not verwandeln wir den Wert von treeFront() in ihr Gegenteil.

In der Informatik nennen wir einen Wahrheitswert auch Boolean.

Betrachte folgendes Beispiel: Kara soll immer dann ein neues Blatt legen, wenn rechts von ihr ein Baum steht und noch keines vorhanden ist:

TTTTTTTTTTTT T T T > L L T T TT T T T T TTTTTTTTTTTT while not kara.treeFront(): if not kara.onLeaf() and kara.treeRight(): kara.putLeaf() kara.move() assert world_leaves() == 4, "Vier Blätter erwartet"

Merke:

  • mit dem Schlüsselwort and können mehrere Booleans verknüpft werden. Das Resultat ist nur dann True, wenn alle Booleans True sind, sonst False.
  • Eine Und-Verknüpfung heisst Konjunktion.
  • mit kara.treeRight() und kara.treeLeft() können wir Bäume neben Kara feststellen.
  • not bindet enger als and: das not kara.onLeaf() negiert nur die Blatt-Bedingung, nicht den ganzen and-Ausdruck.

Aufgabe Tunnel

Hilf Kara, den Tunnel zu markieren. Schreibe Python-Code wie folgt:

  • Kara wiederholt folgende Schritte, solange sie nicht vor einem Baum steht:
    • wenn links und rechts einen Baum sieht
      • legt sie ein Blatt
    • dann geht sie einen Schritt

Wie lang ist der Tunnel?

TTTTTTTTTTTT T T T TTTTTT T > T T TT TTT T T T TTTTTTTTTTTT while not kara.treeFront(): if kara.treeLeft() and kara.treeRight(): kara.putLeaf() kara.move() assert world_leaves() == 3

Natürlich können wir auch mehrere Booleans so verknüpfen, dass das Resultat True ist, wenn mindestens einer davon True ist. Das Schlüsselwort dazu heiss or (oder), die Operation heisst Diskunktion.

Schreibe Code, der immer dann ein Blatt entfernt, wenn links oder rechts von Kara ein Baum steht. Stoppe, wenn du einen Baum vor dir hast.

TTTTTTTTTTTT T T T TTTTTT T >LLLLLLL T T TT TTT T T T TTTTTTTTTTTT while not kara.treeFront(): if kara.treeLeft() or kara.treeRight(): kara.removeLeaf() kara.move() assert world_leaves() == 1

In der Mathematik gilt Punkt-vor-Strich - bei Boolean-Verknüpfungen gilt ebenfalls eine Rangfolge:

  1. Negierung (not)
  2. Konjunktion (and)
  3. Disjunktion (or)

Im Beispiel:

  • beim ersten Blatt dreht Kara links (die erste Hälfte der Disjunktion ist wahr: beide Bedingungen kara.onLeaf() and not kara.treeLeft() sind wahr).
  • beim Pilz dreht Kara ebenso links (die zweite Hälftet der Disjunktion ist wahr: kara.mushroomFront()).
  • beim zweiten Blatt dreht Kara nicht:
    • kara.mushroomFront() ist falsch
    • kara.onLeaf() ist wahr, aber
    • not kara.treeLeft() ist falsch, damit ist die Konjunktion falsch, damit ist auch die Disjunktion falsch.
TTTTTTTTTTTT T T T M T T L T T T T T > L T T T T T TTTTTTTTTTTT while not kara.treeFront(): if kara.onLeaf() and not kara.treeLeft() or kara.mushroomFront(): kara.turnLeft() kara.move()
  • gf_informatik/karatutorial/logik.1787918073.txt.gz
  • Zuletzt geändert: 2026-08-28 11:54
  • von hof