如何在python中解决零错误的模数/除法

时间:2017-03-29 22:37:39

标签: python python-3.x division modulus

我正在努力调试以下代码,这会引发ZeroDivisionError:

rows = [[int(row[0]), int(row[1]),int(row[2]),int(row[3])] for row in reader if len(row)>1]

错误消息是:

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

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

我根据学校要求使用python 3.6,任务是使用过滤器返回int ZeroDivisionError: integer division or modulo by zero 的因子。

1 个答案:

答案 0 :(得分:-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]

这里我在list函数中使用过滤器,因为在Python 3及以上过滤器中返回过滤器对象。