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

如何将字符串偶数位置字符转为大写?我的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:07:09