如何修复Python字符串逐个大小写转换函数的报错问题
修复字符串大小写互换函数的报错问题
错误原因
Python中的字符串属于不可变序列类型,无法直接通过words[i] = ...这种索引赋值的方式修改字符串里的单个字符,这就是代码运行报错的核心原因。
修复方案1:转为列表处理(直观易懂)
先把字符串转换成可变的列表,修改完成后再转回字符串:
def Upper_lower(words): word_list = list(words) for i in range(len(word_list)): if word_list[i].isupper(): word_list[i] = word_list[i].lower() else: word_list[i] = word_list[i].upper() return ''.join(word_list) # 测试 print(Upper_lower('AAABBBcccddd')) # 输出: aaabbbCCCDDD
注:判断条件里的== True可以省略,直接用if word_list[i].isupper()更简洁。
修复方案2:使用生成器表达式(Pythonic写法)
遍历每个字符并完成大小写转换,最后用join拼接成字符串,代码更简洁高效:
def Upper_lower(words): return ''.join(c.lower() if c.isupper() else c.upper() for c in words) # 测试 print(Upper_lower('AAABBBcccddd')) # 输出: aaabbbCCCDDD
内容的提问来源于stack exchange,提问作者jiyoon jang
相关产品推荐
相关产品推荐

