Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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程序冻结计算机_Python - Fatal编程技术网

Python程序冻结计算机

Python程序冻结计算机,python,Python,我已经用python编程一段时间了,并且决定也教我的朋友。我让他做一个方法,返回一个数字的所有因子的列表,他给了我一个脚本,虽然效率有点低,但对我来说仍然是可行的。然而,当运行该程序时,我和他的电脑都冻结了(我有一台顶级的游戏电脑,所以我认为它不会占用很多资源)。我向他展示了如何修复它,但是我仍然无法确定是什么导致了问题。这是代码,谢谢你的时间 def factors(numb): facs = [] for i in range(1,int(numb // 2)):

我已经用python编程一段时间了,并且决定也教我的朋友。我让他做一个方法,返回一个数字的所有因子的列表,他给了我一个脚本,虽然效率有点低,但对我来说仍然是可行的。然而,当运行该程序时,我和他的电脑都冻结了(我有一台顶级的游戏电脑,所以我认为它不会占用很多资源)。我向他展示了如何修复它,但是我仍然无法确定是什么导致了问题。这是代码,谢谢你的时间

def factors(numb):
    facs = []
    for i in range(1,int(numb // 2)):
        if numb % i == 0:
            facs.append(i)
    for i in facs:
        facs.append((numb / i))
    return facs.sort()

p、 它从不抛出错误,即使在被允许运行一段时间之后。另外,在python 3.4中,问题在于:

for i in facs:
        facs.append((numb / i))
这里有一个自增序列。

您的问题在这里:

for i in facs:
    facs.append((numb / i))
for循环对facs中的每个数字进行迭代,每次迭代都会在末尾添加一个新数字。因此,每当它靠近列表末尾一个位置时,列表就会变长一个位置。这会形成一个无限循环,慢慢吞噬你所有的记忆

编辑:解决问题

实际上不需要循环(排序也不需要,因为函数会生成一个已经排序的列表)

应该可以正常工作。

尝试分析这些行(7,8),这里的逻辑看起来不正确,因为你的方面(无限循环)

否则,测试它

def factors(numb):
    l = [1,2,3,4]
    for i in l:
        print i
        l.append(numb/i)

factors(10) // function call

发生这种情况时,
numb
有什么值?请注意,这将始终返回
None
,因为
facs.sort
是一个就地函数,返回
None
。可能
已排序(facs)
?但无论如何,我们需要知道函数是如何调用的。对不起,不管我在函数中输入什么数字都会导致问题。我在一个print语句中调用它,即print(factors(120))我尝试过使用大数字和小数字您可以简单地
返回[I for I in range(1,int(numb//2)),如果不是I%2]
您可以通过在facs中执行
for I来解决这个问题[:]
我也遇到过类似的问题,在python空闲脚本模式下是一个无限循环,在我执行该模式后,一切都冻结了。就像python没有响应,windows任务管理器没有快捷方式,过了一段时间,我关上了圈,现在当我在圈上时,没有显示。整个笔记本电脑就被7行python撞坏了代码
for i in facs:
        facs.append((numb / i))
def factors(numb):
    l = [1,2,3,4]
    for i in l:
        print i
        l.append(numb/i)

factors(10) // function call