Добавление символов к каждому слову ввода
Как в python к каждому слову из введенной строки добавить нужные буквы? Сейчас только к первому слову получается
vowels = 'бвгджзклмнпрстф'
word = input('Введи текст: ')
if word[0].lower() in vowels:
word = 'ххе' + word
elif word[0].lower() not in vowels and word[0].startswith('а'):
word = 'ххя' + word[1:]
elif word[0].lower() not in vowels and word[0].startswith('о'):
word = 'ххё' + word[1:]
elif word[0].lower() not in vowels and word[0].startswith('э'):
word = 'ххе' + word[1:]
elif word[0].lower() not in vowels and word[0].startswith('е'):
word = 'хх' + word[0:]
elif word[0].lower() not in vowels and word[0].startswith('ю'):
word = 'хх' + word[0:]
elif word[0].lower() not in vowels and word[0].startswith('я'):
word = 'хх' + word[0:]
elif word[0].lower() not in vowels and word[0].startswith('и'):
word = 'хх' + word[0:]
elif word[0].lower() not in vowels and word[0].startswith('у'):
word = 'ххю' + word[1:]
print(word)
Результат: Ввожу фразу из нескольких слов (например: вышел заяц погулять). На выводе должна быть фраза: ххевышел ххезаяц ххепогулять
Ответы (3 шт):
Автор решения: CameL
→ Ссылка
Видимо разбить строку на слова при помощи метода split
vowels = 'бвгджзклмнпрстф'
word = input('Введи текст: ')
for w in word.split():
if w[0].lower() in vowels:
w = 'ххе' + w
elif w[0].lower() not in vowels and w[0].startswith('а'):
w = 'ххя' + w[1:]
elif w[0].lower() not in vowels and w[0].startswith('о'):
w = 'ххё' + w[1:]
elif w[0].lower() not in vowels and w[0].startswith('э'):
w = 'ххе' + w[1:]
elif w[0].lower() not in vowels and w[0].startswith('е'):
w = 'хх' + w[0:]
elif w[0].lower() not in vowels and w[0].startswith('ю'):
w = 'хх' + w[0:]
elif w[0].lower() not in vowels and w[0].startswith('я'):
w = 'хх' + w[0:]
elif w[0].lower() not in vowels and w[0].startswith('и'):
w = 'хх' + w[0:]
elif w[0].lower() not in vowels and w[0].startswith('у'):
w = 'ххю' + w[1:]
print(w)
Результат:
Введи текст: вышел заяц погулять
ххевышел
ххезаяц
ххепогулять
Автор решения: Dmitry
→ Ссылка
Добавлю решение, которое сокращает вашу реализацию. Я просто использую словарь, как сопоставление гласной и приставки, которая соответствует условию.
pattern_0 = {
"е": "хх",
"ю": "хх",
"я": "хх",
"и": "хх",
}
pattern_1 = {
"а": "ххя",
"о": "ххё",
"э": "ххе",
"у": "ххю",
}
vowels = 'бвгджзклмнпрстф'
test_str = "вышел заяц погулять на опушку"
result = []
for word in test_str.split():
if word[0].lower() in vowels:
result.append('ххе' + word)
elif word[0].lower() in pattern_0.keys():
result.append(pattern_0[word[0]] + word)
else:
result.append(pattern_1[word[0]] + word[1:])
print(*result)
Вывод
ххевышел ххезаяц ххепогулять ххена ххёопушку
Автор решения: SergFSM
→ Ссылка
вы также можете это сделать с помощью регулярного выражения, примерно так:
from re import sub
d = {"а":"я", "о":"ё", "у":"ю"}
word = input('Введи текст: ')
print(sub(r'\b\w', lambda m: f'xx{d.get(m[0],"e"*(m[0] not in "еюяи")+m[0])}', word))
>>> out
'''
Введи текст: вышли заяц, олень и удав погулять
xxeвышли xxeзаяц, xxёлень xxи xxюдав xxeпогулять