python - Python 文本冒险 销售,检查是否在列表中
问题描述
我正在编写文本冒险游戏。首先我编码了我的库存
player_inventory = []
因为应该没有什么可以开始的。在商店里,当我买东西时,它会说
player_inventory.append(What Ever The Item Is Called)
在那之后,如果我打印我的库存,它会说
(player_name)s inventory :
.....
...
所以现在我想添加一个销售系统。我尝试了诸如
def sell(player_inventory):
print('selling:')
for stuff in player_inventory:
print(stuff)
sold = input('what do you want to sell?')
if (sold in player_inventory):
print('successfully sold!!')
player_inventory.remove(sold)
return player_inventory
然后在主游戏循环中我会说
player_inventory = sell(player_inventory)
但是当我从我的库存中出售一些东西时,它应该说“成功出售!” 并从我的库存中删除该项目,但是它没有做我认为它会做的事情。
从我做的一个例子来看,我的库存中有一个“wooden_sword”,我只是在代码开头做了 wood_sword = 'wooden_sword'。我运行了销售功能并输入了“wooden_sword”,但它不起作用。我有点知道原因,但我无法解决
我认为原因是因为
sold = input('what do you want to sell?')
与我的物品不同。所以即使我输入了“wooden_sword”,因为我这样做了
wood_sword = 'wooden_sword'
它行不通。我必须检查是否已售出等于 wood_sword 而不是这样做,但如果我这样做了,我的函数行会太多,有人可以帮忙吗?阅读本文
解决方案
您可能希望将界面设计从键入项目名称更改为编号列表。用户可以选择要出售的物品的数量。这是一个示例函数。
def sell(player_inventory):
print('Available to sell::')
for i, stuff in enumerate(player_inventory, 1):
print(i, stuff)
sold = input('what item number do you want to sell? ("q" to exit)')
if sold == 'q':
return player_inventory
try:
sold = int(sold)
except ValueError:
print('Please use the item number')
return player_inventory
if sold <= len(player_inventory):
print('successfully sold!!')
player_inventory.pop(sold - 1)
return player_inventory
推荐阅读
- javascript - 如何在对象数组中找到最长的名称,然后在 javascript 中将整个对象返回到控制台?
- docker - OCI 镜像清单和 Docker V2.2 镜像清单的区别
- python - 是否有 Python 函数可以知道字符串是否包含特定值?文件大约有 400k 行
- python - 将数据框粘贴到单独的 excel 文件中,将所有现有数据保存在 python 中
- c# - 为什么 Visual Studio 将新创建的数组键入为 Nullable?
- c# - C++ dll 在 C# 控制台应用程序中工作,但在 C# UWP 应用程序中出现错误
- excel - Excel 宏无法将数据从 1 文件复制到另一个文件的问题
- json - 无法使用 Gson 从 Android 中的 json 文件中解析 Json 数据
- javascript - 更新 Zip 文件的内容而不提取 (Javascript)
- python-3.x - Python 可视化原子图 - 如何使用 xyz2graph 将不同的原子种类可视化为不同的颜色?