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
相关产品推荐
相关产品推荐

