我给了一个字符串,单词和数字之间用空格(一个空格)隔开。单词仅包含字母。我应该检查字符串是否连续包含三个单词 。例如,字符串"start 5 one two three 7 end"
连续包含三个单词,因此它应返回True
。
示例:
checkio("Hello World hello") == True
checkio("He is 123 man") == False
checkio("1 2 3 4") == False
checkio("bla bla bla bla") == True
checkio("Hi") == False
有人可以帮我吗?
答案 0 :(得分:1)
这是将zip
与itertools.islice
结合使用的一种解决方案:
from itertools import islice
def checkio(x):
split = x.split()
for values in zip(split, islice(split, 1, None), islice(split, 2, None)):
if all(i.isalpha() for i in values):
return True
return False
checkio("Hello World 3 hello 2 hello") # False
checkio("Hello 3 World hello hello") # True
更有效地,您可以使用itertools.groupby
:
from itertools import groupby
def checkio(x):
for _, j in groupby(x.split(), key=str.isalpha):
if sum(1 for el in j) == 3:
return True
return False
checkio("Hello World 3 hello 2 hello") # False
checkio("Hello 3 World hello hello") # True
答案 1 :(得分:1)
您可以为此使用正则表达式。
import re
bool(re.search(r'\b[a-z]+\s+[a-z]+\s+[a-z]+\b', 'test test 1 test', re.IGNORECASE))