Python:在lis中寻找东西

2024-09-27 04:23:22 发布

您现在位置: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

因此,目前我有一个单独的问题,我的代码,但当使用它时,它大部分顺利,除了它只承认“拳头”(名单是['拳头','腿'])我还没有尝试,如果剑触发它,但我想先修复这个,预期的结果应该是:

abilities = ["[K]ick","[P]unch"]

然后我用以下方法打印出来:

 for a in aca:
    print(a)

aca就是能力。你知道吗

目前的结果是:

for a in aca:
    print(a)
>>[P]unch

使用Python 3.5.2

应要求: 播放目录是一个类的对象(我想?)代码:

class Player:
    def __init__(self):
        self.inventory = []

play = Player()

Tags: andinforplaydefnotinventoryelif
1条回答
网友
1楼 · 发布于 2024-09-27 04:23:22

您应该删除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...

相关问题 更多 >

    热门问题