2015-03-28 2 views
-3

Я пытаюсь написать функцию для смешивания строк в python, но я застреваю в конце. Итак, для этого примера у меня есть 2 слова, mix и pod. Я хотел бы создать функцию, которая возвращает: оспа серединеКак смешивать строки в Python

Мой код возвращает только оспа микс

Код:

def mix_up(a, b): 
    if len(a and b)>1: 
     b=str.replace(b,b[2],a[2:3]) 
     a=str.replace(a,a[2],b[2]) 
     print b,"",a 
    return 
mix_up('mix','pod') 

Я ищу, чтобы сделать это для нескольких слов. Так еще один пример:

, если я использовал собаку, ужин

Выход должен вернуть DIG Доннер

Спасибо!

+1

Это не смешивая ... это перестановке к определенной картины, т.е. пакетике (2-е слово), пробел, и первое слово .... Я думал, смешивание было бы чем-то, что вы не можете сказать, где стручок и где смесь будет размещена .... – ha9u63ar

+0

Хотели бы вы обменять только последние буквы двух слов? 'mix' и' pod' становятся 'mid' и' pox' – halex

ответ

1

Маленькая игра string slicing

def mix_up(first, second): 
    new_first = second[:2] + first[2:] 
    new_second = first[:2] + second[2:] 
    return " ".join((new_first, new_second)) 

assert mix_up('mix','pod') == 'pox mid' 
assert mix_up('dog','dinner') == 'dig donner' 
0

Если вы просто хотели поставить 2-ое слово перед первым словом все время:

def mix_up(a,b): 
    return " ".join([b,a]) # Should return pod mix 

подавай, что вы нацелены на pox mix предполагает, что вы, вероятно, хотели:

1) Заменить последний характер слова b с x 2) Место b перед a.

В этом случае функция будет:

def mix_up(a,b): 
    b = b.replace(b[len(b)-1], 'x') # 'x' could be any other character 
    return " ".join([b,a]) # Should return pox mix 

вы можете просто поменять местами б с тем чтобы изменить положение слов.

Если вы не хотите, чтобы пространство в metween:

return "".join([b,a]) 

UPDATE

на «своп» вторая буква между б и я просто исправить вашу функцию как следующее:

def mix_up(a, b): 
    if len(a and b)>1: 
     temp = b[1] # Store it in a temp 
     b=str.replace(b,b[2],a[2:3]) 
     a=str.replace(a,a[2],b[2]) 
     print (b,"",a) 
    return 
mix_up('mix','pod') 

Ваша единственная проблема была когда-то вы заменили b, вы использовали новыйb, чтобы выбрать вторую букву и заменить на a.

+0

Это не то, что OP сказал, что он хотел сделать ... – dursk

+1

В своем примере вывод OP заменил последние символы двух слов тоже – halex

+0

@mattm Я буду обновите мой ответ, как только ОП разобьет его вопрос ..... исходя из того, что он пытался сделать ... решение выше работает ... – ha9u63ar

Смежные вопросы