我有这段代码,它可以找到字符串中特定字符的最大索引,但是当指定字符不在字符串中时,我希望它引发一个ValueError
。
所以像这样:
contains('bababa', 'k')
会导致:
…ValueError: could not find k in bababa
我该怎么做?
以下是我的函数的当前代码:
def contains(string,char):
list = []
for i in range(0,len(string)):
if string[i] == char:
list = list + [i]
return list[-1]
raise ValueError('could not find %c in %s' % (ch,str))
下面是您的代码的修订版,它仍然有效,并且说明了如何按照您所希望的方式提高} 的容器对象方法,它在成员测试方面做了一些不同的事情。
ValueError
。顺便说一下,我认为find_last()
、find_last_index()
或者simlar之类的东西会是这个函数更具描述性的名称。更令人困惑的是,Python已经有了一个名为^{更新-非常简单的方法
哇!这里有一个更简洁的版本,本质上是一个单行程序,它可能更快,因为它在对第一个匹配字符进行前向搜索之前(通过
[::-1]
)反转字符串,并使用快速内置的字符串index()
方法这样做。关于您的实际问题,使用index()
带来的一个好处是,当找不到字符子字符串时,它已经引发了一个ValueError
,因此不需要额外的东西就可以实现这一点。下面是一个快速的单元测试:
相关问题 更多 >
编程相关推荐