如何通过 python 中的零错误解决 modulus/division

How to resolve modulus/division by zero error in python

我正在努力调试以下代码,它抛出 ZeroDivisionError:

if num > 0:
    return filter(lambda x: abs(num) % x == 0, range(1:abs(num))
else:
    pass

错误信息是:

ZeroDivisionError: integer division or modulo by zero

代码有点难看,因为我在添加 if 和 abs() 语句之前收到此错误。

我根据学校要求使用 python 3.6,任务是使用过滤器 return 整数 num 因子。

您的代码 return 出现此错误是因为您定义 range() 的方式。

在 python 中定义范围的正确方法如下:

range(start, stop, step)

如果您的案例使用了切片,这将导致您的程序抛出错误。

对于您的程序,您需要定义一个函数以便 return 从条件语句中获取某些内容,以下代码将解决您的问题

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 和更高版本中过滤器 returns 过滤器对象。