2017-08-13 15 views
-3

文字列内の次の文字を比較したい場合は、それらが等しい場合はカウンタを上げます。 私のコード例では、Line 6に関連するTypErrorsが常に発生します。 問題はどこにあるのですか?Pythonの文字列の文字の比較

ありがとうございました!

def func(text): 
    counter = 0 
    text_l = text.lower() 

    for i in text_l: 
     if text_l[i+1] == text_l[i]: 
      print(text_l[i+1], text_l[i]) 
      counter += 1 

    return counter 
+0

'for i in text_l:'は、_individual characters_を反復するので、 'it(i)== str'の各反復で繰り返されます。 – ForceBru

答えて

2

iない指標です。 forは要素を直接反復処理しますので、i文字であり、の整数はではありません。

for i in range(len(text_l) - 1): # i is the current index 
    if text_l[i + 1] == text_l[i]: 

あなたが使用することもできenumerate:あなたがインデックスしたい場合range関数を使用いずれの場合も

for i, c in enumerate(text_l[:-1]): # i is the current index, c is the current char 
    if text_l[i + 1] == c: 

を、あなたは、あなたがヒットしますので、最後から二番目の文字まで反復することをお勧めします最後の反復でIndexErrori + 1i + 1が最後の文字の範囲外です。

+0

「i + 1」が境界を越えてしまうので、このコードにはバグがあります。 – ForceBru

+0

@ForceBruありがとう!一定。 –

+0

ハハ、そう簡単。ありがとう! – user3714215