Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python程序随机挂起_Python 3.x - Fatal编程技术网

Python 3.x Python程序随机挂起

Python 3.x Python程序随机挂起,python-3.x,Python 3.x,我是python的新手,所以我创建这个项目是为了使用蛮力方法创建数独。在某种程度上,我是成功的,但我无法理解为什么有时程序在生成时会随机挂起。希望有人能指出问题所在 我已经试过调试代码,但仍然无法确定是什么导致了问题。我对这个bug的最接近的理解是它是由brute\u generator()函数中的某个地方引起的 关于代码如何工作的一些信息:- 数独是通过调用brute\u generator()函数9次逐行生成的 在函数brute_generator()中,使用试错法生成行,其中从数字1-9的

我是python的新手,所以我创建这个项目是为了使用蛮力方法创建数独。在某种程度上,我是成功的,但我无法理解为什么有时程序在生成时会随机挂起。希望有人能指出问题所在

我已经试过调试代码,但仍然无法确定是什么导致了问题。我对这个bug的最接近的理解是它是由
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]