for循环中字符串索引超出范围错误

时间:2016-09-20 18:24:21

标签: python python-3.x

我正在尝试制作一个搜索字符串'bob'的程序并打印它出现的次数。 这是代码:

s = 'mbobobboobooboo'
numbob = 0
for i in range(len(s) ) :
    u = s[i] 
    if u == 'o':
        g = i
        if g != 0 and g != len(s) :
            if (s[g+1]) == 'b' and (s[g-1]) == 'b': #this line is the problam
                numbob += 1
                print("Number of times bob occurs is: " +str(numbob) )

我得到字符串索引超出范围错误,我似乎无法解决它。任何建议

3 个答案:

答案 0 :(得分:1)

使用

for i in range(len(s)-1) 

g!=len(s)-1

len()为您提供字符总数,这是自索引从0开始以来最后一个字符的索引。

如果你使用

,你可以一起摆脱if g!=0 and g!=len(s)部分
for i in range(1,len(s)-1)

答案 1 :(得分:0)

当你成功的时候:

if (s[g+1]) == 'b' and (s[g-1]) == 'b':

在字符串的最后一个元素中,不可能s[g+1],因为它不在字符串中。

所以你必须在结束前完成你的循环。像这样的例子:

for i in range(len(s)-1) :

答案 2 :(得分:0)

我的解决方案比您更容易。而不是将字母'b''o''b'分开。切片字符串 s

countbob=0
bob='bob'
for i in range(len(s)):
       bob2=s[i:i+3]
       if bob2 == bob:
               countbob +=1
print ("Number of times bob occurs is: " + str(countbob))