Необходим пример функции длины слова Python - PullRequest
4 голосов
/ 15 февраля 2012

У меня небольшие проблемы с домашней работой.Я должен был написать функцию «limitWords», которая ограничивает ввод до двадцати слов и усекает ввод до 20 слов, если это более 20 слов.

Я использовал «len (text.split ())» в качестве средства для подсчета слов, так что 20 или менее часть работает, но я не знаю, как обрезать ввод, не меняя его насписок из двадцати слов.

Я не знаю, правильно ли я выполнил первую часть своего оператора if, но было бы полезно ввести второй бит.Я не ищу копию и вставьте ответ - было бы предпочтительным объяснение или пример, который похож.Спасибо!

totalwords = len(text.split())
if totalwords <= 20:
    return text

Ответы [ 3 ]

7 голосов
/ 15 февраля 2012

Я думаю, что подход со списком вполне жизнеспособен - вы уже почти там.

Ваш text.split() уже производит массив слов, поэтому вы можете сделать:

words = text.split()
totalwords = len(words)

Затем вы можете выбрать первые 20, как вы говорите (если слов слишком много), и снова объединить массив.

Чтобы присоединиться, посмотрите на str.join .

Как пример:

'||'.join(['eggs','and','ham'])
# returns 'eggs||and||ham'
2 голосов
/ 15 февраля 2012

Здесь нет проблем с использованием списков.Вы можете сделать что-то вроде

>>> st = "abc def ghi"
>>> words = st.split()
>>> words
['abc', 'def', 'ghi']
>>> if len(words)>2:
...     print " ".join(words[:2])
...
abc def

. В приведенном выше случае пределом слова является 2, и я использовал List Slicing и str.join(), чтобы получить требуемый вывод.

1 голос
/ 15 февраля 2012

Предполагая, что split() работает так, как вы хотите, почему бы не объединить первые 20 элементов в строку и не вернуть ее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...