Python学習ノート---文字列処理

3507 ワード

This world is but a canvas to our imagination.
世界は私たちの想像のキャンバスにすぎない.—Apri 22
"Pig Latin"は英語の子供の文字を書き換えるゲームで、ゲーム全体は以下のルールに従います.
(1). 母音のアルファベットは「a」、「e」、「i」、「o」、「u」です.アルファベット「y」は、最初のアルファベットではない場合でも、母音アルファベットとみなされる.その他のアルファベットはすべて子音アルファベットです.たとえば、「yearly」という単語には、「e」、「a」、「y」の3つの母音文字と、最初の「y」、「r」、「l」の3つの子音文字があります.
(2). 英語の単語が母音文字で始まると、単語の末尾に「hay」を入れて「Pig Latin」対応単語を得る.たとえば、askはaskhay、useはusehayとなります.
(3). 英語の単語が「q」で始まり、後ろに「u」という文字がある場合は、「qu」を単語の末尾に移動して「ay」を加えて「Pig Latin」対応単語を得る.たとえば、「quiet」は「ietquay」、「quay」は「ayquay」になります.
(4). 英語の単語が子音文字で始まると、連続するすべての子音文字が一緒に単語の末尾に移動して「ay」を加えた後、「Pig Latin」対応単語が得られる.たとえば、「tomato」が「omatotay」、「school」が「oolschay」、「you」が「ouyay」、「my」が「ymay」、「ssssh」が「ssssshay」となります.
(5). 英語の単語に大文字がある場合は、すべてのアルファベットを小文字に変換する必要があります.
入力フォーマット:一連の単語で、単語間にスペース区切りが使用されます.
≪出力フォーマット|Output Format|emdw≫:上記のルールに従って各単語を変換し、単語間をスペースで区切ります.
入力サンプル:Welcome to the Python world Are you ready
出力サンプル:elcomeway otay ethay ythonpay orldway arehay ouyay eadyray」
def is_vowel(c):
    ###       
    return c in ['a','e','i','o','u']

#print(is_vowel('y'))
###  
string = input()
###    
string = string.lower()
string = string.strip()
words = string.split()
###      
change_string = []
for word in words:
    first = word[0]
    if is_vowel(first):
        ###      
        word = word[:] + "hay"
    else:
        ###       
        if word[:2] =="qu":
            ###    “qu”
            word = word[2:] + "quay"
        else:
            for i in range(1,len(word)):
                ###   WORD,    
                if is_vowel(word[i]) or (word[i] =='y'):
                     break
                else:
                    first = first + word[i]
            word = word[len(first):] + first + "ay"
    ###    WORD       
        change_string.append(word)
for word in change_string:
    print(word,end=" ")
print()