2016-09-27 2 views
2

Ich muss den ersten Vokal einer Zeichenfolge in Python finden, und ich bin ein Anfänger. Ich bin angewiesen, die Zeichen vor dem ersten Vokal bis zum Ende des Wortes zu bewegen und '-ay' hinzuzufügen. Zum Beispiel wird "groß" zu "ig-bay" und "string" wird "in-stray" (im Grunde genommen piglatin).Wie finde ich das erste Vorkommen eines Vokals und verschiebe es hinter das ursprüngliche Wort (Schwein Latein)?

Dies ist, was ich bisher:

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" 

Ich muss einen Weg finden, um die „if“ Anweisung von der Suche nach weiteren Vokale zu stoppen, nachdem der erste Vokal zu finden - zumindest ich denke, es ist das Problem . Vielen Dank!

+0

Sie einen Flag verwenden könnten, um zu sehen, ob Sie die ersten Vokal gefunden und dann machen Sie Ihr if-Anweisung nur ausgeführt werden, wenn das Flag ‚down‘ – MooingRawr

+0

Hinweis: Sie können 'wenn char tun in 'aeiou': ' – dawg

Antwort

0

Python die break und continue Anweisungen für die Regelung hat. Sie können einen boolean gesetzt, dass Sie so, dass auslösen:

if flag: 
    break 
#do code 
#set flag 
0

können Sie eine break Anweisung verwenden, sobald Sie einen Vokal gefunden. Sie müssen auch keine split() Funktionen verwenden. Ein großer Fehler, den Sie gemacht haben, war char, um die SubString zu bekommen. Sie müssen den Index dieses Chars verwenden, um stattdessen die SubString zu erhalten.

Werfen Sie einen Blick auf diese:

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

Pause Dinge nach unten ein Schritt zu einer Zeit.

Ihre erste Aufgabe ist es, den ersten Vokal zu finden. Lassen Sie uns das tun:

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

Dann müssen Sie diesen ersten Vokal benutzen Sie Ihr Wort zu spalten:

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

es Dann testen:

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

Voll Code, runnable, ist hier: https://repl.it/Dijj

Die Ausnahmebehandlung für Wörter, die keine Vokale haben, wird als Übung belassen.

0

Seitliche Anmerkung. Sie können einen regulären Ausdruck verwenden:

>>> 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 
Verwandte Themen