You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正Python代码以实现字符串中'r'的匹配检测、索引输出及替换功能?

如何修正Python代码以实现字符串中'r'的匹配检测、索引输出及替换功能?

嘿,我来帮你搞定这个问题~你的代码逻辑其实已经对了大半,问题出在替换和打印新字符串的代码没有放到if语句块里,而且缺少了处理没有'r'情况的else分支,导致不符合需求。

咱们先看原代码的问题:不管输入字符串里有没有'r',你写的替换和打印代码都会执行,所以当没有'r'的时候,不会输出要求的"No matches",反而会把原字符串打出来,这就偏离需求啦。

下面是修正后的完整代码:

string_data = input()

if 'r' in string_data:
    # 输出第一个'r'的索引
    index = string_data.find('r')    
    print(f'At: {index}') 
    # 替换前两个'r'为(deleted)并打印新字符串
    new_str = string_data.replace("r", "(deleted)", 2) 
    print(new_str)
else:
    # 没有找到'r'时的输出
    print("No matches")

我给你拆解下改动点:

  • 把替换和打印新字符串的代码缩进,放到if块内部,这样只有当字符串里存在'r'的时候才会执行这部分逻辑;
  • 补上了else分支,专门处理没有'r'的情况,输出要求的"No matches";
  • 优化了索引的打印格式,用f'At: {index}'替代原来的写法,输出会更连贯(比如原代码会输出"At: 5",现在是"At: 5",更符合常规格式);
  • 去掉了多余的print(end='')和空print(),直接用print(new_str)就能自动换行输出,更简洁。

你可以测试几个案例验证下:

  • 输入hello world,会输出:
    At: 8
    hello wo(deleted)ld
    
  • 输入rrrprogram,会输出:
    At: 0
    (deleted)(deleted)rprogram
    
  • 输入python,会输出:
    No matches
    

备注:内容来源于stack exchange,提问作者Michael Romero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:07:59