Как удвоить все гласные в слове?

Я недавно начал заниматься программированием, но я не знаю как удвоить все гласные в слове без многократного использования метода find.

Например, с помощью алгоритма из слова "апельсины" сделать слово "аапеельсииныы". Поможете?


Ответы (5 шт):

Автор решения: Fox Fox

Готовый скрипт для тестирования:

import os

print("-" * 50 + "\nУдвоение гласных в строке (для трёх языков):\n" + "-" * 50)

v_text = "«Ой, у лузі червона калина похилилася...»"
lst_vowels = "аеєиіїоуюяёыэaeiou"

print("\nИсходный текст:", v_text)
print("Текст с удвоенными гласными:", ''.join([char * 2 if char.lower() in lst_vowels else char for char in v_text]))

print("\nНажмите любую клавишу для продолжения...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")
→ Ссылка
Автор решения: dofi4ka

Вот достаточно простой способ

text = input()  # строчка над которой будем издеваться
vowels = "аоэеиыуёюя".lower()  # символы которые будем дублировать

new_text = ""  # создаем новую строчку куда посимвольно запишем изменённый текст с продублированными гласными
for char in text:  # проходимся по всем символам изначальной строчки
    if char.lower() in vowels:  # если символ есть в строчке с гласными
        new_text += char * 2  # добавляем два этих символа
        # умножение символа (строчки) дублриует её n раз
        # "а" * 2 -> "аа"
    else:  # иначе
        new_text += char  # добавляем символ без изменений

print(new_text)
>>> апельсины
аапеельсииныы
→ Ссылка
Автор решения: Qwertiy

tio.run

import re

s = "У меня установлен Windows"

print(re.sub('([ёуеыаоэяиюeyuioaЁУЕЫАОЭЯИЮEYUIOA])', r'\1\1', s))

или так tio.run:

import re

s = "У меня установлен Windows"

print(re.sub('([ёуеыаоэяиюeyuioa])', r'\1\1', s, flags=re.I))
УУ мееняя уустааноовлеен Wiindoows
→ Ссылка
Автор решения: Haula

Какие-то еретические методы, конечно, выше рассказывают. Можно попроще, без всяких регулярных выражений, кэйсфолдов и ос... Полезно, конечно, разобраться, но тебе, как новичку, это на пользу не пойдёт пока что.

s=input() #ввод строки
str_of_vowel_letters='аеёиоуыэюя' #строка с гласными буквами в нижнем регистре
s2='' # пустая строка, в которой мы соберём новое слово
for i in s:
    if i.lower() in str_of_vowel_letters: 
"""
метод lower превращает букву из введённой строки в букву нижнего регистра, нам бы не пригодился этот метод, если бы мы в строку с гласными буквами нижнего регистра добавили гласные буквы в верхнем регистре
"""
        s2+=2*i
    else:
        s2+=i
print(s2)
→ Ссылка
Автор решения: P1Jack

Вот простенький код: мы вводим слово и создаем пустую строку, в которую будем записывать итог. Также создаем строку со всеми гласными. Затем циклом идем по всем буквам строки, добавляем их в новую и если это гласная, то добавляем еще раз :)

word = input()
new_word = ''
vowels = 'УЕЫАОЭЯИЮЁуеыаоэяиюё'

for char in word:
    new_word += char
    if char in vowels:
        new_word += char
print(new_word)
→ Ссылка