2016-03-31 2 views
-1

Может кто-нибудь предложить причину, почему питон может бросить ZeroDivisionError, когда линия в программе метание ошибки не содержит, кроме той, которая, которая преобразует число в строку математические инструкции:питон ZeroDivisionError выброшен командой печати строки

line 194, in print_summary 
'mean error, ' + str(mean_error) + '\n') 
ZeroDivisionError: float division by zero 

Этот фрагмент кода является частью около 10 строк, которые просто записывают ответы в файл. Для того, чтобы проверить, если нет проблем со значением «mean_error» Я положил заявление для печати дальше код, который печатает:

0.374150774766 

Там нет разделения в заявлении, так что я понятия не имею, почему «ZeroDivisionError» будет быть брошенным?

+0

Как насчет представления [MCVE] (http://stackoverflow.com/help/mcve)? –

+0

Я понимаю, что желательно, но код длиной 300 строк, а также для вызова другой 100-строчной программы. Иногда есть законные причины, по которым MCVE не может быть опубликован, в этом случае его просто не практично. Я просто задавался вопросом, видел ли кто-нибудь эту ошибку в этих обстоятельствах раньше. Я вырезал и вставлял непосредственно из стека, чтобы можно было увидеть строку, вызывающую ошибку. – user3062260

+0

Можете ли вы опубликовать весь стек? – John

ответ

0

Хорошо, у меня есть это сейчас. В приведенном выше коде содержится простая функция, но по какой-то действительно странной причине стек только печатает последнюю строку, которая не имеет ничего общего с ошибкой.

'sensitivity,' + str(tp/(tp+fn)) + '\n' + 
'specificity,' + str(tn/(tn+fp)) + '\n' + 
'mean error, ' + str(mean_error) + '\n') 

линии являются частью записи в файл заявление, но почему стек будет печатать только последнюю строку, не ясно, как это не является источником ошибки. Если стек читает оператор «писать в файл» в качестве источника ошибки, то, несомненно, он должен печатать инструкцию WHOLE, а не только последний раздел?

Смежные вопросы