我不确定如何使此代码打印多个复数的输入。例如,如果输入“单名词,单名词,单名词”输入,它将打印为“单名词,单名词,复数名词”。由于某种原因,只有最后一个字符串变成复数。如何获得打印“复数名词,复数名词,复数名词”的字样?
def double(noun):
if noun.endswith("ey"):
return noun + "s"
elif noun.endswith("y"):
return noun[:-1] + "ies"
elif noun.endswith("ch"):
return noun + "es"
else:
return noun + "s"
noun = input("type in here")
print (double(noun))
答案 0 :(得分:2)
input()
将返回用户输入的整行。也就是说,如果用户键入bird, cat, dog
,则您的plural
函数将收到字符串"bird, cat, dog"
,而不是用单独的"bird"
,"cat"
和{{ 1}}个字符串。
您需要 tokenize 您的输入字符串。一种典型的方法是使用"dog"
(和str.split()
删除前导和尾随空格):
str.strip()
或者,如果您希望所有结果用逗号分隔并打印在一行上:
nouns = input("type in here").split(",")
for noun in nouns:
print(plural(noun.strip()))
答案 1 :(得分:1)
使用str.split
:
def double(nouns):
l = []
for noun in nouns.split(', '):
if noun.endswith("ey"):
l.append(noun + "s")
elif noun.endswith("y"):
l.append(noun[:-1] + "ies")
elif noun.endswith("ch"):
l.append(noun + "es")
else:
l.append(noun + "s")
return ', '.join(l)
noun = input("type in here")
print (plural(noun))