Python开发AI井字棋机器人时return存在值却返回None问题求助
Python井字棋return返回None问题排查方案
Python函数所有未显式指定返回值的执行路径,默认都会返回None,针对AI井字棋的开发场景,你可以优先排查以下几类常见问题:
- 递归调用分支未加返回语句
绝大多数AI井字棋会用极小化极大算法做逻辑实现,很多新手会在递归调用的分支漏写return。例如你只写了minimax(next_board, depth-1, is_max)来计算下一层的分数,没有在前面加return把结果向上传递,当前层级的函数执行完毕后就会默认返回None。 - 条件分支未完全覆盖
逐一检查胜负判断、平局判断、落子逻辑的所有if/elif/else分支,确认每一条可能的执行路径最后都有对应的return语句。如果存在没有匹配到任何条件分支的场景,函数就会返回None,例如只覆盖了胜负场景的返回,漏掉了平局的分支返回。 - 返回语句缩进层级错误
检查return语句的缩进是否正确,是否被错误写在了循环或者子条件分支内部。例如你把返回AI落子坐标的return写在了遍历棋盘的for循环内部,一旦循环没有触发对应条件提前结束,函数就没有返回值。 - 混淆了
print和return的作用
部分新手测试逻辑时习惯用print()输出结果,写完测试后忘记补充return语句把结果返回给上层调用方,最终调用方拿到的就是None。
按照以上四个方向逐一排查代码,基本可以定位到你遇到的问题。
内容的提问来源于stack exchange,提问作者MasterMind
相关产品推荐
相关产品推荐

