2017-03-29 52 views
-2

我奋力调试下面的代码,它抛出一个ZeroDivisionError解决模/分工有点难看,因为我在添加if和abs()语句之前得到了这个错误。如何通过零误差在python

我按照我的学校要求使用python 3.6,任务是使用过滤器返回int num的因子。

+0

它不是'num'需要非零;它是'x'。另外,这不是你如何使用'范围'。请给我 – TigerhawkT3

+4

[mcve]。您发布的代码有语法错误,完全无法运行,即使语法修复也不会产生ZeroDivisionError。 – user2357112

+0

谢谢,我应该在发布前做好更好的调试。今天我一直在抨击我的头靠在墙上。 – squalor

回答

-2

由于您定义的range()方式,您的代码返回此错误。

正确的方式来定义在python范围如下:

range(start, stop, step) 

如果你的情况下,你已经使用切片,这是造成你的程序抛出错误。

为了您的程序,你需要定义一个函数是为了回报由条件语句的东西,下面的代码将解决您的问题

def fac(num): 
    if num > 0: 
     return list(filter(lambda x: num % x == 0, range(1, num+1))) 

print(fac(5)) # [1, 5] 

在这里,我因为在Python 3使用的列表函数内部过滤器和以上过滤器返回过滤器对象

+0

谢谢!代码现在正在工作。 – squalor

+0

@squalor。我很高兴我能够提供帮助。我会很感激如果你可以标记这个答案有帮助。 –