Python实现Binary Checker时判断二进制数始终返回False问题咨询
二进制校验函数Bug分析
核心问题
现有代码无论输入什么都返回False,存在三个致命逻辑错误:
- 循环分支直接无条件返回假:进入纯数字校验分支后,for循环第一行就执行
return False,只要输入是纯数字,会在第一次循环时直接返回假,没有做任何实际校验,这是问题的直接诱因 - 变量名冲突:循环变量复用了输入参数名
aString,直接覆盖原输入内容,即使后续补校验逻辑也无法拿到原始输入 - 缺失核心校验逻辑:代码没有做“输入字符是否仅包含0和1”的判断,遍历2~9的数字列表的行为和校验目标完全无关
修复后的代码实现
基础遍历实现
def AmIBinary(input_val): input_str = str(input_val) # 非纯数字直接返回假 if not input_str.isdigit(): return False # 逐个字符校验是否只有0和1 for char in input_str: if char not in ("0", "1"): return False return True
简洁写法
def AmIBinary(input_val): input_str = str(input_val) # 用all函数批量校验所有字符符合要求 return input_str.isdigit() and all(c in ("0", "1") for c in input_str)
测试结果
- 输入
1011→ 返回True - 输入
123→ 返回False - 输入
ab10→ 返回False - 输入
0→ 返回True
内容的提问来源于stack exchange,提问作者Harry Truong
相关产品推荐
相关产品推荐

