Python中如何检查两数整除性并处理非法输入?
改进Python整除检查函数的类型验证方案
原函数仅能处理整数输入,遇到字符串、复数等非有效数字会直接报错。我们可以在取模操作前添加类型校验逻辑,不符合要求则返回None,同时处理分母为0的异常情况:
def Q1(numerator, denominator): # 校验输入是否为整数或浮点数 valid_num_types = (int, float) if not (isinstance(numerator, valid_num_types) and isinstance(denominator, valid_num_types)): return None # 可选:排除布尔类型(因bool是int子类,若不需要将True/False视为数字可保留) if type(numerator) is bool or type(denominator) is bool: return None # 避免分母为0的错误 if denominator == 0: return None # 执行整除判断 return numerator % denominator == 0
关键逻辑说明
- 类型校验:通过
isinstance判断输入是否属于int或float类型,直接过滤字符串、复数等无效输入。 - 布尔值过滤:如果不需要把
True(等价于1)、False(等价于0)当作有效数字,可保留这一步判断;若允许则删除即可。 - 分母非零检查:提前拦截分母为0的情况,避免运行时抛出
ZeroDivisionError。 - 整除判断:核心逻辑保留原函数的取模运算,返回是否整除的布尔结果。
测试示例
Q1(15, 5)→TrueQ1(15, 4)→FalseQ1("15", 5)→NoneQ1(15, 0)→NoneQ1(7+2j, 3)→None
内容的提问来源于stack exchange,提问作者LightningFz
相关产品推荐
相关产品推荐

