Neben Pilzen gibt es in der Kara-Welt auch Kleeblätter (en. leaf). Während ein einzelner Pilz von Kara herumgeschoben werden kann, können Blätter gelegt und aufgenommen werden. Die folgenden Funktionen stehen zur Verfügung:

  • kara.onLeaf() wahr (True), falls sich Kara auf einem Kleeblatt befindet.
  • kara.putLeaf() legt ein Blatt ab.
  • kara.removeLeaf() nimmt ein Blatt auf.

Schreibe Code, um alle bestehenden Blätter aufzusammeln. Achtung, auf dem Startfeld hat es kein Blatt!

TTTTTTTTT T>LLLLLLT TTTTTTTTT while not kara.treeFront(): kara.move() kara.removeLeaf() assert world_leaves() == 0, "keine Blätter erwartet"

Wir können nur Blätter aufnehmen, wenn eines vorhanden ist. Um eine Anweisung nur dann auszuführen, wenn eine Bedingung wahr ist, verwenden wir eine Verzweigung. Das Schlüsselwort in Python lautet if.

Beispiel: Der folgende Code sammelt nur dann ein Blatt, wenn kara.onLeaf() wahr ist. Beachte: Der bedingt ausgeführte Code-Block muss eingerückt sein.

TTTTTTTTT T>L L L T TTTTTTTTT while not kara.treeFront(): kara.move() if kara.onLeaf(): kara.removeLeaf() assert world_leaves() == 0, "keine Blätter erwartet"

Der Fachbegriff für eine Verzweigung ist Selektion (Auswahl einer Anweisung).

Schreibe Code mit while und if, um alle Blätter aufzusammeln. Kara stoppt, wenn Sie einen Pilz erreicht.

TTTTTTTTTTT T>LLLLLLLLT TTTTTTTTTLT TLLLLLLLTLT TLTTTTTLTLT TLTLLMTLTLT TLTLTTTLTLT TLTLLLLLTLT TLTTTTTTTLT TLLLLLLLLLT TTTTTTTTTTT while not kara.mushroomFront(): if kara.treeFront(): kara.turnRight() kara.move() kara.removeLeaf() assert world_leaves() == 0, "alle Blätter sollten entfernt sein"

Wenn Kara entweder je nach Bedingung die eine oder andere Anweisung ausführen soll, so können wir if zusammen mit else benützen.

Der folgende Code sammelt die bestehenden Blätter und legt ein neues Blatt hin, falls es keines hat (ausser im letzten Feld):

TTTTTTTTT T>L L L T TTTTTTTTT while not kara.treeFront(): if kara.onLeaf(): kara.removeLeaf() else: kara.putLeaf() kara.move() assert world_leaves() == 3, "keine Blätter erwartet"

Schreibe Python-Code mit folgenden Eigenschaften:

  • Kara soll folgende Anweisungen befolgen, solange sie auf keinen Pilz stösst.
    • Wenn Kara auf einem Blatt steht,
      • soll sie nach links wenden;
    • andernfalls:
      • soll Kara nach rechts wenden.
    • Dann soll Kara einen Schritt nach vorne machen.

Bei welchem Pilz landet Kara?

TTTTTTTTTTT TM MT T L LL L T TL LLLLL T T L T TL >L LL T T LL L T T L L T TM L MT TTTTTTTTTTT while not kara.mushroomFront(): if kara.onLeaf(): kara.turnLeft() else: kara.turnRight() kara.move() assert kara.x == 8, "Kara sollte rechts oben neben dem Pilz sein" assert kara.y == 1, "Kara sollte rechts oben neben dem Pilz sein"

Der Golf-Rasen ist voller Blätter - schreibe Code, um alle Blätter aufzusammeln!

Hinweise:

TTTTTTTTTTT T>LLLLLLLLT TLLLLLLLLLT TLLLLLLLLLT TLLLLLLLLLT TLLLLLLLLLT TLLLLLLLLLT TLLLLLLLLLT TLLLLLLLLLT TLLLLLLLLLT TTTTTTTTTTT # Spirale laufen kara.move() while kara.onLeaf(): kara.removeLeaf() # Wenden, bis Bahn frei while kara.treeFront(): kara.turnRight() kara.move() if not kara.onLeaf(): # zu weit! Aus Kara's Sicht hinten rechts weitersuchen. kara.turnRight() kara.move() kara.turnRight() kara.move() kara.turnLeft() assert world_leaves() == 0
  • gf_informatik/karatutorial/leaves.1787835868.txt.gz
  • Zuletzt geändert: 2026-08-27 13:04
  • von hof