Мне нужно создать функцию, которая передает несколько списков и возвращает строку для печати - PullRequest
3 голосов
/ 18 июня 2020

Мне нужно создать функцию, которая передает несколько списков и возвращает строку для печати. Честно говоря, я даже не знаю, иду я в правильном направлении или нет.

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 'The ' + str(len(wordlist)) + ' sight words for this week are ' + wordlist + '.'
    elif len(wordlist) == 1:
        return 'The only sight word for this week is' + wordlist + '.'
    elif len(wordlist) == 0:
        return 'There are no new sight words for this week!'

print(createSentence(wordlist))

Также я думаю, что мои списки действительно должны выглядеть так

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

Но я не знаю, как им передать их в функцию

Ответы [ 3 ]

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

Я думаю, вы можете преобразовать список в строку, используя функцию соединения.

(','). Join (список слов)

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


def createSentence(wordlist):
    if len(wordlist) > 1:
        return 'The ' + str(len(wordlist)) + ' sight words for this week are ' + (' ,').join(wordlist)  + '.'
    elif len(wordlist) == 1:
        return 'The only sight word for this week is' + (' ,').join(wordlist) + '.'
    elif len(wordlist) == 0:
        return 'There are no new sight words for this week!'

Вывод для 2-й недели: 'The 7 sight words for this week are new ,barn ,shark ,hold ,art ,only ,eyes.'

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

Я бы предложил использовать другой подход, создав структуру данных для ваших данных - в данном случае словарь:

wordlists = {
    'week 2': ['new', 'barn', 'shark', 'hold', 'art', 'only', 'eyes'],
    'week 5': ['subtract', 'add'],
    'week 10': ['girl', 'house', 'best', 'thing', 'easy', 'wrong', 'right', 'again', 'above'],
    'week 13': ['question'],
    'week 17': [],
}

def createSentence(week):
        wordlist = wordlists[week]

        length = len(wordlist)

        if length > 1:
            return "The {} sight words for {} are: {}.".format(length, week, ", ".join(wordlist))

        if length == 1:
            return "The only sight word for {} is: {}.".format(week, ", ".join(wordlist))

        return "There are no new sight words for {}!".format(week)

for week in wordlists:
    print(createSentence(week))

OUTPUT

> python3 test.py
The 7 sight words for week 2 are: new, barn, shark, hold, art, only, eyes.
The 2 sight words for week 5 are: subtract, add.
The 9 sight words for week 10 are: girl, house, best, thing, easy, wrong, right, again, above.
The only sight word for week 13 is: question.
There are no new sight words for week 17!
> 
0 голосов
/ 18 июня 2020

Вот так:

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 {", ".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))

Вывод:

The 7 sight words for this week are new, barn, shark, hold, art, only, eyes.
The 2 sight words for this week are subtract, add.
The 9 sight words for this week are girl, house, best, thing, easy, wrong, right, again, above.
The only sight word for this week is question.
There are no new sight words for this week!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...