Seite 1 von 1
Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 16:17
von Dexter1997
ich moechte einen code programmieren, der folgendes tut, ich kriege das selber nicht hin:
Wenn die Indexnummer existiert wird der darann gebundene Wert auf dem Bildschirm ausgegeben.
(Ich muss ein Inventar programmieren)
Ich danke für eure Lösungsvorschläge
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 16:39
von Sirius3
was hast Du denn bisher?
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 16:58
von webspider
Wenn du noch nichts von Dictionaries gehört hast, dann wiederhol mal das offizielle Pythontutorial.
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 17:17
von /me
Dexter1997 hat geschrieben:ich moechte einen code programmieren, der folgendes tut, ich kriege das selber nicht hin:
Wenn die Indexnummer existiert wird der darann gebundene Wert auf dem Bildschirm ausgegeben.
Code: Alles auswählen
data = {}
index = 42
if index in data:
print data[index]
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 17:29
von Dexter1997
Code: Alles auswählen
def Inventar_oeffnen(self):
Wert = 0
while self.Inventar[Wert] in self.Inventar:
print self.Inventar[Wert]
Wert = Wert + 1
print self.Geld
(Das ist nicht der komplette Code)
Beim aufrufen der Funktion erscheint folgende Fehlermeldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Gastkonto\Desktop\Python\Programme\Eigenes\RPG 2.py", line 25, in <module>
Spieler.Inventar_oeffnen()
File "C:\Dokumente und Einstellungen\Gastkonto\Desktop\Python\Programme\Eigenes\RPG 2.py", line 18, in Inventar_oeffnen
while self.Inventar[Wert] in self.Inventar:
IndexError: list index out of range
Aber genau dann soll er ja aufhören... wie löse ich das Problem?
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 17:36
von sparrow
Das liegt daran, dass das Krump ist.
Man könnte dir jetzt sagen, dass du den Fehler abfangen könntest, aber die Art wie du da ins Inventar schaust scheint ein wenig seltsam.
1. Benennung von Variablen: Funktionen und Variablen werden klein geschrieben, es sei denn, dass es sich um einen Klassennamen handelt.
2. Die While-Schleife ist etwas krude. Normalerweise ist dann eine Schleife, die so lange läuft wie eine Bedingung erfüllt ist. Das scheint hier nicht ganz zu passen. Mit einer for-Schleife kann man über den Inhalt von Listen iterieren, das ist wahrscheinlich eher das was du suchst.
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 21:37
von Dexter1997
Das Problem ist fast gelöst. Jetzt muss ich nur noch wissen wie man die Indexnummer des letzten Wertes in einer Liste herausfindet, dann ist das Inventar fertig programmiert:)
Code: Alles auswählen
def Inventar_oeffnen(self):
Wert = 0
for i in range (2):
if self.Inventar[Wert] in self.Inventar:
print self.Inventar[Wert]
Wert += 1
else:
print self.Geld
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 21:48
von cofi
Andere Pythonistas werden dir aber trotzdem dankbar sein, wenn du PEP8 befolgst. Das gibt es sogar in einer Uebersetzung, siehe meine Signatur.
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 21:53
von sparrow
Was genau macht denn "i" in deinem Script, Dexter1997?
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 22:17
von BlackJack
@Dexter1997: Wenn `self.Inventar` eine Liste sein sollte, wie der Betreff dieses Themas vermuten lässt, dann ist die ``if``-Bedingung doch völlig unsinnig, da trivialerweise *immer* wahr. Beschreibe doch mal unter welchen Umständen dieser Test Deiner Meinung nach jemals falsch sein kann‽
Das ``else`` ist wahrscheinlich falsch eingerückt, oder? Man kann zu ``for``-Schleifen zwar einen ``else``-Zweig schreiben, das macht hier aber absolut keinen Sinn.
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 23:09
von pixewakb
Ich suchte gerade nach einer kleinen Aufgabe - habe sie gefunden:
Code: Alles auswählen
inventar = ["Keule","Heiltrank","Münzen"]
inventar_groesse = 8
geld = 100
for i,item in enumerate(inventar):
print(i+1,item)
print("Sie haben {} Taler.".format(geld))
Das i und enumerate(Liste) ist mein Beiwerk, braucht man nicht. Du kannst mit item über das Inventar iterieren. Ich habe noch keine Praxis mit Objektorientierung, daher mal ganz billig umgesetzt.
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 23:24
von BlackJack
@pixewakb: Die `enumerate()`-Funktion nimmt als zweites Argument einen Startwert für die Zählung. Damit kann man sich das ``+ 1`` sparen.
Re: Liste durchsuchen
Verfasst: Sonntag 6. Januar 2013, 23:47
von sparrow
Wobei die Frage ist, ob der Threadstarter wirklich eine solche Datenstruktur verwendet, denn aus seinem Quelltext geht das nicht hervor.