漂亮的诺比,但我正在尝试编写一个能够在单词列表中打印所有复数单词的函数
因此输出将是:
>>> printPlurals(['computer', 'computers', 'science,', 'sciences'])
computers
sciences
这是我到目前为止所得到的,但我没有得到任何输出。任何帮助都会很棒。 TY。
def printPlurals(list1):
plural = 's'
for letter in list1:
if letter[:-1] == 's':
return list1
答案 0 :(得分:1)
你真的很亲密,但你正在混淆一些事情。对于初学者,您不需要拥有plural
变量。无论如何你还没有使用它。其次,从命名的角度来看,你已经将变量命名为变量letter
并不重要,但这意味着你可能认为你正在通过字母循环。由于您实际上已经遍历列表list1
的成员,因此您在每次迭代时都会考虑一个单词。最后,您不想返回列表。相反,我认为您要打印已经确认的单词s
。请尝试以下方法。祝你好运!
def print_plurals(word_list):
for word in word_list:
if word[-1] == 's':
print word
如果你对做一些有趣的事情感兴趣(或者说#34; Pythonic",可以说),你可以通过列表理解形成复数列表,如下所示:
my_list = ['computer', 'computers', 'science', 'sciences']
plural_list = [word for word in my_list if word[-1]=='s']
答案 1 :(得分: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
返回{{1}}时,这是有道理的。因此,您可以使用它来过滤不单数的单词。
答案 2 :(得分: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