вы не проверяете, соответствует ли ваш индекс размеру вашей строки.
Было бы необходимо добавить условие, которое проверяет, всегда ли значение i меньше строки и что i% 2 == 0 и i == 0, чтобы поместить первый символ в Upper
с i% 2 == 0 мы применим верхнюю букву к двум
for i, __ in enumerate(str1):
if i+1 < len(str1) and i % 2 == 0 or i == 0:
result += str1[i].upper() + str1[i + 1].lower()