2016-03-31 31 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') 

这些行是写入文件语句的所有部分,但为什么堆只会打印最后一行尚不清楚,因为这不是错误的来源。如果堆栈读取'write to file'语句作为错误的来源,那么肯定它应该打印WHOLE语句而不是最后一部分?