0

很菜鸟,但我正在尝试编写一个函数来打印单词列表中的所有复数单词

所以输出将是:

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

这就是我到目前为止所拥有的,但我没有得到任何输出。任何帮助都会很棒。泰。

def printPlurals(list1):
    plural = 's'

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

3 回答 3

1

你真的很亲密,但你把一些事情混在一起了。对于初学者,您不需要plural变量。反正你没用。其次,从命名的角度来看,您是否按照自己的方式命名变量并不重要letter,但这意味着您可能认为您正在遍历字母。由于您实际上是在遍历 list 的成员,因此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']
于 2014-10-24T02:43:27.490 回答
1

您是否考虑过使用 Python变形库?

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)Falseword

于 2014-10-24T03:02:39.013 回答
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
于 2014-10-24T02:42:13.713 回答