Python按split后索引奇偶切换大小写仅返回字符串首段问题排查
代码错误点说明
- 核心错误:
for循环内部直接调用return,函数第一次遍历到第一个元素时就会直接返回结果终止执行,后续元素完全不会处理,这是你只能拿到第一个片段的直接原因。 - 逻辑错误:你没有将转换后的内容更新回拆分后的列表中,循环里的修改仅作用在临时变量
something上,即使没有提前return,最后join的还是原始拆分的列表,得到的依旧是原字符串。 - 隐含漏洞:使用
x.index(something)获取索引存在逻辑缺陷,如果拆分后的列表有重复元素,index()方法永远只会返回第一个匹配元素的索引,会导致后续重复元素的奇偶判断完全错误。
修正后代码
def somefunc(some_string): x = some_string.split() # 用enumerate同时遍历索引和对应元素,规避index方法的漏洞 for idx, content in enumerate(x): if idx % 2 == 0: # 把转换后的结果更新回原列表对应位置 x[idx] = content.upper() else: x[idx] = content.lower() # 所有元素处理完成后再返回拼接结果 return " ".join(x)
运行测试
somefunc("hey dude") 'HEY dude'
内容的提问来源于stack exchange,提问作者wes BOREland
相关产品推荐
相关产品推荐

