所以,假设我有一个字符串,' string ',我知道字符串的长度,' length '。我想检查一个长度相同的单词“ checkfor ”是否在 string 中。 我知道要这样做我可以使用:
if(string[0:length-1]==checkfor):
Return True
但我也想检查字符串是否位置错误,例如让 checkfor = iwantpie length = 8。如果 string 是'iwantpie'或'wantpiei'或'antpieiw'等,我想返回True。 我知道我可以使用如下声明:
if((string[0:length-1] or string[length-1]+string[0:length-2] or string[length-2:length-1]+string[0:length-3] or ... or string[length-length:length-1])==checkfor):
Return True
其中......表示重复相同的模式。这就像使字符串循环并检查子字符串。 显然,随着长度的增加,这变得很麻烦。 有没有办法巩固可能与for循环?
写这个我找到了一个可能的解决方案,但它可能不是最好的,如果有一个for循环解决方案,我想不管怎么看。
答案 0 :(得分:1)
像
这样的东西>>> def checkOccurence(string, checkfor):
... for i in range(len(string)):
... if string[i:]+string[:i] == checkfor:
... return True
... return False
...
<强>测试强>
>>> string = "antpieiw"
>>> checkfor = "iwantpie"
>>> checkOccurence(string, checkfor)
True
>>> checkfor = "iwantpie234"
>>> checkOccurenct(string, checkfor)
False
答案 1 :(得分:0)
make string = string + string ,然后检查 checkfor 作为子字符串。解析已经回答的子串有很多问题,所以我会让你找到那些。