如何在循环中相互添加字符串?

时间:2017-11-02 23:04:07

标签: python string loops

对于我的编程类,我需要创建一个以字符串和两个字母作为参数的程序。每当第一个字母出现在字符串中时,它将替换为第二个字母。我可以通过将最终字符串放入列表来完成此操作。但是,我们的教授说他希望它是一个字符串,而不是一个列表。如果最终结果出现在列表中,下面显示的代码就是我用来使程序工作的代码。

def str_translate_101(string, x, y):
    new_list = []
    for i in string:
        if i == x:
            new_list.append(y)
        if i != x:
            new_list.append(i)
    return new_list     

我试图制作一个输出字符串的地方,但它只返回第一个字母而程序会停止(我假设因为“返回”而发生)

def str_translate_101(string, old, new):
    for i in string:
        if i == old:
            return new
        else:
            return i

然后我尝试使用print函数,但这也没有帮助,因为当我运行该函数时没有输出。

def str_translate_101(string, old, new):
    for i in string:
        if i == old:
            print(new)
        else:
            print(i)

任何帮助将不胜感激。 结果如何工作的一个例子如下:

str_translate_101('abcdcba','a','x')---> 'xbcdcbx'

2 个答案:

答案 0 :(得分:3)

您可以使用join将列表合并为字符串:

def str_translate_101(string, x, y):
    new_list = []
    for i in string:
        if i == x:
            new_list.append(y)
        else:
            new_list.append(i)
    return ''.join(new_list)

或使用单行

str_tranlsate_101 = str.replace

答案 1 :(得分:0)

最简单的解决方案是,不是将字符存储在列表中,而是简单地声明一个空字符串,并在'if'块中使用扩充的'+ ='运算符将字符附加到字符串。例如。     如果我== x:         concat_str + = y

至于返回,基本上,它将突破for循环并返回到调用函数的位置。这是因为它只有1个目标,一旦实现它就不会费心去处理任何进一步的代码,只需回到函数调用的地方。