Как удвоить все гласные в слове?
Я недавно начал заниматься программированием, но я не знаю как удвоить все гласные в слове без многократного использования метода find
.
Например, с помощью алгоритма из слова "апельсины"
сделать слово "аапеельсииныы"
.
Поможете?
Ответы (5 шт):
Готовый скрипт для тестирования:
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")
Вот достаточно простой способ
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)
>>> апельсины
аапеельсииныы
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
Какие-то еретические методы, конечно, выше рассказывают. Можно попроще, без всяких регулярных выражений, кэйсфолдов и ос... Полезно, конечно, разобраться, но тебе, как новичку, это на пользу не пойдёт пока что.
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)
Вот простенький код: мы вводим слово и создаем пустую строку, в которую будем записывать итог. Также создаем строку со всеми гласными. Затем циклом идем по всем буквам строки, добавляем их в новую и если это гласная, то добавляем еще раз :)
word = input()
new_word = ''
vowels = 'УЕЫАОЭЯИЮЁуеыаоэяиюё'
for char in word:
new_word += char
if char in vowels:
new_word += char
print(new_word)