我在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中得到“被零除”错误,但我不知道为什么的主要内容,如果未能解决你的问题,请参考以下文章