我正在检查大量的条件(数百个),每个条件看起来像这样:
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
触发。
有解决办法吗?
答案 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