Python中的Pig拉丁代码

2024-04-24 20:52:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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

Tags: or代码newleniflist句子word
1条回答
网友
1楼 · 发布于 2024-04-24 20:52:36

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

我还没有加上这样的精化,我还记得我的童年时代,一个以元音开头的单词的后缀way不是{},所以{}就变成了Iway amway oodgay不是{}。在

{{cdthonic{12}的成员资格测试{cdthonic}不使用。在

提供一个大写字母和最后一个句号要求你把问题分成两部分:(1)转换单词,(2)给句子加标点。如果你在继续的过程中print输出转换后的单词,那么就不能这样做了。所以下面的代码将单词组合成一个result列表,然后将单词列表串成最后一个标点的句子。在

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的变量中存储一个句子不是一种好的方式,特别是如果代码在以后的某个时刻将一个单词存储在同一个变量中。所以我也修改了。在

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

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

^{pr2}$

为了确保程序不会被没有辅音的单词放入无限循环中:

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

相关问题 更多 >