这段代码有什么问题?替换方法

时间:2014-10-22 18:51:23

标签: python

我是python的新手,我正在努力尝试提高我的技能。我坚持这个挑战虽然看起来相当容易。我得到了一个“最终声明预期”的错误,我不知道为什么我确定这是一个非常简单的问题,但我仍然坚持不过。

t = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp." \
       " bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. " \
       "sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."

def decoder(text):
    for i in text:
        if i == "k":
            text.replace(i, "m")
        elif i == "o":
            text.replace(i, "q")
        elif i == "e":
            text.replace(i, "g")
    return text

print decoder(t)

4 个答案:

答案 0 :(得分:2)

字符串在Python中是不可变的。 replace返回一个新字符串,替换字符。

for循环的目的是什么?如果字符不在字符串中,则replace不执行任何操作。

答案 1 :(得分:0)

t = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp." \
       " bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. " \
       "sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."

def decoder(text):
    text = text.replace('k', "m")
    text = text.replace('o', "q")
    text = text.replace('e', "g")
    return text

print decoder(t)

答案 2 :(得分:0)

无需循环字符。您只需运行print t.replace("k", "m").replace("o", "q").replace("e", "g"),它将尝试替换字符串中的每个字符。

答案 3 :(得分:0)

如其他答案所述,字符串是不可变的。所以text.replace()不会有任何影响。并且replace()字符串方法将用new替换旧的所有出现,因此如果使用for方法,则无需使用replace() - 循环。但是如果你想在一个循环中这样做,你可以通过添加t这样的字符来构造字符串,

def decoder(text):
    decoded = ""
    for i in text:
        if i == "k":
            decoded += "m"
        elif i == "o":
            decoded += "q"
        elif i == "e":
            decoded += "g"
        else:
            decoded += i
    return decoded