Python的IndexError:字符串索引超出范围
问题描述:
有人可以帮助我为什么会说:“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))
答
你需要的东西,如检查字符串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))
答
我希望下面的代码会为你工作。
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))
答
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))
你不检查,如果(letterCount + 1)的长度大于len(S),这样你就会越大可能到达数组的末尾,当你获得最新的元素加一 – lapinkoira
's.count(“鲍勃”)得到一个指数误差',对于非重叠发生,http://*.com/a/2970542/ 2681632重叠。另外为了将来的参考,使用'for letterCount,枚举中的指针:'如果你需要索引(而不是手动增量)。 –
非常感谢,那就是问题所在! –