2014-10-02 3 views
-2

Я создаю простой переводчик латинского перевода. Вот то, что я до сих пор:Подсчет согласных перед первым гласным в строке

while True: 
    phrase = input('Translate > ').lower().split() 

    for word in phrase: 
    if word[0] in 'aeiou': # If the first letter is a vowel 
     print(word + '-way') # Add suffix 'way' 
    else: 
     c = # Number of consonants before the first vowel 
     print (word[c:] + word[0:c] + '-ay') 

Как я могу сделать c, равное числу согласных, предшествующих первой гласной в word как можно проще? Я бы предпочел не использовать функции.

EDIT: Да, я имел в виду, что предпочел бы не определять свои собственные функции. Извини за это.

+1

«предпочитают не использовать функции» ... что? Во всяком случае, 'c = next (i для i, c в перечислении (слово), если c в 'aeiou')' – roippi

+2

Просто FYI: вы используете функции. – sheeptest

+1

Я думаю, что он означает «id предпочитают не использовать функции WRITE», что в любом случае странно – TehTris

ответ

1

Использование itertools.takewhile

from itertools import takewhile 

c = len(list(takewhile(lambda x: x not in "aeiou", word))) 

TakeWhile занимает predicate, который лямбда здесь, он будет принимать элементы, а предикат True поэтому в данном случае, как только мы сталкиваемся с гласной метод остановится и верните список согласных до этой точки, и мы просто используем функцию len, чтобы проверить, сколько согласных находится в списке, указав нам индекс для c.

+0

Это замечательно! Удивительно. Позаботьтесь, чтобы объяснить, как это работает? – contrum

+1

len, а список и takewhile - все функции :) – TehTris

+0

@TehTris, они встроены не написанные мной или OP –

 Смежные вопросы

  • Нет связанных вопросов^_^