我在python中得到“被零除”错误,但我不知道为什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在python中得到“被零除”错误,但我不知道为什么相关的知识,希望对你有一定的参考价值。

我不知道为什么,但是,python说( (x1[0]*(len(x1)-1)) + (x2[0]*(len(x2)-1)) + (x3[0]*(len(x3)-1)))等于0,我认为这不应该。我已经分别测试了该代码,没有将其除以除数,并且没有输出0值。

def av(x):
    c = 0
    alist = x
    alist.pop(0)
    for a in alist:
        c += a*x[0]
    return c
average = lambda x1,x2,x3: (av(x1) + av(x2) + av(x3))/( (x1[0]*(len(x1)-1)) + (x2[0]*(len(x2)-1)) + (x3[0]*(len(x3)-1)))
print(average([0,0],[1,4],[1,5]))```
答案

让我为您分解一下。

[av函数通过弹出(alist.pop(0))一个元素将列表的大小(x1,x2和x3)减小为1。

因此,len(x1)-1的值为0,这意味着(av(x1) + av(x2) + av(x3))/((x1[0]*(len(x1)-1)) + (x2[0]*(len(x2)-1)) + (x3[0]*(len(x3)-1)))分母中所有乘数的值为0。因此,误差除以零。

以上是关于我在python中得到“被零除”错误,但我不知道为什么的主要内容,如果未能解决你的问题,请参考以下文章

接近零的浮点值会导致被零除的错误吗?

Java中与&&不一致和被零除错误

避免在 PostgreSQL 中被零除

除了被零除之外,还都有哪些情况会发生浮点异常?

SET ANSI_WARNINGS { ON | OFF }

在 Informatica 中的 SP 中没有冒泡的错误