смотри магию
print(i) < нормальный код
print(a[i-1]) < говно-кода
Причина
a = [0=1, 1=2, 2=3, 3=4, 4=5, 5=6, 6=7, 7=8, 8=9]
Объяснение
Запрос к массиву без его перебора начинается с 0
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[0])
Любитель фурри прав, в питоне конструкция for ... in итерирует по элементам, а не по их индексам (в отличие от Javascript, где наоборот).
Я бы ещё в коде переменную i переименовал, чтобы не вводила в заблуждение, и написал бы, например, for x in a:<LF><TAB>print(x)
a Ты подставляешь в качестве индекса сам элемент. Индекс 1 соответствует второй позиции в массиве.
т.е. по циклам:
первый цикл i = 1
ты печатаешь элемент с индексом 1 (это двойка)
поскольку индексация идет с нуля на девятке у тебя out of index.
Чтобы распечатать массив тебе просто надо было
for i in a:
____print(i)