Python库调用触发ZeroDivisionError问题排查求助
问题解决:ZeroDivisionError 处理方案
问题根源
你当前的代码在user_data函数初始化运算结果字典时,会立即执行所有四则运算,包括lib.division(first_number, second_number)。这意味着只要第二个数字为0,不管用户后续是否选择除法选项,程序都会在字典创建阶段直接触发ZeroDivisionError,而你放在menu_selection选项4中的try-except根本没机会生效。
解决方案(无需修改自定义库)
方案1:延迟运算执行(推荐)
修改字典的存储逻辑,不直接存储运算结果,而是存储带参数的可调用对象,只在用户选择对应选项时才执行运算:
修改user_data中的字典定义:
dictionary = { 'add': lambda: lib.addition(first_number, second_number), 'sub': lambda: lib.subtraction(first_number, second_number), 'mult': lambda: lib.multiply(first_number, second_number), 'div': lambda: lib.division(first_number, second_number) }
修改menu_selection中的选项调用逻辑:
if user_option == '1': print(first_number, '+', second_number, "=", dictionary['add']()) elif user_option == '2': print(first_number, '-', second_number, "=", dictionary['sub']()) elif user_option == '3': print(first_number, '*', second_number, "=", dictionary['mult']()) elif user_option == '4': try: print(first_number, '/', second_number, "=", dictionary['div']()) except ZeroDivisionError: print("不能除以0")
这样只有当用户主动选择除法选项时,才会执行除法运算,此时try-except可以正常捕获错误。
方案2:提前捕获除法错误
在user_data函数中创建字典时,单独对除法运算做异常捕获,标记错误状态:
修改user_data中的字典创建部分:
# 先初始化其他运算结果 dictionary = { 'add': lib.addition(first_number, second_number), 'sub': lib.subtraction(first_number, second_number), 'mult': lib.multiply(first_number, second_number) } # 单独处理除法,捕获错误 try: dictionary['div'] = lib.division(first_number, second_number) except ZeroDivisionError: dictionary['div'] = 'error_zero_div' # 用特殊值标记错误
修改menu_selection中的选项4:
elif user_option == '4': if dictionary['div'] == 'error_zero_div': print("不能除以0") else: print(first_number, '/', second_number, "=", dictionary['div'])
额外注意事项
- 你的自定义库中
allinone函数存在语法问题:它没有return语句,调用时会返回None。如果允许修改库(仅修复返回逻辑,不添加异常处理),可以修改为:
def allinone(first_number, second_number): return ( addition(first_number, second_number), subtraction(first_number, second_number), multiply(first_number, second_number), division(first_number, second_number) )
week_5函数中的异常处理是有效的,无需修改。
内容的提问来源于stack exchange,提问作者Mr.Truth
相关产品推荐
相关产品推荐

