You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python计算器div函数为何重复打印ZeroDivisionError提示?

除法错误信息重复打印的原因及修复

核心原因

你在主循环里连续两次调用了除法计算函数,导致错误信息被触发两次。

看代码中的这两行:

print(num1, str(choice), num2, "=", select_op(choice)(int(num1), int(num2)))
lastCalculation = "{0} {1} {2} = {3}".format(num1, choice, num2, select_op(choice)(int(num1), int(num2)))

当选择除法操作且除数为0时,select_op("/")会返回div函数,上述两行代码分别执行了一次div(int(num1), int(num2))。每次调用div函数,进入异常分支时都会执行print("float division by zero"),所以错误信息会被打印两次。

修复方案

将计算结果先存储到一个变量中,再重复使用该变量,避免重复调用计算函数:

# 先执行一次计算,把结果存起来
result = select_op(choice)(int(num1), int(num2))
# 用变量替代重复调用
print(num1, str(choice), num2, "=", result)
lastCalculation = "{0} {1} {2} = {3}".format(num1, choice, num2, result)
last_calculation.append(lastCalculation)

额外优化建议

不要使用裸except捕获所有异常,应该明确捕获ZeroDivisionError,避免误捕获其他类型的错误(比如类型转换错误):

def div(a, b):
    try:
        return float(a) / float(b)
    except ZeroDivisionError:
        print("float division by zero")
        return "None"

内容的提问来源于stack exchange,提问作者Unitedrulez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:27:06