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

Python字符串处理问题:指定字母邻接字符重复大写排查

代码重复大写异常的原因排查

问题现象

运行get_funny_case_capital_cities("u")时,目标城市名出现重复大写字符,例如期望输出bRuSsels,实际得到brRuSssels。

核心问题

代码在处理目标字母时重复添加了前后相邻字符,导致同一字符被多次写入结果列表:

  • 当循环到目标字母(如索引i的u)时,代码会将前一个字符(i-1)大写、目标字母、后一个字符(i+1)大写拼接后加入结果列表
  • 但循环到i-1或i+1的位置时,这些字符本身不是目标字母,会被再次以小写形式加入结果列表
  • 最终导致同一字符既在处理目标字母时被大写添加,又在自身的循环位置被小写添加,出现重复(比如r变成rR,s变成Ss)

具体代码逻辑缺陷

来看这段关键循环:

for i in range(len(capital)):
    char = capital[i].lower()
    if char == letter.lower():
        prev_char = capital[i - 1].upper() if i > 0 and capital[i - 1].isalpha() else ''
        next_char = capital[i + 1].upper() if i < len(capital) - 1 and capital[i + 1].isalpha() else ''
        funny_case_capital.append(prev_char + char + next_char)
    else:
        funny_case_capital.append(char)

以处理Brussels中的u为例:

  1. 循环到索引2(字符r):不是目标字母,添加小写r到列表
  2. 循环到索引3(字符u):是目标字母,添加大写R+u+大写S到列表,此时列表里有['b','r','RuS']
  3. 循环到索引4(字符s):不是目标字母,添加小写s到列表,列表变成['b','r','RuS','s']
  4. 后续字符继续正常添加,最终拼接出brRuSssels,出现了rR和Ss的重复

本质是代码没有标记哪些字符已经被处理过,导致前后相邻字符被重复写入。

内容的提问来源于stack exchange,提问作者Palmyyy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:03:33