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

Python用列表推导式和enumerate互换字符串大小写报错如何解决?

错误原因

  • 直接触发报错的核心原因:enumerate(str.split)中的split是字符串内置方法,必须加括号()调用才会返回拆分后的单词列表,未加括号时str.split本身是方法对象,无法被enumerate遍历,直接触发你遇到的TypeError。
  • 语法逻辑错误:代码中str.upper[0]、str.upper[1:]、str[index].lower的写法全部错误,upper、lower都是字符串方法,必须加括号调用才能返回转换后的字符串,直接对方法本身做索引操作必然报错。
  • 需求匹配错误:你的目标是遍历每个字符做大小写互换,但现有代码是将字符串拆成单词列表后枚举单词的索引,和遍历字符的需求完全不匹配。
  • 编码习惯隐患:用Python内置字符串类名str作为变量名,覆盖了原生str类型,会导致后续相关原生功能调用异常。

修复方案

不需要拆分单词,直接遍历字符串的每个字符做判断转换即可,实现代码如下:

# 避免用内置类型名str做变量名
original_str = "My name is Shah, and I recently went to Mission Nightclub"
# 遍历每个字符,小写转大写,其余字符(大写、非字母符号)转小写
swapcase_str = ''.join([char.upper() if char.islower() else char.lower() for char in original_str])
print(swapcase_str)

运行输出结果:

mY NAME IS sHAH, AND i RECENTLY WENT TO mISSION nIGHTCLUB

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:03