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

Python查找字符串大写字母位置时第二个大写T被识别为0是什么原因

问题根源

  • 核心错误出在n.index(x)的使用上:str.index()方法只会返回目标字符在字符串中第一次出现的位置,当同一个大写字母重复出现时,后续的相同字符都会返回首次出现的索引,这就是第二个T被识别为位置0的原因。
  • 你的遍历逻辑直接迭代字符串中的字符,没有跟踪当前字符的真实索引,无法正确记录重复大写字符的实际位置。

修复方案

改用enumerate()内置函数同时遍历字符串的索引和字符,直接拿到当前字符的真实位置,不需要调用index()方法,修正后的代码如下:

def capital_indexes(n):
    listOfUpperPlaces = []
    # 同时遍历索引idx和对应字符char
    for idx, char in enumerate(n):
        if char.isupper():
            listOfUpperPlaces.append(idx)
    return listOfUpperPlaces

print(capital_indexes("TEsTo"))

运行上述代码后输出为[0, 1, 3],和字符串"TEsTo"中三个大写字母的实际位置完全匹配。

可选替代写法

如果不习惯用enumerate,也可以直接遍历索引范围再取对应字符判断:

def capital_indexes(n):
    listOfUpperPlaces = []
    for i in range(len(n)):
        if n[i].isupper():
            listOfUpperPlaces.append(i)
    return listOfUpperPlaces

效果和上面的写法完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:02