20190118-利用Python實現Pig Latin遊戲

何發奮發表於2019-01-18

1.利用Python實現Pig Latin字母遊戲

“Pig Latin”是一個英語兒童文字改寫遊戲,整個遊戲遵從下述規則:
a. 母音字母是‘a’、‘e’、‘i’、‘o’、‘u’。字母‘y’在不是第一個字母的情況下,也被視作母音字母。其他字母均為子音字母。例如,單詞“yearly”有三個母音字母(分別為‘e’、‘a’和最後一個‘y’)和三個子音字母(第一個‘y’、‘r’和‘l’)。
b. 如果英文單詞以母音字母開始,則在單詞末尾加入“hay”後得到“Pig Latin”對應單詞。例如,“ask”變為“askhay”,“use”變為“usehay”。(同上)
c. 如果英文單詞以‘q’字母開始,並且後面有個字母‘u’,將“qu”移動到單詞末尾加入“ay”後得到“Pig Latin”對應單詞。例如,“quiet”變為“ietquay”,“quay”變為“ayquay”。
d. 如果英文單詞以子音字母開始,所有連續的子音字母一起移動到單詞末尾加入“ay”後得到“Pig Latin”對應單詞。例如,“tomato”變為“omatotay”, “school” 變為“oolschay”,“you” 變為“ouyay”,“my” 變為“ymay ”,“ssssh” 變為“sssshay”。
e. 如果英文單詞中有大寫字母,必須所有字母均轉換為小寫。
輸入格式:
一系列單詞,單詞之間使用空格分隔。
輸出格式:
按照以上規則轉化每個單詞,單詞之間使用空格分隔。
輸入樣例:
Welcome to the Python world Are you ready
輸出樣例:
elcomeway otay ethay ythonpay orldway arehay ouyay eadyray
Step1:先寫出每個轉換規則的演算法
def Pig_Latin(s):
    s=s.lower()
    #轉換為小寫
    if s[0] in `aeiou`:
        vowel_begin = True
    else:
        vowel_begin = False
    if vowel_begin:
        s = s+`hay`
    #以母音字母開始,則在單詞末尾加入“hay”
    if s[0]==`q` and s[1] ==`u`:
        s =s[2:]+`quay`
    #以‘q’字母開始,並且後面有個字母‘u’,將“qu”移動到單詞末尾加入“ay”
    end = 0
    for i in range(len(s)):
        if s[i] in `aeiou` or (i>0 and s[i]==`y`):
            end = i
            break
    s=s[end:]+s[:end]+`ay`
    #以子音字母開始,所有連續的子音字母一起移動到單詞末尾加入“ay”
    return s

Step2:寫一個主函式來實現輸入格式和輸出格式的轉換

輸入格式:
一系列單詞,單詞之間使用空格分隔。
輸出格式:
按照以上規則轉化每個單詞,單詞之間使用空格分隔。

def transfer_main(str):
    s = str.split()
    result = []
    for i in s:
        result.append(Pig_Latin(i))
    new_s=` `.join(result)
    return new_s
print(transfer_main(`Welcome to the Python world Are you ready`))

 

 

相關文章