TypeError:只能将列表(不是“str”)连接到列表

时间:2013-10-16 08:54:11

标签: python

我正在尝试制作一个用于RPG游戏的库存程序。该程序需要能够添加和删除内容并将其添加到列表中。这就是我到目前为止所做的:

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

是否有任何人对此有所解决,将不胜感激

5 个答案:

答案 0 :(得分:16)

我认为你想要做的是在列表中添加一个新项目,所以你用这个改变了行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)

每次添加新项目时都不需要建立新的库存清单。

答案 1 :(得分:1)

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

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

希望这有帮助!

答案 2 :(得分:1)

让我修复您的代码

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)

错误是您要添加字符串和列表,应该使用list[]来使字符串成为list类型

答案 3 :(得分:0)

您可以使用:

newinv=inventory+[add]

但是使用append更好,因为它不会创建新列表:

inventory.append(add)

答案 4 :(得分:0)

我对此有解决方案。 add的第一件事是默认已将字符串值作为input()函数,将输入作为字符串。您可以使用append方法将add变量的值附加到列表中的第二件事。

请检查我的代码,我已经做了一些修改:- {1}您可以大写或小写或混合输入命令 {2}如果用户输入了错误的命令,则您的程序将要求再次输入命令

库存= [“剑”,“药水”,“装甲”,“弓”] 打印(库存) print(“ \ ncommands:使用(删除项目)和拾取(添加项目)”) selection = input(“选择命令[使用/拾取]:”) 而True: 如果selection.lower()==“ use”: 打印(库存) remove_item = input(“您要使用什么?”) 库存。删除(remove_item) 打印(库存) 打破

 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] : ")