2016-09-06 97 views
0

有人可以帮助我为什么会说:“IndexError:字符串索引超出范围” 当我添加了“letterCount + = 1”的第一否则它使这个错误,不这是工作。Python的IndexError:字符串索引超出范围

目标是计数的“鲍勃” S。

谢谢!

s = 'oobobodobooobobobobabobbobbobobbobbobhbxbobbk' 

vowelCount = 0 
letterCount = 0 
pointer = s 

for pointer in s: 
    print(pointer) 
    if pointer == 'b': 
     print (str(letterCount) + '. betű B') 

     if (s[letterCount+1] + s[letterCount+2]) == str('ob') : 
      vowelCount += 1 
      letterCount += 1 
      print(str(vowelCount) + '. BOB megtalálva') 
     else: 
      print('Nem OB jön utána') 
      letterCount += 1 
    else:  
     print(str(letterCount) + '. betű nem B') 
     letterCount += 1 

print ("Number of times bob occurs is: " + str(vowelCount)) 
+2

你不检查,如果(letterCount + 1)的长度大于len(S),这样你就会越大可能到达数组的末尾,当你获得最新的元素加一 – lapinkoira

+0

's.count(“鲍勃”)得到一个指数误差',对于非重叠发生,http://stackoverflow.com/a/2970542/ 2681632重叠。另外为了将来的参考,使用'for letterCount,枚举中的指针:'如果你需要索引(而不是手动增量)。 –

+0

非常感谢,那就是问题所在! –

回答

0

你需要的东西,如检查字符串s长度:

letterCount+2 <= len(s) 

s = 'oobobodobooobobobobabobbobbobobbobbobhbxbobbk' 

vowelCount = 0 
letterCount = 0 
pointer = s 

for pointer in s: 
    print(pointer) 
    if pointer == 'b': 
     print (str(letterCount) + '. betű B') 

     if (letterCount+2 <= len(s) and (s[letterCount+1] + s[letterCount+2]) == str('ob')) : 
      vowelCount += 1 
      letterCount += 1 
      print(str(vowelCount) + '. BOB megtalálva') 
     else: 
      print('Nem OB jön utána') 
      letterCount += 1 
    else:  
     print(str(letterCount) + '. betű nem B') 
     letterCount += 1 

print ("Number of times bob occurs is: " + str(vowelCount)) 
0

我希望下面的代码会为你工作。

s = 'oobobodobooobobobobabobbobbobobbobbobhbxbobbk' 

vowelCount = 0 

letterCount = 0 

pointer = s 

print len(s) 

for pointer in s: 

    if pointer == 'b': 

     if (len(s) != letterCount+1 and len(s) != letterCount+2): 

      if (s[letterCount+1] + s[letterCount+2]) == str('ob'): 

       vowelCount += 1 

       letterCount += 1 

       print(str(vowelCount) + '. BOB') 

      else: 

       letterCount += 1 
    else: 

     letterCount += 1 


print ("Number of times bob occurs is: " + str(vowelCount)) 

在这个声明中,我使用字符串len来检查字母数。它只会匹配字符串的末尾。

,或者您可以使用枚举检查该单词的LEN字符串中的

 
for i, _ in enumerate(s): #i here is the index, equal to "i in 
range(len(s))"

if s[i:i+3] == 'bob': #Check the current char + the next three chars. bob += 1 print('Number of times bob occurs is: ' + str(bob))
0
The final solution. 

s = 'obbobbbocbobbogboobm' 

vowelCount = 0 
letterCount = 0 
pointer = s 

for pointer in s: 
    print(pointer) 
    if pointer == 'b': 
     print (str(letterCount) + '. betű B') 

     if (len(s)-2 > letterCount):  
      print('van utána két betű') 
      if (s[letterCount+1] + s[letterCount+2]) == str('ob') : 
       vowelCount += 1 
       letterCount += 1 
       print(str(vowelCount) + '. BOB megtalálva') 
      else: 
       print('Nem OB jön utána') 
       letterCount += 1 
     else: 
      print('nincs utána két betű')   
      break 
    else:  
     print(str(letterCount) + '. betű nem B') 
     letterCount += 1 

print ("Number of times bob occurs is: " + str(vowelCount)) 
相关问题