Pig拉丁文元音规则



所以我正在尝试编写一个代码,如果字符串中的每个单词开头都有元音,那么它将进行检查。如果有一个元音(大写或小写(,那么它将返回单词和"-"方式";附件。如果它以辅音开头,那么它将第一个字母移到后面,并在后面加上"-ay";例如:锚点=锚点方式,计算机=计算机cay。这就是我所拥有的,但它似乎返回了所有具有这些条件的单词,并且没有检查元音。我做错了什么?

def pig_latin(text):
say = []
vowel = ['A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u']
words = text.split()
for vowel in words:
vowel = vowel[0:] + "-way"
say.append(vowel)
if vowel not in words:
vowel = vowel[1:] + "-" + vowel[0] + "ay"
say.append(vowel)
return " ".join(say)
if __name__ == '__main__':
result = pig_latin("hi how are you")
print(result)

当您编写for vowel in words:时,您不会检查单词中的元音或进行任何比较。表达式for i in iterable:是一个循环,它将一次一个地为迭代中的每个项设置(在本例中(i。在您的情况下,它将变量vowels设置为第一个、第二个、第三个。。。您列表中名为words的项目。也就是说,它正在覆盖您创建的vowel列表。

试试这样的东西。

def pig_latin(text):
say = []
vowel = ['A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u']
words = text.split()
for word in words: # loop over each word in the list of words
if word[0] in vowel: # compare the first letter of the word against the vowel list
new_word = word + '-way'
else:
new_word = word[1:] + '-' + word[0] + 'ay'
say.append(new_word)
return " ".join(say)
if __name__ == '__main__':
result = pig_latin("hi how are you")
print(result)

您可以做一些事情。

  • 使用lower()函数
  • 不要把元音和单词混淆
  • 使用enumerate在正确索引处编辑现有列表

这是一个工作版本:

def pig_latin(sentance: str):
words = sentance.split()
vowels = ['a','e','i','o','u']
for i, word in enumerate(words):
if word[0].lower() in vowels:
words[i] = word + '-way'
else:
words[i] = word[1:] + '-' + word[0] + 'ay'
return words
r = pig_latin("hi how are you")
print(r)

返回

['i-hay', 'ow-hay', 'are-way', 'ou-yay']

最新更新