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

后端 未结 5 619
情深已故
情深已故 2020-12-06 09:24

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:

相关标签:
5条回答
  • 2020-12-06 09:47

    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.

    0 讨论(0)
  • 2020-12-06 10:00

    Let me fix your code

    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)
        inventory.remove(input("What do you want to use? "))
        print(inventory)
    elif selection == "pickup":
        print(inventory)
        add=input("What do you want to pickup? ")
        newinv=inventory+[str(add)] #use '[str(add)]' or list(str(add))
        print(newinv)
    

    The error is you are adding string and list, you should use list or [] to make the string become list type

    0 讨论(0)
  • 2020-12-06 10:01

    You can use:

    newinv=inventory+[add]
    

    but using append is better since it doesn't create a new list:

    inventory.append(add)
    
    0 讨论(0)
  • 2020-12-06 10:05

    That's not how to add an item to a string. This:

    newinv=inventory+str(add)
    

    Means you're trying to concatenate a list and a string. To add an item to a list, use the list.append() method.

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

    Hope this helps!

    0 讨论(0)
  • 2020-12-06 10:06

    I have a solution for this. First thing that add is already having a string value as input() function by default takes the input as string. Second thing that you can use append method to append value of add variable in your list.

    Please do check my code I have done some modification : - {1} You can enter command in capital or small or mix {2} If user entered wrong command then your program will ask to input command again

    inventory = ["sword","potion","armour","bow"] print(inventory) print("\ncommands : use (remove item) and pickup (add item)") selection=input("choose a command [use/pickup] : ") while True: if selection.lower()=="use": print(inventory) remove_item=input("What do you want to use? ") inventory.remove(remove_item) print(inventory) break

     elif selection.lower()=="pickup":
          print(inventory)
          add_item=input("What do you want to pickup? ")
          inventory.append(add_item)
          print(inventory)
          break
     
     else:
          print("Invalid Command. Please check your input")
          selection=input("Once again choose a command [use/pickup] : ")
    
    0 讨论(0)
提交回复
热议问题