簡體   English   中英

使用 python 編程語言在句子中大寫或連接單詞的程序

[英]program to capitalize or join words in a sentence using python programming language

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

可能的解決方案!

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(' '))))

這是一個簡單但有效的解決方案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM