我并不完全是一个python 3.x专业人士,但我在python3.x上找到了要做的事情,我发现:
英语中第三人称单数动词形式的区别在于后缀-s,它被加到不定式的词干上:run->runs一组简单的规则如下:
a.如果动词以y结尾,则将其删除并添加y
b.如果动词以o、ch、s、sh、x或z结尾,则加es
c.默认情况下,只需添加s
在本练习中,您的任务是定义一个make sg_form()函数,该函数给定一个不定式形式的动词返回其第三人称单数形式。用try、brush、run和fix等词来测试函数。但是,请注意,规则必须被视为启发性的,因为您不能期望它们适用于所有情况提示:检查字符串方法endswith()
所以我为它创建了一个代码,但是有一个问题,代码如下:
def make_3sg_form():
Word = input('Enter a word: ')
if Word.endswith('y'):
New_word=Word[:+4]+'ies'
print(New_word)
if Word.endswith(('o', 'ch', 's', 'sh', 'x' or 'z')):
New_word=Word[:+4]+'es'
print(New_word)
if Word !=Word.endswith((('o', 'ch', 'y', 's', 'sh', 'x' or 'z'))):
New_word=Word[:+10]+'s'
print(New_word)
make_3sg_form()
问题是如果我用“y”结尾的词
它将输出
lorries
lorrys
另外,我如何使代码中的数字是单词中的字母数减去1(这样我就不必根据单词更改数字了)。
最佳答案
更改代码
代码:
def make_3sg_form():
Word = input('Enter a word: ')
if Word.endswith('y'):
New_word=Word[:-1]+'ies'
elif Word.endswith(('o', 'ch', 's', 'sh', 'x' ,'z')):
New_word=Word+'es'
else:
New_word=Word+'s'
print(New_word)
make_3sg_form()
输出:
Enter a word: lorry
lorries
Enter a word: looo
loooes
Enter a word: lklk
lklks
笔记:
您应该使用
if elif and else
而不仅仅是if
在endswith中不需要
or
,因为它在默认检查中使用or
功能