【发布时间】:2015-12-02 06:50:43
【问题描述】:
这是我认为是我的代码的相关部分:
def choose_From_Inventory(itemType):
global inventory
string=""
"""sets up how people choose items from inventory"""
for i in range(len(inventory)):
if inventory[i][0]==itemType:
string=string+"["+str(i)+"]: "+inventory[i][4]+"\n"
return string
这会返回 if 语句的错误。
每当我调用此函数时都会发生这种情况:
def pauseScreen():
global hp, inventory, level, location, sq1, sq2, sq3, sq4
"""prints the pause screen, lets them see hp, inventory, and location"""
print("\t\t HP:\n\t\t",hp,"\n\t\tInventory:\n"+str(choose_From_Inventory(0))+"\n"+str(choose_From_Inventory(1))+"\n"+str(choose_From_Inventory(2))+"\n"+str(choose_From_Inventory(3))+"\n\t\tLevel (Location):\n\t\t",level,location)
returnCode=input("Press enter to return or type in quit to quit\n")
if returnCode.lower()=='quit':
quit=input("Are you sure?\n")
if quit.lower()=='yes':
sys.exit()
else:
pauseScreen()
else:
levelCheck()
这种情况并非每次都会发生,但我无法弄清楚为什么它不起作用。我已经尝试了几种其他方法来格式化 if 语句,但我希望有人能够在这里帮助我。
另外,我确实检查了其他几个标题相似的问题,例如这个(TypeError: 'int' object is not subscriptable)和这个(TypeError: 'int' object is not subscriptable in equation) 他们没有帮助我找到解决方案。
谢谢!
~Wpx
【问题讨论】:
-
您还没有显示
inventory是什么,但它似乎是一个整数列表,而不是您认为的任何内容的列表。另请注意,任何时候你发现自己在 Python 中迭代range(len(something)),你都做错了;迭代事物本身。 -
Inventory 是一个 2D 和 3D 列表,其中大多数的 2D 有 4 个整数和 1 个字符串,3D 部分用更多括号内的 2 个整数替换其中一个整数(例如 [[ 0,0,10,4,"example"],[0,0,[5,0],5,"example2"]]) 对于 range(len(something)) 所做的是 for 语句列表中的每个项目。我应该改变哪一部分?
-
inventory可能有一些不是嵌套列表的项目,因此获取inventory[i]将返回一个 int 而不是 dict 或列表,如您所料 -
我刚刚仔细检查了一下,库存中没有任何单独的物品(例如,不在另一个列表中的东西,这是我从你所说的情况中理解的)。
标签: python pyscripter