LINUX.ORG.RU

Баг в Python?

 


0

1

Мне кажется, что результат работы метода count для строк не соответствует документации:

>>> help(str.count)
Help on method_descriptor:

count(...)
    S.count(sub[, start[, end]]) -> int

    Return the number of non-overlapping occurrences of substring sub in
    string S[start:end].  Optional arguments start and end are
    interpreted as in slice notation.

>>> "".count("")
1
>>> "a".count("")
2
>>> "ab".count("")
3
>>> "Привет".count("")
7

Это баг или фича? Складывается впечатление что он ищет '\0' в строке, но находит его у каждой буквы и в конце самой строки. Разве это правильно?

А какой ответ ты ждал? Непересекающихся пустых строк в строке «Привет» действительно 7. Перед первым символом, после последнего символа, и между каждыми двумя соседними символами.

PolarFox ★★★★★
()

ну вообще ожидаемо. Ты требуешь узнать сколько в строке непересекающихся пустых строк. Их там число букв + 1

peregrine ★★★★★
()
Ответ на: комментарий от Archer73

Выглядит странно, что одна буква в Python содержит в себе две пустых строки.

Выглядит странно, что кому-то это понадобилось выяснить.

anonymous
()
Ответ на: комментарий от anonymous

Выглядит странно что кто то не видит в этом всем что то не странное. Я не про удивление а про то как это сделано.

paramon
()

Чем тебя len(str) не радует? Должно быть сами авторы этой функции удивлены такой попытке завернуть саморез при помощи шила

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Archer73

А как нужно?

// Подумал вот, что если грепнуть по лору «нашел баг в [$language|$library]», то, наверное, ~99% будут такие «баги»

cdshines ★★★★★
()
Ответ на: комментарий от Archer73

"" + «a» + "" вот по такому принципу. Про спилы на бревнах выше уже сказали

saibogo ★★★★
()
Ответ на: комментарий от peregrine

ну вообще ожидаемо. Ты требуешь узнать сколько в строке непересекающихся пустых строк. Их там число букв + 1

Вообще говоря, их там произвольное количество.

wandrien ★★
()

Так-то баг. Как можно посчитать то чего нет? Лучшек бы ValueError какой-нибудь вываливался.

In [4]: 'abc'.split('')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-22ba5c7ddddc> in <module>
----> 1 'abc'.split('')

ValueError: empty separator

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: удаленный комментарий

А чего, собственно, не так? В строке 'abc' 4 непересекающихся пустых строки, первая из них начинается с индекса 0. И в самом деле, 'abc'[0:len('')] == ''

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Надо же, я умудрился создать «Ответ на: удаленный комментарий». В первый раз такое вижу.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Да, я уже и сам это понял.

А вот мы заодно и на ЛОРе баг нашли, ты каким-то образом смог ответить на комментарий, мной удалённый. Race conditions, все дела.

С днём программиста, что ли. Когда там день тестера?

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.