如何找到第一个元音并将其移到原始单词(pig latin)后面?

时间:2016-09-27 16:50:45

标签: python findfirst

我需要在python中找到字符串的第一个元音,我是初学者。我已经指示将第一个元音之前的字符移动到单词的结尾并添加“-ay”#39;。例如" big"成为" ig-bay"和"字符串"成为流浪者" (基本上是普通的)。

这是我到目前为止所做的:

def convert(s):

    ssplit = s.split()
    beginning = ""
    for char in ssplit:
        if char in ('a','e','i','o','u'):
            end = ssplit[char:]
            strend = str(end)
        else:
            beginning = beginning + char
    return strend + "-" + beginning + "ay"

我需要找到一种方法来阻止"如果"在找到第一个元音之后寻找更多元音的声明 - 至少我认为这是问题所在。谢谢!

5 个答案:

答案 0 :(得分:1)

一次分解一步。

你的第一个任务是找到第一个元音。让我们这样做:

def first_vowel(s):
    for index, char in enumerate(s):
        if char in 'aeiou':
            return index
    raise Error('No vowel found')

然后你需要使用第一个元音来分割你的单词:

def convert(s):
    index = first_vowel(s)
    return s[index:] + "-" + s[:index] + 'ay'

然后测试一下:

print(convert('pig'))
print(convert('string'))

完整代码,可运行,在这里:https://repl.it/Dijj

对于没有元音的单词,异常处理留作练习。

答案 1 :(得分:0)

在您希望for循环结束的地方添加breakhttps://docs.python.org/2/tutorial/controlflow.html

答案 2 :(得分:0)

Python有循环控制的breakcontinue语句。您可以设置触发的布尔值:

if flag:
    break
#do code
#set flag

答案 3 :(得分:0)

您可以在找到元音后立即使用df$new_column <- as.numeric(grepl("Disagree", df$Response)) 语句。 您也不需要使用任何break函数。 你犯的一个大错误就是使用split()来获取char。您需要使用该char的索引来获取SubString

看看这个:

SubString

答案 4 :(得分:0)

旁注。你可以使用正则表达式:

>>> import re
>>> cases=['big','string']
>>> for case in cases:
...    print case+'=>', re.sub(r'^([^aeiou]*)(\w*)', '\\2-\\1ay', case)
... 
big=> ig-bay
string=> ing-stray