获取IndexError:字符串索引超出范围

时间:2016-09-08 03:11:10

标签: python

我不确定为什么我会得到

  

IndexError:字符串索引超出范围

使用此代码。

s = 'oobbobobo'
a = 0
for b in range(len(s)-1):
    if (s[b] == 'b') and (s[b+1] == 'o') and (s[b+2] == s[b]):
        a += 1
    elif (s[b] == 'b') and (s[b+1] == 'o') and None:
        break 

print("Number of times bob occurs is: ", a)

我认为elif语句可以解决错误,所以我输了。

1 个答案:

答案 0 :(得分:3)

在这种情况下,s的长度为9,这意味着您循环range(8),因此b的最高值为7(和我在一起,我会带着这个... ...

b = 7(在循环的最后一次迭代中)时,正在检查if语句中的条件表达式,其中包含:

(s[b+2] == s[b])

好吧,因为b = 7b + 2 = 9,但s[9]将超出界限(请记住,python是0索引,因此长度为9的字符串中的最高索引是8)。

我猜这个修复只是修改range语句:

for b in range(len(s)-2):
    ...