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
相关产品推荐
相关产品推荐

