0

如何仅使用一个 if 语句并根据每个条件包含所有这些条件以及 i++?(使用 & 或等)??

def validator_fn(value):
i=0
if re.search(r'experience',value.casefold()):
    i+=1
if re.search(r'programmer',value.casefold()):
    i+=1
if re.search(r'computer',value.casefold()):
    i+=1
if re.search(r'work',value.casefold()): #skill
    i+=1
if re.search(r'skill',value.casefold()):
    i+=1
if re.search(r'work',value.casefold()):
    i+=1
return i
4

4 回答 4

3

创建一个循环:

def validator_fn(value):
    i = 0
    for s in [r'experience', r'programmer', r'computer', ...]:
        if re.search(s, value.casefold()):
            i += 1
    return i
于 2020-06-20T19:54:56.190 回答
2

一次应用所有这些;i只是返回的数量True

def validator_fn(value):
    v = value.casefold()
    search_terms = ['experience', 'programmer', 'computer', 'work', 'skill', 'work']
    return sum(re.search(x, v) is not None for x in search_terms)

总和有效,因为和True == 1是的子类。False == 0boolint

于 2020-06-20T19:55:12.263 回答
0

你可以做

if re.search('experience|programmer|computer|work|skill',value.casefold()):
    i+=1

您可以使用|("or") 分隔要搜索的模式。

于 2020-06-20T19:53:52.060 回答
0

您只是为每个匹配的值求和 1,因此可以执行以下操作:

def validator_fn(value):
    v = value.casefold()
    return sum([1 if re.search(pat, v) else 0
               for pat in ['experience', 'programmer', 'computer',
                           'work', 'skill', 'work']])
于 2020-06-20T21:06:57.260 回答