Подтвердить что ты не робот

Почему "www".count( "ww" ) возвращает 1, а не 2?

В моем коде:

>> s = 'abacaba'
>> s.count('aba')
>> 2

Для приведенного выше кода я получаю правильный ответ, так как "aba" встречается 2 раза в строке s.

Но для следующего случая:

>> s = 'www'
>> s.count('ww')
>> 1

В этом случае я ожидаю, что s.count('ww') вернет 2. Но он возвращает 1.

Почему?

4b9b3361

Ответ 1

Прочитайте docs:

Возвращает число (неперекрывающихся) вхождений подстроки sub в строке s[start:end]. Значения по умолчанию для начала и конца и интерпретации отрицательных значений такие же, как для срезов.

Поскольку "ww" сначала согласовывается, оно исходит из третьего "w" и не соответствует "ww".

Ответ 2

string.count(s, sub[, start[, end]]):

Возвращает число (неперекрывающихся) вхождений подстроки sub в строке s [начало: конец]. Значения по умолчанию для начала и конца и интерпретации отрицательных значений такие же, как для срезов.

источник: https://docs.python.org/2/library/string.html

Ответ 3

Просто попробуйте подумать, как:

В этом слове: "abacaba", сколько неперекрывающихся "aba" слов вы видите? Я вижу 2. И я также вижу "c".

В этом слове: "www", сколько неперекрывающихся "ww" слов вы видите? Я вижу 1. И я также вижу "w".

Для лучшего объяснения подумайте, что вы удаляете экземпляр, когда видите.

Для "abacaba" вы видите "aba" и удаляете его. теперь есть "каба", вы снова видите "aba" и удаляете его. теперь вы получаете только "c". вы видите "aba" два раза. То же самое для "www", вы видите "ww" один раз и удаляете его. теперь вы видите только "w". вы видели только "ww" только.

Это имеет смысл.