2016-03-31 30 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語句而不是最後一部分?