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.

0 ответов

Другие вопросы по тегам