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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:39:04