奇怪的错误:ZeroDivisionError:浮点除以零

我发现了一个奇怪的行为,希望有人对此做出解释。我正在做:


if len(list) > 1 and len(list2) > 1:

   total = sum(list) + sum(list2)

   result = percentage(sum(list), total)


def percentage(part, whole):

    return float(part) / float(whole) *100

这两个列表混合了 float 和 int 值。我偶尔会得到:


ZeroDivisionError:浮点除以零


这对我来说没有意义。有谁知道发生了什么?


ABOUTYOU
浏览 292回答 2
2回答

开心每一天1111

如果您打印出导致此错误发生的part和的值,则问题很明显whole。解决方案是像这样处理任何除零错误       try:           result = percentage(sum(list), total)       except ZeroDivisionError:           # Handle the error in whatever way makes sense for your application或者,您可以在除法之前检查零def percentage(part,whole):    if whole == 0:        if part == 0:            return float("nan")        return float("inf")    return float(part) / float(whole) *100

拉丁的传说

使用尝试/异常:if len(list) > 1 and len(list2) > 1:           total = sum(list) + sum(list2)           result = percentage(sum(list), total)        def percentage(part,whole):            while True:                 try:                    return float(part) / float(whole) * 100                except ValueError as e:                    print(e)这不会因为错误而退出程序,它只会打印错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python