import sysdef panduan(list):len_m = len(list)# 定义一个基准,拿每一行与每个宫排序之后跟temp对比,一致则说明,每一行都是1到9的数字temp = ['1', '2', '3', '4', '5', '6', '7', '8', '9']if len_m == 9:#如果list是9个元素则执行此段代码,判断每行排序之后是否与temp相等for i in list:if sorted(i) == temp:return Trueelse:return Falseif len_m == 3:#如果list是3个元素则执行此段代码,现将3*3宫的每行列表相加变成一个9个元素的列表,将9个元素的列表与temp比较# print(list[0] + list[1] + list[2])if sorted(list[0] + list[1] + list[2]) == temp:return Trueelse:return Falseif __name__ == '__main__':#键盘输入数据sudo = sys.stdin.readline()#将键盘输入的字符转换成list再进行切片,切成9个含有9个元素的列表list1 = [list(sudo[x * 9:x * 9 + 9]) for x in range(0,9)]     #分成9*9的矩阵,每行都是一个列表,9个列表;使用列表的切片#再对9*9的列表进行切片,切成9个3*3的列表就是宫list2 = [[list(list1[x][j * 3 : j * 3 + 3]) for x in range(3) ] for j in range(3)]      #切前三行list3 = [[list(list1[x][j * 3 : j * 3 + 3]) for x in range(3,6) ] for j in range(3)]    #中间三行list4 = [[list(list1[x][j * 3: j * 3 + 3]) for x in range(6,9)] for j in range(3)]      #最后三行#相加最后得到9个3*3list_end = list2 + list3 + list4# print(list_end)flag = True     #设置一个标志if panduan(list1):      #调用panduan函数,如果9*9的列表是符合判断的则往下执行for x in list_end:      #循环取每个3*3的列表print(x)if panduan(x):      #调用panduan函数,如果符合判断则标志是True,否则是Falseflag = Trueelse:flag = Falseprint(flag)     #最后输出判断结果

思路:判断99的每行是1到9的数字,再判断每个33的小方格(宫)是1到9的数字
验证代码正确性:
案例1:
534678912672195348198342567859761423426853791713924856961537284287419635345286179
案例2:
761934825354628197928157634219546378483279516576381942195762483832495761647813259
案例3:
123456789234567891345678912456789123567891234678912345789123456891234567912345678
关于这道题,我一开始的想法是计算每行每列的和是45(见前一篇文章)不对的;然后又想着再计算每行每列和等于45的基础上加上判断宫(每个3*3的小方格)的和等于45,也是不对的,比如81个5的时候就不对;百度看到有人的文章是判断每行每列没有重复的数字,这也是不对的,案例3就可以打破这个说法;百度又有人说检查行、列是否有重复项 + 每行的和等于45两个条件判断,也不对,还是案例3说明不对。
还是要从数独的概念上解答此题,下面抄上百度的话:
数独 (英语:Sudoku)是一种逻辑性的数字填充游戏,玩家须以数字填进每一格,而每行、每列和每个宫(即3x3的大格)有齐1至9所有数字。

用python实现判断9*9数独的正确性相关推荐

  1. python图像数独_Python判断有效的数独算法示例

    本文实例讲述了Python判断有效的数独算法.分享给大家供大家参考,具体如下: 一.题目 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 1. 数字 1-9 在 ...

  2. python怎样判断一个文件是否存在_python如何判断一个文件是否存在

    python如何判断一个文件是否存在 发布时间:2020-09-23 11:38:42 来源:亿速云 阅读:82 作者:Leah python如何判断一个文件是否存在?针对这个问题,这篇文章详细介绍了 ...

  3. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  4. python代码判断两棵二叉树是否相同

    python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...

  5. python代码判断指定日期是当前年的第多少天

    python代码判断指定日期是当前年的第多少天 #python代码判断指定日期是当前年的第多少天 #不适用标准库 def is_leap_year(year):"""判断 ...

  6. Python 字符串判断字母 数字 大小写

    Python 字符串判断 以下代码演示了Python字符串的判断: 实例 # Filename : test.py # author by : www.runoob.com # 测试实例一 print ...

  7. python怎么判断一个文件是否存在-利用Python如何判断一个文件是否存在

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

  8. python怎么判断一个文件是否存在-python判断文件是否存在的方法

    python如何判断文件是否存在 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. python中如何判断文件是否存在? ...

  9. python质数判断if isprime_使用Python判断质数(素数)的简单

    这篇文章主要介绍了使用Python判断质数(素数)的简单方法讲解,经常被用来做科学计算的Python处理这种小问题当然手到擒来^_-需要的朋友可以参考下 质数又称素数.指在一个大于1的自然数中,除了1 ...

最新文章

  1. 让FX1.1的NotifyIcon支持BalloonTip(1)
  2. CCNP实验【静态出接口配置】
  3. 注意区分Mb(Mbps)与MB(million bit和million Byte)
  4. 《Spark大数据分析:核心概念、技术及实践》一3.5 API
  5. python数据存储用什么_Python的小数据存储,用什么格式更有逼格?
  6. WebService优点和缺点小结
  7. 微信开发者接入php,微信开发系之新手接入指南
  8. Android开发22——广播接收者BroadcastReceiver的原理和注册方式
  9. 管理感悟:先做事,后做人
  10. 【生信进阶练习1000days】day1-Bioconductor的一些补充小用法与Working with Genomic Ranges
  11. 现在流行的少儿编程是不是再收大家的智商税?来看看最中肯的回答
  12. 1389: 程序员PIPI II
  13. 凌动z3735f运行64位linux,iwork8平板电脑安装ubuntu,Z3735d/f系列CPU通用
  14. 关于tensor的shape理解
  15. 中科院最年轻院士入职浙大!他一篇论文未发博士毕业!
  16. 使用python+selenium发送QQ邮件
  17. jam stack_纯JAM堆栈
  18. 打造一套安全的UI组件库!
  19. 多麦克风做拾音的波束_【语音交互】先从麦克风阵列聊起
  20. 量化交易创干货合集送给每一位爱学习的宽客quant

热门文章

  1. Lisp基础函数:car, cdr, cons...
  2. 两轮自平衡机器人(一)---Simscape物理建模
  3. 单片机中数码管的十六进制转换
  4. 字符串中出现次数最多的字符
  5. win10无限蓝屏修复加重置
  6. 结对项目之需求分析与原型设计(导师选择)
  7. 计算机网络ping用法,Ping命令及用法详解
  8. 2019年第八届java B组蓝桥杯省赛真题
  9. 印象笔记桌面便签关闭后找回
  10. mmdetection训练、测试