ZeroDivisionError未知原因

时间:2015-07-27 19:06:04

标签: python floating-accuracy dividebyzeroexception

我有一段来自更大脚本的代码,而对于我的生活,我无法弄清楚导致错误的原因。

看起来像这样:

counter = 1
for i in range(len(binCounts)):
    thisRatio = float(binCounts[i]) / (float(counter) / float(len(bins)))
    OUTFILE.write("\t".join(bins[i][0:3]))
    OUTFILE.write("\t")
    OUTFILE.write(str(binCounts[i]))
    OUTFILE.write("\t")
    OUTFILE.write(str(thisRatio))
    OUTFILE.write("\n") 

其中binCounts是按时间顺序排列的列表[1, 2, 3]

和bins是另一个包含更多信息的列表:

[['chrY', '28626328', '3064930174', '28718777', '92449', '49911'], ['chrY', '28718777', '3065022623', '28797881', '79104', '49911'], ['chrY', '28797881', '3065101727', '59373566', '30575685', '49912']]

对于binCounts中的每个变量,它应该是计算出的thisRatiobins中的前3行和binCounts的输出,并将它们组合在一起文件(OUTFILE)。

但它没有这样做。它给了我一个错误:

thisRatio = float(binCounts[i]) / (float(counter) / float(len(bins)))
ZeroDivisionError: float division by zero

当我跑线时:

thisRatio = float(binCounts[i]) / (float(counter) / float(len(bins)))
交互式地,它工作正常。

当我把它分成碎片时,这就是我得到的:

A = float(binCounts[i])
print (A)
49999.0

B = (float(counter))
print (B)
1.0

C = float(len(bins))
print (C)
50000.0

thisRatio
2499950000.0

然后我以交互方式重新整理了整篇文章(我之前没有做过 - 只有单thisRatio行)并且出现了这个错误......

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
IndexError: list index out of range

因此,当作为.py脚本运行时,错误是ZeroDivisionError,并且当以交互方式运行时,错误是IndexError。

0 个答案:

没有答案