如何在Python中混合字符串

时间:2015-03-28 18:39:40

标签: python string function

我正在尝试编写一个函数来在python中混合字符串,但最后我陷入困境。所以对于这个例子,我有2个单词,mix和pod。我想创建一个返回的函数:pox mid

我的代码只返回pox mix

代码:

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 donner

谢谢!

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

如果你只想把第二个单词放在第一个单词之前:

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

让你针对pox mix建议你可能想要:

1)用x替换单词b的最后一个字符 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

您可以简单地将b与a交换,以便更改单词的位置。

如果您不想要metween中的空格:

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

<强>更新

“交换”b和a之间的第二个字母,我只需更正您的功能,如下所示:

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