Код нужно вдумчиво писать, а не просто пробовать len и len-1 потому что так все пишут.
Индексы массивов начинаются с 0. Т.е. первый элемент имеет индекс 0, второй 1 и т.д.
Функция len возвращает количество элементов массива. Следовательно индекс последнего элемента это len(a)-1
Обращение к элементу массива производится по его индексу.
Функция range(start,stop) создает последовательность чисел от start включительно до stop не включительно.
for i in range(0,len(a))
переберет все индексы.
for i in range(1,len(a))
переберет все индексы кроме 0. (т.е. без первого элемента)
В цикле ты получаешь элементы a[i] и a[i+1]. При i == len(a)-1 ты пытаешься получить элемент a[len(a)-1+1] т.е. a[len(a)]. Элемента с таким индексом не существует и
соответственно возникает ошибка list index out of range.
Я так понимаю что ты хочешь протестировать массив на наличие подряд идущих одинаковых чисел. Если использовать a[i] и a[i+1] , то нужно перебирать все элементы кроме последнего. т.е.
for i in range(0,len(a)-1)
У тебя же range начинается с 1. Еще возможен вариант
for i in range(1,len(a))
if(a[i-1] == a[i])
Предположу, что ты просто насобирал кусочки кода по разным местам и теперь пытаешься их соединить. Такие простые задания нужно писать самому, иначе потом будет еще больше проблем.
А еще я понять не могу зачем там умножение на 1?