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
相关产品推荐
相关产品推荐

