Python数独生成代码报ValueError解包错误该如何解决
错误根因
该解包报错由多序列遍历语法误用导致:
代码中for rdm_number, g in rdm_list, range(9):的写法会被Python解析为将(rdm_list, range(9))作为待迭代的二元元组,首次迭代时会尝试将长度为9的rdm_list拆分为2个变量,二者长度不匹配因此抛出ValueError。
修复方法
遍历多个等长序列需使用zip()函数对序列进行打包,将报错行修改为如下内容即可:
for rdm_number, g in zip(rdm_list, range(9)):
其余逻辑优化提示
现有数独生成逻辑还存在两处可调整点:
- 仅校验了列维度数字不重复,未校验3×3小宫格内的数字唯一性,不符合数独规则,生成的结果会存在宫格重复问题
h += 1逻辑位于校验分支外,随机行未通过列校验时行号仍会累加,最终会出现无法生成满9行有效数独的问题,建议将h += 1挪入if test_var == 9:的分支内部,仅校验通过后再切换行号
内容的提问来源于stack exchange,提问作者ThomasFR
相关产品推荐
相关产品推荐

