【发布时间】:2020-12-20 14:23:02
【问题描述】:
我有一个任务,我必须将英语单词翻译成猪拉丁语,这意味着如果一个单词以元音开头,则单词末尾添加“ay”(“apple”将变为“appleay”)这是这不是问题,因为代码相对容易编写。
但是,第二部分是如果单词以辅音开头,第一个元音之前的所有辅音都将被删除并添加到单词的末尾,字符串“ay”也会再次添加到之后的结尾(“cheese”将变为“eesechay”)。
这是一个相当简单的概念,但如果单词以辅音开头,我正在努力寻找翻译单词的方法,这是我目前的代码:
def pigLatin(word):
for l in vowels:
if word[0] == l:
word = word + "ay"
for L in consonants:
if word[0] == L:
for i in vowels:
for s in word:
if s == i:
#this is where im completely lost
仅供参考,元音和辅音是仅包含元音和辅音的数组,单词由用户输入。
编辑:
感谢您的帮助,我已经设法重新编写代码并获得了一些有用的东西:
def pigLatin(word):
if word[0]in vowels:
word = word + "ay"
elif word[0] in consonants:
c = ""
for l in word:
if l in vowels:
break
elif l in consonants:
c = c + l
word = word[len(c)-len(word):len(word)]
word = word + c + "ay"
再次感谢您的帮助:)
【问题讨论】:
-
与其自己循环单词,不如考虑让 Python 为您完成工作。例如,正则表达式
^([^aeiou]*)([aeiou].*)会将第一个元音之前的内容与之后的所有内容拆分为一个单独的匹配组。 -
根据 Charles Duffy 的评论,正则表达式肯定可以完成这项工作。另一方面,不要遍历每个元音/辅音,而是遍历单词中的每个字母。首先检查 word[0] 是否是元音(例如,如果 word[0] 在元音中),如果是,那么你知道该怎么做。如果没有,遍历 word 中的字母直到找到一个元音,将之前的所有内容移动到单词的末尾并添加“ay”
-
@CharlesDuffy 那会在代码中的哪个位置出现?我还是一头雾水
-
坦率地说——为你设计你的程序超出了我们通常在这里做的范围; Stack Overflow 专注于为编写代码时遇到的特定、狭窄问题提供答案的集合。 “我怎样才能更好地设计一个程序/算法来做 X?”有无限的答案;它超出了“狭隘而具体”的规范。
-
@tnknepp 我遇到的问题不是找到元音或辅音,如果 s == i,我不确定以后该从哪里继续:在我在单词的开头找到辅音后识别元音,我只是不知道我需要编写什么代码,然后在该元音之后获取所有辅音,然后将其连接到末尾
标签: python