Форум сайта python.su
0
Здравствуйте, уважаемые. Только приступил к изучению питона 3.х и практики ради придумал себе задачку:
Имеем любое слово, которое нужно преобразовать в другое слово, соблюдая правило: после гласных добавляется буква “С” и предыдущая гласная. Например:
слово “Попа” должно превратиться в слово “Посопаса”.
Написал такой нехитрый код (понимаю, что могу изобретать велосипед или код покажется корявым):
a = ["а", "е", "и", "о", "у", "ы", "э", "ю", "я"] b = "лалала" c = "c" x = 0 z = 0 while x < len(b): y = b[x] while z < len(a): j = a[z] if y == j: y = y + c + j z += 1 else: z = 0 print(y) x += 1
Офлайн
857
>>> def f(s, c='с', g=set('аеиоуыэюя')): ... return ''.join((i in g and i + c + i) or i for i in s) ... >>> f('тест тест') 'тесест тесест' >>>
Офлайн
103
def f(s, c='с', g=["а", "е", "и", "о", "у", "ы", "э", "ю", "я"]): return ''.join(reduce(lambda x, y: x.replace(y, y+c+y) ,[s]+g)) print f('тест тест')
Отредактировано terabayt (Дек. 22, 2014 10:24:47)
Офлайн
0
Спасибо за оперативные ответы, но реально ли получить необходимый результат именно с моим кодом? Челлендж был таков, что, прочитав одну главу, мне пообещали, что я смогу уже реализовать мою задумку.
Отредактировано d1ms (Дек. 22, 2014 12:44:44)
Офлайн
0
Вначале ко всем переменным добавь например answer = “”
..потом вместо print(y) сделай answer = answer + y, и ПОСЛЕ цикла принтуй: print(answer)
Офлайн
103
d1ms
Помогите разобраться, как мне скомпоновать вывод этого кода в одно целое итоговое слово?
a = ['а', 'е', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я'] b = 'лалала' c = 'с' x = 0 z = 0 while x < len(b): y = b[x] while z < len(a): j = a[z] if y == j: y = y + c + j z += 1 else: z = 0 print(y, end='') x += 1 print()
Офлайн