我正在尝试创建一个遍历字符串的函数,在字典中查找与键相匹配的字符,并用字典中该键的值替换该字符。但是,它目前仅替换字典中出现的字母的第一个出现的字母,并在该处停止,这是我哪里出错了?
d = {
'I':'1', 'R':'2', 'E':'3', 'A':'4', 'S':'5', 'G':'6', 'T':'7', 'B':'8', 'O':'0',
'l':'1', 'z':'2', 'e':'3', 'a':'4', 's':'5', 'b':'6', 't':'7', 'g':'9', 'o':'0',
}
def cypher(string):
for i in string:
if i in d:
a = string.replace(i,d[i])
return a
您正在return
通过for循环内对的调用过早地结束代码。您可以通过将新的字符串存储在循环外来修复它,仅在循环完成后才返回:
def cypher(string):
a = string # a new string to store the replaced string
for i in string:
if i in d:
a = a.replace(i, d[i])
return a
但是,逻辑也有问题。如果您的词典中的值也是词典中的键,则该键可能会被替换两次。例如,如果您有d = {'I': 'i', 'i': 'a'}
,输入为Ii
,则输出为aa
。
这是使用更简洁的实现join
,没有这个问题。
def cypher(string):
return ''.join(d.get(l, l) for l in string)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句