2017-12-10 2 views
0

ich gebeten wurde, in einem Satz den ersten Buchstaben jedes Wortes zu nutzen und die Anzahl der Buchstaben zurück, die aktiviert wurden, . Ich habe das so weit:Ich versuche, herauszufinden, wie zu zählen, wie oft ein Brief in einem String Satz in Python aktiviert wird

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

Ich muss nur herausfinden, wie Sie zählen, wie oft ein Buchstabe großgeschrieben wurde.

+1

Sollten Sie die Worte diskontieren, die bereits aktiviert sind? – schwobaseggl

Antwort

0

Trennen Sie jede Zeile in Wörter, und vergleichen Sie, ob ein Wort groß geschrieben ist und zählen Sie es.

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) 

Bearbeiten, gibt es eine bessere Möglichkeit, jeden Buchstaben, Titel zu verwenden.

text_out = text_out.title() 
+0

Sie sprechen ein Poster zum ersten Mal an, vielleicht verdienen sie einen kleinen Kommentar zu Ihrem Code, nicht wahr? – gboffi

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

Es gibt eine title Funktion in der Standardbibliothek den ersten Buchstaben in jedem Wort zu nutzen:

>>> x = 'one two Three four' 

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

Dann ist die einzige Sache, die übrig bleibt, ist die Anzahl der Zeichen zu zählen, die sich unterscheiden zwischen der ursprünglichen Zeichenfolge und der geänderten Zeichenfolge. Ein Verständnis kann diesen gut ausdrücken:

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

Bitte beachten Sie jedoch, dass dieser Ansatz funktioniert nur, wenn Titel-Fall Zeichenfolge, die die gleiche Länge wie die ursprüngliche Zeichenfolge hat. Zum Beispiel wird es nicht funktionieren, wenn die Eingabezeichenfolge ß enthält, weil:

>>> 'ß'.title() 
'Ss' 
Verwandte Themen