-1

そこで、文字列内の部分文字列の位置を表示するこのプログラムを作成しています。タプルが正常に機能するようになりましたが (希望)、何らかの理由で python から、インデックスが範囲外であるというエラーが表示されます。

Traceback (most recent call last):
  File "prog.py", line 11, in <module>
IndexError: string index out of range

しかし、ご覧のとおり、インデックス作成を評価する直前に len で検証済みです。

sentence = "one two three one four one"
word = "one"

tracked = ()
n = 0
p = 0
for c in sentence:
    if n == 0 and c == word[n]:
        n += 1
        tracked = (p,)
    elif n == len(word) and c == word[n]: #Line 11 is right here
        print(tracked[0], tracked[1])
        tracked = ()
        n = 0
    elif c == word[n]:
        n += 1
        tracked = (tracked[0], p)
    else:
        tracked = ()
        n = 0
    p += 1

これが私の側の別のばかげた間違いである場合は、お詫び申し上げます。

4

3 に答える 3

4

インデックス作成は 0 から始まります。使用する必要があります

elif n == len(word) and c == word[n - 1]:
于 2015-11-16T12:31:29.967 に答える
1

Python の配列はゼロ インデックスです。したがって、次の場合:

a = "Some String"
n = len(a)
a[n]

a の有効なインデックスは [0:n-1] のみであるため、これは無効です。

于 2015-11-16T12:32:24.043 に答える
1

c == word[n] が範囲外になるため、エラーが発生します。

配列は常に 0 から始まるインデックスが付けられるため、これでうまくいくはずです。

c == word[n - 1]
于 2015-11-16T12:38:07.550 に答える