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

如何编写字符串解码函数?请指出我的Python代码错误

字符串解码函数问题排查

问题背景

我在编写一个使用循环的字符串解码函数时遇到问题,该函数需根据错误规则还原正确单词。例如输入LATE会输出TALE,输入A有时会显示为8或B。测试用例包括"L8KAOUL"、"E8N8N8"、"UUIP"。

解码规则如下:

输入字符输出字符
TL
LT
A8
AB
EA
BE
WUU

尝试编写的代码:

result = ""
def decoder(misspelled_word):
    for letter in misspelled_word:
        if letter == "L":
            result += "T"
        elif letter == "T":
            result += "L"
        elif letter == 8 or letter == "B":
            result += "A"
        elif letter == "A":
            result += "E"
        elif letter == "E":
            result += "B"
        else:
            return misspelled_word
    return result

代码中的错误

  1. 全局变量污染:result定义在函数外部,属于全局变量。每次调用decoder时,result不会自动重置,会保留上一次调用的结果,导致多次调用后输出混乱。
  2. 字符类型不匹配:规则中输入的8是字符串类型(比如测试用例里的"L8KAOUL"中的8),但代码里写的是letter == 8(数字8),永远无法匹配成功,应改为letter == "8"。
  3. 未知字符处理错误:遇到规则外的字符时,代码直接返回整个原单词,而不是保留该字符继续处理后续内容,这会导致像"L8KAOUL"这类包含未知字符的测试用例直接返回原字符串,无法完成解码。
  4. 未实现UU转W的规则:当前代码是逐个字符循环处理,无法识别连续的两个U,完全遗漏了解码规则中UU还原为W的逻辑。

修正后的代码

def decoder(misspelled_word):
    result = []
    i = 0
    word_length = len(misspelled_word)
    while i < word_length:
        # 优先处理UU转W的情况
        if i + 1 < word_length and misspelled_word[i] == "U" and misspelled_word[i+1] == "U":
            result.append("W")
            i += 2
            continue
        # 处理单个字符的解码映射
        current_char = misspelled_word[i]
        if current_char == "L":
            result.append("T")
        elif current_char == "T":
            result.append("L")
        elif current_char == "8" or current_char == "B":
            result.append("A")
        elif current_char == "A":
            result.append("E")
        elif current_char == "E":
            result.append("B")
        else:
            # 规则外的字符直接保留
            result.append(current_char)
        i += 1
    return "".join(result)

修正说明

  • 将result移到函数内部,改为列表类型(列表拼接字符串比直接+=效率更高),每次调用函数都会重新初始化,避免全局变量的干扰。
  • 修正了8的匹配逻辑,确保和输入的字符串类型一致。
  • 调整未知字符的处理逻辑,改为直接保留字符并继续循环,保证完整处理整个输入字符串。
  • 使用while循环实现连续字符UU的识别,完成UU转W的解码规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:20:12