我正在努力调试以下代码,这会引发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
的因子。
答案 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及以上过滤器中返回过滤器对象。