如何修正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
相关产品推荐
相关产品推荐

