我有一段来自更大脚本的代码,而对于我的生活,我无法弄清楚导致错误的原因。
看起来像这样:
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
,bins
中的前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。