TypeError: can only concatenate list (not “str”) to list

Total
0
Shares

I am trying to make an inventory program to use in an RPG. The program needs to be able to add and remove things and then add them to a list. This is what I have so far:

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)

When I run this and try to pick something up, I get this error:

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

Does any one have a fix for this, it would be greatly appreciated.


Solution

I think what you want to do is add a new item to your list, so you have change the line newinv=inventory+str(add) with this one:

newinv = inventory.append(add)

What you are doing now is trying to concatenate a list with a string which is an invalid operation in Python.

However I think what you want is to add and delete items from a list, in that case your if/else block should be:

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)

You don’t need to build a new inventory list every time you add a new item.

Source: StackOverflow.com

Leave a Reply

Your email address will not be published. Required fields are marked *