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
Liste durchsuchen
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]
-
- User
- Beiträge: 92
- Registriert: Sonntag 2. Dezember 2012, 21:13
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
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?
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.
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.
-
- User
- Beiträge: 92
- Registriert: Sonntag 2. Dezember 2012, 21:13
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
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Code: Alles auswählen
In [1]: [5, 4, 3, 4, 5].index(5, -1)
Out[1]: 4
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@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.
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.
Ich suchte gerade nach einer kleinen Aufgabe - habe sie gefunden:
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.
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))
@pixewakb: Die `enumerate()`-Funktion nimmt als zweites Argument einen Startwert für die Zählung. Damit kann man sich das ``+ 1`` sparen.