如何编写函数将指定数组中的字母替换为字符串中的‘*’
问题分析与修复
你的代码核心问题有两个:
- 错误地将单个字符和数组直接做相等判断(
c == lett),这永远不会匹配成功,应该判断字符是否存在于目标数组中 - 未处理大小写匹配问题,示例里的大写
I需要被替换,但传入的数组里是小写i,得忽略大小写来做判断
修正后的代码
def filter(word, lett): new_word = '' # 把要替换的字母统一转成小写,消除大小写差异 target_letters = [l.lower() for l in lett] for c in word: # 当前字符转小写后检查是否在目标列表内 if c.lower() in target_letters: new_word += '*' else: new_word += c return new_word # 测试示例 print(filter('Irisk', ['i','k'])) # 输出: *r*s*
关键改动说明
- 先将传入的字母数组
lett统一转成小写,避免因大小写不一致导致的匹配失败 - 判断时把当前字符也转成小写,用
in关键字检查是否在目标列表中,替代原代码中错误的==比较 - 保留原字符串中无需替换字符的大小写(比如示例里的'r'和's'保持原样)
如果不需要忽略大小写,只需把判断逻辑改成c in lett即可,但根据你的示例需求,显然需要支持大小写不敏感的替换。
内容的提问来源于stack exchange,提问作者Lonely_Noble
相关产品推荐
相关产品推荐

