3

私は正確には Python 3.x のプロではありませんが、Python 3.x でやるべきことを探していて、これを見つけました:

英語の動詞の三人称単数形は、接尾辞 -s によって区別されます。これは、不定形の語幹に追加されます: run -> runs. 簡単なルールのセットは、次のように指定できます。

を。動詞が y で終わる場合は、それを削除して ies を追加します

b. 動詞が o、ch、s、sh、x、または z で終わる場合は、es を追加します

c. デフォルトでは s を追加するだけです

この演習でのタスクは、不定形の動詞を指定して三人称単数形を返す関数 make_3sg_form() を定義することです。try、brush、run、fix などの言葉で関数をテストします。ただし、すべてのケースで機能するとは限らないという意味で、ルールはヒューリスティックと見なす必要があることに注意してください。ヒント: 文字列メソッドの endwith() を確認してください。

そのため、コードを作成しましたが、問題があります。コードは次のとおりです。

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