Python 3.x Python程序随机挂起
我是python的新手,所以我创建这个项目是为了使用蛮力方法创建数独。在某种程度上,我是成功的,但我无法理解为什么有时程序在生成时会随机挂起。希望有人能指出问题所在 我已经试过调试代码,但仍然无法确定是什么导致了问题。我对这个bug的最接近的理解是它是由Python 3.x Python程序随机挂起,python-3.x,Python 3.x,我是python的新手,所以我创建这个项目是为了使用蛮力方法创建数独。在某种程度上,我是成功的,但我无法理解为什么有时程序在生成时会随机挂起。希望有人能指出问题所在 我已经试过调试代码,但仍然无法确定是什么导致了问题。我对这个bug的最接近的理解是它是由brute\u generator()函数中的某个地方引起的 关于代码如何工作的一些信息:- 数独是通过调用brute\u generator()函数9次逐行生成的 在函数brute_generator()中,使用试错法生成行,其中从数字1-9的
brute\u generator()
函数中的某个地方引起的
关于代码如何工作的一些信息:-
数独是通过调用brute\u generator()
函数9次逐行生成的
在函数brute_generator()
中,使用试错法生成行,其中从数字1-9的可能性列表中提取一个随机数,然后将其视为第一行,现在check_1()
和check_2()
函数被调用,以检查该数字是否已在前几行中的列中重复(如果有),以及其3x3平方是否符合数独规则,如果是,则将该数字添加到黑名单中,并选择另一个数字,直到获得正确的数字。当获得正确的数字时,它将被附加到临时数组中,同时从可能性列表中删除,这样就不能再次选择它,计数器将增加1。这将重复进行,直到生成行(即计数器=9
)或行的给定单元格中不能放置任何可能性列表中的数字(即len(黑名单)==len(可能性)
,所有可能性都被列入黑名单)在这种情况下,通过将所有变量返回其默认值来刮取正在生成的行,并生成一个新行。这会一直发生,直到获得完美的行,然后将该行附加到sudoku\u array()
def check_1(x,temp_数组,数独数组):#检查单元格所在的块中是否重复出现
标志_1=真
如果len(临时阵列)<3:
j=2
l=0
elif透镜(温度阵列)<6:
j=5
l=3
其他:
j=8
l=6
i=len(数独数组)
如果len(数独数组)<3:
o=0
elif len(数独数组)<6:
o=3
其他:
o=6
对于范围内的m(o,i):
对于范围(l,j+1)内的n:
如果x==数独数组[m][n]:
标志_1=错误
打破
如果x==数独数组[m][n]:
打破
返回标志_1
def check_2(x,计数器,数独数组):#检查数字在其后续列中是否重复出现
标志2=真
对于范围内的k(len(数独数组)):
如果x==数独数组[k][计数器]:
标志_2=错误
打破
返回标志2
def brute_生成器(数独数组):#主要的数独生成算法。
所有可能性=[1,2,3,4,5,6,7,8,9]
可能性=所有的可能性。复制()
黑名单=[]
计数器=0
临时数组=[]
而柜台!=9 :
如果len(黑名单)=len(可能性):
所有可能性=[1,2,3,4,5,6,7,8,9]
可能性=所有的可能性。复制()
黑名单=[]
计数器=0
临时数组=[]
持续
x=随机选择(可能性)
如果x不在黑名单中:
如果len(数独数组)!=0 :
如果检查_1(x,临时数组,数独数组)=False:
黑名单.附加(x)
持续
elif check_2(x,计数器,数独数组)=False:
黑名单.附加(x)
持续
可能性。删除(x)
计数器+=1
临时数组追加(x)
黑名单=[]
数独数组.append(临时数组)
数独_数组=[]。#这将是生成的数独
对于范围(9)内的i:
暴力生成器(数独数组)
程序卡住后,回溯调用将显示以下内容
Traceback (most recent call last):
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\ptvsd_launcher.py", line 119, in <module>
vspd.debug(filename, port_num, debug_id, debug_options, run_as)
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\debugger.py", line 37, in debug
run(address, filename, *args, **kwargs)
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_local.py", line 64, in run_file
run(argv, addr, **kwargs)
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_local.py", line 125, in _run
_pydevd.main()
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\pydevd.py", line 1752, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\pydevd.py", line 1099, in run
return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\pydevd.py", line 1106, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\_pydev_imps\_pydev_execfile.py", line 25, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:\Users\groot\source\repos\PythonApplication5\PythonApplication5\PythonApplication5.py", line 145, in <module>
brute_generator(sudoku_array)
File "C:\Users\groot\source\repos\PythonApplication5\PythonApplication5\PythonApplication5.py", line 109, in brute_generator
x = random.choice(possibilities)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\random.py", line 255, in choice
def choice(self, seq):
File "c:\program files (x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\_pydevd_bundle\pydevd_trace_dispatch_regular.py", line 273, in __call__
frame_cache_key = (frame.f_code.co_firstlineno, frame.f_code.co_name, frame.f_code.co_filename)
KeyboardInterrupt
回溯(最近一次呼叫最后一次):
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\ptvsd_launcher.py”,第119行,在
debug(文件名、端口号、调试id、调试选项、运行方式)
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\debugger.py”,调试中第37行
运行(地址、文件名、*args、**kwargs)
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\\ u local.py”,第64行,在运行文件中
运行(argv,addr,**kwargs)
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\\ u local.py”,第125行,正在运行
_pydevd.main()
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\\u vendored\pydevd\pydevd.py”,主目录第1752行
globals=debugger.run(setup['file'],None,None,is_模块)
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\\u vendored\pydevd\pydevd.py”,第1099行,正在运行
返回self.\u exec(是模块、入口点、模块名称、文件、全局、局部)
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\\u vendored\pydevd\pydevd.py”,第1106行,在_exec中
pydev_imports.execfile(文件、全局、局部)#执行脚本
文件“c:\program files(x86)\microsoft visual studio\2017\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\\u vendored\pydevd\\u pydev\u imps\\u pydev\u execfile.py”,execfile中第25行
exec(编译(内容+“\n”,文件,'exec'),全局,loc)
文件“C:\Users\groot\source\repos\PythonApplication5\PythonApplication5\
[1, 5, 7, 2, 3, 6, 8, 4, 9],
[9, 8, 2, 5, 4, 7, 6, 3, 1],
[4, 3, 6, 8, 1, 9, 7, 2, 5],
[5, 7, 9, 4, 2, 1, 3, 6, 8],
[6, 1, 3, 9, 5, 8, 2, 7, 4]