Python 3.4 endswith()

Python 3.4 endswith()

我不完全是 Python 3.x 专业人士,但我在 Python 3.x 上找东西做,我发现了这个:

英语中的第三人称单数动词形式由后缀-s 区分,它被添加到不定式形式的词干:运行 -> 运行s。可以给出一组简单的规则如下:

一个。如果动词以y结尾,去掉它并加上ies

b。如果动词以 o、ch、s、sh、x 或 z 结尾,加 es

c。默认情况下只需添加 s

你在这个练习中的任务是定义一个函数 make_3sg_form() 给一个不定式形式的动词 returns 它的第三人称单数形式。使用 try、brush、运行 和 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' 结尾的词,即 lorry 它将输出

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 功能进行检查

您需要使用 if elif 个积木。多项测试可能是正确的,您允许自己进行其中的多项测试。