Home > database >  program to capitalize or join words in a sentence using python programming language
program to capitalize or join words in a sentence using python programming language

Time:09-13

def capitalize_or_join_words(sentence):
    """
    If the given sentence starts with *, capitalizes the first and last letters of each word in the sentence,
    and returns the sentence without *.
    Else, joins all the words in the given sentence, separating them with a comma, and returns the result.

    For example:
    - If we call capitalize_or_join_words("*i love python"), we'll get "I LovE PythoN" in return.
    - If we call capitalize_or_join_words("i love python"), we'll get "i,love,python" in return.
    - If we call capitalize_or_join_words("i love    python  "), we'll get "i,love,python" in return.

    Hint(s):
    - The startswith() function checks whether a string starts with a particualr character
    - The capitalize() function capitalizes the first letter of a string
    - The upper() function converts all lowercase characters in a string to uppercase
    - The join() function creates a single string from a list of multiple strings
    """
    if (sentence.startswith('*')):
        list_sentence = ','.split(sentence)
        list_car = []
        list_sentence.pop(0)
        for i in range(0,len(list_sentence),1):
            list_car = ','.split(list_sentence[i])
            for i in range(0,len(list_car),1):
                if (i == 0 or i == len(list_car[i])):
                    list_car[i].upper()
            list_car = ''.join(list_car) 
        sac = ' '.join(list_sentence)
        return sac              
    else:
        sentence =  ','.join(sentence)
        return sentence 

CodePudding user response:

Possible Solution!

def capitalize_or_join_words(sentence):
    """
    If the given sentence starts with *, capitalizes the first and last letters of each word in the sentence,
    and returns the sentence without *.
    Else, joins all the words in the given sentence, separating them with a comma, and returns the result.

    For example:
    - If we call capitalize_or_join_words("*i love python"), we'll get "I LovE PythoN" in return.
    - If we call capitalize_or_join_words("i love python"), we'll get "i,love,python" in return.
    - If we call capitalize_or_join_words("i love    python  "), we'll get "i,love,python" in return.
    """
    if sentence.startswith('*'):
        sentence = sentence[1:]
        return ' '.join(
            list(
                map(
                    lambda x: x.upper() if len(x) == 1 else x[0].upper()   x[1:-1]   x[-1].upper(), 
                    sentence.split()
                )
            )
        )
    else:
        return ','.join(list(filter(lambda x: x != '', sentence.split(' '))))

CodePudding user response:

Here's a simplistic but effective solution:

def capitalize_or_join_words(sentence):
    if sentence.startswith('*'):
        tokens = []
        for word in sentence[1:].split():
            if len(word) < 3:
                tokens.append(word.upper())
            else:
                tokens.append(word[0].upper()   word[1:-1]   word[-1].upper())
        return ' '.join(tokens)
    return ','.join(sentence.split())

print(capitalize_or_join_words('i love python'))
print(capitalize_or_join_words('*i love python'))

Output:

i,love,python
I LovE PythoN
  • Related