2016-09-27 16 views
2

我需要在Python中找到一個字符串的第一個元音,而我是一個初學者。我被指示將第一個元音前的字符移動到單詞的末尾,並添加「-ay」。例如,「大」變成「ig-bay」,「串」變成「ing-stray」(基本上是明膠)。如何查找元音的第一個出現位置,並將其放在原始單詞後面(豬拉丁語)?

這是我到目前爲止有:

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" 

我需要找到一種方法來尋找發現第一個元音後進一步元音停止「if」語句 - 至少我認爲這是問題。謝謝!

+0

你可以使用一個標誌,看看你找到的第一個元音,然後讓你的if語句,如果該標誌爲「下」只運行 – MooingRawr

+0

注意:你可以做'如果焦炭在'aeiou':' – dawg

回答

0

Python有環控制breakcontinue語句。你可以設置你觸發這樣一個布爾值:

if flag: 
    break 
#do code 
#set flag 
0

可以,只要你找到一個元音使用break聲明。 您也不需要使用任何split()函數。 你所犯的一個大錯誤是使用char得到SubString。您需要使用該字符的索引來取代SubString

看看這個:

def convert(s): 
    beginning = "" 
    index = 0; 
    for char in s: 
     if char in ('a','e','i','o','u'): 
      end = str(s[index:]) 
      break 
     else: 
      beginning = beginning + char 
     index = index + 1 
    return str(end) + "-" + beginning + "ay" 
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

對於沒有元音的單詞,例外處理留作練習。

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 
相關問題