Вы получаете индекс вне границ из-за j
. Итак, допустим, что string
равно WowWowWow
, а sub_string
равно ow
. Поэтому, когда вы находитесь в 4. l oop, ваш i = 3
, так что вы уже проверили Wow
и нашли один экземпляр sub_string
. Но в этом случае ваш j=2
увеличился на единицу, когда вы нашли первый o
, а затем снова, когда вы нашли первый нижний регистр w
. Но Ваш sub_string
не имеет значения по индексу [2]
. Таким образом, ваш sub_string[j]
выходит за пределы. Я надеюсь, что все ясно.
Лучшим решением было бы использовать
counter = string.count(sub_string)
print(counter)
или
print(string.count(sub_string))