在Python中将句子转换为猪拉丁文

-1 投票
2 回答
83755 浏览
提问于 2025-04-18 03:27

我需要写一个Python程序,把句子转换成猪拉丁语。猪拉丁语的规则大致是:把每个单词的第一个字母拿出来,放到单词的最后面,然后在单词后面加上“ay”。我现在搞不清楚怎么把每个单词的第一个字母分开,更别提把它放到单词后面了。我想一旦把字母拿掉,就可以把它加到新单词的后面,然后再加上“ay”。我现在完全迷糊了。经过很多次尝试和错误,我现在只有这些代码,甚至这些代码看起来也不太对。非常感谢任何帮助。

def main():        
    sentence = input('Type what you would like translated into pig-latin and press ENTER: ')
    sentence_list = sentence.split()

    for part in sentence_list:
        first_letter = part[0]

main()

2 个回答

1

这里有个简单的例子

def main():
    words = str(input("Input Sentence:")).split()
    for word in words:
        print(word[1:] + word[0] + "ay", end = " ")
    print ()

main()

一个更好的方法可能是使用列表推导,这样你就可以真正利用输出的结果,不过这个方法满足了你的要求。

补充说明: 这个方法适用于python3.x版本。如果你想让它在python2版本上运行,那就稍微复杂一点。你只需要把每个单词的字符串加在一起,然后打印出结果字符串。

3

这是代码:

def main():
        lst = ['sh', 'gl', 'ch', 'ph', 'tr', 'br', 'fr', 'bl', 'gr', 'st', 'sl', 'cl', 'pl', 'fl']
        sentence = input('Type what you would like translated into pig-latin and press ENTER: ')
        sentence = sentence.split()
        for k in range(len(sentence)):
                i = sentence[k]
                if i[0] in ['a', 'e', 'i', 'o', 'u']:
                        sentence[k] = i+'ay'
                elif t(i) in lst:
                        sentence[k] = i[2:]+i[:2]+'ay'
                elif i.isalpha() == False:
                        sentence[k] = i
                else:
                        sentence[k] = i[1:]+i[0]+'ay'
        return ' '.join(sentence)

def t(str):
        return str[0]+str[1]

if __name__ == "__main__":
        x = main()
        print(x)

运行结果是:

bash-3.2$ python3 pig.py
Type what you would like translated into pig-latin and press ENTER: my gloves are warm
ymay ovesglay areay armway
bash-3.2$ 

这段代码使用了在这里找到的逻辑。

撰写回答