3

我不完全是 Python 3.x 专业人士,但我正在寻找可以在 Python 3.x 上做的事情,我发现了这一点:

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

一个。如果动词以 y 结尾,删除它并添加 ies

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

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

您在本练习中的任务是定义一个函数 make_3sg_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' 结尾的单词,即 lorry 它会输出

lorries
lorrys

另外我怎么做,所以代码中的数字是单词中的字母数减去 1(这样我就不必根据单词更改数字。

4

2 回答 2

3

更改您的代码

代码:

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

不需要orin endswith 因为它在默认检查中使用or功能

于 2015-10-09T19:00:26.533 回答
2

您需要使用if elif块。多个测试可能是真的,你允许自己做几个。

于 2015-10-09T19:01:13.807 回答