我并不完全是一个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功能

09-28 12:02