Я пытаюсь понять, как подсчитать, сколько раз буква написана заглавной буквой в строковом предложении в Python.

Меня попросили сделать заглавной первую букву каждого слова в предложении и вернуть количество букв, которые были заглавными. У меня пока так:

text = input('Enter a sample text:\n')
sentence = text.split('.')
    for i in sentence:
        print (i.strip().capitalize()+". ",end='')

Мне просто нужно выяснить, как посчитать, сколько раз буква была заглавной.


person April Post    schedule 10.12.2017    source источник
comment
Следует ли сбрасывать со счетов слова, которые уже написаны с большой буквы?   -  person schwobaseggl    schedule 10.12.2017


Ответы (2)


В стандартной библиотеке есть функция title, которая делает первую букву в каждом слове прописной:

>>> x = 'one two Three four'

>>> x.title()
'One Two Three Four'

Тогда остается только подсчитать количество символов, отличающихся между исходной строкой и измененной строкой. Понимание может выразить это красиво:

>>> sum(1 for (a, b) in zip(x, x.title()) if a != b)
3

Обратите внимание, однако, что этот подход работает только в том случае, если строка в заглавном регистре имеет ту же длину, что и исходная строка. Например, это не сработает, если входная строка содержит ß, потому что:

>>> 'ß'.title()
'Ss'
person Chris Martin    schedule 10.12.2017

Разделите каждую строку на слова и сравните, написано ли слово с заглавной буквы, и подсчитайте его.

text = 'Enter a sample text:'
words = text.split()
count = 0
text_out = ''

for word in words:
    if word != word.capitalize():
        word = word.capitalize()
        count += 1
    text_out = text_out + ' ' + word

text_out = text_out.strip()
print(count)

Отредактируйте, есть лучший способ сделать каждую букву заглавной, используя заголовок.

text_out = text_out.title()
person Manuel    schedule 10.12.2017
comment
Вы обращаетесь к впервые постеру, может быть, они заслуживают небольшого комментария к вашему коду, не так ли? - person gboffi; 11.12.2017