Python奇数索引字母大小写转换函数异常,如何修正?
问题修正方案
修正后的代码
def mock(string): result = [] for idx, char in enumerate(string): if char.isalpha(): # 针对0开始的偶数索引(对应1开始的奇数位置)转换大小写 if idx % 2 == 0: char = char.swapcase() result.append(char) else: # 非字母字符直接保留 result.append(char) return ''.join(result) print(mock("Abcd. Efgh.. Ijkl!")) # 输出: abCd. efGh.. IJkL!
原代码的错误点
- 索引维护错误:原代码手动维护
index变量时,在if index % 2 == 0分支内执行index +=1,分支结束后又执行一次index +=1,导致每次循环index增加2,跳过大量索引的处理,且非偶数索引的字符未被添加到结果字符串中,直接引发输出混乱。 - 非字母字符判断冗余:用
ord范围判断标点和空格的方式繁琐且遗漏数字处理,直接用char.isalpha()判断字母字符更简洁准确。 - 逻辑覆盖不全:原代码未处理数字字符(需求要求保留数字,但原代码的判断逻辑未包含数字范围),修正后的代码通过
else分支直接保留所有非字母字符,包括数字、标点和空格。
内容的提问来源于stack exchange,提问作者Hitanshu Jani
相关产品推荐
相关产品推荐

