我正在尝试制作一个用于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
是否有任何人对此有所解决,将不胜感激
答案 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] : ")