LeetCode提交5行代码却提示29、39行报错问题咨询
问题现象
- 首次使用LeetCode平台作答《两整数相加》题目时,自行编写的代码仅5行,编译器却提示第29行、39行存在错误。
- 尝试刷新页面、关闭标签页重新进入等操作均无法解决问题。
- 个人编写的代码内容如下:
num1 = 12 num2 = 5 sum = num1 + num2 print(sum)
报错信息
平台返回的报错内容如下:
NameError: global name 'Solution' is not defined ret = Solution().sum(param_1, param_2) Line 29 in _driver (Solution.py) _driver() Line 39 in <module> (Solution.py)
问题原因
报错提示的29行、39行不属于你编写的代码,是LeetCode平台后台内置的判题驱动脚本的行号,和你自己写了几行代码没有关系。
LeetCode的判题逻辑不是直接运行用户提交的独立脚本,它有固定的调用规则:判题程序会先查找你代码里定义的Solution类,实例化之后调用这个类下和题目匹配的解题方法,传入测试用例后拿到返回值做结果校验。你提交的代码完全没有按照平台要求定义Solution类和对应解题方法,后台找不到对应的类定义,自然会抛出这个名称错误。
解决方法
- 不要删除LeetCode代码编辑器初始化自带的默认代码框架,这个框架是平台提前写好的、符合自身调用规则的结构,你只需要在框架预留的位置补全解题逻辑即可,不需要自己给参数赋测试值,也不需要写
print输出结果,平台会自动传入测试用例、读取返回值做校验。 - 针对这道两整数相加的题目,符合平台规范的代码结构如下:
class Solution: def sum(self, num1: int, num2: int) -> int: return num1 + num2
- 几个硬性要求不要搞错:必须保留
Solution类定义,类下的方法名要和题目要求一致,计算结果通过return返回给判题程序即可,不需要额外写多余的脚本逻辑。
内容的提问来源于stack exchange,提问作者big-mac-overflow
相关产品推荐
相关产品推荐

