0

Итак, я делаю эту программу для отображения позиций подстроки в строке. У меня есть кортежи работает нормально сейчас (я надеюсь), но по какой-то причине питон дает мне ошибку говоря мой индекс находится вне диапазона:Python говорит, что строковый индекс выходит за пределы диапазона, когда я проверил, что это не

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

Но, как вы можете видеть, я уже проверил это с лена прямо перед он рассчитывает индексирование:

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 

Приносим свои извинения, если это еще одна глупая ошибка с моей стороны.

+0

Ваша ошибка не в строке 11 в файле. Отправьте весь файл, чтобы ваше сообщение об ошибке соответствовало правильной строке. – mikeb

+0

@mikeb Это весь скрипт – warspyking

+0

#Line 11 слово [n] всегда слово [len (word)], но последний индекс всегда len [word] -1 – Oleg

ответ

4

индексация начинается с 0, то нужно использовать

elif n == len(word) and c == word[n - 1]: 
+0

На самом деле мне нужно было '' 'n == len (word) -1''', но спасибо :) – warspyking

+0

И с другим небольшим редактированием я, наконец, закончил свой скрипт, и он отлично работает. Спасибо: D Будет принимать через 3 минуты! – warspyking

1

Массивы в Python равны нулю индексируются. Там передний, если у вас есть:

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

Это является недопустимым, так как только действительных индексов а являются [0: п-1]

1

ошибка происходит потому, что с == слово [п] выходит из ассортимент.

Массивы всегда индексируются, начиная с 0, поэтому это следует сделать трюк:

c == word[n - 1] 

 Смежные вопросы

  • Нет связанных вопросов^_^