【发布时间】:2014-05-10 23:47:12
【问题描述】:
正如您将在下面的代码中看到的那样,我已经制作了一个将英语翻译成猪拉丁语的程序。它遵循两个规则:
- 如果单词以元音开头,则应附加“way”(例如:apple 变为 appleway)
- 如果单词以辅音序列开头,则该序列应移至末尾,以“a”为前缀,后跟“ay”(例如:please 变为easeaplay)
我知道这是一种奇怪的做法,但请幽默。
问题:翻译成英文时,我想不出办法让代码确切知道应该在哪一点将原始单词的根与后缀分开,因为有些单词以 1 个辅音开头,而另一些则以2个辅音等
任何帮助将不胜感激。请记住,我是新手。
vowels = ('AEIOUaeiou')
def toPigLatin(s):
sentence = s.split(" ")
latin = ""
for word in sentence:
if word[0] in vowels:
latin += word + "way" + " "
else:
vowel_index = 0
for letter in word:
if letter not in vowels:
vowel_index += 1
continue
else:
break
latin += word[vowel_index:] + "a" + word[:vowel_index] + "ay" + " "
return latin[:len(latin) - 1]
def toEnglish(s):
sentence = s.split(" ")
english = ""
for word in sentence:
if word[:len(word) - 4:-1] == 'yaw':
english += word[:len(word) - 3] + " "
else:
#here's where I'm stuck
return english
提前致谢!
【问题讨论】:
-
从 Pig Latin 到英语的完全明确的翻译是不可能的。例如,“oat”和“two”都翻译为“oatway”。
-
这是做作业的吗?
-
根据en.wikipedia.org/wiki/Pig_Latin中的规则,结尾辅音结构不应以'a'为前缀。因此,please 应该成为easeplay 而不是easeaplay。如果你不加前缀 a,那么 win 和 in 都变成了 inway。无论您遵循哪条规则,都没有唯一的反向翻译。由于没有唯一的反向翻译,因此您无法设置一个算法来从 Pig Latin 到 English 并获得明确的结果。
-
@sabbahillel OP 说:“我知道这是一种奇怪的做法,但请取笑我。”显然他没有遵守标准的猪拉丁规则!
-
@2rs2ts 我试图说明的一点是,无论他使用哪一套规则,从英语到猪拉丁语的翻译都没有唯一的。因此,不可能有反向翻译算法。由于时间限制在我打字时已过期,我无法编辑评论以使要点更清楚。
标签: python language-translation