为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ABOUTYOU 2021-08-05 18:21:43
我发现了一个奇怪的行为,希望有人对此做出解释。我正在做: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:浮点除以零这对我来说没有意义。有谁知道发生了什么?
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

如果您打印出导致此错误发生的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


查看完整回答
反对 回复 2021-08-05
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

使用尝试/异常:


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)

这不会因为错误而退出程序,它只会打印错误。


查看完整回答
反对 回复 2021-08-05
  • 2 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信