如何修改Python的swapplaces函数实现大小写敏感的指定字符替换
swapplaces 函数实现修复方案
需求说明
- 函数接收三个参数:字符串
s、长度为1的待替换字符c、长度为1的替换目标字符r - 返回将
s中所有c替换为r后的新字符串,替换大小写敏感 - 预期用例结果:
swapplaces("let","l","g") == "get" swapplaces("chip","c","s") == "ship" swapplaces("lay low for lola","l","s") == "say sow for sosa" swapplaces("OcapudoliciOus", "O", "e") == "ecapudolicieus"
原有代码问题梳理
- 自定义
listToString函数逻辑错误:使用空格作为拼接符,会导致输出字符串的每个字符之间都多出一个空格,不符合预期输出要求 - 循环变量命名冲突:遍历列表时临时变量也命名为
c,会覆盖传入的待替换字符参数c,导致匹配逻辑完全混乱 - 方法调用错误:Python的列表类型没有
replace方法,直接调用q.replace(c,r)会直接抛出异常
修复后代码
手动遍历实现版本
def swapplaces(s, c, r): res = [] for char in s: # 匹配到待替换字符则替换,否则保留原字符 res.append(r if char == c else char) # 直接用空字符串拼接列表,无需额外定义转换函数 return ''.join(res)
极简实现版本
Python字符串内置的replace方法本身就满足「替换所有匹配项、大小写敏感」的要求,直接调用即可:
def swapplaces(s, c, r): return s.replace(c, r)
内容的提问来源于stack exchange,提问作者jordan parker
相关产品推荐
相关产品推荐

