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

如何用含字典的函数实现表情替换?UnboundLocalError报错排查

错误原因及解决方法

错误原因

  • 局部变量未初始化:函数converter中直接执行output += ...时,Python会判定output是局部变量,但你没有在函数内部对它进行初始化,外部的全局output不会被函数优先调用,因此触发UnboundLocalError。
  • return位置错误:return output写在for循环内部,第一次循环就会直接返回结果,导致只能处理第一个单词,无法完成整句转换。
  • 未调用函数:代码仅定义了converter函数,但没有执行调用操作,就算逻辑正确也不会输出结果。
  • 拼接格式问题:拼接时加空字符串无意义,且未添加空格,转换后的单词会连在一起(比如原句会变成Iamhappy😀)。

解决方法

修正后的代码(推荐用列表拼接,效率更高)

message = input('>')

def converter(msg):
    emojis = {
        ':)' : '😀',
        ':(' : '😔'
    }
    words = msg.split()
    output = []
    for word in words:
        output.append(emojis.get(word, word))
    return ' '.join(output)

# 调用函数并打印结果
print(converter(message))

修正说明

  1. 将输入内容message作为参数传入函数,避免依赖全局变量,让函数逻辑更独立。
  2. 在函数内部初始化output为列表(字符串拼接在循环中会频繁生成新对象,列表拼接更高效)。
  3. 将return移到循环外部,确保所有单词处理完成后再返回完整结果。
  4. 使用' '.join(output)将列表转为带空格的字符串,保留原句的空格分隔格式。
  5. 主动调用函数并打印返回值,完成最终输出。

另一种字符串拼接实现方式

message = input('>')

def converter(msg):
    emojis = {
        ':)' : '😀',
        ':(' : '😔'
    }
    words = msg.split()
    output = ''
    for word in words:
        output += emojis.get(word, word) + ' '
    return output.strip()  # 去掉最后多余的空格

print(converter(message))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:52:07