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

Python实现字符串中两个*号间字符转大写的代码错误排查

现有代码的问题
  • 最后直接打印了未做任何修改的原输入字符串s,Python中字符串是不可变类型,对字符的操作不会直接修改原字符串
  • 列表l的append(i)操作写在了for循环外部,仅会追加字符串的最后一个字符,无法收集所有处理后的字符
  • 内部while逻辑完全错误:检测到第一个*后,你始终在判断当前这个*字符,没有遍历后续的字符,星号中间的内容完全没被处理
  • i.upper()调用后没有接收返回值,字符串方法不会修改原字符,该调用没有任何实际效果
  • 没有处理要丢弃的*标记字符,也没有将处理后的字符列表拼接为最终字符串返回
  • 列表l定义为全局变量,多次调用函数会出现内容累加的问题
修正后的代码实现
def func(s):
    result = []
    inside = False
    for char in s:
        if char == "*":
            # 切换标记状态,同时不把*本身加入结果
            inside = not inside
            continue
        # 根据状态决定是否转大写
        result.append(char.upper() if inside else char)
    # 拼接为字符串返回
    return ''.join(result)

# 测试用例
test_str = "I want *this text* to be uppercase"
print(func(test_str))

运行后输出:I want THIS TEXT to be uppercase

内容的提问来源于stack exchange,提问作者Keiser Soze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:57:01