如何将字符串偶数位置字符转为大写?我的Python代码为何报错?
问题分析与解决
原代码的错误点
- 用
string.split()完全没必要,而且后面直接把stringlist置空,这步操作等于白做,转字符串为字符列表直接用list(string)就行。 - 第二个循环里遍历的是字符
pan,不是位置索引,拿字符和数字做取模运算pan %2,Python会把字符当成格式化字符串处理,这就触发了TypeError。 pan.upper()不会修改原字符(字符串是不可变类型),而且没把转换后的字符存回去。- 函数外直接
print(stringlist),但stringlist是函数内部的局部变量,外部根本访问不到,会引发另一个错误。
修正后的代码
def func(string): char_list = list(string) # 遍历索引和字符,注意:如果是从0开始算偶数位置,用i %2 ==0;从1开始的话用i%2 ==1 for i, char in enumerate(char_list): if i % 2 == 0: # 这里按0-based的偶数位置处理,比如H(0)、l(2)、o(4) char_list[i] = char.upper() return ''.join(char_list) result = func("Hello") print(result) # 输出HElLo
说明
- 用
enumerate同时获取索引和字符,这样能准确判断位置。 - 直接修改列表里的元素,因为列表是可变类型,之后用
join把列表转回字符串。 - 函数返回处理后的字符串,外部接收后再打印,避免局部变量访问问题。
内容的提问来源于stack exchange,提问作者Freshie
相关产品推荐
相关产品推荐

