我有一个python代码将一个措辞字符串翻译成pyglatin,如下所示:
pyg = 'ay'
original = raw_input('Enter a word:')
if len(original)>0 and original.isalpha():
word = original.lower()
first = word[0]
rest = word[1:]
new_word = rest+first+pyg
print new_word
然而,我对如何将整个句子翻译成Pyglatin感到困惑。我正在处理的问题有以下几个条件:对于以辅音开头的单词,所有初始辅音都移到单词的末尾并附加'ay'。对于以元音开头的单词,初始元音仍然存在,但“方式”被添加到单词的结尾。 例如,字符串'你今天好吗?'是'owhay areway uoyay odaytay?'
答案 0 :(得分:0)
读一句话。将其分解为单个单词(拆分方法)。将每个单词翻译成Pig Latin。连接翻译。
这会让你感动吗?
答案 1 :(得分:0)
试试这个。使用split并将其放入空字符串中。
position: relative;
答案 2 :(得分:0)
这是我的尝试,但如果你自己不做,至少要尝试理解它。 (你可以自由地问) 这具有处理特殊字符的基本能力,例如"?"
def pygword(word):
vowels = 'aeiou'
if word[0] in vowels:
return word + 'way'
else:
while word[0] not in vowels:
word = word[1:]+word[0]
return word + "ay"
def pygsentence(sentence):
final = ''
for word in sentence.lower().split(): #split the sentence
#words should only end in symols in correct grammar
if word[-1] in '.,;:!?':
symbol = word[-1]
word = word[:-1]
else:
symbol = ''
if word.isalpha(): #check if word is alphanumerically
final += pygword(word)+symbol+' '
else:
return "There is a strange thing in one of your words."
return final[:-1] #remove last unecessary space
可能会有更快,更强大,更简单,更易理解的方法,但这就是我的开始。
测试让我:
In[1]: pygsentence("How are you today? I am fine, thank you very much good sir!")
Out[1]: 'owhay areway ouyay odaytay? iway amway inefay, ankthay ouyay eryvay uchmay oodgay irsay!'
你的代码不符合元音/辅音规则,所以我为单个单词做了我自己的转换器。
刚刚意识到它无法在言语中处理灾难(我们真的没有德语中的那些;))所以还有一点任务给你。
编辑:我不知道你想要辅音的顺序,因为你的例子并不清楚。所以我做了另一个pygword
函数:
def pygword2(word):
vowels = 'aeiou'
if word[0] in vowels:
return word + 'way'
else:
startcons = ''
while word[0] not in vowels:
startcons = word[0] +startcons
word = word[1:]
word = word+startcons
return word + "ay"
见不同之处:
In[48]: pygword("street")
Out[48]: 'eetstray'
In[49]: pygword2("street")
Out[49]: 'eetrtsay'