Python 3.4 endswith()

3

我并不是Python 3.x的专家,但我正在寻找Python 3.x的相关内容,结果发现了这个:

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

a. 如果动词以 y 结尾,则去除 y 并添加 ies

b. 如果动词以 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(这样我就不必根据单词改变数字了)。


1
除了下面Vignesh所提供的正确答案之外,我注意到你在第三个if块中有一个'y'。我提到这一点是因为我曾经因为这种错误而犯过一些愚蠢的错误。要时刻保持警惕。 - msw
2个回答

3

making changes to your code

code:

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 和 else 而不是只用 if

在使用 endswith 时,不需要使用 or,因为它会默认使用 or 的功能进行检查


2

您需要使用if elif代码块,这样多个测试可以为真,并且您可以执行它们的几个操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接