This should be easy but somehow I\'m not quite getting it.
My assignment is:
Write a function sentenceCapitalizer that has one parameter of type
You are trying to use a string method on the wrong object; words
is list object containing strings. Use the method on each individual element instead:
words2 = [word.capitalize() for word in words]
But this would be applying the wrong transformation; you don't want to capitalise the whole sentence, but just the first letter. str.capitalize()
would lowercase everything else, including the J
in Joe
:
>>> 'my name is Joe'.capitalize()
'My name is joe'
Limit yourself to the first letter only, and then add back the rest of the string unchanged:
words2 = [word[0].capitalize() + word[1:] for word in words]
Next, a list object has no .join()
method either; that too is a string method:
string2 = '. '.join(words2)
This'll join the strings in words2
with the '. '
(full stop and space) joiner.
You'll probably want to use better variable names here; your strings are sentences, not words, so your code could do better reflecting that.
Together that makes your function:
def sentenceCapitalizer (string1: str):
sentences = string1.split(". ")
sentences2 = [sentence[0].capitalize() + sentence[1:] for sentence in sentences]
string2 = '. '.join(sentences2)
return string2
Demo:
>>> def sentenceCapitalizer (string1: str):
... sentences = string1.split(". ")
... sentences2 = [sentence[0].capitalize() + sentence[1:] for sentence in sentences]
... string2 = '. '.join(sentences2)
... return string2
...
>>> print (sentenceCapitalizer("hello. my name is Joe. what is your name?"))
Hello. My name is Joe. What is your name?