Все остальные ответы, и в основном о понимании списка, великолепны. Но просто чтобы объяснить вашу ошибку:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
aявляется членом вашего списка, а не индексом. Вы могли бы написать вот что:
[...]
for a in lines:
strip_list.append(a.strip())
Еще один важный комментарий: пустой список можно создать следующим образом:
strip_list = [0] * 20
Но это не так полезно, как .append добавляет то в ваш список. В вашем случае бесполезно создавать список со значениями по умолчанию, так как вы будете создавать его элемент для каждого элемента при добавлении разделенных строк.
Итак, ваш код должен быть таким:
strip_list = []
for a in lines:
strip_list.append(a.strip())
Но, безусловно, лучший - это этот, потому что это одно и то же:
stripped = [line.strip() for line in lines]
Если у вас есть что-то более сложное, чем просто a .strip, поместите это в функцию и сделайте то же самое. Это наиболее удобный способ работы со списками.
strip_list19 раз, а затем добавляете зачеркнутые строки. От этого кода очень плохо пахнет. Кроме того, если вы получили этот материал из файла, вы должны удалить его по пути - создание большого списка, а затем вставка его в другой большой список - не лучшая идея. Также 2, ваш код не должен зависеть от знания длины самого длинного слова / строки. Сделайте шаг назад - чего вы пытаетесь достичь? Что ты будешь делатьstrip_list?