2014-10-24 10 views
0

Довольно Noobie, но я пытаюсь написать функцию, которая выводит все множественное число слов в списке словПечать множественные из списка

Так результат будет:

>>> printPlurals(['computer', 'computers', 'science,', 'sciences']) 
computers 
sciences 

и это что у меня до сих пор, но я не получаю никаких результатов. Любая помощь будет большой. ти.

def printPlurals(list1): 
    plural = 's' 

    for letter in list1: 
     if letter[:-1] == 's': 
      return list1 
+1

'print (letter)' вместо 'return list1' – inspectorG4dget

+0

ничего не распечатывать @ inspectorG4dget – yummyyenni

+1

Я забыл упомянуть, что вы также должны изменить' if letter [: - 1] 'to' if letter [-1] '(обратите внимание на отсутствующий ':') – inspectorG4dget

ответ

1

Вы действительно близко, но вы смешиваете несколько вещей вверх. Для начала вам не нужно иметь переменную plural. Вы все равно не используете его. Во-вторых, с точки зрения именования, не имеет значения, что вы назвали переменную letter так же, как и у вас, но это означает, что, может быть, вы думаете, что перебираете буквы. Поскольку вы на самом деле перебираете членов списка list1, вы рассматриваете слово на каждой итерации. Наконец, вы не хотите возвращать список. Вместо этого, я думаю, вы хотите напечатать подтвержденное слово в s. Попробуйте следующее. Удачи!

def print_plurals(word_list): 
    for word in word_list: 
     if word[-1] == 's': 
      print word 

В случае, если вы заинтересованы в этом что-то более интересное (или «Pythonic», возможно), вы можете сформировать список множественных через список понимание следующий образом:

my_list = ['computer', 'computers', 'science', 'sciences'] 
plural_list = [word for word in my_list if word[-1]=='s'] 
+0

Спасибо большое! У меня были проблемы, пытаясь выделить каждую букву – yummyyenni

0

Один лайнер способ сделать это

def printPlurals(list1): 
    print [word for word in list1 if word[-1]=='s'] 

Ваша главная проблема в том, что letter[:-1] будет возвращать все до последней буквы. Только для последней буквы используйте [-1]. Вы также возвращали значения, а не печатали. Вы можете либо исправить эти два вопроса, либо использовать один лайнер в этом ответе.

Так что ваш код фиксированный являются:

def printPlurals(list1): 
    plural = 's' #you don't need this line, as you hard coded 's' below 

    for letter in list1: 
     if letter[-1] == 's': 
      print list1 
1

Рассматривали ли вы использование библиотеки Python inflect?

p = inflect.engine() 
words = ['computer', 'computers', 'science', 'sciences'] 
plurals = (word for word in words if p.singular_noun(word)) 
print "\n".join(plurals) 

Это может показаться странным, чтобы проверить if p.singular_noun, так как вы просили множественное число значений, но это имеет смысл, если учесть, что p.singular_noun(word) возвращается False когда word уже единственное число. Таким образом, вы можете использовать его для фильтрации слов, которые являются не единственными.

+0

У меня на самом деле нет. Я только начал изучать питон, а не на этапе подготовки, но очень приятно знать разные методы, с которыми я не знаком, например, такой! Спасибо! – yummyyenni

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