【问题标题】:python ZeroDivisionError thrown by print string command打印字符串命令引发的python ZeroDivisionError
【发布时间】:2016-03-31 21:25:56
【问题描述】:

当程序中抛出错误的行不包含除了将数字转换为字符串的数学指令之外,python 可能会抛出 ZeroDivisionError 的原因:

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

这段代码是仅将答案写入文件的大约 10 行代码的一部分。为了检查值 'mean_error' 是否没有问题,我在打印代码的后面添加了一条打印语句:

0.374150774766

语句中没有除法,所以我不知道为什么会抛出“ZeroDivisionError”?

【问题讨论】:

  • 提交MCVE 怎么样?
  • 我知道那是可取的,但代码有 300 行长,并且还调用另一个 100 行程序才能运行。有时,不能发布 MCVE 是有正当理由的,在这种情况下,它根本不实用。我只是想知道以前是否有人在这些情况下遇到过这个错误。我已经直接从堆栈中剪切和粘贴,因此可以看到导致错误的行。
  • 你能发布整个堆栈跟踪吗?
  • 所以也许发布两个打印语句之间的内容。如果人们无法复制它,那么他们就不太可能提供帮助。
  • 您确定所有这 400 行代码对于您的问题的出现都至关重要?我对此表示怀疑。

标签: python error-handling


【解决方案1】:

好的,我现在知道了。上面的代码包含一个简单的函数,但由于一些非常奇怪的原因,堆栈只打印与错误无关的最后一行。

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

这些行都是写入文件语句的一部分,但为什么堆栈只打印最后一行尚不清楚,因为这不是错误的来源。如果堆栈读取“写入文件”语句作为错误源,那么它肯定应该打印整个语句,而不仅仅是最后一部分?

【讨论】:

    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    相关资源
    最近更新 更多