我正在尝试制作一个搜索字符串'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) )
我得到字符串索引超出范围错误,我似乎无法解决它。任何建议
答案 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))