2016-09-20 5 views
-1

'bob'の文字列を検索して表示される時間を表示するプログラムを作成しようとしています。文字列インデックスが範囲外ですforループでエラーが発生しました

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

s.count( 'bob')を探していますか? – Leo

+1

これは次のようなものです:http://stackoverflow.com/questions/1155617/count-occurrence-of-a-character-in-a-string これは、あなたがしていることをはるかに良い方法を提供しますやって:) – Kieran

+0

'' bobob'.count( 'bob')== 1'であり、2つではないことに注意してください。 – BallpointBen

答えて

1

使用

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

または

g!=len(s)-1 

len()はあなたのインデックスは0

から始まるので、最後の後の文字のインデックスになります文字の合計数を、提供します

01を使用すると、 if g!=0 and g!=len(s)部分を一括で取り除くことができますあなたの条件にする
for i in range(1,len(s)-1) 
+0

それは働いた!速い答えをありがとう、私は十分にそれをストレスにすることはできません –

+1

@ sudomakeinstall2編集ありがとう。今はもっと良く見えます。 :) – SilentLupin

0

:それは文字列の外にあるので、あなたの文字列の最後の要素で

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

は、s[g+1]を行うことは不可能です。

最後にループを終了する必要があります。このようにexemple:

for i in range(len(s)-1) : 
関連する問題