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

偶数校验位客户端编号验证Python代码错误排查求助

10位客户端编号偶数校验位验证错误排查

常见错误原因

  • 混淆十进制与二进制统计逻辑:误将数字的十进制数值之和作为判断依据,而非每个数字二进制形式中1的总数。
  • 校验位处理逻辑错误:仅计算前9位的二进制1数量,用第10位的十进制数值直接补奇偶,未将校验位本身转成二进制后加入总数统计。
  • 二进制1的计数方式错误:未正确统计单个数字二进制中1的个数(比如遗漏bin(digit).count('1')的正确用法)。

修正后的代码实现

class ParityBitPython:
    @staticmethod
    def validate_client_number(client_number: str) -> bool:
        # 基础格式校验:长度10位且全为数字
        if len(client_number) != 10 or not client_number.isdigit():
            return False
        
        total_binary_ones = 0
        # 遍历每个字符,统计所有数字二进制中1的总数
        for num_char in client_number:
            digit = int(num_char)
            total_binary_ones += bin(digit).count('1')
        
        # 验证总数是否为偶数
        return total_binary_ones % 2 == 0

测试用例验证

针对你提到的两个测试用例:

  • 4864684516:逐个数字转二进制统计1的个数,总和为14(偶数),返回True
  • 9999999999:每个9的二进制是1001(含2个1),10个9的总1数为20(偶数),返回True

内容的提问来源于stack exchange,提问作者user28432840

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:47:06