Я пытаюсь написать функцию, которая бы приумножала все слова ввода пользователя. Вот критерии, о которых я хочу беспокоиться:
- , если слово оканчивается на 'y', перед которым стоит гласная (a, e, i, o, u), добавьте 's'; например, обезьяна -> обезьяны
- , если слово оканчивается на «у» без предшествующей гласной, удалите «у» и добавьте «и», например, fly -> летит
- , если слово оканчивается на 'o', 'ch', 's', 'sh', 'x' или 'z', затем добавьте 'es' в противном случае, просто добавьте 's'
Для Например, если пользователь вводит: «кнопка мухи крыльца обезьяны-слона картофеля fi sh лиса жужжит», то вывод должен быть следующим: «обезьяны-слоны картошки крыльца мухи кнопки рыба лисицы жужжит»
Вот что у меня есть до сих пор :
#Ask for user input
word = input("What would you like to convert to plural?: ")
#Separate words in input into list
splitstring = word.split()
conversionlist = list(splitstring)
##list check
#print(conversionlist)
def plural(splitstring):
#For every single word in string
for split in conversionlist:
#If vowel before y (endswith only takes 3 arguements)
if split.endswith('ay','ey','iy') or split.endswith('oy','uy'):
return split + 's'
#If not a vowel before y
if split.endswith('y') and not (split.endswith('ay','ey','iy') or split.endswith('oy','uy')):
#Remove the y and append the appropriate ending
return split[:-1] + 'ies'
#o, ch, s, sh, x, or z endings
if split.endswith('o') or split.endswith('ch') or split.endswith('s') or split.endswith('sh') or split.endswith('x') or split.endswith('z'):
return split + 'es'
#general case
else:
return split + 's'
plural(splitstring)
#Append all converted plurals into singular list and print output
totalplural = " ".join(plural(splitstring))
print(totalplural)
Прямо сейчас я получаю «Ошибка TypeEr: индексы среза должны быть целыми числами или None или иметь index метод» в строке 25. Любые мысли о том, как я мог бы изменить код, чтобы заставить его делать то, что я хочу?