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

Python代码在VS Code报错但LeetCode可运行,求解决方案

为啥会报错?

UnboundLocalError的核心原因有两个:

  • 变量引用在赋值之前:如果你的代码里先拿shortest_char来用(比如循环它的长度),之后才给它赋值(比如shortest_char = min(strs, key=len)),Python会把这个变量判定为局部变量,但引用时它还没被赋值,直接触发错误。
  • 没处理空输入:要是你在VS Code里测试了空字符串列表(比如strs = []),执行min(strs, key=len)会直接报错,导致shortest_char从来没被赋值过,后续代码一引用它就触发错误。
怎么修?

针对上面两种情况,直接调整代码即可:

  1. 调整变量顺序,先赋值再使用:把找最短字符串的代码放在所有用到它的逻辑前面,同时加上空输入判断:
def longestCommonPrefix(strs):
    # 先处理空输入,直接返回空串
    if not strs:
        return ""
    # 先确定最短字符串,再开始循环判断
    shortest_str = min(strs, key=len)
    for i in range(len(shortest_str)):
        current_char = shortest_str[i]
        for s in strs:
            if s[i] != current_char:
                return shortest_str[:i]
    return shortest_str
  1. 强制拦截空输入:不管测试什么场景,先判断输入数组是否为空,避免后续代码因为没有有效输入导致变量未赋值。
为啥LeetCode能跑VS Code不行?

根本不是平台有差异,而是测试输入不一样:
LeetCode的测试用例严格遵循题目约束,第14题的官方测试用例里,输入的字符串数组至少包含一个元素,不会出现空数组的情况,所以不会触发空输入导致的变量未赋值问题;而你在VS Code里可能自己测试了空数组这种边界场景——要是是变量引用顺序的问题,其实LeetCode也会报错,大概率是你测了LeetCode没覆盖的空输入场景。Python的作用域规则是统一的,不存在平台特殊处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:26:20