2016-12-26 117 views
0
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() 
+1

你忘了張貼_at least_什麼 「play.inventory」 是... –

+0

完成。對不起, – CatsInSpace

+0

「play.inventory」是一個空列表,「能力」也應該是一個空列表。請張貼一個最小的完整可驗證例如:http://stackoverflow.com/help/mcve –

回答

0

您應該刪除的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...