1

我正在这个网站上练习我的 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
4

2 回答 2

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
于 2013-05-27T17:43:34.950 回答
3

查看是否存在xyz不属于其中的一种方法.xyz是计算 s 的数量xyz,计算 s 的数量.xyz,然后查看第一个是否比第二个多。例如:

def xyz_there(s):
    return s.count("xyz") > s.count(".xyz")

它通过了网站上的所有测试。

于 2013-05-27T17:49:51.433 回答