Как добавить слово 'и' в возвращаемый список строк - PullRequest
2 голосов
/ 20 июня 2020

Я получаю правильный ответ:

Мне нужно, чтобы мой выход выглядел так:

Семь ключевых слов на этой неделе - новые, сарай, акула, держись , только, арт, и глаза. Два основных слова на этой неделе - вычесть, и добавить. 9 ключевых слов на этой неделе: девушка, дом, лучшее, вещь, легкий, неправильный, правильный, снова, и выше. Единственное заглавное слово на этой неделе - вопрос. На этой неделе нет новых прицельных слов!

, но меня интересует «и» перед последним словом, которое нужно добавить в ответ. Это уместно?

Это код:

wordlist = [['new', 'barn', 'shark', 'hold', 'art', 'only', 'eyes'],
            ['subtract', 'add'],
            ['girl', 'house', 'best', 'thing', 'easy', 'wrong', 'right', 'again', 'above'],
            ['question'],
            []]

def createSentence(wordlist):
    if len(wordlist) > 1:
        wordlist[-1] = "and " + wordlist[-1]
        return f'The {len(wordlist)} sight words for this week are {", ".join(wordlist)}.'
    elif len(wordlist) == 1:
        return f'The only sight word for this week is {wordlist[0]}.'
    elif len(wordlist) == 0:
        return 'There are no new sight words for this week!'

for lst in wordlist:
    print(createSentence(lst))

Ответы [ 3 ]

1 голос
/ 20 июня 2020

Вы можете соединить первые n-1 элементы с , и добавить and nth element в конце:

if len(wordlist) > 1:
    return f'The {len(wordlist)} sight words for this week are {", ".join(wordlist[:-1])} and {wordlist[-1]}.'

, чтобы вам не нужно было вручную добавлять and перед последним словом в ваших списках ввода.

1 голос
/ 20 июня 2020

При обработке более одного элемента списка просто необходимо объединить все, кроме наименьшего элемента, с помощью ',', а затем добавить последний элемент:

wordlist = [['new', 'barn', 'shark', 'hold', 'art', 'only', 'and eyes'],
            ['subtract', 'and add'],
            ['girl', 'house', 'best', 'thing', 'easy', 'wrong', 
             'right', 'again', 'and above'],
            ['question'],
            []]

def createSentence(wordlist):
    if len(wordlist) > 1:
        return (f'The {len(wordlist)} sight words for this week are'
                f' {", ".join(wordlist[:-1])} {wordlist[-1]}.')
    elif len(wordlist) == 1:
        return f'The only sight word for this week is {wordlist[0]}.'
    elif len(wordlist) == 0:
        return 'There are no new sight words for this week!'

for lst in wordlist:
    print(createSentence(lst))

Вывод:

The 7 sight words for this week are new, barn, shark, hold, art, only and eyes.
The 2 sight words for this week are subtract and add.
The 9 sight words for this week are girl, house, best, thing, easy, wrong, right, again and above.
The only sight word for this week is question.
There are no new sight words for this week!

Если вы не хотите добавлять 'and ' к своим входным данным, поместите его (включая запятую) в строку формата:

wordlist = [['new', 'barn', 'shark', 'hold', 'art', 'only','eyes'],
            ['subtract', 'add'],
            ['girl', 'house', 'best', 'thing', 'easy', 'wrong', 'right', 'again','above'],
            ['question'],
            []]

def createSentence(wordlist):
    if len(wordlist) > 1:
        return (f'The {len(wordlist)} sight words for this week are ' 
                f'{", ".join(wordlist[:-1])}, and {wordlist[-1]}.')
    elif len(wordlist) == 1:
        return f'The only sight word for this week is {wordlist[0]}.'
    elif len(wordlist) == 0:
        return 'There are no new sight words for this week!'

for lst in wordlist:
    print(createSentence(lst))

, чтобы получить тот же результат, что и выше.

Для этого вы используете нарезку списка. Дополнительная информация: Обозначение среза

0 голосов
/ 20 июня 2020

Похоже, вы хотите добавить "and " в начало вашего последнего элемента в вашем массиве / списке, но только если у вас более 1 слова.

Python имеет очень простой способ получить последний элемент массива / списка.

wordlist[-1]

чтобы добавить перед ним «и»:

wordlist[-1] = "and " + wordlist[-1]

Ваш окончательный код должен выглядеть следующим образом

def createSentence(wordlist):
    if len(wordlist) > 1:
        wordlist[-1] = "and " + wordlist[-1]
        return f'The {len(wordlist)} sight words for this week are {", ".join(wordlist)}.'
    elif len(wordlist) == 1:
        return f'The only sight word for this week is {wordlist[0]}.'
    elif len(wordlist) == 0:
        return 'There are no new sight words for this week!'
...