2012-02-15 5 views
3

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

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

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

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

ответ

5

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

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

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

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

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

В качестве примера:

'||'.join(['eggs','and','ham']) 
# returns 'eggs||and||ham' 
+0

Большое спасибо! Я застрял, и этот вход очень помог! – Linseykathleen

1

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

+0

Спасибо, тоже! Очень полезно - у меня есть это сейчас! – Linseykathleen

2

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

>>> 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(), чтобы получить требуемую мощность.

+0

Спасибо вам тоже. Очень полезный пример! – Linseykathleen

Смежные вопросы