Почему строковый метод istitle () возвращает false, если строка явно в заголовке? - PullRequest
3 голосов
/ 27 июля 2010

Из строкового метода istitle() руководство Python 2.6.5 гласит:

Возвращает true, если строка является строкой в ​​заголовке и в ней есть хотя бы один символ, например, заглавные буквы могут следовать только за непрописанными символами, а строчные - только за прописными. В противном случае верните false.

Но в этом случае возвращается false:

>>> book = 'what every programmer must know'
>>> book.title()
'What Every Programmer Must Know'
>>> book.istitle()
False

Чего мне не хватает?

Ответы [ 4 ]

8 голосов
/ 27 июля 2010

book.title() не меняет переменную book.Он просто возвращает строку в случае заголовка.

>>> book.title()
'What Every Programmer Must Know'
>>> book             # still not in title case
'what every programmer must know'
>>> book.istitle()   # hence it returns False.
False
>>> book.title().istitle()   # returns True as expected
True
7 голосов
/ 27 июля 2010

Метод title () не изменяет строку (строки неизменны в Python). Создается новая строка, которую вы должны присвоить своей переменной:

>>> book = 'what every programmer must know'
>>> book = book.title()
>>> book.istitle()
True
3 голосов
/ 27 июля 2010

Возможно, потому что вы все еще вызываете istitle () в оригинальной книге.

Вместо этого попробуйте book.title (). Istitle () ....

1 голос
/ 27 июля 2010

Выполните следующие действия:

print book

после того, как вы book.title(). Вы увидите, что book не изменилось.

Причина в том, что book.title() создает новую строку. Имя book по-прежнему относится к исходной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...