我是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)
答案 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