Python中的Pig拉丁代码

Python中的Pig拉丁代码,python,Python,我是Python的初学者,我希望我的代码将前一两个辅音移到单词的末尾并添加-ay。我已经得到了我的代码来做这件事,但它不适用于句子。我需要你帮我查一下名单。此外,返回的翻译句子需要以大写字母开头,以句号结尾,就像输入的句子一样,但我不知道从哪里开始!以下是我目前的代码: pyg = 'ay' original = raw_input('Enter a sentence:') word = original.lower() word_list = word.split count = 0 fo

我是Python的初学者,我希望我的代码将前一两个辅音移到单词的末尾并添加-ay。我已经得到了我的代码来做这件事,但它不适用于句子。我需要你帮我查一下名单。此外,返回的翻译句子需要以大写字母开头,以句号结尾,就像输入的句子一样,但我不知道从哪里开始!以下是我目前的代码:

pyg = 'ay'

original = raw_input('Enter a sentence:')
word = original.lower()
word_list = word.split
count = 0

for word in word_list:
if word[1] == "a" or word[1] == "e" or word[1] == "i" or word[1] == "u" or 
word[1] == "o" or word[1] == "y":
  first = word[0]
  new_word = word + first + pyg
  new_word = new_word[1:len(new_word)]
  print new_word 

else:  
 if word[1] != "a" or word[1] != "e" or word[1] != "i" or word[1] != "u" or 
word[1] != "o" or word[1] != "y":
    first = word[0]
    second = word[1]
    second_word = word + first + second + pyg
    second_word = second_word[2:len(second_word)]
    print second_word

这是你所说你想要的东西的一个稍微概括的版本。不同之处在于,下面的代码不看前一个或两个字母:它将所有的初始辅音移到末尾,这样字符串就变成了字符串。你的问题陈述说这应该是ringstay,但这与我小时候学的猪拉丁语不符。我这样做部分是因为我认为您的规范不完整,部分是因为它使代码更简单,更容易理解。如果ringstay真的是你想要的,你可以随时修改代码。提示:在while循环中放置一个计数器。这段代码中也有一个bug,尽管您不太可能找到它:如果输入单词根本不包含元音,例如cwm(一种威尔士小提琴),那么while循环将永远不会终止。提示:相同的解决方案

我还没有加上修饰,也模糊地记得我的童年时代,一个以元音开头的原始单词的后缀是way not ay,所以我很好,因为我是安利oodgay而不是Aay amay oodgay

进行成员资格测试的Pythonic方法是使用in,而不是长字符串if x=='a'或x=='b'或x=='c'测试

提供首字母大写和最后一个句号要求您将问题分为两部分:1转换单词,2为句子加标点。如果你在进行过程中打印出转换后的单词,你就无法做到这一点。因此,下面的代码将单词组合成一个结果列表,然后将单词列表串成最后一个句子作为标点符号

pyg = 'ay'

original = raw_input('Enter a sentence:')
word_list = original.lower().split()
result = []

for word in word_list:
    while word[0] not in "aeiouy":
        word = word[1:] + word[0]
    word += pyg
    result.append(word)

final_sentence = " ".join(result)
print final_sentence[0].upper() + final_sentence[1:] + "."
我个人认为,把一个句子存储在一个称为Word的变量中不是好方法,尤其是如果代码实际上在稍后的那个点中存储一个单词。所以我也修正了这一点

编辑,因为我的提示不够明确:

要限制移到末尾的辅音数量,您需要对其进行计数:

for word in word_list:
    consonants = 0
    while word[0] not in "aeiouy" and consonants < 2:
        word = word[1:] + word[0]
        consonants += 1
    word += pyg
    result.append(word)
要确保程序不会被一个没有辅音的单词放入无限循环中:

    while word[0] not in "aeiouy" and consonants < len(word):

我曾经尝试过使用.format创建代码,作为初学者,我希望您觉得这段代码简单且有用

def pig_latin(text):
 say = ""
 words = text.split()
 for word in words:
  say += "{}{}{} ".format(word[1:], word[0], "ay")
 return say
你好,你好吗

你好,owhay,Reay,Owyay


这里有一些问题,但是你在正确的轨道上使用split,但是你需要parens-split。我要指出的是,你可以把你的if语句写成简单的:如果单词[1]在aeiouy中:第一个,如果单词[1]不在aeiouy中:注意:第二个建议改变了你所拥有的功能。好的,谢谢!但是,如果我想将代码改为ringstay而不是ingstary,我该怎么办?我做了一个编辑,向您展示了我在while循环中放置计数器的意思。