Всегда старайтесь свести к минимуму ваш код, чтобы показать только вашу ошибку. В вашем случае ошибка появляется в строке
y = len(hold_word[i])
Сбор материала, необходимого для того, чтобы все здесь было определено, дает вам следующее:
note_text = "Some example line\n" #I have no idea what your input might look like
hold_word = note_text.split()
word_count = len(note_text.split())
while i <= word_count:
y = len(hold_word[i])
i=i+1
Это весь код, необходимый для воспроизведения твоя ошибка! Теперь пришло время проверить сообщение об ошибке: **IndexError: list index out of range**
, поэтому кажется, что индекс i
для доступа к списку становится слишком большим. На минимальном примере мы можем быстро определить, какое наибольшее возможное значение i
, поскольку i<=word_count
и word_count = len(note_text.split())
, наибольшее значение i
равно len(note_text.split())
, но самый большой индекс в списке равен len(note_text.split()) - 1
, поэтому поменяйте ваше состояние, чтобы убедиться, что индекс всегда меньше, чем длина:
note_text = "Some example line\n"
hold_word = note_text.split()
word_count = len(note_text.split())
while i < word_count: #Note, now < instead of <=
y = len(hold_word[i])
i=i+1
Примечания :
1) Не делайте Повторите, вы делаете note_text.split()
дважды, лучше напишите:
hold_word = note_text.split()
word_count = len(hold_word)
2) Насколько я вижу, вы используете i
только для доступа к списку по индексу, так что вы можно изменить while
l oop на a для l oop:
for word in hold_word
, а затем использовать word
вместо hold_word[i]