Gestaltungsorientierte Informatik

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
textadventure:inventar [2026/05/25 18:02] – celandirtextadventure:inventar [2026/05/28 09:59] (aktuell) – celandir
Zeile 1: Zeile 1:
 ====== Ich packe meinen Rucksack … (Listen) ====== ====== Ich packe meinen Rucksack … (Listen) ======
  
-Kaum ein Textadventure kommt ohne einen Rucksack aus. Viele Rätsel erfordern, dass man vorher an einem anderen Ort Gegenstände eingesammelt hat. Diese müssen „irgendwie“ transportiert werden, z.B. in einem Rucksack oder verallgemeinert in einem „Inventar“. Programmiertechnisch bedeutet das, dass man sich Information über den Stand des Abenteuers merken muss. Wurde der goldene Schlüssel schon eingesammelt? Python bietet dafür als **Datentyp** die **Liste** an. +Kaum ein Textadventure kommt ohne einen Rucksack aus. Viele Rätsel erfordern, dass man vorher an einem anderen Ort Gegenstände eingesammelt hat. Diese müssen „irgendwie“ transportiert werden, z.B. in einem Rucksack oder verallgemeinert in einem „Inventar“. Programmiertechnisch bedeutet das, dass man sich Information über den Stand des Abenteuers merken muss. Wurde der rostigeSchlüssel schon eingesammelt? Python bietet dafür als **Datentyp** die **Liste** an. 
  
 Eine Liste ist – wie der Name schon sagt – eine Aufzählung von Daten. Man kann also in einer Liste Strings, Zahlen, Wahrheitswerte (und sogar andere Listen) zusammenfassen. Es gibt einfach Anweisungen, mit denen man Daten einer Liste hinzufügen, entfernen oder sie darin suchen kann. Anders als in einem Rucksack, in dem die Dinge oft durcheinander geraten, bleiben Daten in einer Liste immer in der Reihenfolge, in der man sie hinzugefügt hat.  Eine Liste ist – wie der Name schon sagt – eine Aufzählung von Daten. Man kann also in einer Liste Strings, Zahlen, Wahrheitswerte (und sogar andere Listen) zusammenfassen. Es gibt einfach Anweisungen, mit denen man Daten einer Liste hinzufügen, entfernen oder sie darin suchen kann. Anders als in einem Rucksack, in dem die Dinge oft durcheinander geraten, bleiben Daten in einer Liste immer in der Reihenfolge, in der man sie hinzugefügt hat. 
Zeile 89: Zeile 89:
 </div> </div>
  
-In Zeile 1 wird die Listen-Variable ''inventar'' initialisiert. Listen schreibt man in eckigen Klammern und die Listenelemente werden durch Kommas voneinander getrennt. Anfänglich enthält unsere Liste schon vier Elemente, nämlich die Strings: "Fackel", "Seil", "Proviant" und "Wasserflasche". Beachte, dass man Variablen, die man verwenden möchte, immer zunächst initialisieren muss. Das heißt, man muss Variablen zunächst einen Wert zuweisen. Andernfalls bekommt man eine Fehlermeldung, wenn man auf die Variable zugreift. Probiere es selbst aus: Lösche die Zeile 1. +In Zeile 1 wird die Listen-Variable ''inventar'' initialisiert. Listen schreibt man in eckigen Klammern und die Listenelemente werden durch Kommas voneinander getrennt. Anfänglich enthält unsere Liste schon vier Elemente, nämlich die Strings: "Fackel", "Seil", "Proviant" und "Wasserflasche". Beachte, dass man Variablen, die man verwenden möchte, immer zunächst initialisieren muss. Das heißt, man muss Variablen zunächst einen Wert zuweisen. Andernfalls bekommt man eine Fehlermeldung, wenn man auf die Variable zugreift. 
  
 +<div todo>
 +Probiere es selbst aus: Lösche die Zeile 1, dann gibt es eine Fehlermeldung, sobald die Programmausführung in Zeile 37 (bzw. 35 oder 36) angekommen ist. Wie lautet die Fehlermeldung?
 +</div>
 +
 +Möchte man eine leere Liste haben, soll also der Rucksack anfänglich leer sein, dann schreibt man einfach nur „leere“ Klammern:
 +
 +<code python>
 +inventar = []
 +</code>
 +
 +In der Funktion ''holzsteg()'' kannst du sehen, wie man Listen benutzt. In Zeile 37 wird mit dem Operator ''in'' geprüft, ob der String ''"Rostiger Schlüssel"'' in der Variablen ''inventar'' enthalten ist. Je nachdem, wie die Prüfung ausfällt, wird der if- oder der else-Block der Fallunterscheidung ausgeführt. 
 +
 +Um einen neuen Gegenstand dem Inventar hinzuzufügen, verwendet man den Ausdruck ''inventar.append(...)'' (Zeile 51). Das ist nun wieder etwas Neues: Die Variable ''inventar'' verweist auf ein sog. **Objekt**. Objekte kombinieren Daten (hier: eine Liste von Dingen) mit den Operationen (hier: das Hinzufügen eines neuen Dings). Durch die **Punktnotation** drückt man aus, dass die **Methode** ''append()'' für das Objekt ''inventar'' aufgerufen wird. (Methoden sind Funktionen, die zu Objekten gehören.) 
 +
 +Für Listen-Objekte gibt noch eine Reihe weiterer Methoden, um Daten einzufügen, zu entfernen oder die Position herauszufinden, an der ein bestimmtes Datum in der Liste steht. Eine Übersicht findet man hier:
 +
 +  * https://docs.python.org/3/tutorial/introduction.html#lists
 +  * https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
 +  * https://openbook.rheinwerk-verlag.de/python/13_002.html#u13.2
 +
 +Listen sind in Python ein sehr flexibles //Werkzeug//, mit dem man für viele Probleme Lösungen programmieren kann. In der nächsten Lektion werden wir uns anschauen, wie man das Inventar noch etwas flexibler macht und dabei weitere Möglichkeiten des Listen-Datentyps erkunden.
 +
 +<div todo>
 +Nun baue aber zunächst ein Inventar in dein eigenes Textadventure ein.
 +</div>
 +
 +Nächste Lektion: [[iteration|Was habe ich eigentlich dabei?]]
textadventure/inventar.1779724977.txt.gz · Zuletzt geändert: von celandir