在满足elif条件后继续下一个elif

时间:2015-06-28 18:07:16

标签: python if-statement

我正在检查大量的条件(数百个),每个条件看起来像这样:

s = "string"
match = True

if "x" in s:
   var_1 = "something"
elif "y" in s:
   var_2 = "something else"
elif "z" in s:
   var_1 = "something something"
   var_2 = "some thing"
else match = False

问题是,即使满足elif条件,我仍希望继续检查elif的剩余部分。

将所有内容作为if而不是elif运行对我正在尝试的操作无效,因为如果没有满足条件,我需要else match = False触发。

有解决办法吗?

3 个答案:

答案 0 :(得分:1)

不是一个简单的答案,只是一个proof of concept

使用data driven方法。创建一个数据结构,定义对各个输入字符的预期响应。

DATA = {
    "x": {"var_1": "something"},
    "y": {"var_2": "something else"},
    "z": {"var_1": "something something", "var_2": "some thing"}
}

定义一个函数,根据输入字符串中的各个字符构建所需的输出。

def process(s):
    d = {}
    for c in s:
        if c in DATA:
            d.update(DATA[c])
    return d

使用此功能并处理无输出情况。

d = process("yax")
if len(d) > 0:
    print d
else:
    print "not found"

只是为了灵感。

答案 1 :(得分:0)

如果我理解正确,请告诉我:

s = "xyz"
match = True

while match == True:
    if "x" in s:
        print("X")
    if "y" in s:
        print("Y")
    if "z" in s:
        print("Z")
    else:
        match = False
    match = False # Prevents from looping forever if all conditions met
>>X
>>Y
>>Z

这就是你要找的东西吗?

答案 2 :(得分:0)

也许是这样的:

y(0) = y(1) = 0