Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 22, 2014 00:46:47

d1ms
Зарегистрирован: 2014-12-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Объединение всех значений переменной в итерации в одну строку

Здравствуйте, уважаемые. Только приступил к изучению питона 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
Помогите разобраться, как мне скомпоновать вывод этого кода в одно целое итоговое слово?

Офлайн

#2 Дек. 22, 2014 04:20:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Объединение всех значений переменной в итерации в одну строку

>>> def f(s, c='с', g=set('аеиоуыэюя')):
...     return ''.join((i in g and i + c + i) or i for i in s)
... 
>>> f('тест тест')
'тесест тесест'
>>>



Офлайн

#3 Дек. 22, 2014 10:24:26

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Объединение всех значений переменной в итерации в одну строку

def f(s, c='с', g=["а", "е", "и", "о", "у", "ы", "э", "ю", "я"]):
    return ''.join(reduce(lambda x, y: x.replace(y, y+c+y) ,[s]+g))
print f('тест тест')



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Дек. 22, 2014 10:24:47)

Офлайн

#4 Дек. 22, 2014 12:39:22

d1ms
Зарегистрирован: 2014-12-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Объединение всех значений переменной в итерации в одну строку

Спасибо за оперативные ответы, но реально ли получить необходимый результат именно с моим кодом? Челлендж был таков, что, прочитав одну главу, мне пообещали, что я смогу уже реализовать мою задумку.

Отредактировано d1ms (Дек. 22, 2014 12:44:44)

Офлайн

#5 Дек. 22, 2014 19:09:47

alexiy
Зарегистрирован: 2013-10-16
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Объединение всех значений переменной в итерации в одну строку

Вначале ко всем переменным добавь например answer = “”
..потом вместо print(y) сделай answer = answer + y, и ПОСЛЕ цикла принтуй: print(answer)

Офлайн

#6 Дек. 22, 2014 23:35:31

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Объединение всех значений переменной в итерации в одну строку

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()



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version