0

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

它看起来像这样:

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 中的每个变量,应该将计算thisRatio的 、 中的前 3 行bins以及 的输出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。

4

0 回答 0