2013-10-16 46 views
7

我想制作一个库存程序以用于RPG游戏。该程序需要能够添加和删除东西并将其添加到列表中。这是我到目前为止有:TypeError:只能连接列表(不是“str”)到列表

inventory=["sword","potion","armour","bow"] 
print(inventory) 
print("\ncommands: use (remove) and pickup (add)") 
selection=input("choose a command [use/pickup]") 

if selection=="use": 
    print(inventory) 
    remove=input("What do you want to use? ") 
    inventory.remove(remove) 
    print(inventory) 

elif selection=="pickup": 
    print(inventory) 
    add=input("What do you want to pickup? ") 
    newinv=inventory+str(add) 
    print(newinv) 

当我运行这一点,并尽量挑选一些事情了我得到这个错误:

Traceback (most recent call last): 
    File "H:/Year 10/Computing/A453/Python Programs/inventory.py", line 15, in <module> 
    newinv=inventory+str(add) 
TypeError: can only concatenate list (not "str") to list 

没有任何一个有此修复程序,将大大赞赏的

回答

8

我想你想要做的就是添加一个新的项目到您的列表,所以你必须更改线路newinv=inventory+str(add)这一个东西:

newinv = inventory.append(add) 

你现在在做的是试图用一个字符串连接一个列表,这是一个无效的Python操作。

不过我想你想要的是从列表中添加和删除项目,在这种情况下,你的if/else块应该是:

if selection=="use": 
    print(inventory) 
    remove=input("What do you want to use? ") 
    inventory.remove(remove) 
    print(inventory) 

elif selection=="pickup": 
    print(inventory) 
    add=input("What do you want to pickup? ") 
    inventory.append(add) 
    print(inventory) 

你不需要每建立一个新的库存清单当你添加一个新的项目。

0

这不是如何将项目添加到字符串。这个:

newinv=inventory+str(add) 

意思是你试图连接一个列表和一个字符串。要将项目添加到列表中,请使用list.append()方法。

newinv = inventory.append(add) #newinv is the old inventory, with a new item. 

也或者,让事情变得更容易一些,只是丢弃newinv列表。

inventory.append(add) #adds a new item to inventory 
print(inventory) #prints the new inventory 

希望这有助于!

相关问题