Python:寻找列表中的东西
问题描述:
def
for i in play.inventory:
if "Sword" in i and "[S]lash" not in abilities:
abilities.append("[S]lash")
elif "Bow" in i and "[F]ire" not in abilities:
abilities.append("[F]ire")
elif "Fists" in i and "[P]unch" not in abilities:
abilities.append("[P]unch")
elif "Legs" in i and "[K]ick" not in abilities:
abilities.append("[K]ick ")
return abilities
因此,目前我有这个代码从我的一个单独的问题,但使用它时,它大部分进展顺利,除了它只承认“拳头”(名单是['拳' ,“腿”]),如果剑触发它可是我没有试过,但我想这首先固定预期的结果应该是:Python:寻找列表中的东西
abilities = ["[K]ick","[P]unch"]
在这之后我把它打印出来使用:
for a in aca:
print(a)
哪里ACA是能力。
目前其成果是:
for a in aca:
print(a)
>>[P]unch
使用PyCharm CE,Python的3.5.2
由于要求: play.inventory是一个类的对象(我想?)代码,它:
class Player:
def __init__(self):
self.inventory = []
play = Player()
答
您应该删除的elif,只是使用if,也是设置将帮助你在这里有很多。
abilities = set(abilities) #this will make each item appear only once...
if "Sword" in play.inventory:
abilities.add("[S]lash")
if "Bow" in play.inventory:
abilities.add("[F]ire")
if "Fists" in play.inventory:
abilities.add("[P]unch")
if "Legs" in play.inventory:
abilities.add("[K]ick ")
return list(abilities)
你也可以做一个单循环
i2a = {"Sword": "[S]lash",
"Bow": "[F]ire",
"Fists": "[P]unch",
"Legs": "[K]ick"}
for i, a in i2a.items():
if i in play.inventory:
abilities.append(a)
return list(set(abilities)) #another way to remove duplicates...
你忘了张贴_at least_什么 “play.inventory” 是... –
完成。对不起, – CatsInSpace
“play.inventory”是一个空列表,“能力”也应该是一个空列表。请张贴一个最小的完整可验证例如:http://*.com/help/mcve –