компактный, если l oop python - PullRequest
       5

компактный, если l oop python

0 голосов
/ 01 февраля 2020

Я хочу вернуть эти результаты с определением в Python:

title_case('a clash of KINGS', 'a an the of') # should return: 'A Clash of Kings'
title_case('THE WIND IN THE WILLOWS', 'The In') # should return: 'The Wind in the Willows'
title_case('the quick brown fox') # should return: 'The Quick Brown Fox'

решение может быть таким:

def title_case(title, minor_words=''):
    title = title.capitalize().split()
    minor_words = minor_words.lower().split()
    return ' '.join([word if word in minor_words else word.capitalize() for word in title])

Я не могу понять последнюю строку. Из этого я получаю следующее: если слово находится в minor_words, присоединяйтесь к minor_words ==>, что не то, что мы хотим. мы хотим присоединиться к 'title'

, второй вопрос о первой строке этого решения. почему там = ''? Я попытался написать "minor_words" с этим и без него, и результат был одинаковым.

1 Ответ

1 голос
/ 01 февраля 2020

если слово находится в 'minor_words', присоединиться к 'minor_words'

Нет, это не то, что это значит.

word if word in minor_words означает, что если word находится в minor_words, мы присоединяемся к word (это слово из title).

else word.capitalize() означает, что если word равно , а не в minor_words, мы присоединяем заглавное слово.

почему существует =''?

Это обеспечивает значение по умолчанию для параметра minor_words. В последнем примере, где вы вызываете функцию только с одним аргументом:

title_case('the quick brown fox')

, это эквивалентно:

title_case('the quick brown fox', '')

Без значения по умолчанию вы получите ошибку, что недостаточно аргументов были предоставлены.

...