2017-10-27 4 views
0

So möchte ich in der Lage sein, Elemente in einem Inventar zu entfernen und hinzuzufügen, die ich in meinem Spiel erstellt habe, aber ich bekomme weiterhin einen Fehler. Dies ist mein Code:Kann nicht herausfinden, was mit meinem Inventar in meinem Text-Basis-Spiel falsch ist

inventory={} 
def add_to_inventory(): 
    inventory.append() 

elif choice == "use h on razor": 
     print ("(pick up razor)") 
     if "razor" in inventory: 
      print ("You already got this item.") 
      print ("") 
      print ("Inventory: " + str(inventory)) 
     if "razor" not in inventory: 
      print ("You walked over and picked up your razor blade.") 
      print ("It's been added to your inventory.") 
      add_to_inventory("razor") 
      print("") 
      print ("Inventory: " + str(inventory)) 
     game() 

dies ist der Fehler, die ich erhalte, wenn ich mein Spiel laufen:

(abholen Rasierer) Sie ging und nahm Ihre Rasierklinge auf. Es wurde Ihrem Inventar hinzugefügt.

Traceback (most recent call last): 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 337, in <module> 
    instructions_part_1() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 336, in instructions_part_1 
    try_1() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 310, in try_1 
    instructions_part_2() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 304, in instructions_part_2 
    try_2() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 286, in try_2 
    instructions_part_3() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 280, in instructions_part_3 
    try_3() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 266, in try_3 
    instructions_part_4() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 259, in instructions_part_4 
    main() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 231, in main 
    start() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 219, in start 
    game() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 57, in game 
    game() 
    File "C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\inferno_junction_2017-10-27.py", line 155, in game 
    add_to_inventory("razor") 
TypeError: add_to_inventory() takes 0 positional arguments but 1 was given 
+0

Vielleicht ist das Problem in der Linie skdbelsldjdwlslkdneñsldjdn –

+0

Leider nur ein wenig Freitag Witz :) –

+1

Willkommen bei Stackoverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. Wir sollten in der Lage sein, Ihren gesendeten Code in eine Textdatei einzufügen und das beschriebene Problem zu reproduzieren. – Prune

Antwort

0

Ihr Fehler auftritt, weil add_to_inventory keine Parameter in der Funktionsdefinition, aber Sie versuchen, 'razor' als Argument zu übergeben. Das ist was TypeError: add_to_inventory() takes 0 positional arguments but 1 was given bedeutet.

Sie verwenden auch die Liste append Methode, aber Sie machen Inventar ein Wörterbuch.

Hier sind zwei Optionen, die Sie abhängig von der gewünschten Funktionalität verwenden können, eine für das Wörterbuch und eine für die Liste.

#DICTIONARY INVENTORY 

from collections import defaultdict 
inventory = defaultdict(int) 

def add_to_inventory(item, amount): 
    inventory[item] += amount 

#LIST INVENTORY 

inventory = [] 
def add_to_inventory(item): 
    inventory.append(item) 
+1

wow, vielen Dank! Die zweite Option schien mein Problem zu lösen! – John

+0

Das 'if' /' else' Muster ist ein übliches Muster, das von den Standardbibliotheken angesprochen wird. Erwägen Sie die Verwendung von 'inventory = collections.defaultdict (int) '. https://docs.python.org/3/library/collections.html#collections.defaultdict –

Verwandte Themen