Piglatin转换计划

时间:2016-02-18 23:30:10

标签: python-3.x

我正在尝试创建一个程序,可以将英语和英语句子转换成Piglatin,从Piglatin转换成英语。

到目前为止,英语到Piglatin部分工作正常,但我很难从Piglatin转换成英语。

def eng2Pig(sentence):
sentsplit = sentence.split()
for part in sentsplit:
    print((part[1:] + part[0] + "ay"), end = " ")

def pig2Eng(sentence):
    sentv1 = sentence.replace("ay", "")
    sentsplit = sentv1.split()
    for part in sentsplit:
        print(part[-1] + part[:-1], end = " ")

def aySearch(sentence):
    numwords = len(sentence.split())
    numay = sentence.count("ay ")
    if numwords == numay:
        pig2Eng(sentence)
    else:
        eng2Pig(sentence)

x = input("Enter your sentence: ")
x = x + " "
aySearch(x)

我在转换最初包含ay的英语单词时遇到了麻烦。例如,今天转换为Piglatin将是今天。但是,我正在用#34;"删除额外添加的ay。

也许我需要计算一个单词中ay(s)的数量,然后根据它来决定是否要删除多个ay。

谢谢 -

祝你好运

2 个答案:

答案 0 :(得分:1)

一个问题是做替换(" ay","")会改变单词say int s,所以它会破坏你的句子。这是一个更好的解决方案。

def pig2Eng(sentence):
    eng = ""
    sentsplit = sentence.split()
    for word in sentsplit:
        eng += word[-3:-2] + word[:-3] + " "
    return eng

print (pig2Eng("igpay atinlay siay tupidsay"))

另请注意,返回结果通常是更好的编程形式,而不是在函数中打印它。

答案 1 :(得分:0)

这是我最终做的 - 这很好用。

def eng2Pig(sentence):
    pig = ""
    sentsplit = sentence.split()
    for part in sentsplit:
        pig += (part[1:] + part[0] + "ay" + " ")
    return pig

def pig2Eng(sentence):
    eng = ""
    sentsplit = sentence.split()
    for part in sentsplit:
        eng += (part[-3] + part[:-3] + " ")
    return eng

def aySearch(sentence):
    numwords = len(sentence.split())
    numay = sentence.count("ay ")
    if numwords == numay:
        return pig2Eng(sentence)
    else:
        return eng2Pig(sentence)


def main():
    x = input("Enter your sentence: ")
    x = x + " "
    print(aySearch(x))

main()