2017-12-10 4 views
0

문장에서 각 단어의 첫 글자를 대문자로하고 대문자로 된 글자 수를 반환하라는 질문을 받았다. . 나는 지금까지이 : 난 그냥 편지가 대문자로 된 횟수를 계산하는 방법을 알아 내야나는 파이썬의 문자열 문장에서 글자의 대문자 사용법을 계산하는 방법을 찾고있다.

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

.

+1

이미 대문자 단어를 할인해야 : 입력 문자열이 ß을 포함하는 경우 때문에 예를 들어, 작동하지 않습니다? – schwobaseggl

답변

0

각 줄을 단어로 구분하고 단어가 대문자로되어 있는지 비교합니다.

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) 

편집, 제목을 사용하여 각 문자를 대문자로 변환하는 더 좋은 방법이 있습니다. 다른 문자의 수를 계산

>>> x = 'one two Three four' 

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

그리고 남아있는 유일한 것입니다 :

text_out = text_out.title() 
+0

첫 번째 포스터를 다루고 있습니다. 코드에 약간의 논평을 할 자격이 있겠습니까? – gboffi

0
counter = 0 
for i in range(len(txt)): 
    if txt[i] != txt.title()[i]: 
     counter += 1 
print(counter) 
2

각 단어의 첫 글자를 대문자로하는 표준 라이브러리의 title 기능이 있습니다 원래 문자열과 수정 된 문자열 사이. 이해력 멋지게이 표현할 수 :

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

있습니다, 그러나, 제목의 경우 문자열은 원래 문자열과 같은 길이가있는 경우이 방법은 작동합니다.

>>> 'ß'.title() 
'Ss' 
관련 문제