См. Asnwer Харшала Пареха , он обеспечивает лучший анализ и объяснение.
Когда вы перебираете строку, вы перебираете не индексы, а над самими буквами. Быстрое решение для этого может быть:
def count_hi(string):
num_hi = []
# for every index in string , if the character is h and the next is i, add element to list
for index, _character in enumerate(string):
if index == len(string) - 1:
break # on the last one, you'd get an index error.
if string[index] == 'h' and string[index + 1] == 'i': # "and", not "AND"
num_hi.append('hi found')
return len(num_hi) # return length of list