2017-02-26 6 views
0

In meinem Spielcode bewegt sich der Benutzer um ein Gitter, und wenn er auf einer Schatzkiste landet, erhöht sich seine Münzsammlung um 10. Sobald Sie jedoch dreimal auf derselben Schatzkiste landen, wird er zum Banditen und setzt Ihre Münzsammlung zu 0. Ich habe damit zu kämpfen, weil es schwierig war, einzelne Werte in einer Liste zu zählen, wenn der Benutzer bestimmt, wie viele Werte es überhaupt gibt. Dies ist der aktuelle Code, den ich dafür haben:Wechseln zwischen Listen und Wörterbüchern in Python?

 TreasureCoords[(x,y)] = 0 
     Visits = TreasureCoords.get((x,y), None) 
     if Visits is None: 
      pass # Nothing happens 
     elif Visits > 3: 
      print("Uh oh there's a bandit! Your coin collection is now 0.") 
      CoinCollection = 0 
     else: 
      print("You have landed on a treasure chest! You can visit it %i more times before it becomes a bandit." % (2 - visits)) 
      CoinCollection += 10 
      TreasureCoords[(x,y)] += 1 

jedoch, wenn sie in meinem Code implementiert, tritt dieser Fehler auf: TreasureCoords [(x, y)] = 0 Typeerror: Liste Indizes ganze Zahlen sein müssen, nicht tuple Ich glaube, das hat damit zu tun, dass der obige Code TreasureCoords als Wörterbuch verwendet, obwohl es eine Liste voller x- und y-Werte ist, wo die Schatzkisten liegen. Ich glaube nicht, dass ich meine TreasureCoords und BanditCoords einfach in Wörterbücher umwandeln kann, da die Werte zufällig festgelegt sind und die Anzahl der Werte vom Benutzer festgelegt wird. Daher sehe ich nicht, wie man einen Schlüssel oder irgendetwas setzt. Was soll ich machen?

Antwort

0

Der Fehler tritt wegen des Tupels auf, der beste Weg, um dies zu lösen, wäre wahrscheinlich ein Wörterbuch zu verwenden, da der Rest Ihres Codes aussieht, als müsste er nicht einmal in Wörterbücher wechseln.

In der Tat verwendet die Zeile Visits = TreasureCoords.get((x,y), None) die Get-Methode, die nicht einmal auf Listen funktioniert, so dass dies zu der Annahme führt, dass der Code sowieso mit Wörterbüchern arbeiten sollte.

Sie können tatsächlich neue Elemente zu einem Wörterbuch hinzufügen:

dict = {"Key1": 1} 
dict[(1, 2)] = 42 
print(dict[(1, 2)]) # prints 42 

Sie sollten dies auch wahrscheinlich lesen: https://learnpythonthehardway.org/book/ex39.html

+0

Ja, ich stimme zu, dass die Linie Besuche = TreasureCoords.get ((x, y), None) verwendet eine Wörterbuchmethode, aber ich bin nicht sicher, wie ich meine Listen in Wörterbücher ändern würde. Diese Linie selbst funktioniert nicht wirklich, da TreasureCoords eine Liste ist und TreasureCoords = random.sample (PossibleCoords, TCNumber) zugewiesen wurde, wobei PossibleCoords eine Liste aller Koordinaten im Gitter ist, die das Spiel pro Spiel ändert, wenn der Benutzer das Gitter einstellt Größe und TCNumber ändert das Spiel pro Spiel, da es vom Benutzer festgelegt wird. – George

+0

@George leider stackoverflow wird nicht zur Beantwortung dieser Art von allgemeinen Fragen verwendet. Die Antwort, die ich gegeben habe, ist, dass Sie Wörterbücher ausprobieren sollten, wenn Sie nicht wissen, wie das geht, dann müssen Sie Wörterbücher lernen - es ist einfach. –

+0

Nein Ich weiß, wie ich ein Wörterbuch erstelle und die Webseite gelesen habe, die du mit mir verlinkt hast, ich sehe einfach nicht, wie ich sie in meinen Code implementieren könnte, und frage mich, ob es eine alternative Methode zu dem in meiner Frage verwendeten Code gibt . Entschuldigung, wenn meine Fragen zu weit sind – George

Verwandte Themen