Gestaltungsorientierte Informatik

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
textadventure:wiederhole_dich [2026/05/20 17:58] – angelegt celandirtextadventure:wiederhole_dich [2026/05/21 09:50] (aktuell) – celandir
Zeile 1: Zeile 1:
 +====== Wiederhole Dich! (Schleifen) ======
 +
 +
 Bei der Eingabe im letzten Schritt haben wir einen kleinen Kunstgriff angewendet: Wenn man keinen der möglichen Wege wählt, dann landet man im tiefen Wald. Von dort kommt man nicht mehr zurück und das Spiel ist zuende. Tatsächlich möchte man vermutlich eher, dass die Eingabe solange wiederholt wird, bis ein möglicher Weg gewählt wurde. Das ist in folgendem Beispiel realisiert. Bei der Eingabe im letzten Schritt haben wir einen kleinen Kunstgriff angewendet: Wenn man keinen der möglichen Wege wählt, dann landet man im tiefen Wald. Von dort kommt man nicht mehr zurück und das Spiel ist zuende. Tatsächlich möchte man vermutlich eher, dass die Eingabe solange wiederholt wird, bis ein möglicher Weg gewählt wurde. Das ist in folgendem Beispiel realisiert.
 +
 +<file python wiederholung.py[enable_line_numbers="true"]>
 +gute_antwort = False
 +while not gute_antwort:
 +    print("Waldlichtung")
 +    print("Du befindest dich auf einer kleinen Lichtung im Wald. Hohe Bäume umringen den Platz, ihr Blätterdach lässt nur vereinzelte Sonnenstrahlen hindurch. Der Boden ist weich, mit Moos bedeckt, und du meinst, in der Ferne das Plätschern von Wasser zu hören. Ein schmaler Pfad führt nach Norden und ein anderer nach Osten.")
 +    wahl = input("Wohin soll es gehen? (n=Norden, o=Osten) ")
 +    if wahl == "n":
 +        gute_antwort = True
 +        print("Flussufer")
 +        print("Der Pfad mündet an ein glitzerndes Flussufer. Das Wasser ist klar und fließt ruhig dahin, doch weiter auf der anderen Seite siehst du dichten Wald. Ein alter Holzsteg ragt ein Stück in den Fluss – instabil, aber vielleicht noch nutzbar. Zurück kannst du nach Süden gehen, zurück zur Waldlichtung.")
 +    elif wahl == "o":
 +        gute_antwort = True
 +        print("Verlassene Hütte")
 +        print("Ein schmaler Weg führt dich zu einer kleinen, verwitterten Hütte. Die Fenster sind blind vor Staub, die Tür steht einen Spalt offen. Drinnen scheint es dunkel, aber du meinst, einen schwachen Geruch von Rauch wahrzunehmen – vielleicht war hier kürzlich jemand. Du kannst zurück nach Westen, zur Waldlichtung, gehen.")
 +    else:
 +        print("Dunkler Wald")
 +        print("Du verlässt den schmalen Pfad und schlägst dich durchs Unterholz. Schon nach wenigen Schritten verdunkelt sich das Licht, und die Luft wird kälter. Der Wald wirkt hier älter, dichter – fast lebendig. Zwischen den knorrigen Wurzeln scheint Nebel aufzusteigen, der lautlos über den Boden kriecht. Von irgendwoher hörst du ein leises Knacken und schnell kehrst du um, bevor du den Weg zurück nicht mehr findest.")
 +print("Das Abenteuer geht weiter.")
 +</file>
 +
 +<div todo>
 +Führe das Programm mit Thonny mehrmals aus und mache unterschiedliche Eingaben. Fasse zusammen, was Du beobachtest.
 +</div>
 +
 +Du hast sicherlich festgestellt, dass bei diesem Beispiel die **Wiederholungsanweisung** (oder **Schleife**) mit ''while'' (=solange) neu ist. Der Aufbau entspricht dem einer Fallunterscheidung: Erst das „Schlüsselwort“ (''if'' bzw. ''while''), dann eine Bedingung und schließlich ein Doppelpunkt. Die Schleife funktioniert so, dass der folgende, **eingerückte** Block von Anweisungen solange wiederholt wird, wie die Bedingung erfüllt ist. Die Bedingung wird dabei zu Beginn jedes Schleifendurchlaufs neu ausgewertet, so dass Änderungen innerhalb der Schleife sich auf die Bedingung auswirken. Hier wird also die Wiederholung dann beendet, wenn die Variable ''gute_antwort'' den Wahrheitswert ''True'' zugewiesen bekommt. Die Bedingungen können natürlich auch aus Vergleichen und auch komplexeren Ausdrücken bestehen, genau wie bei der Fallunterscheidung. 
 +
 +Beachte, dass bei Python die **Einrückungen** sehr wichtig sind, denn sie kennzeichnen, welche Anweisungen zu einem Zweig (oder Block) gehören. Es ist wichtig, dass Du immer gleichmäßig einrückst, üblicherweise um **4 Leerzeichen**. Wenn Du ungleichmäßig oder gar nicht einrückst, dann funktioniert das Programm nicht korrekt. In dem Beispiel siehst Du, dass man innerhalb eines eingerückten Blockes auch weiter einrücken kann, wenn – wie hier – eine Fallunterscheidung in eine Schleife „geschachtelt“ wird. Ganz allgemein kann man Fallunterscheidungen und Schleifen in beliebiger Reihenfolge und Tiefe schachteln.
 +
 +<div todo>
 +Erweitere nun dein Textadventure so, dass man nur noch sinnvolle Eingaben machen kann.
 +</div>
 +
 +Link zum Python-Handbuch: [[https://openbook.rheinwerk-verlag.de/python/05_002.html#u5.2]]
 +
 +Nächste Lektion: [[wiederhole_dich_nicht|Wiederhole dich nicht!]]
  
textadventure/wiederhole_dich.1779292732.txt.gz · Zuletzt geändert: von celandir