ZeroDivisionError неизвестная причина
У меня есть фрагмент кода из более крупного скрипта, и я не могу понять, что является причиной ошибки.
Это выглядит так:
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.