Python 3.4 endswith()

时间:2015-10-09 18:56:21

标签: python python-3.x if-statement function ends-with

我不是一个Python 3.x专业人士,但我在Python 3.x上找到了要做的事情,我发现了这个:

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

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

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

℃。默认情况下只需添加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'即卡车 它将输出

lorries
lorrys

另外我如何制作代码中的数字是单词中的字母数减1(只是因为我不必根据单词更改数字。

2 个答案:

答案 0 :(得分: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

结束时不需要or,因为它使用or功能进行默认检查

答案 1 :(得分:2)

您需要使用if elif块。多次测试都是正确的,您可以自己做几个测试。