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

字符串大小写交替转换代码报错:索引越界问题如何修复?

修复字符串大小写交替转换时的索引越界问题

这个问题我之前也碰到过!你的代码核心思路是每两个字符为一组,把第一个转大写、第二个转小写,但忽略了字符串长度为奇数的场景:当循环到最后一个字符时,index+1会超出字符串的最大索引(毕竟字符串索引从0开始),直接触发String index out of range错误。

方法一:兼容奇偶长度的分组处理

我们可以在循环里先处理当前字符,再判断是否存在下一个字符,避免越界:

def skyline(str1):
    result = ''
    index = 0
    str_length = len(str1)
    while index < str_length:
        # 先处理当前索引的字符为大写
        result += str1[index].upper()
        # 只有当存在下一个字符时,才处理为小写
        if index + 1 < str_length:
            result += str1[index + 1].lower()
        index += 2
    return result

这个修改保留了你原本的分组逻辑,同时给访问index+1加了判断,确保不会越界。

方法二:按单个字符的索引奇偶性转换(更稳妥)

其实不需要强行分组,直接遍历每个字符的索引,根据索引的奇偶来决定大小写(比如偶数索引大写,奇数索引小写),这种方式不管字符串长度是奇是偶都能完美处理:

def skyline(str1):
    result = ''
    for idx, char in enumerate(str1):
        if idx % 2 == 0:
            result += char.upper()
        else:
            result += char.lower()
    return result

如果想更简洁,还可以用列表推导式一行搞定:

def skyline(str1):
    return ''.join(char.upper() if idx % 2 == 0 else char.lower() for idx, char in enumerate(str1))

这两种方法都能解决索引越界的问题,第二种逻辑更直观,也更不容易出错~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:20:49