Как помечать первое появление гласного, переместить предыдущие согласные, чтобы закончить

Мне было поручено создать переводчик PygLatin на Python - я очень начинаю. Я должен перевести любое случайное входное предложение. На данный момент мне нужно уметь отмечать первое появление гласного слова и передавать все согласные, предшествующие концу этого слова.

def encrypt():
    modify_split = list(sentence.split()) 
    letter = list(word)
    for letter in word:
        if letter == "A":
            print(word[1:] + "*" + word[0:1] + "AY")
        if letter == "E":
            print(word[1:] + "*" + word[0:1] + "AY")
        if letter == "I":
            print(word[1:] + "*" + word[0:1] + "AY")
        if letter == "O":
            print(word[1:] + "*" + word[0:1] + "AY")
        if letter == "U":
            print(word[1:] + "*" + word[0:1] + "AY")

В настоящее время он печатает каждое слово на букву в предложении и не расщепляется на гласной вообще. Есть ли простой способ для этого перебрать список, найти гласный и позволить мне разбить там слово? Заранее спасибо!

EDIT: Пример ввода:

"Computer science is great"

Ожидаемый результат:

"omputer*cay ience*scay is*~way eat*gray"

Всего 2 ответа


Настройте свои vowels в строке, а затем enumerate только вы столкнетесь с символом, который находится в vowels вы можете сохранить его index чтобы slice исходную строку

s = 'this'
vowels = 'aeiou'

for i, v in enumerate(s):
    if v.lower() in vowels:
        x = i
        break

print(s[x:] + s[:x]) # => isth

Замените word[1:] word[length:] и word[0:1] word[0:length]

Вы хотите использовать length потому что это текущий индекс цикла. word[length:] затем даст вам все буквы в слове, начиная с индекса этой гласной, а word[0:length] даст вам буквы в строке до этой гласной.


Есть идеи?

10000