我在website上练习我的python编码。这是问题
Return True if the given string contains an appearance of "xyz" where the xyz is
not directly preceeded by a period (.). So "xxyz" counts but "x.xyz" does not.
xyz_there('abcxyz') → True
xyz_there('abc.xyz') → False
xyz_there('xyz.abc') → True
这是我的代码,由于某些未知原因,我没有通过所有的测试用例。我在调试时遇到问题
def xyz_there(str):
counter = str.count(".xyz")
if ( counter > 0 ):
return False
else:
return True
答案 0 :(得分:4)
网站似乎不允许import
,所以最简单的可能是:
'xyz' in test.replace('.xyz', '')
否则,您可以在断言后使用带有负面外观的正则表达式:
import re
tests = ['abcxyz', 'abc.xyz', 'xyz.abc']
for test in tests:
res = re.search(r'(?<!\.)xyz', test)
print test, bool(res)
#abcxyz True
#abc.xyz False
#xyz.abc True
答案 1 :(得分:3)
查看xyz
是否属于.xyz
的一种方法是计算xyz
的数量,计算.xyz
的数量,然后看看是否有更多的第一个而不是第二个。例如:
def xyz_there(s):
return s.count("xyz") > s.count(".xyz")
通过了网站上的所有测试。